importlib.abc.Loader moved to importlib._abc.Loader in 3.10 (#11142)

This commit is contained in:
Stephen Morton
2023-12-11 05:48:58 -08:00
committed by GitHub
parent 1087d87379
commit fd558f8acf
6 changed files with 30 additions and 10 deletions

View File

@@ -150,6 +150,7 @@ imaplib: 2.7-
imghdr: 2.7-
imp: 2.7-3.11
importlib: 2.7-
importlib._abc: 3.10-
importlib.metadata: 3.8-
importlib.metadata._meta: 3.10-
importlib.readers: 3.10-

15
stdlib/importlib/_abc.pyi Normal file
View File

@@ -0,0 +1,15 @@
import sys
import types
from abc import ABCMeta
from importlib.machinery import ModuleSpec
if sys.version_info >= (3, 10):
class Loader(metaclass=ABCMeta):
def load_module(self, fullname: str) -> types.ModuleType: ...
if sys.version_info < (3, 12):
def module_repr(self, module: types.ModuleType) -> str: ...
def create_module(self, spec: ModuleSpec) -> types.ModuleType | None: ...
# Not defined on the actual class for backwards-compatibility reasons,
# but expected in new code.
def exec_module(self, module: types.ModuleType) -> None: ...

View File

@@ -24,19 +24,20 @@ if sys.version_info >= (3, 11):
if sys.version_info < (3, 12):
__all__ += ["Finder", "ResourceReader", "Traversable", "TraversableResources"]
if sys.version_info >= (3, 10):
from importlib._abc import Loader as Loader
else:
class Loader(metaclass=ABCMeta):
def load_module(self, fullname: str) -> types.ModuleType: ...
def module_repr(self, module: types.ModuleType) -> str: ...
def create_module(self, spec: ModuleSpec) -> types.ModuleType | None: ...
# Not defined on the actual class for backwards-compatibility reasons,
# but expected in new code.
def exec_module(self, module: types.ModuleType) -> None: ...
if sys.version_info < (3, 12):
class Finder(metaclass=ABCMeta): ...
class Loader(metaclass=ABCMeta):
def load_module(self, fullname: str) -> types.ModuleType: ...
if sys.version_info < (3, 12):
def module_repr(self, module: types.ModuleType) -> str: ...
def create_module(self, spec: ModuleSpec) -> types.ModuleType | None: ...
# Not defined on the actual class for backwards-compatibility reasons,
# but expected in new code.
def exec_module(self, module: types.ModuleType) -> None: ...
class ResourceLoader(Loader):
@abstractmethod
def get_data(self, path: str) -> bytes: ...