mirror of
https://github.com/davidhalter/typeshed.git
synced 2026-05-06 21:43:59 +08:00
Bump importlib to 3.14 (#14138)
This commit is contained in:
+65
-57
@@ -113,63 +113,71 @@ class FileLoader(_bootstrap_external.FileLoader, ResourceLoader, ExecutionLoader
|
||||
def get_filename(self, name: str | None = None) -> str: ...
|
||||
def load_module(self, name: str | None = None) -> types.ModuleType: ...
|
||||
|
||||
class ResourceReader(metaclass=ABCMeta):
|
||||
@abstractmethod
|
||||
def open_resource(self, resource: str) -> IO[bytes]: ...
|
||||
@abstractmethod
|
||||
def resource_path(self, resource: str) -> str: ...
|
||||
if sys.version_info >= (3, 10):
|
||||
if sys.version_info < (3, 11):
|
||||
class ResourceReader(metaclass=ABCMeta):
|
||||
@abstractmethod
|
||||
def open_resource(self, resource: str) -> IO[bytes]: ...
|
||||
@abstractmethod
|
||||
def resource_path(self, resource: str) -> str: ...
|
||||
if sys.version_info >= (3, 10):
|
||||
@abstractmethod
|
||||
def is_resource(self, path: str) -> bool: ...
|
||||
else:
|
||||
@abstractmethod
|
||||
def is_resource(self, name: str) -> bool: ...
|
||||
|
||||
@abstractmethod
|
||||
def contents(self) -> Iterator[str]: ...
|
||||
|
||||
@runtime_checkable
|
||||
class Traversable(Protocol):
|
||||
@abstractmethod
|
||||
def is_dir(self) -> bool: ...
|
||||
@abstractmethod
|
||||
def is_file(self) -> bool: ...
|
||||
@abstractmethod
|
||||
def iterdir(self) -> Iterator[Traversable]: ...
|
||||
if sys.version_info >= (3, 11):
|
||||
@abstractmethod
|
||||
def joinpath(self, *descendants: str) -> Traversable: ...
|
||||
else:
|
||||
@abstractmethod
|
||||
def joinpath(self, child: str, /) -> Traversable: ...
|
||||
|
||||
# The documentation and runtime protocol allows *args, **kwargs arguments,
|
||||
# but this would mean that all implementers would have to support them,
|
||||
# which is not the case.
|
||||
@overload
|
||||
@abstractmethod
|
||||
def open(self, mode: Literal["r"] = "r", *, encoding: str | None = None, errors: str | None = None) -> IO[str]: ...
|
||||
@overload
|
||||
@abstractmethod
|
||||
def open(self, mode: Literal["rb"]) -> IO[bytes]: ...
|
||||
@property
|
||||
@abstractmethod
|
||||
def name(self) -> str: ...
|
||||
if sys.version_info >= (3, 10):
|
||||
def __truediv__(self, child: str, /) -> Traversable: ...
|
||||
else:
|
||||
@abstractmethod
|
||||
def __truediv__(self, child: str, /) -> Traversable: ...
|
||||
|
||||
@abstractmethod
|
||||
def read_bytes(self) -> bytes: ...
|
||||
@abstractmethod
|
||||
def read_text(self, encoding: str | None = None) -> str: ...
|
||||
|
||||
class TraversableResources(ResourceReader):
|
||||
@abstractmethod
|
||||
def files(self) -> Traversable: ...
|
||||
def open_resource(self, resource: str) -> BufferedReader: ...
|
||||
def resource_path(self, resource: Any) -> str: ...
|
||||
def is_resource(self, path: str) -> bool: ...
|
||||
else:
|
||||
@abstractmethod
|
||||
def is_resource(self, name: str) -> bool: ...
|
||||
def contents(self) -> Iterator[str]: ...
|
||||
|
||||
@abstractmethod
|
||||
def contents(self) -> Iterator[str]: ...
|
||||
|
||||
@runtime_checkable
|
||||
class Traversable(Protocol):
|
||||
@abstractmethod
|
||||
def is_dir(self) -> bool: ...
|
||||
@abstractmethod
|
||||
def is_file(self) -> bool: ...
|
||||
@abstractmethod
|
||||
def iterdir(self) -> Iterator[Traversable]: ...
|
||||
if sys.version_info >= (3, 11):
|
||||
@abstractmethod
|
||||
def joinpath(self, *descendants: str) -> Traversable: ...
|
||||
else:
|
||||
@abstractmethod
|
||||
def joinpath(self, child: str, /) -> Traversable: ...
|
||||
|
||||
# The documentation and runtime protocol allows *args, **kwargs arguments,
|
||||
# but this would mean that all implementers would have to support them,
|
||||
# which is not the case.
|
||||
@overload
|
||||
@abstractmethod
|
||||
def open(self, mode: Literal["r"] = "r", *, encoding: str | None = None, errors: str | None = None) -> IO[str]: ...
|
||||
@overload
|
||||
@abstractmethod
|
||||
def open(self, mode: Literal["rb"]) -> IO[bytes]: ...
|
||||
@property
|
||||
@abstractmethod
|
||||
def name(self) -> str: ...
|
||||
if sys.version_info >= (3, 10):
|
||||
def __truediv__(self, child: str, /) -> Traversable: ...
|
||||
else:
|
||||
@abstractmethod
|
||||
def __truediv__(self, child: str, /) -> Traversable: ...
|
||||
|
||||
@abstractmethod
|
||||
def read_bytes(self) -> bytes: ...
|
||||
@abstractmethod
|
||||
def read_text(self, encoding: str | None = None) -> str: ...
|
||||
|
||||
class TraversableResources(ResourceReader):
|
||||
@abstractmethod
|
||||
def files(self) -> Traversable: ...
|
||||
def open_resource(self, resource: str) -> BufferedReader: ...
|
||||
def resource_path(self, resource: Any) -> str: ...
|
||||
def is_resource(self, path: str) -> bool: ...
|
||||
def contents(self) -> Iterator[str]: ...
|
||||
elif sys.version_info < (3, 14):
|
||||
from importlib.resources.abc import (
|
||||
ResourceReader as ResourceReader,
|
||||
Traversable as Traversable,
|
||||
TraversableResources as TraversableResources,
|
||||
)
|
||||
|
||||
@@ -16,5 +16,28 @@ from importlib._bootstrap_external import (
|
||||
|
||||
if sys.version_info >= (3, 11):
|
||||
from importlib._bootstrap_external import NamespaceLoader as NamespaceLoader
|
||||
if sys.version_info >= (3, 14):
|
||||
from importlib._bootstrap_external import AppleFrameworkLoader as AppleFrameworkLoader
|
||||
|
||||
def all_suffixes() -> list[str]: ...
|
||||
|
||||
if sys.version_info >= (3, 14):
|
||||
__all__ = [
|
||||
"AppleFrameworkLoader",
|
||||
"BYTECODE_SUFFIXES",
|
||||
"BuiltinImporter",
|
||||
"DEBUG_BYTECODE_SUFFIXES",
|
||||
"EXTENSION_SUFFIXES",
|
||||
"ExtensionFileLoader",
|
||||
"FileFinder",
|
||||
"FrozenImporter",
|
||||
"ModuleSpec",
|
||||
"NamespaceLoader",
|
||||
"OPTIMIZED_BYTECODE_SUFFIXES",
|
||||
"PathFinder",
|
||||
"SOURCE_SUFFIXES",
|
||||
"SourceFileLoader",
|
||||
"SourcelessFileLoader",
|
||||
"WindowsRegistryFinder",
|
||||
"all_suffixes",
|
||||
]
|
||||
|
||||
@@ -2,12 +2,16 @@ import os
|
||||
import sys
|
||||
from collections.abc import Iterator
|
||||
from contextlib import AbstractContextManager
|
||||
from importlib.abc import Traversable
|
||||
from pathlib import Path
|
||||
from types import ModuleType
|
||||
from typing import Any, BinaryIO, Literal, TextIO
|
||||
from typing_extensions import TypeAlias
|
||||
|
||||
if sys.version_info >= (3, 11):
|
||||
from importlib.resources.abc import Traversable
|
||||
else:
|
||||
from importlib.abc import Traversable
|
||||
|
||||
if sys.version_info >= (3, 11):
|
||||
from importlib.resources._common import Package as Package
|
||||
else:
|
||||
@@ -72,5 +76,7 @@ if sys.version_info >= (3, 11):
|
||||
else:
|
||||
def files(package: Package) -> Traversable: ...
|
||||
|
||||
if sys.version_info >= (3, 10):
|
||||
if sys.version_info >= (3, 11):
|
||||
from importlib.resources.abc import ResourceReader as ResourceReader
|
||||
elif sys.version_info >= (3, 10):
|
||||
from importlib.abc import ResourceReader as ResourceReader
|
||||
|
||||
@@ -5,7 +5,7 @@ if sys.version_info >= (3, 11):
|
||||
import types
|
||||
from collections.abc import Callable
|
||||
from contextlib import AbstractContextManager
|
||||
from importlib.abc import ResourceReader, Traversable
|
||||
from importlib.resources.abc import ResourceReader, Traversable
|
||||
from pathlib import Path
|
||||
from typing import Literal, overload
|
||||
from typing_extensions import TypeAlias, deprecated
|
||||
|
||||
@@ -1,14 +1,69 @@
|
||||
import sys
|
||||
from abc import ABCMeta, abstractmethod
|
||||
from collections.abc import Iterator
|
||||
from io import BufferedReader
|
||||
from typing import IO, Any, Literal, Protocol, overload, runtime_checkable
|
||||
|
||||
if sys.version_info >= (3, 11):
|
||||
# These are all actually defined in this file on 3.11+,
|
||||
# and re-exported from importlib.abc,
|
||||
# but it's much less code duplication for typeshed if we pretend that they're still defined
|
||||
# in importlib.abc on 3.11+, and re-exported from this file
|
||||
from importlib.abc import (
|
||||
ResourceReader as ResourceReader,
|
||||
Traversable as Traversable,
|
||||
TraversableResources as TraversableResources,
|
||||
)
|
||||
class ResourceReader(metaclass=ABCMeta):
|
||||
@abstractmethod
|
||||
def open_resource(self, resource: str) -> IO[bytes]: ...
|
||||
@abstractmethod
|
||||
def resource_path(self, resource: str) -> str: ...
|
||||
if sys.version_info >= (3, 10):
|
||||
@abstractmethod
|
||||
def is_resource(self, path: str) -> bool: ...
|
||||
else:
|
||||
@abstractmethod
|
||||
def is_resource(self, name: str) -> bool: ...
|
||||
|
||||
@abstractmethod
|
||||
def contents(self) -> Iterator[str]: ...
|
||||
|
||||
@runtime_checkable
|
||||
class Traversable(Protocol):
|
||||
@abstractmethod
|
||||
def is_dir(self) -> bool: ...
|
||||
@abstractmethod
|
||||
def is_file(self) -> bool: ...
|
||||
@abstractmethod
|
||||
def iterdir(self) -> Iterator[Traversable]: ...
|
||||
if sys.version_info >= (3, 11):
|
||||
@abstractmethod
|
||||
def joinpath(self, *descendants: str) -> Traversable: ...
|
||||
else:
|
||||
@abstractmethod
|
||||
def joinpath(self, child: str, /) -> Traversable: ...
|
||||
|
||||
# The documentation and runtime protocol allows *args, **kwargs arguments,
|
||||
# but this would mean that all implementers would have to support them,
|
||||
# which is not the case.
|
||||
@overload
|
||||
@abstractmethod
|
||||
def open(self, mode: Literal["r"] = "r", *, encoding: str | None = None, errors: str | None = None) -> IO[str]: ...
|
||||
@overload
|
||||
@abstractmethod
|
||||
def open(self, mode: Literal["rb"]) -> IO[bytes]: ...
|
||||
@property
|
||||
@abstractmethod
|
||||
def name(self) -> str: ...
|
||||
if sys.version_info >= (3, 10):
|
||||
def __truediv__(self, child: str, /) -> Traversable: ...
|
||||
else:
|
||||
@abstractmethod
|
||||
def __truediv__(self, child: str, /) -> Traversable: ...
|
||||
|
||||
@abstractmethod
|
||||
def read_bytes(self) -> bytes: ...
|
||||
@abstractmethod
|
||||
def read_text(self, encoding: str | None = None) -> str: ...
|
||||
|
||||
class TraversableResources(ResourceReader):
|
||||
@abstractmethod
|
||||
def files(self) -> Traversable: ...
|
||||
def open_resource(self, resource: str) -> BufferedReader: ...
|
||||
def resource_path(self, resource: Any) -> str: ...
|
||||
def is_resource(self, path: str) -> bool: ...
|
||||
def contents(self) -> Iterator[str]: ...
|
||||
|
||||
__all__ = ["ResourceReader", "Traversable", "TraversableResources"]
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import importlib.abc
|
||||
import importlib.machinery
|
||||
import sys
|
||||
import types
|
||||
@@ -12,6 +11,7 @@ from importlib._bootstrap_external import (
|
||||
source_from_cache as source_from_cache,
|
||||
spec_from_file_location as spec_from_file_location,
|
||||
)
|
||||
from importlib.abc import Loader
|
||||
from typing_extensions import ParamSpec
|
||||
|
||||
_P = ParamSpec("_P")
|
||||
@@ -24,10 +24,26 @@ if sys.version_info < (3, 12):
|
||||
def resolve_name(name: str, package: str | None) -> str: ...
|
||||
def find_spec(name: str, package: str | None = None) -> importlib.machinery.ModuleSpec | None: ...
|
||||
|
||||
class LazyLoader(importlib.abc.Loader):
|
||||
def __init__(self, loader: importlib.abc.Loader) -> None: ...
|
||||
class LazyLoader(Loader):
|
||||
def __init__(self, loader: Loader) -> None: ...
|
||||
@classmethod
|
||||
def factory(cls, loader: importlib.abc.Loader) -> Callable[..., LazyLoader]: ...
|
||||
def factory(cls, loader: Loader) -> Callable[..., LazyLoader]: ...
|
||||
def exec_module(self, module: types.ModuleType) -> None: ...
|
||||
|
||||
def source_hash(source_bytes: ReadableBuffer) -> bytes: ...
|
||||
|
||||
if sys.version_info >= (3, 14):
|
||||
__all__ = [
|
||||
"LazyLoader",
|
||||
"Loader",
|
||||
"MAGIC_NUMBER",
|
||||
"cache_from_source",
|
||||
"decode_source",
|
||||
"find_spec",
|
||||
"module_from_spec",
|
||||
"resolve_name",
|
||||
"source_from_cache",
|
||||
"source_hash",
|
||||
"spec_from_file_location",
|
||||
"spec_from_loader",
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user