(name, package=None)
Return the spec for the specified module.

    First, sys.modules is checked to see if the module was already imported. If
    so, then sys.modules[name].__spec__ is returned. If that happens to be
    set to None, then ValueError is raised. If the module is not in
    sys.modules, then sys.meta_path is searched for a suitable spec with the
    value of 'path' given to the finders. None is returned if no spec could
    be found.

    If the name is for submodule (contains a dot), the parent module is
    automatically imported.

    The name and package arguments work the same as importlib.import_module().
    In other words, relative module names (with leading dots) work.
Return the spec for the specified module.
Return the spec for the specified module .
def find_spec(name, package=None):
    """Return the spec for the specified module.

    First, sys.modules is checked to see if the module was already imported. If
    so, then sys.modules[name].__spec__ is returned. If that happens to be
    set to None, then ValueError is raised. If the module is not in
    sys.modules, then sys.meta_path is searched for a suitable spec with the
    value of 'path' given to the finders. None is returned if no spec could
    be found.

    If the name is for submodule (contains a dot), the parent module is
    automatically imported.

    The name and package arguments work the same as importlib.import_module().
    In other words, relative module names (with leading dots) work.

    """
    fullname = resolve_name(name, package) if name.startswith('.') else name
    if fullname not in sys.modules:
        parent_name = fullname.rpartition('.')[0]
        if parent_name:
            parent = __import__(parent_name, fromlist=['__path__'])
            try:
                parent_path = parent.__path__
            except AttributeError as e:
                raise ModuleNotFoundError(
                    f"__path__ attribute not found on {parent_name!r} "
                    f"while trying to find {fullname!r}", name=fullname) from e
        else:
            parent_path = None
        return _find_spec(fullname, parent_path)
    else:
        module = sys.modules[fullname]
        if module is None:
            return None
        try:
            spec = module.__spec__
        except AttributeError:
            raise ValueError('{}.__spec__ is not set'.format(name)) from None
        else:
            if spec is None:
                raise ValueError('{}.__spec__ is None'.format(name))
            return spec
def find_spec ( name , package = None ) : fullname = resolve_name ( name , package ) if name . startswith ( '.' ) else name if fullname not in sys . modules : parent_name = fullname . rpartition ( '.' ) [ 0 ] if parent_name : parent = __import__ ( parent_name , fromlist = [ '__path__' ] ) try : parent_path = parent . __path__ except AttributeError as e : raise ModuleNotFoundError ( f"__path__ attribute not found on {parent_name!r} " f"while trying to find {fullname!r}" , name = fullname ) from e else : parent_path = None return _find_spec ( fullname , parent_path ) else : module = sys . modules [ fullname ] if module is None : return None try : spec = module . __spec__ except AttributeError : raise ValueError ( '{}.__spec__ is not set' . format ( name ) ) from None else : if spec is None : raise ValueError ( '{}.__spec__ is None' . format ( name ) ) return spec