code: def find_spec(modpath, path=None):
      
      _path = path or sys.path
  
      # Need a copy for not mutating the argument.
      modpath = modpath[:]
  
      submodule_path = None
      module_parts = modpath[:]
      processed = []
  
      while modpath:
          modname = modpath.pop(0)
          finder, spec = _find_spec_with_path(
              _path, modname, module_parts, processed, submodule_path or path
          )
          processed.append(modname)
          if modpath:
              submodule_path = finder.contribute_to_path(spec, processed)
  
          if spec.type == ModuleType.PKG_DIRECTORY:
              spec = spec._replace(submodule_search_locations=submodule_path)
  
      return spec
docs: Find a spec for the given module.
  
      :type modpath: list or tuple
      :param modpath:
        split module's name (i.e name of a module or package split
        on '.'), with leading empty strings for explicit relative import
  
      :type path: list or None
      :param path:
        optional list of path where the module or package should be
        searched (use sys.path if nothing or None is given)
  
      :rtype: ModuleSpec
      :return: A module spec, which describes how the module was
               found and where.