--- /dev/null
+import importlib.abc\r
+import sys\r
+import types\r
+from typing import Any, Callable, List, Optional, Sequence, Tuple, Union\r
+\r
+# ModuleSpec is exported from this module, but for circular import\r
+# reasons exists in its own stub file (with Loader and ModuleType).\r
+from _importlib_modulespec import ModuleSpec as ModuleSpec # Exported\r
+\r
+class BuiltinImporter(importlib.abc.MetaPathFinder,\r
+ importlib.abc.InspectLoader):\r
+ # MetaPathFinder\r
+ @classmethod\r
+ def find_module(\r
+ cls, fullname: str,\r
+ path: Optional[Sequence[importlib.abc._Path]]\r
+ ) -> Optional[importlib.abc.Loader]:\r
+ ...\r
+ @classmethod\r
+ def find_spec(cls, fullname: str,\r
+ path: Optional[Sequence[importlib.abc._Path]],\r
+ target: Optional[types.ModuleType] = ...) -> Optional[ModuleSpec]:\r
+ ...\r
+ # InspectLoader\r
+ @classmethod\r
+ def is_package(cls, fullname: str) -> bool: ...\r
+ @classmethod\r
+ def load_module(cls, fullname: str) -> types.ModuleType: ...\r
+ @classmethod\r
+ def get_code(cls, fullname: str) -> None: ...\r
+ @classmethod\r
+ def get_source(cls, fullname: str) -> None: ...\r
+ # Loader\r
+ @classmethod\r
+ def load_module(cls, fullname: str) -> types.ModuleType: ...\r
+ @staticmethod\r
+ def module_repr(module: types.ModuleType) -> str: ... # type: ignore\r
+ @classmethod\r
+ def create_module(cls, spec: ModuleSpec) -> Optional[types.ModuleType]: ...\r
+ @classmethod\r
+ def exec_module(cls, module: types.ModuleType) -> None: ...\r
+\r
+class FrozenImporter(importlib.abc.MetaPathFinder, importlib.abc.InspectLoader):\r
+ # MetaPathFinder\r
+ @classmethod\r
+ def find_module(\r
+ cls, fullname: str,\r
+ path: Optional[Sequence[importlib.abc._Path]]\r
+ ) -> Optional[importlib.abc.Loader]:\r
+ ...\r
+ @classmethod\r
+ def find_spec(cls, fullname: str,\r
+ path: Optional[Sequence[importlib.abc._Path]],\r
+ target: Optional[types.ModuleType] = ...) -> Optional[ModuleSpec]:\r
+ ...\r
+ # InspectLoader\r
+ @classmethod\r
+ def is_package(cls, fullname: str) -> bool: ...\r
+ @classmethod\r
+ def load_module(cls, fullname: str) -> types.ModuleType: ...\r
+ @classmethod\r
+ def get_code(cls, fullname: str) -> None: ...\r
+ @classmethod\r
+ def get_source(cls, fullname: str) -> None: ...\r
+ # Loader\r
+ @classmethod\r
+ def load_module(cls, fullname: str) -> types.ModuleType: ...\r
+ @staticmethod\r
+ def module_repr(module: types.ModuleType) -> str: ... # type: ignore\r
+ @classmethod\r
+ def create_module(cls, spec: ModuleSpec) -> Optional[types.ModuleType]:\r
+ ...\r
+ @staticmethod\r
+ def exec_module(module: types.ModuleType) -> None: ... # type: ignore\r
+\r
+class WindowsRegistryFinder(importlib.abc.MetaPathFinder):\r
+ @classmethod\r
+ def find_module(\r
+ cls, fullname: str,\r
+ path: Optional[Sequence[importlib.abc._Path]]\r
+ ) -> Optional[importlib.abc.Loader]:\r
+ ...\r
+ @classmethod\r
+ def find_spec(cls, fullname: str,\r
+ path: Optional[Sequence[importlib.abc._Path]],\r
+ target: Optional[types.ModuleType] = ...) -> Optional[ModuleSpec]:\r
+ ...\r
+\r
+class PathFinder(importlib.abc.MetaPathFinder): ...\r
+\r
+SOURCE_SUFFIXES = ... # type: List[str]\r
+DEBUG_BYTECODE_SUFFIXES = ... # type: List[str]\r
+OPTIMIZED_BYTECODE_SUFFIXES = ... # type: List[str]\r
+BYTECODE_SUFFIXES = ... # type: List[str]\r
+EXTENSION_SUFFIXES = ... # type: List[str]\r
+\r
+def all_suffixes() -> List[str]: ...\r
+\r
+class FileFinder(importlib.abc.PathEntryFinder):\r
+ path = ... # type: str\r
+ def __init__(\r
+ self, path: str,\r
+ *loader_details: Tuple[importlib.abc.Loader, List[str]]\r
+ ) -> None: ...\r
+ @classmethod\r
+ def path_hook(\r
+ *loader_details: Tuple[importlib.abc.Loader, List[str]]\r
+ ) -> Callable[[str], importlib.abc.PathEntryFinder]: ...\r
+\r
+class SourceFileLoader(importlib.abc.FileLoader,\r
+ importlib.abc.SourceLoader):\r
+ ...\r
+\r
+class SourcelessFileLoader(importlib.abc.FileLoader,\r
+ importlib.abc.SourceLoader):\r
+ ...\r
+\r
+class ExtensionFileLoader(importlib.abc.ExecutionLoader):\r
+ def get_filename(self, fullname: str) -> importlib.abc._Path: ...\r
+ def get_source(self, fullname: str) -> None: ... # type: ignore\r