Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 44 additions & 0 deletions stdlib/3/_importlib_modulespec.pyi
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# ModuleSpec, ModuleType, Loader are part of a dependency cycle.
# They are officially defined/exported in other places:
#
# - ModuleType in types
# - Loader in importlib.abc
# - ModuleSpec in importlib.machinery (3.4 and later only)

import abc
import sys
from typing import Any, Optional

if sys.version_info >= (3, 4):
class ModuleSpec:
def __init__(self, name: str, loader: Optional['Loader'], *,
origin: str = None, loader_state: Any = None,
is_package: bool = None) -> None: ...
name = ... # type: str
loader = ... # type: Optional[Loader]
origin = ... # type: Optional[str]
submodule_search_locations = ... # type: Optional[List[str]]
loader_state = ... # type: Any
cached = ... # type: Optional[str]
parent = ... # type: Optional[str]
has_location = ... # type: bool

class ModuleType:
__name__ = ... # type: str
__file__ = ... # type: str
__doc__ = ... # type: Optional[str]
if sys.version_info >= (3, 4):
__loader__ = ... # type: Optional[Loader]
__package__ = ... # type: Optional[str]
__spec__ = ... # type: Optional[ModuleSpec]
def __init__(self, name: str, doc: str) -> None: ...

class Loader(metaclass=abc.ABCMeta):
def load_module(self, fullname: str) -> ModuleType: ...
if sys.version_info >= (3, 3):
def module_repr(self, module: ModuleType) -> str: ...
if sys.version_info >= (3, 4):
def create_module(self, spec: ModuleSpec) -> Optional[ModuleType]: ...
# Not defined on the actual class for backwards-compatibility reasons,
# but expected in new code.
def exec_module(self, module: ModuleType) -> None: ...
19 changes: 0 additions & 19 deletions stdlib/3/importlib/_modulespec.pyi

This file was deleted.

17 changes: 5 additions & 12 deletions stdlib/3/importlib/abc.pyi
Original file line number Diff line number Diff line change
@@ -1,21 +1,14 @@
import abc
from importlib._modulespec import ModuleSpec
from _importlib_modulespec import ModuleSpec
import sys
import types
from typing import Mapping, Optional, Sequence, Union
from typing import Any, Mapping, Optional, Sequence, Tuple, Union

_Path = Union[bytes, str]

class Loader(metaclass=abc.ABCMeta):
def load_module(self, fullname: str) -> types.ModuleType: ...
if sys.version_info >= (3, 3):
def module_repr(self, module: types.ModuleType) -> str: ...
if sys.version_info >= (3, 4):
def create_module(self, spec: ModuleSpec) -> Optional[types.ModuleType]:
...
# Not defined on the actual class for backwards-compatibility reasons,
# but expected in new code.
def exec_module(self, module: types.ModuleType) -> None: ...
# Loader is exported from this module, but for circular import reasons
# exists in its own stub file (with ModuleSpec and ModuleType).
from _importlib_modulespec import Loader as Loader # Exported

class Finder(metaclass=abc.ABCMeta): ...
# Technically this class defines the following method, but its subclasses
Expand Down
6 changes: 3 additions & 3 deletions stdlib/3/importlib/machinery.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ import sys
import types
from typing import Any, Callable, List, Optional, Sequence, Tuple, Union

# ModuleSpec is defined in this module, but for circular import reasons exists
# in its own stub file.
from importlib._modulespec import ModuleSpec
# ModuleSpec is exported from this module, but for circular import
# reasons exists in its own stub file (with Loader and ModuleType).
from _importlib_modulespec import ModuleSpec # Exported

class BuiltinImporter(importlib.abc.MetaPathFinder,
importlib.abc.InspectLoader):
Expand Down
16 changes: 3 additions & 13 deletions stdlib/3/types.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@

# TODO parts of this should be conditional on version

import importlib.abc
from importlib._modulespec import ModuleSpec
import sys
from typing import (
Any, Callable, Dict, Generic, Iterator, Mapping, Optional, Tuple, TypeVar,
Expand Down Expand Up @@ -108,17 +106,9 @@ class BuiltinFunctionType:
def __call__(self, *args: Any, **kwargs: Any) -> Any: ...
BuiltinMethodType = BuiltinFunctionType

class ModuleType:
__name__ = ... # type: str
__file__ = ... # type: str
__doc__ = ... # type: Optional[str]
if sys.version_info >= (3, 4):
__loader__ = ... # type: Optional[importlib.abc.Loader]
__package__ = ... # type: Optional[str]
# Should be Optional[ModuleSpec], but importlib.machinery has no stub
# yet.
__spec__ = ... # type: Optional[ModuleSpec]
def __init__(self, name: str, doc: str) -> None: ...
# ModuleType is exported from this module, but for circular import
# reasons exists in its own stub file (with ModuleSpec and Loader).
from _importlib_modulespec import ModuleType as ModuleType # Exported

class TracebackType:
tb_frame = ... # type: FrameType
Expand Down