1import importlib.abc
2import types
3from typing import Any, Callable, List, Optional, Sequence, Tuple
4
5# ModuleSpec is exported from this module, but for circular import
6# reasons exists in its own stub file (with Loader and ModuleType).
7from _importlib_modulespec import ModuleSpec as ModuleSpec  # Exported
8
9class BuiltinImporter(importlib.abc.MetaPathFinder,
10                      importlib.abc.InspectLoader):
11    # MetaPathFinder
12    @classmethod
13    def find_module(
14        cls, fullname: str,
15        path: Optional[Sequence[importlib.abc._Path]]
16    ) -> Optional[importlib.abc.Loader]:
17        ...
18    @classmethod
19    def find_spec(cls, fullname: str,
20                  path: Optional[Sequence[importlib.abc._Path]],
21                  target: Optional[types.ModuleType] = ...) -> Optional[ModuleSpec]:
22        ...
23    # InspectLoader
24    @classmethod
25    def is_package(cls, fullname: str) -> bool: ...
26    @classmethod
27    def load_module(cls, fullname: str) -> types.ModuleType: ...
28    @classmethod
29    def get_code(cls, fullname: str) -> None: ...
30    @classmethod
31    def get_source(cls, fullname: str) -> None: ...
32    # Loader
33    @staticmethod
34    def module_repr(module: types.ModuleType) -> str: ...
35    @classmethod
36    def create_module(cls, spec: ModuleSpec) -> Optional[types.ModuleType]: ...
37    @classmethod
38    def exec_module(cls, module: types.ModuleType) -> None: ...
39
40class FrozenImporter(importlib.abc.MetaPathFinder, importlib.abc.InspectLoader):
41    # MetaPathFinder
42    @classmethod
43    def find_module(
44        cls, fullname: str,
45        path: Optional[Sequence[importlib.abc._Path]]
46    ) -> Optional[importlib.abc.Loader]:
47        ...
48    @classmethod
49    def find_spec(cls, fullname: str,
50                  path: Optional[Sequence[importlib.abc._Path]],
51                  target: Optional[types.ModuleType] = ...) -> Optional[ModuleSpec]:
52        ...
53    # InspectLoader
54    @classmethod
55    def is_package(cls, fullname: str) -> bool: ...
56    @classmethod
57    def load_module(cls, fullname: str) -> types.ModuleType: ...
58    @classmethod
59    def get_code(cls, fullname: str) -> None: ...
60    @classmethod
61    def get_source(cls, fullname: str) -> None: ...
62    # Loader
63    @staticmethod
64    def module_repr(module: types.ModuleType) -> str: ...
65    @classmethod
66    def create_module(cls, spec: ModuleSpec) -> Optional[types.ModuleType]:
67        ...
68    @staticmethod
69    def exec_module(module: types.ModuleType) -> None: ...
70
71class WindowsRegistryFinder(importlib.abc.MetaPathFinder):
72    @classmethod
73    def find_module(
74        cls, fullname: str,
75        path: Optional[Sequence[importlib.abc._Path]]
76    ) -> Optional[importlib.abc.Loader]:
77        ...
78    @classmethod
79    def find_spec(cls, fullname: str,
80                  path: Optional[Sequence[importlib.abc._Path]],
81                  target: Optional[types.ModuleType] = ...) -> Optional[ModuleSpec]:
82        ...
83
84class PathFinder(importlib.abc.MetaPathFinder): ...
85
86SOURCE_SUFFIXES: List[str]
87DEBUG_BYTECODE_SUFFIXES: List[str]
88OPTIMIZED_BYTECODE_SUFFIXES: List[str]
89BYTECODE_SUFFIXES: List[str]
90EXTENSION_SUFFIXES: List[str]
91
92def all_suffixes() -> List[str]: ...
93
94class FileFinder(importlib.abc.PathEntryFinder):
95    path: str
96    def __init__(
97        self, path: str,
98        *loader_details: Tuple[importlib.abc.Loader, List[str]]
99    ) -> None: ...
100    @classmethod
101    def path_hook(
102        cls, *loader_details: Tuple[importlib.abc.Loader, List[str]]
103    ) -> Callable[[str], importlib.abc.PathEntryFinder]: ...
104
105class SourceFileLoader(importlib.abc.FileLoader,
106                       importlib.abc.SourceLoader):
107    ...
108
109class SourcelessFileLoader(importlib.abc.FileLoader,
110                           importlib.abc.SourceLoader):
111    ...
112
113class ExtensionFileLoader(importlib.abc.ExecutionLoader):
114    def get_filename(self, fullname: str) -> importlib.abc._Path: ...
115    def get_source(self, fullname: str) -> None: ...
116