@@ -6,7 +6,7 @@ import sys
66import types
77from _typeshed import ReadableBuffer , StrOrBytesPath , StrPath
88from _typeshed .importlib import LoaderProtocol
9- from collections .abc import Callable , Iterable , Mapping , MutableSequence , Sequence
9+ from collections .abc import Callable , Iterable , Iterator , Mapping , MutableSequence , Sequence
1010from importlib .machinery import ModuleSpec
1111from importlib .metadata import DistributionFinder , PathDistribution
1212from typing import Any , Final , Literal , overload
@@ -23,13 +23,17 @@ else:
2323
2424MAGIC_NUMBER : Final [bytes ]
2525
26- @overload
27- @deprecated (
28- "The `debug_override` parameter is deprecated since Python 3.5; will be removed in Python 3.15. Use `optimization` instead."
29- )
30- def cache_from_source (path : StrPath , debug_override : bool , * , optimization : None = None ) -> str : ...
31- @overload
32- def cache_from_source (path : StrPath , debug_override : None = None , * , optimization : Any | None = None ) -> str : ...
26+ if sys .version_info >= (3 , 15 ):
27+ def cache_from_source (path : StrPath , * , optimization : Any | None = None ) -> str : ...
28+
29+ else :
30+ @overload
31+ @deprecated (
32+ "The `debug_override` parameter is deprecated since Python 3.5; removed in Python 3.15. Use `optimization` instead."
33+ )
34+ def cache_from_source (path : StrPath , debug_override : bool , * , optimization : None = None ) -> str : ...
35+ @overload
36+ def cache_from_source (path : StrPath , debug_override : None = None , * , optimization : Any | None = None ) -> str : ...
3337
3438def source_from_cache (path : StrPath ) -> str : ...
3539def decode_source (source_bytes : ReadableBuffer ) -> str : ...
@@ -70,6 +74,10 @@ class PathFinder(importlib.abc.MetaPathFinder):
7074 @deprecated ("Deprecated since Python 3.4; removed in Python 3.12. Use `find_spec()` instead." )
7175 def find_module (cls , fullname : str , path : Sequence [str ] | None = None ) -> importlib .abc .Loader | None : ...
7276
77+ if sys .version_info >= (3 , 15 ):
78+ @classmethod
79+ def discover (cls , parent : ModuleSpec | None = None ) -> Iterator [ModuleSpec ]: ...
80+
7381SOURCE_SUFFIXES : Final [list [str ]]
7482DEBUG_BYTECODE_SUFFIXES : Final = [".pyc" ]
7583OPTIMIZED_BYTECODE_SUFFIXES : Final = [".pyc" ]
@@ -84,20 +92,40 @@ class FileFinder(importlib.abc.PathEntryFinder):
8492 cls , * loader_details : tuple [type [importlib .abc .Loader ], list [str ]]
8593 ) -> Callable [[str ], importlib .abc .PathEntryFinder ]: ...
8694
95+ if sys .version_info >= (3 , 15 ):
96+ def discover (self , parent : ModuleSpec | None = None ) -> Iterator [ModuleSpec ]: ...
97+
8798class _LoaderBasics :
8899 def is_package (self , fullname : str ) -> bool : ...
89100 def create_module (self , spec : ModuleSpec ) -> types .ModuleType | None : ...
90101 def exec_module (self , module : types .ModuleType ) -> None : ...
91- def load_module (self , fullname : str ) -> types .ModuleType : ...
102+ if sys .version_info < (3 , 15 ):
103+ @deprecated ("Deprecated since Python 3.10; removed in Python 3.15. Use `exec_module()` instead." )
104+ def load_module (self , fullname : str ) -> types .ModuleType : ...
92105
93106class SourceLoader (_LoaderBasics ):
94107 def path_mtime (self , path : str ) -> float : ...
95108 def set_data (self , path : str , data : bytes ) -> None : ...
96109 def get_source (self , fullname : str ) -> str | None : ...
97110 def path_stats (self , path : str ) -> Mapping [str , Any ]: ...
98- def source_to_code (
99- self , data : ReadableBuffer | str | _ast .Module | _ast .Expression | _ast .Interactive , path : bytes | StrPath
100- ) -> types .CodeType : ...
111+ if sys .version_info >= (3 , 15 ):
112+ def source_to_code (
113+ self ,
114+ data : ReadableBuffer | str | _ast .Module | _ast .Expression | _ast .Interactive ,
115+ path : bytes | StrPath ,
116+ fullname : str | None = None ,
117+ * ,
118+ _optimize : int = - 1 ,
119+ ) -> types .CodeType : ...
120+ else :
121+ def source_to_code (
122+ self ,
123+ data : ReadableBuffer | str | _ast .Module | _ast .Expression | _ast .Interactive ,
124+ path : bytes | StrPath ,
125+ * ,
126+ _optimize : int = - 1 ,
127+ ) -> types .CodeType : ...
128+
101129 def get_code (self , fullname : str ) -> types .CodeType | None : ...
102130
103131class FileLoader :
@@ -106,19 +134,14 @@ class FileLoader:
106134 def __init__ (self , fullname : str , path : str ) -> None : ...
107135 def get_data (self , path : str ) -> bytes : ...
108136 def get_filename (self , fullname : str | None = None ) -> str : ...
109- def load_module (self , fullname : str | None = None ) -> types .ModuleType : ...
110137 def get_resource_reader (self , name : str | None = None ) -> importlib .readers .FileReader : ...
138+ if sys .version_info < (3 , 15 ):
139+ @deprecated ("Deprecated since Python 3.10; removed in Python 3.15. Use `exec_module()` instead." )
140+ def load_module (self , fullname : str | None = None ) -> types .ModuleType : ...
111141
112142class SourceFileLoader (importlib .abc .FileLoader , FileLoader , importlib .abc .SourceLoader , SourceLoader ): # type: ignore[misc] # incompatible method arguments in base classes
113143 def set_data (self , path : str , data : ReadableBuffer , * , _mode : int = 0o666 ) -> None : ...
114144 def path_stats (self , path : str ) -> Mapping [str , Any ]: ...
115- def source_to_code ( # type: ignore[override] # incompatible with InspectLoader.source_to_code
116- self ,
117- data : ReadableBuffer | str | _ast .Module | _ast .Expression | _ast .Interactive ,
118- path : bytes | StrPath ,
119- * ,
120- _optimize : int = - 1 ,
121- ) -> types .CodeType : ...
122145
123146class SourcelessFileLoader (importlib .abc .FileLoader , FileLoader , _LoaderBasics ):
124147 def get_code (self , fullname : str ) -> types .CodeType | None : ...
@@ -134,19 +157,34 @@ class ExtensionFileLoader(FileLoader, _LoaderBasics, importlib.abc.ExecutionLoad
134157 def __eq__ (self , other : object ) -> bool : ...
135158 def __hash__ (self ) -> int : ...
136159
160+ if sys .version_info >= (3 , 15 ):
161+ class NamespacePath :
162+ def __init__ (
163+ self , name : str , path : MutableSequence [str ], path_finder : Callable [[str , tuple [str , ...]], ModuleSpec | None ]
164+ ) -> None : ...
165+ def __iter__ (self ) -> Iterator [str ]: ...
166+ def __getitem__ (self , index : int ) -> str : ...
167+ def __setitem__ (self , index : int , path : str ) -> None : ...
168+ def __len__ (self ) -> int : ...
169+ def __contains__ (self , item : str ) -> bool : ...
170+ def append (self , item : str ) -> None : ...
171+
172+ _NamespacePath = NamespacePath
173+
137174if sys .version_info >= (3 , 11 ):
138175 class NamespaceLoader (importlib .abc .InspectLoader ):
139176 def __init__ (
140- self , name : str , path : MutableSequence [str ], path_finder : Callable [[str , tuple [str , ...]], ModuleSpec ]
177+ self , name : str , path : MutableSequence [str ], path_finder : Callable [[str , tuple [str , ...]], ModuleSpec | None ]
141178 ) -> None : ...
142179 def is_package (self , fullname : str ) -> Literal [True ]: ...
143180 def get_source (self , fullname : str ) -> Literal ["" ]: ...
144181 def get_code (self , fullname : str ) -> types .CodeType : ...
145182 def create_module (self , spec : ModuleSpec ) -> None : ...
146183 def exec_module (self , module : types .ModuleType ) -> None : ...
147- @deprecated ("Deprecated since Python 3.10; will be removed in Python 3.15. Use `exec_module()` instead." )
148- def load_module (self , fullname : str ) -> types .ModuleType : ...
149184 def get_resource_reader (self , module : types .ModuleType ) -> importlib .readers .NamespaceReader : ...
185+ if sys .version_info < (3 , 15 ):
186+ @deprecated ("Deprecated since Python 3.10; removed in Python 3.15. Use `exec_module()` instead." )
187+ def load_module (self , fullname : str ) -> types .ModuleType : ...
150188 if sys .version_info < (3 , 12 ):
151189 @staticmethod
152190 @deprecated (
@@ -159,14 +197,14 @@ if sys.version_info >= (3, 11):
159197else :
160198 class _NamespaceLoader :
161199 def __init__ (
162- self , name : str , path : MutableSequence [str ], path_finder : Callable [[str , tuple [str , ...]], ModuleSpec ]
200+ self , name : str , path : MutableSequence [str ], path_finder : Callable [[str , tuple [str , ...]], ModuleSpec | None ]
163201 ) -> None : ...
164202 def is_package (self , fullname : str ) -> Literal [True ]: ...
165203 def get_source (self , fullname : str ) -> Literal ["" ]: ...
166204 def get_code (self , fullname : str ) -> types .CodeType : ...
167205 def create_module (self , spec : ModuleSpec ) -> None : ...
168206 def exec_module (self , module : types .ModuleType ) -> None : ...
169- @deprecated ("Deprecated since Python 3.10; will be removed in Python 3.15. Use `exec_module()` instead." )
207+ @deprecated ("Deprecated since Python 3.10; removed in Python 3.15. Use `exec_module()` instead." )
170208 def load_module (self , fullname : str ) -> types .ModuleType : ...
171209 @staticmethod
172210 @deprecated (
0 commit comments