pkgutil, sys: make types more precise (#4536)

Co-authored-by: hauntsaninja <>
This commit is contained in:
Shantanu
2020-09-16 01:38:27 -07:00
committed by GitHub
parent 1334840323
commit 8642d2aa97
2 changed files with 13 additions and 11 deletions

View File

@@ -1,21 +1,23 @@
# Stubs for pkgutil
import sys
from typing import IO, Any, Callable, Generator, Iterable, NamedTuple, Optional, Tuple
from typing import IO, Any, Callable, Iterable, Iterator, NamedTuple, Optional, Tuple, Union
if sys.version_info >= (3,):
from importlib.abc import Loader
from importlib.abc import Loader, MetaPathFinder, PathEntryFinder
else:
Loader = Any
MetaPathFinder = Any
PathEntryFinder = Any
if sys.version_info >= (3, 6):
class ModuleInfo(NamedTuple):
module_finder: Any
module_finder: Union[MetaPathFinder, PathEntryFinder]
name: str
ispkg: bool
_YMFNI = Generator[ModuleInfo, None, None]
_ModuleInfoLike = ModuleInfo
else:
_YMFNI = Generator[Tuple[Any, str, bool], None, None]
_ModuleInfoLike = Tuple[Union[MetaPathFinder, PathEntryFinder], str, bool]
def extend_path(path: Iterable[str], name: str) -> Iterable[str]: ...
@@ -26,11 +28,11 @@ class ImpLoader:
def __init__(self, fullname: str, file: IO[str], filename: str, etc: Tuple[str, str, int]) -> None: ...
def find_loader(fullname: str) -> Optional[Loader]: ...
def get_importer(path_item: str) -> Any: ... # TODO precise type
def get_importer(path_item: str) -> Optional[PathEntryFinder]: ...
def get_loader(module_or_name: str) -> Loader: ...
def iter_importers(fullname: str = ...) -> Generator[Any, None, None]: ... # TODO precise type
def iter_modules(path: Optional[Iterable[str]] = ..., prefix: str = ...) -> _YMFNI: ... # TODO precise type
def iter_importers(fullname: str = ...) -> Iterator[Union[MetaPathFinder, PathEntryFinder]]: ...
def iter_modules(path: Optional[Iterable[str]] = ..., prefix: str = ...) -> Iterator[_ModuleInfoLike]: ...
def walk_packages(
path: Optional[Iterable[str]] = ..., prefix: str = ..., onerror: Optional[Callable[[str], None]] = ...
) -> _YMFNI: ...
) -> Iterator[_ModuleInfoLike]: ...
def get_data(package: str, resource: str) -> Optional[bytes]: ...