mirror of
https://github.com/davidhalter/typeshed.git
synced 2026-05-06 21:43:59 +08:00
Add @disjoint_base decorator in the stdlib (#14599)
And fix some other new stubtest finds.
This commit is contained in:
@@ -4,15 +4,14 @@
|
||||
|
||||
# Please keep sorted alphabetically
|
||||
|
||||
collections\.ChainMap\.fromkeys # https://github.com/python/mypy/issues/17023
|
||||
http.client.HTTPConnection.response_class # the actual type at runtime is abc.ABCMeta
|
||||
importlib.abc.Loader.exec_module # See Lib/importlib/_abc.py. Might be defined for backwards compatibility
|
||||
importlib.abc.MetaPathFinder.find_spec # Not defined on the actual class, but expected to exist.
|
||||
importlib.abc.PathEntryFinder.find_spec # Not defined on the actual class, but expected to exist.
|
||||
tkinter.simpledialog.[A-Z_]+
|
||||
tkinter.simpledialog.TclVersion
|
||||
tkinter.simpledialog.TkVersion
|
||||
tkinter.Text.count # stubtest somehow thinks that index1 parameter has a default value, but it doesn't in any of the overloads
|
||||
builtins.tuple # should have @disjoint_base but hits pyright issue
|
||||
tarfile.TarInfo.__slots__ # it's a big dictionary at runtime and the dictionary values are a bit long
|
||||
|
||||
|
||||
# ===============================================================
|
||||
@@ -201,7 +200,6 @@ _markupbase.ParserBase.parse_marked_section
|
||||
|
||||
_pydecimal.* # See comments in file
|
||||
_typeshed.* # Utility types for typeshed, doesn't exist at runtime
|
||||
argparse.ArgumentParser.__init__ # stubtest doesn't recognise the runtime default (a class) as being compatible with a callback protocol (the stub annotation)
|
||||
argparse.Namespace.__getattr__ # The whole point of this class is its attributes are dynamic
|
||||
|
||||
# Runtime AST node runtime constructor behaviour is too loose.
|
||||
@@ -218,8 +216,6 @@ argparse.Namespace.__setattr__ # should allow setting any attribute
|
||||
|
||||
ast.ImportFrom.level # None on the class, but never None on instances
|
||||
ast.NodeVisitor.visit_\w+ # Methods are discovered dynamically, see #3796
|
||||
_?asyncio.Future.__init__ # Usually initialized from c object
|
||||
asyncio.futures.Future.__init__ # Usually initialized from c object
|
||||
|
||||
# Condition functions are exported in __init__
|
||||
asyncio.Condition.acquire
|
||||
@@ -230,7 +226,6 @@ asyncio.locks.Condition.locked
|
||||
asyncio.locks.Condition.release
|
||||
|
||||
builtins.memoryview.__contains__ # C type that implements __getitem__
|
||||
builtins.object.__init__ # default C signature is incorrect
|
||||
builtins.reveal_locals # Builtins that type checkers pretends exist
|
||||
builtins.reveal_type # Builtins that type checkers pretends exist
|
||||
builtins.type.__dict__ # read-only but not actually a property; stubtest thinks it's a mutable attribute.
|
||||
@@ -260,8 +255,6 @@ configparser.SectionProxy.getint # SectionProxy get functions are set in __init
|
||||
contextlib.AbstractAsyncContextManager.__class_getitem__
|
||||
contextlib.AbstractContextManager.__class_getitem__
|
||||
|
||||
_?contextvars.Context.__init__ # C signature is broader than what is actually accepted
|
||||
|
||||
copy.PyStringMap # defined only in Jython
|
||||
|
||||
# The Dialect properties are initialized as None in Dialect but their values are enforced in _Dialect
|
||||
@@ -329,9 +322,6 @@ importlib.machinery.ExtensionFileLoader.get_filename
|
||||
inspect.Parameter.__init__
|
||||
inspect.Signature.__init__
|
||||
|
||||
inspect.Parameter.empty # set as private marker _empty
|
||||
inspect.Signature.empty # set as private marker _empty
|
||||
|
||||
logging.LogRecord.__setattr__ # doesn't exist, but makes things easy if we pretend it does
|
||||
|
||||
# Iterable classes that don't define __iter__ at runtime (usually iterable via __getitem__)
|
||||
@@ -377,11 +367,6 @@ multiprocessing.queues.JoinableQueue.__init__
|
||||
multiprocessing.queues.Queue.__init__
|
||||
multiprocessing.queues.SimpleQueue.__init__
|
||||
|
||||
# alias for a class defined elsewhere,
|
||||
# mypy infers the variable has type `(*args) -> ForkingPickler`
|
||||
# but stubtest infers the runtime type as <class ForkingPickler>
|
||||
multiprocessing.reduction.AbstractReducer.ForkingPickler
|
||||
|
||||
# These methods are dynamically created after object initialization,
|
||||
# copied from a wrapped lock object. Stubtest doesn't think they exist
|
||||
# because of that.
|
||||
@@ -406,7 +391,6 @@ os.PathLike.__class_getitem__ # PathLike is a protocol; we don't expect all Pat
|
||||
|
||||
pickle._Pickler\..* # Best effort typing for undocumented internals
|
||||
pickle._Unpickler\..* # Best effort typing for undocumented internals
|
||||
_?queue.SimpleQueue.__init__ # C signature is broader than what is actually accepted
|
||||
shutil.rmtree # function with attributes, which we approximate with a callable protocol
|
||||
socketserver.BaseServer.get_request # Not implemented, but expected to exist on subclasses.
|
||||
ssl.PROTOCOL_SSLv2 # Depends on the existence and flags of SSL
|
||||
|
||||
@@ -43,7 +43,6 @@ curses.LINES # Initialized only after initscr call
|
||||
curses.has_key # stubtest gets confused because this is both a module and a function in curses
|
||||
multiprocessing.popen_spawn_win32 # exists on Darwin but fails to import
|
||||
readline.append_history_file # Only available if compiled with GNU readline, not editline
|
||||
select.kqueue.__init__ # default C signature is wrong
|
||||
select.poll # Actually a function; we have a class so it can be used as a type
|
||||
|
||||
# Some of these exist on non-windows, but they are useless and this is not intended
|
||||
|
||||
@@ -55,6 +55,8 @@ asyncio.locks.Lock.__init__
|
||||
asyncio.locks.Semaphore.__init__
|
||||
asyncio.queues.Queue.__init__
|
||||
|
||||
_random.Random.__init__ # Issues with __new__/__init__ correspondence
|
||||
|
||||
bdb.Breakpoint.clearBreakpoints # Exists at runtime, but missing from stubs
|
||||
|
||||
|
||||
@@ -100,7 +102,6 @@ typing_extensions.Sentinel.__call__
|
||||
# <= 3.11
|
||||
# =======
|
||||
|
||||
_?bz2.BZ2Decompressor.__init__ # function does not accept parameters but C signature is set
|
||||
enum.Enum._generate_next_value_
|
||||
importlib.abc.Finder.find_module
|
||||
urllib.request.HTTPPasswordMgrWithPriorAuth.__init__ # Args are passed as is to super, so super args are specified
|
||||
|
||||
@@ -68,7 +68,6 @@ importlib.metadata._meta.SimplePath.__truediv__ # Runtime definition of protoco
|
||||
# <= 3.11
|
||||
# =======
|
||||
|
||||
_?bz2.BZ2Decompressor.__init__ # function does not accept parameters but C signature is set
|
||||
enum.Enum._generate_next_value_
|
||||
importlib.abc.Finder.find_module
|
||||
urllib.request.HTTPPasswordMgrWithPriorAuth.__init__ # Args are passed as is to super, so super args are specified
|
||||
|
||||
@@ -54,7 +54,6 @@ typing_extensions.Sentinel.__call__
|
||||
# <= 3.11
|
||||
# =======
|
||||
|
||||
_?bz2.BZ2Decompressor.__init__ # function does not accept parameters but C signature is set
|
||||
enum.Enum._generate_next_value_
|
||||
importlib.abc.Finder.find_module
|
||||
urllib.request.HTTPPasswordMgrWithPriorAuth.__init__ # Args are passed as is to super, so super args are specified
|
||||
|
||||
@@ -2,10 +2,6 @@
|
||||
# TODO: Allowlist entries that should be fixed
|
||||
# ============================================
|
||||
|
||||
# alias for a class defined elsewhere,
|
||||
# mypy infers the variable has type `(*args) -> DupHandle` but stubtest infers the runtime type as <class DupHandle>
|
||||
multiprocessing.reduction.AbstractReducer.DupHandle
|
||||
|
||||
# Exists at runtime, but missing from stubs
|
||||
_winapi.CreateFileMapping
|
||||
_winapi.MapViewOfFile
|
||||
|
||||
+3
-1
@@ -4,12 +4,13 @@ from collections.abc import Awaitable, Callable, Coroutine, Generator
|
||||
from contextvars import Context
|
||||
from types import FrameType, GenericAlias
|
||||
from typing import Any, Literal, TextIO, TypeVar
|
||||
from typing_extensions import Self, TypeAlias
|
||||
from typing_extensions import Self, TypeAlias, disjoint_base
|
||||
|
||||
_T = TypeVar("_T")
|
||||
_T_co = TypeVar("_T_co", covariant=True)
|
||||
_TaskYieldType: TypeAlias = Future[object] | None
|
||||
|
||||
@disjoint_base
|
||||
class Future(Awaitable[_T]):
|
||||
_state: str
|
||||
@property
|
||||
@@ -49,6 +50,7 @@ else:
|
||||
# While this is true in general, here it's sort-of okay to have a covariant subclass,
|
||||
# since the only reason why `asyncio.Future` is invariant is the `set_result()` method,
|
||||
# and `asyncio.Task.set_result()` always raises.
|
||||
@disjoint_base
|
||||
class Task(Future[_T_co]): # type: ignore[type-var] # pyright: ignore[reportInvalidTypeArguments]
|
||||
if sys.version_info >= (3, 12):
|
||||
def __init__(
|
||||
|
||||
+4
-1
@@ -3,7 +3,7 @@ import sys
|
||||
from _typeshed import SupportsWrite
|
||||
from collections.abc import Iterable
|
||||
from typing import Any, Final, Literal, type_check_only
|
||||
from typing_extensions import Self, TypeAlias
|
||||
from typing_extensions import Self, TypeAlias, disjoint_base
|
||||
|
||||
__version__: Final[str]
|
||||
|
||||
@@ -24,6 +24,7 @@ class Error(Exception): ...
|
||||
|
||||
_DialectLike: TypeAlias = str | Dialect | csv.Dialect | type[Dialect | csv.Dialect]
|
||||
|
||||
@disjoint_base
|
||||
class Dialect:
|
||||
delimiter: str
|
||||
quotechar: str | None
|
||||
@@ -48,6 +49,7 @@ class Dialect:
|
||||
|
||||
if sys.version_info >= (3, 10):
|
||||
# This class calls itself _csv.reader.
|
||||
@disjoint_base
|
||||
class Reader:
|
||||
@property
|
||||
def dialect(self) -> Dialect: ...
|
||||
@@ -56,6 +58,7 @@ if sys.version_info >= (3, 10):
|
||||
def __next__(self) -> list[str]: ...
|
||||
|
||||
# This class calls itself _csv.writer.
|
||||
@disjoint_base
|
||||
class Writer:
|
||||
@property
|
||||
def dialect(self) -> Dialect: ...
|
||||
|
||||
+2
-1
@@ -3,7 +3,7 @@ from _typeshed import ReadableBuffer
|
||||
from collections.abc import Callable
|
||||
from types import ModuleType
|
||||
from typing import AnyStr, Protocol, final, overload, type_check_only
|
||||
from typing_extensions import Self, TypeAlias
|
||||
from typing_extensions import Self, TypeAlias, disjoint_base
|
||||
|
||||
_DigestMod: TypeAlias = str | Callable[[], _HashObject] | ModuleType | None
|
||||
|
||||
@@ -22,6 +22,7 @@ class _HashObject(Protocol):
|
||||
def hexdigest(self) -> str: ...
|
||||
def update(self, obj: ReadableBuffer, /) -> None: ...
|
||||
|
||||
@disjoint_base
|
||||
class HASH:
|
||||
@property
|
||||
def digest_size(self) -> int: ...
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import types
|
||||
from collections.abc import Callable
|
||||
from typing import Any, Final, Literal, SupportsIndex, TypeVar, overload
|
||||
from typing_extensions import TypeAlias
|
||||
from typing_extensions import TypeAlias, disjoint_base
|
||||
|
||||
_R = TypeVar("_R")
|
||||
|
||||
@@ -12,6 +12,7 @@ class InterpreterError(Exception): ...
|
||||
class InterpreterNotFoundError(InterpreterError): ...
|
||||
class NotShareableError(ValueError): ...
|
||||
|
||||
@disjoint_base
|
||||
class CrossInterpreterBufferView:
|
||||
def __buffer__(self, flags: int, /) -> memoryview: ...
|
||||
|
||||
|
||||
+66
-27
@@ -7,7 +7,7 @@ from io import BufferedIOBase, RawIOBase, TextIOBase, UnsupportedOperation as Un
|
||||
from os import _Opener
|
||||
from types import TracebackType
|
||||
from typing import IO, Any, BinaryIO, Final, Generic, Literal, Protocol, TextIO, TypeVar, overload, type_check_only
|
||||
from typing_extensions import Self
|
||||
from typing_extensions import Self, disjoint_base
|
||||
|
||||
_T = TypeVar("_T")
|
||||
|
||||
@@ -22,32 +22,62 @@ def open_code(path: str) -> IO[bytes]: ...
|
||||
|
||||
BlockingIOError = builtins.BlockingIOError
|
||||
|
||||
class _IOBase:
|
||||
def __iter__(self) -> Iterator[bytes]: ...
|
||||
def __next__(self) -> bytes: ...
|
||||
def __enter__(self) -> Self: ...
|
||||
def __exit__(
|
||||
self, exc_type: type[BaseException] | None, exc_val: BaseException | None, exc_tb: TracebackType | None
|
||||
) -> None: ...
|
||||
def close(self) -> None: ...
|
||||
def fileno(self) -> int: ...
|
||||
def flush(self) -> None: ...
|
||||
def isatty(self) -> bool: ...
|
||||
def readable(self) -> bool: ...
|
||||
read: Callable[..., Any]
|
||||
def readlines(self, hint: int = -1, /) -> list[bytes]: ...
|
||||
def seek(self, offset: int, whence: int = 0, /) -> int: ...
|
||||
def seekable(self) -> bool: ...
|
||||
def tell(self) -> int: ...
|
||||
def truncate(self, size: int | None = None, /) -> int: ...
|
||||
def writable(self) -> bool: ...
|
||||
write: Callable[..., Any]
|
||||
def writelines(self, lines: Iterable[ReadableBuffer], /) -> None: ...
|
||||
def readline(self, size: int | None = -1, /) -> bytes: ...
|
||||
def __del__(self) -> None: ...
|
||||
@property
|
||||
def closed(self) -> bool: ...
|
||||
def _checkClosed(self) -> None: ... # undocumented
|
||||
if sys.version_info >= (3, 12):
|
||||
@disjoint_base
|
||||
class _IOBase:
|
||||
def __iter__(self) -> Iterator[bytes]: ...
|
||||
def __next__(self) -> bytes: ...
|
||||
def __enter__(self) -> Self: ...
|
||||
def __exit__(
|
||||
self, exc_type: type[BaseException] | None, exc_val: BaseException | None, exc_tb: TracebackType | None
|
||||
) -> None: ...
|
||||
def close(self) -> None: ...
|
||||
def fileno(self) -> int: ...
|
||||
def flush(self) -> None: ...
|
||||
def isatty(self) -> bool: ...
|
||||
def readable(self) -> bool: ...
|
||||
read: Callable[..., Any]
|
||||
def readlines(self, hint: int = -1, /) -> list[bytes]: ...
|
||||
def seek(self, offset: int, whence: int = 0, /) -> int: ...
|
||||
def seekable(self) -> bool: ...
|
||||
def tell(self) -> int: ...
|
||||
def truncate(self, size: int | None = None, /) -> int: ...
|
||||
def writable(self) -> bool: ...
|
||||
write: Callable[..., Any]
|
||||
def writelines(self, lines: Iterable[ReadableBuffer], /) -> None: ...
|
||||
def readline(self, size: int | None = -1, /) -> bytes: ...
|
||||
def __del__(self) -> None: ...
|
||||
@property
|
||||
def closed(self) -> bool: ...
|
||||
def _checkClosed(self) -> None: ... # undocumented
|
||||
|
||||
else:
|
||||
class _IOBase:
|
||||
def __iter__(self) -> Iterator[bytes]: ...
|
||||
def __next__(self) -> bytes: ...
|
||||
def __enter__(self) -> Self: ...
|
||||
def __exit__(
|
||||
self, exc_type: type[BaseException] | None, exc_val: BaseException | None, exc_tb: TracebackType | None
|
||||
) -> None: ...
|
||||
def close(self) -> None: ...
|
||||
def fileno(self) -> int: ...
|
||||
def flush(self) -> None: ...
|
||||
def isatty(self) -> bool: ...
|
||||
def readable(self) -> bool: ...
|
||||
read: Callable[..., Any]
|
||||
def readlines(self, hint: int = -1, /) -> list[bytes]: ...
|
||||
def seek(self, offset: int, whence: int = 0, /) -> int: ...
|
||||
def seekable(self) -> bool: ...
|
||||
def tell(self) -> int: ...
|
||||
def truncate(self, size: int | None = None, /) -> int: ...
|
||||
def writable(self) -> bool: ...
|
||||
write: Callable[..., Any]
|
||||
def writelines(self, lines: Iterable[ReadableBuffer], /) -> None: ...
|
||||
def readline(self, size: int | None = -1, /) -> bytes: ...
|
||||
def __del__(self) -> None: ...
|
||||
@property
|
||||
def closed(self) -> bool: ...
|
||||
def _checkClosed(self) -> None: ... # undocumented
|
||||
|
||||
class _RawIOBase(_IOBase):
|
||||
def readall(self) -> bytes: ...
|
||||
@@ -65,6 +95,7 @@ class _BufferedIOBase(_IOBase):
|
||||
def read(self, size: int | None = -1, /) -> bytes: ...
|
||||
def read1(self, size: int = -1, /) -> bytes: ...
|
||||
|
||||
@disjoint_base
|
||||
class FileIO(RawIOBase, _RawIOBase, BinaryIO): # type: ignore[misc] # incompatible definitions of writelines in the base classes
|
||||
mode: str
|
||||
# The type of "name" equals the argument passed in to the constructor,
|
||||
@@ -79,6 +110,7 @@ class FileIO(RawIOBase, _RawIOBase, BinaryIO): # type: ignore[misc] # incompat
|
||||
def seek(self, pos: int, whence: int = 0, /) -> int: ...
|
||||
def read(self, size: int | None = -1, /) -> bytes | MaybeNone: ...
|
||||
|
||||
@disjoint_base
|
||||
class BytesIO(BufferedIOBase, _BufferedIOBase, BinaryIO): # type: ignore[misc] # incompatible definitions of methods in the base classes
|
||||
def __init__(self, initial_bytes: ReadableBuffer = b"") -> None: ...
|
||||
# BytesIO does not contain a "name" field. This workaround is necessary
|
||||
@@ -119,6 +151,7 @@ class _BufferedReaderStream(Protocol):
|
||||
|
||||
_BufferedReaderStreamT = TypeVar("_BufferedReaderStreamT", bound=_BufferedReaderStream, default=_BufferedReaderStream)
|
||||
|
||||
@disjoint_base
|
||||
class BufferedReader(BufferedIOBase, _BufferedIOBase, BinaryIO, Generic[_BufferedReaderStreamT]): # type: ignore[misc] # incompatible definitions of methods in the base classes
|
||||
raw: _BufferedReaderStreamT
|
||||
if sys.version_info >= (3, 14):
|
||||
@@ -130,6 +163,7 @@ class BufferedReader(BufferedIOBase, _BufferedIOBase, BinaryIO, Generic[_Buffere
|
||||
def seek(self, target: int, whence: int = 0, /) -> int: ...
|
||||
def truncate(self, pos: int | None = None, /) -> int: ...
|
||||
|
||||
@disjoint_base
|
||||
class BufferedWriter(BufferedIOBase, _BufferedIOBase, BinaryIO): # type: ignore[misc] # incompatible definitions of writelines in the base classes
|
||||
raw: RawIOBase
|
||||
if sys.version_info >= (3, 14):
|
||||
@@ -141,6 +175,7 @@ class BufferedWriter(BufferedIOBase, _BufferedIOBase, BinaryIO): # type: ignore
|
||||
def seek(self, target: int, whence: int = 0, /) -> int: ...
|
||||
def truncate(self, pos: int | None = None, /) -> int: ...
|
||||
|
||||
@disjoint_base
|
||||
class BufferedRandom(BufferedIOBase, _BufferedIOBase, BinaryIO): # type: ignore[misc] # incompatible definitions of methods in the base classes
|
||||
mode: str
|
||||
name: Any
|
||||
@@ -154,6 +189,7 @@ class BufferedRandom(BufferedIOBase, _BufferedIOBase, BinaryIO): # type: ignore
|
||||
def peek(self, size: int = 0, /) -> bytes: ...
|
||||
def truncate(self, pos: int | None = None, /) -> int: ...
|
||||
|
||||
@disjoint_base
|
||||
class BufferedRWPair(BufferedIOBase, _BufferedIOBase, Generic[_BufferedReaderStreamT]):
|
||||
if sys.version_info >= (3, 14):
|
||||
def __init__(self, reader: _BufferedReaderStreamT, writer: RawIOBase, buffer_size: int = 131072, /) -> None: ...
|
||||
@@ -200,6 +236,7 @@ class _WrappedBuffer(Protocol):
|
||||
|
||||
_BufferT_co = TypeVar("_BufferT_co", bound=_WrappedBuffer, default=_WrappedBuffer, covariant=True)
|
||||
|
||||
@disjoint_base
|
||||
class TextIOWrapper(TextIOBase, _TextIOBase, TextIO, Generic[_BufferT_co]): # type: ignore[misc] # incompatible definitions of write in the base classes
|
||||
def __init__(
|
||||
self,
|
||||
@@ -234,6 +271,7 @@ class TextIOWrapper(TextIOBase, _TextIOBase, TextIO, Generic[_BufferT_co]): # t
|
||||
def seek(self, cookie: int, whence: int = 0, /) -> int: ...
|
||||
def truncate(self, pos: int | None = None, /) -> int: ...
|
||||
|
||||
@disjoint_base
|
||||
class StringIO(TextIOBase, _TextIOBase, TextIO): # type: ignore[misc] # incompatible definitions of write in the base classes
|
||||
def __init__(self, initial_value: str | None = "", newline: str | None = "\n") -> None: ...
|
||||
# StringIO does not contain a "name" field. This workaround is necessary
|
||||
@@ -246,6 +284,7 @@ class StringIO(TextIOBase, _TextIOBase, TextIO): # type: ignore[misc] # incomp
|
||||
def seek(self, pos: int, whence: int = 0, /) -> int: ...
|
||||
def truncate(self, pos: int | None = None, /) -> int: ...
|
||||
|
||||
@disjoint_base
|
||||
class IncrementalNewlineDecoder:
|
||||
def __init__(self, decoder: codecs.IncrementalDecoder | None, translate: bool, errors: str = "strict") -> None: ...
|
||||
def decode(self, input: ReadableBuffer | str, final: bool = False) -> str: ...
|
||||
|
||||
@@ -3,7 +3,9 @@ from _typeshed import structseq
|
||||
from collections.abc import Callable
|
||||
from types import CodeType
|
||||
from typing import Any, Final, final
|
||||
from typing_extensions import disjoint_base
|
||||
|
||||
@disjoint_base
|
||||
class Profiler:
|
||||
def __init__(
|
||||
self, timer: Callable[[], float] | None = None, timeunit: float = 0.0, subcalls: bool = True, builtins: bool = True
|
||||
|
||||
@@ -2,6 +2,7 @@ from _typeshed import ReadableBuffer
|
||||
from codecs import _ReadableStream, _WritableStream
|
||||
from collections.abc import Iterable
|
||||
from typing import final, type_check_only
|
||||
from typing_extensions import disjoint_base
|
||||
|
||||
# This class is not exposed. It calls itself _multibytecodec.MultibyteCodec.
|
||||
@final
|
||||
@@ -10,6 +11,7 @@ class _MultibyteCodec:
|
||||
def decode(self, input: ReadableBuffer, errors: str | None = None) -> str: ...
|
||||
def encode(self, input: str, errors: str | None = None) -> bytes: ...
|
||||
|
||||
@disjoint_base
|
||||
class MultibyteIncrementalDecoder:
|
||||
errors: str
|
||||
def __init__(self, errors: str = "strict") -> None: ...
|
||||
@@ -18,6 +20,7 @@ class MultibyteIncrementalDecoder:
|
||||
def reset(self) -> None: ...
|
||||
def setstate(self, state: tuple[bytes, int], /) -> None: ...
|
||||
|
||||
@disjoint_base
|
||||
class MultibyteIncrementalEncoder:
|
||||
errors: str
|
||||
def __init__(self, errors: str = "strict") -> None: ...
|
||||
@@ -26,6 +29,7 @@ class MultibyteIncrementalEncoder:
|
||||
def reset(self) -> None: ...
|
||||
def setstate(self, state: int, /) -> None: ...
|
||||
|
||||
@disjoint_base
|
||||
class MultibyteStreamReader:
|
||||
errors: str
|
||||
stream: _ReadableStream
|
||||
@@ -35,6 +39,7 @@ class MultibyteStreamReader:
|
||||
def readlines(self, sizehintobj: int | None = None, /) -> list[str]: ...
|
||||
def reset(self) -> None: ...
|
||||
|
||||
@disjoint_base
|
||||
class MultibyteStreamWriter:
|
||||
errors: str
|
||||
stream: _WritableStream
|
||||
|
||||
+3
-1
@@ -2,7 +2,7 @@ from _typeshed import ReadableBuffer, SupportsWrite
|
||||
from collections.abc import Callable, Iterable, Iterator, Mapping
|
||||
from pickle import PickleBuffer as PickleBuffer
|
||||
from typing import Any, Protocol, type_check_only
|
||||
from typing_extensions import TypeAlias
|
||||
from typing_extensions import TypeAlias, disjoint_base
|
||||
|
||||
@type_check_only
|
||||
class _ReadableFileobj(Protocol):
|
||||
@@ -57,6 +57,7 @@ class PicklerMemoProxy:
|
||||
def clear(self, /) -> None: ...
|
||||
def copy(self, /) -> dict[int, tuple[int, Any]]: ...
|
||||
|
||||
@disjoint_base
|
||||
class Pickler:
|
||||
fast: bool
|
||||
dispatch_table: Mapping[type, Callable[[Any], _ReducedType]]
|
||||
@@ -84,6 +85,7 @@ class UnpicklerMemoProxy:
|
||||
def clear(self, /) -> None: ...
|
||||
def copy(self, /) -> dict[int, tuple[int, Any]]: ...
|
||||
|
||||
@disjoint_base
|
||||
class Unpickler:
|
||||
def __init__(
|
||||
self,
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
from types import GenericAlias
|
||||
from typing import Any, Generic, TypeVar
|
||||
from typing_extensions import disjoint_base
|
||||
|
||||
_T = TypeVar("_T")
|
||||
|
||||
class Empty(Exception): ...
|
||||
|
||||
@disjoint_base
|
||||
class SimpleQueue(Generic[_T]):
|
||||
def __init__(self) -> None: ...
|
||||
def empty(self) -> bool: ...
|
||||
|
||||
+2
-1
@@ -1,9 +1,10 @@
|
||||
import sys
|
||||
from typing_extensions import Self, TypeAlias
|
||||
from typing_extensions import Self, TypeAlias, disjoint_base
|
||||
|
||||
# Actually Tuple[(int,) * 625]
|
||||
_State: TypeAlias = tuple[int, ...]
|
||||
|
||||
@disjoint_base
|
||||
class Random:
|
||||
if sys.version_info >= (3, 10):
|
||||
def __init__(self, seed: object = ..., /) -> None: ...
|
||||
|
||||
+2
-1
@@ -3,7 +3,7 @@ from _typeshed import ReadableBuffer, WriteableBuffer
|
||||
from collections.abc import Iterable
|
||||
from socket import error as error, gaierror as gaierror, herror as herror, timeout as timeout
|
||||
from typing import Any, Final, SupportsIndex, overload
|
||||
from typing_extensions import CapsuleType, TypeAlias
|
||||
from typing_extensions import CapsuleType, TypeAlias, disjoint_base
|
||||
|
||||
_CMSG: TypeAlias = tuple[int, int, bytes]
|
||||
_CMSGArg: TypeAlias = tuple[int, int, ReadableBuffer]
|
||||
@@ -731,6 +731,7 @@ if sys.platform != "win32" and sys.platform != "darwin":
|
||||
|
||||
# ===== Classes =====
|
||||
|
||||
@disjoint_base
|
||||
class socket:
|
||||
@property
|
||||
def family(self) -> int: ...
|
||||
|
||||
+2
-2
@@ -13,7 +13,7 @@ from ssl import (
|
||||
SSLZeroReturnError as SSLZeroReturnError,
|
||||
)
|
||||
from typing import Any, ClassVar, Final, Literal, TypedDict, final, overload, type_check_only
|
||||
from typing_extensions import NotRequired, Self, TypeAlias, deprecated
|
||||
from typing_extensions import NotRequired, Self, TypeAlias, deprecated, disjoint_base
|
||||
|
||||
_PasswordType: TypeAlias = Callable[[], str | bytes | bytearray] | str | bytes | bytearray
|
||||
_PCTRTT: TypeAlias = tuple[tuple[str, str], ...]
|
||||
@@ -67,7 +67,7 @@ if sys.platform == "win32":
|
||||
|
||||
def txt2obj(txt: str, name: bool = False) -> tuple[int, str, str, str]: ...
|
||||
def nid2obj(nid: int, /) -> tuple[int, str, str, str]: ...
|
||||
|
||||
@disjoint_base
|
||||
class _SSLContext:
|
||||
check_hostname: bool
|
||||
keylog_filename: str | None
|
||||
|
||||
+2
-1
@@ -1,6 +1,7 @@
|
||||
from _typeshed import ReadableBuffer, WriteableBuffer
|
||||
from collections.abc import Iterator
|
||||
from typing import Any
|
||||
from typing_extensions import disjoint_base
|
||||
|
||||
def pack(fmt: str | bytes, /, *v: Any) -> bytes: ...
|
||||
def pack_into(fmt: str | bytes, buffer: WriteableBuffer, offset: int, /, *v: Any) -> None: ...
|
||||
@@ -8,7 +9,7 @@ def unpack(format: str | bytes, buffer: ReadableBuffer, /) -> tuple[Any, ...]: .
|
||||
def unpack_from(format: str | bytes, /, buffer: ReadableBuffer, offset: int = 0) -> tuple[Any, ...]: ...
|
||||
def iter_unpack(format: str | bytes, buffer: ReadableBuffer, /) -> Iterator[tuple[Any, ...]]: ...
|
||||
def calcsize(format: str | bytes, /) -> int: ...
|
||||
|
||||
@disjoint_base
|
||||
class Struct:
|
||||
@property
|
||||
def format(self) -> str: ...
|
||||
|
||||
+2
-1
@@ -5,7 +5,7 @@ from collections.abc import Callable
|
||||
from threading import Thread
|
||||
from types import TracebackType
|
||||
from typing import Any, Final, NoReturn, final, overload
|
||||
from typing_extensions import TypeVarTuple, Unpack
|
||||
from typing_extensions import TypeVarTuple, Unpack, disjoint_base
|
||||
|
||||
_Ts = TypeVarTuple("_Ts")
|
||||
|
||||
@@ -110,6 +110,7 @@ if sys.version_info >= (3, 12):
|
||||
if sys.version_info >= (3, 14):
|
||||
def set_name(name: str) -> None: ...
|
||||
|
||||
@disjoint_base
|
||||
class _local:
|
||||
def __getattribute__(self, name: str, /) -> Any: ...
|
||||
def __setattr__(self, name: str, value: Any, /) -> None: ...
|
||||
|
||||
+3
-3
@@ -46,7 +46,7 @@ class ZstdCompressor:
|
||||
FLUSH_BLOCK: Final = 1
|
||||
FLUSH_FRAME: Final = 2
|
||||
def __new__(
|
||||
self, level: int | None = None, options: Mapping[int, int] | None = None, zstd_dict: ZstdDict | None = None
|
||||
cls, level: int | None = None, options: Mapping[int, int] | None = None, zstd_dict: ZstdDict | None = None
|
||||
) -> Self: ...
|
||||
def compress(
|
||||
self, /, data: ReadableBuffer, mode: _ZstdCompressorContinue | _ZstdCompressorFlushBlock | _ZstdCompressorFlushFrame = 0
|
||||
@@ -58,7 +58,7 @@ class ZstdCompressor:
|
||||
|
||||
@final
|
||||
class ZstdDecompressor:
|
||||
def __new__(self, zstd_dict: ZstdDict | None = None, options: Mapping[int, int] | None = None) -> Self: ...
|
||||
def __new__(cls, zstd_dict: ZstdDict | None = None, options: Mapping[int, int] | None = None) -> Self: ...
|
||||
def decompress(self, /, data: ReadableBuffer, max_length: int = -1) -> bytes: ...
|
||||
@property
|
||||
def eof(self) -> bool: ...
|
||||
@@ -69,7 +69,7 @@ class ZstdDecompressor:
|
||||
|
||||
@final
|
||||
class ZstdDict:
|
||||
def __new__(self, dict_content: bytes, /, *, is_raw: bool = False) -> Self: ...
|
||||
def __new__(cls, dict_content: bytes, /, *, is_raw: bool = False) -> Self: ...
|
||||
def __len__(self, /) -> int: ...
|
||||
@property
|
||||
def as_digested_dict(self) -> tuple[Self, int]: ...
|
||||
|
||||
+2
-1
@@ -3,7 +3,7 @@ from _typeshed import ReadableBuffer, SupportsRead, SupportsWrite
|
||||
from collections.abc import Iterable, MutableSequence
|
||||
from types import GenericAlias
|
||||
from typing import Any, ClassVar, Literal, SupportsIndex, TypeVar, overload
|
||||
from typing_extensions import Self, TypeAlias, deprecated
|
||||
from typing_extensions import Self, TypeAlias, deprecated, disjoint_base
|
||||
|
||||
_IntTypeCode: TypeAlias = Literal["b", "B", "h", "H", "i", "I", "l", "L", "q", "Q"]
|
||||
_FloatTypeCode: TypeAlias = Literal["f", "d"]
|
||||
@@ -17,6 +17,7 @@ _T = TypeVar("_T", int, float, str)
|
||||
|
||||
typecodes: str
|
||||
|
||||
@disjoint_base
|
||||
class array(MutableSequence[_T]):
|
||||
@property
|
||||
def typecode(self) -> _TypeCode: ...
|
||||
|
||||
+17
-9
@@ -11,7 +11,7 @@ from _ast import (
|
||||
from _typeshed import ReadableBuffer, Unused
|
||||
from collections.abc import Iterable, Iterator, Sequence
|
||||
from typing import Any, ClassVar, Generic, Literal, TypedDict, TypeVar as _TypeVar, overload, type_check_only
|
||||
from typing_extensions import Self, Unpack, deprecated
|
||||
from typing_extensions import Self, Unpack, deprecated, disjoint_base
|
||||
|
||||
if sys.version_info >= (3, 13):
|
||||
from _ast import PyCF_OPTIMIZED_AST as PyCF_OPTIMIZED_AST
|
||||
@@ -30,16 +30,24 @@ class _Attributes(TypedDict, Generic[_EndPositionT], total=False):
|
||||
# The various AST classes are implemented in C, and imported from _ast at runtime,
|
||||
# but they consider themselves to live in the ast module,
|
||||
# so we'll define the stubs in this file.
|
||||
class AST:
|
||||
if sys.version_info >= (3, 10):
|
||||
if sys.version_info >= (3, 12):
|
||||
@disjoint_base
|
||||
class AST:
|
||||
__match_args__ = ()
|
||||
_attributes: ClassVar[tuple[str, ...]]
|
||||
_fields: ClassVar[tuple[str, ...]]
|
||||
if sys.version_info >= (3, 13):
|
||||
_field_types: ClassVar[dict[str, Any]]
|
||||
_attributes: ClassVar[tuple[str, ...]]
|
||||
_fields: ClassVar[tuple[str, ...]]
|
||||
if sys.version_info >= (3, 13):
|
||||
_field_types: ClassVar[dict[str, Any]]
|
||||
|
||||
if sys.version_info >= (3, 14):
|
||||
def __replace__(self) -> Self: ...
|
||||
if sys.version_info >= (3, 14):
|
||||
def __replace__(self) -> Self: ...
|
||||
|
||||
else:
|
||||
class AST:
|
||||
if sys.version_info >= (3, 10):
|
||||
__match_args__ = ()
|
||||
_attributes: ClassVar[tuple[str, ...]]
|
||||
_fields: ClassVar[tuple[str, ...]]
|
||||
|
||||
class mod(AST): ...
|
||||
|
||||
|
||||
+19
-17
@@ -1,26 +1,28 @@
|
||||
import sys
|
||||
from _typeshed import SupportsWrite
|
||||
from asyncio import Future
|
||||
from dataclasses import dataclass
|
||||
from types import FrameType
|
||||
from typing import Any, overload
|
||||
|
||||
__all__ = ("capture_call_graph", "format_call_graph", "print_call_graph", "FrameCallGraphEntry", "FutureCallGraph")
|
||||
if sys.version_info >= (3, 14):
|
||||
__all__ = ("capture_call_graph", "format_call_graph", "print_call_graph", "FrameCallGraphEntry", "FutureCallGraph")
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class FrameCallGraphEntry:
|
||||
frame: FrameType
|
||||
@dataclass(frozen=True, slots=True)
|
||||
class FrameCallGraphEntry:
|
||||
frame: FrameType
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class FutureCallGraph:
|
||||
future: Future[Any]
|
||||
call_stack: tuple[FrameCallGraphEntry, ...]
|
||||
awaited_by: tuple[FutureCallGraph, ...]
|
||||
@dataclass(frozen=True, slots=True)
|
||||
class FutureCallGraph:
|
||||
future: Future[Any]
|
||||
call_stack: tuple[FrameCallGraphEntry, ...]
|
||||
awaited_by: tuple[FutureCallGraph, ...]
|
||||
|
||||
@overload
|
||||
def capture_call_graph(future: None = None, /, *, depth: int = 1, limit: int | None = None) -> FutureCallGraph | None: ...
|
||||
@overload
|
||||
def capture_call_graph(future: Future[Any], /, *, depth: int = 1, limit: int | None = None) -> FutureCallGraph | None: ...
|
||||
def format_call_graph(future: Future[Any] | None = None, /, *, depth: int = 1, limit: int | None = None) -> str: ...
|
||||
def print_call_graph(
|
||||
future: Future[Any] | None = None, /, *, file: SupportsWrite[str] | None = None, depth: int = 1, limit: int | None = None
|
||||
) -> None: ...
|
||||
@overload
|
||||
def capture_call_graph(future: None = None, /, *, depth: int = 1, limit: int | None = None) -> FutureCallGraph | None: ...
|
||||
@overload
|
||||
def capture_call_graph(future: Future[Any], /, *, depth: int = 1, limit: int | None = None) -> FutureCallGraph | None: ...
|
||||
def format_call_graph(future: Future[Any] | None = None, /, *, depth: int = 1, limit: int | None = None) -> str: ...
|
||||
def print_call_graph(
|
||||
future: Future[Any] | None = None, /, *, file: SupportsWrite[str] | None = None, depth: int = 1, limit: int | None = None
|
||||
) -> None: ...
|
||||
|
||||
@@ -116,6 +116,6 @@ if sys.platform == "win32":
|
||||
if sys.version_info >= (3, 14):
|
||||
_DefaultEventLoopPolicy = _WindowsProactorEventLoopPolicy
|
||||
else:
|
||||
DefaultEventLoopPolicy = WindowsSelectorEventLoopPolicy
|
||||
DefaultEventLoopPolicy = WindowsProactorEventLoopPolicy
|
||||
if sys.version_info >= (3, 13):
|
||||
EventLoop = ProactorEventLoop
|
||||
|
||||
+46
-6
@@ -71,6 +71,7 @@ from typing_extensions import ( # noqa: Y023
|
||||
TypeIs,
|
||||
TypeVarTuple,
|
||||
deprecated,
|
||||
disjoint_base,
|
||||
)
|
||||
|
||||
if sys.version_info >= (3, 14):
|
||||
@@ -103,6 +104,7 @@ _StopT_co = TypeVar("_StopT_co", covariant=True, default=_StartT_co) # slice[A
|
||||
# FIXME: https://github.com/python/typing/issues/213 (replace step=start|stop with step=start&stop)
|
||||
_StepT_co = TypeVar("_StepT_co", covariant=True, default=_StartT_co | _StopT_co) # slice[A,B] -> slice[A, B, A|B]
|
||||
|
||||
@disjoint_base
|
||||
class object:
|
||||
__doc__: str | None
|
||||
__dict__: dict[str, Any]
|
||||
@@ -138,6 +140,7 @@ class object:
|
||||
@classmethod
|
||||
def __subclasshook__(cls, subclass: type, /) -> bool: ...
|
||||
|
||||
@disjoint_base
|
||||
class staticmethod(Generic[_P, _R_co]):
|
||||
@property
|
||||
def __func__(self) -> Callable[_P, _R_co]: ...
|
||||
@@ -158,6 +161,7 @@ class staticmethod(Generic[_P, _R_co]):
|
||||
def __class_getitem__(cls, item: Any, /) -> GenericAlias: ...
|
||||
__annotate__: AnnotateFunc | None
|
||||
|
||||
@disjoint_base
|
||||
class classmethod(Generic[_T, _P, _R_co]):
|
||||
@property
|
||||
def __func__(self) -> Callable[Concatenate[type[_T], _P], _R_co]: ...
|
||||
@@ -177,6 +181,7 @@ class classmethod(Generic[_T, _P, _R_co]):
|
||||
def __class_getitem__(cls, item: Any, /) -> GenericAlias: ...
|
||||
__annotate__: AnnotateFunc | None
|
||||
|
||||
@disjoint_base
|
||||
class type:
|
||||
# object.__base__ is None. Otherwise, it would be a type.
|
||||
@property
|
||||
@@ -229,6 +234,7 @@ class type:
|
||||
if sys.version_info >= (3, 14):
|
||||
__annotate__: AnnotateFunc | None
|
||||
|
||||
@disjoint_base
|
||||
class super:
|
||||
@overload
|
||||
def __init__(self, t: Any, obj: Any, /) -> None: ...
|
||||
@@ -241,6 +247,7 @@ _PositiveInteger: TypeAlias = Literal[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
|
||||
_NegativeInteger: TypeAlias = Literal[-1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12, -13, -14, -15, -16, -17, -18, -19, -20]
|
||||
_LiteralInteger = _PositiveInteger | _NegativeInteger | Literal[0] # noqa: Y026 # TODO: Use TypeAlias once mypy bugs are fixed
|
||||
|
||||
@disjoint_base
|
||||
class int:
|
||||
@overload
|
||||
def __new__(cls, x: ConvertibleToInt = ..., /) -> Self: ...
|
||||
@@ -351,6 +358,7 @@ class int:
|
||||
def __index__(self) -> int: ...
|
||||
def __format__(self, format_spec: str, /) -> str: ...
|
||||
|
||||
@disjoint_base
|
||||
class float:
|
||||
def __new__(cls, x: ConvertibleToFloat = ..., /) -> Self: ...
|
||||
def as_integer_ratio(self) -> tuple[int, int]: ...
|
||||
@@ -416,6 +424,7 @@ class float:
|
||||
@classmethod
|
||||
def from_number(cls, number: float | SupportsIndex | SupportsFloat, /) -> Self: ...
|
||||
|
||||
@disjoint_base
|
||||
class complex:
|
||||
# Python doesn't currently accept SupportsComplex for the second argument
|
||||
@overload
|
||||
@@ -463,6 +472,7 @@ class _FormatMapMapping(Protocol):
|
||||
class _TranslateTable(Protocol):
|
||||
def __getitem__(self, key: int, /) -> str | int | None: ...
|
||||
|
||||
@disjoint_base
|
||||
class str(Sequence[str]):
|
||||
@overload
|
||||
def __new__(cls, object: object = ...) -> Self: ...
|
||||
@@ -647,6 +657,7 @@ class str(Sequence[str]):
|
||||
def __getnewargs__(self) -> tuple[str]: ...
|
||||
def __format__(self, format_spec: str, /) -> str: ...
|
||||
|
||||
@disjoint_base
|
||||
class bytes(Sequence[int]):
|
||||
@overload
|
||||
def __new__(cls, o: Iterable[SupportsIndex] | SupportsIndex | SupportsBytes | ReadableBuffer, /) -> Self: ...
|
||||
@@ -745,6 +756,7 @@ class bytes(Sequence[int]):
|
||||
|
||||
def __buffer__(self, flags: int, /) -> memoryview: ...
|
||||
|
||||
@disjoint_base
|
||||
class bytearray(MutableSequence[int]):
|
||||
@overload
|
||||
def __init__(self) -> None: ...
|
||||
@@ -1009,6 +1021,8 @@ class slice(Generic[_StartT_co, _StopT_co, _StepT_co]):
|
||||
|
||||
def indices(self, len: SupportsIndex, /) -> tuple[int, int, int]: ...
|
||||
|
||||
# Making this a disjoint_base upsets pyright
|
||||
# @disjoint_base
|
||||
class tuple(Sequence[_T_co]):
|
||||
def __new__(cls, iterable: Iterable[_T_co] = ..., /) -> Self: ...
|
||||
def __len__(self) -> int: ...
|
||||
@@ -1085,6 +1099,7 @@ class function:
|
||||
# mypy uses `builtins.function.__get__` to represent methods, properties, and getset_descriptors so we type the return as Any.
|
||||
def __get__(self, instance: object, owner: type | None = None, /) -> Any: ...
|
||||
|
||||
@disjoint_base
|
||||
class list(MutableSequence[_T]):
|
||||
@overload
|
||||
def __init__(self) -> None: ...
|
||||
@@ -1139,6 +1154,7 @@ class list(MutableSequence[_T]):
|
||||
def __eq__(self, value: object, /) -> bool: ...
|
||||
def __class_getitem__(cls, item: Any, /) -> GenericAlias: ...
|
||||
|
||||
@disjoint_base
|
||||
class dict(MutableMapping[_KT, _VT]):
|
||||
# __init__ should be kept roughly in line with `collections.UserDict.__init__`, which has similar semantics
|
||||
# Also multiprocessing.managers.SyncManager.dict()
|
||||
@@ -1221,6 +1237,7 @@ class dict(MutableMapping[_KT, _VT]):
|
||||
@overload
|
||||
def __ior__(self, value: Iterable[tuple[_KT, _VT]], /) -> Self: ...
|
||||
|
||||
@disjoint_base
|
||||
class set(MutableSet[_T]):
|
||||
@overload
|
||||
def __init__(self) -> None: ...
|
||||
@@ -1260,6 +1277,7 @@ class set(MutableSet[_T]):
|
||||
__hash__: ClassVar[None] # type: ignore[assignment]
|
||||
def __class_getitem__(cls, item: Any, /) -> GenericAlias: ...
|
||||
|
||||
@disjoint_base
|
||||
class frozenset(AbstractSet[_T_co]):
|
||||
@overload
|
||||
def __new__(cls) -> Self: ...
|
||||
@@ -1288,6 +1306,7 @@ class frozenset(AbstractSet[_T_co]):
|
||||
def __hash__(self) -> int: ...
|
||||
def __class_getitem__(cls, item: Any, /) -> GenericAlias: ...
|
||||
|
||||
@disjoint_base
|
||||
class enumerate(Generic[_T]):
|
||||
def __new__(cls, iterable: Iterable[_T], start: int = 0) -> Self: ...
|
||||
def __iter__(self) -> Self: ...
|
||||
@@ -1319,6 +1338,7 @@ class range(Sequence[int]):
|
||||
def __getitem__(self, key: slice, /) -> range: ...
|
||||
def __reversed__(self) -> Iterator[int]: ...
|
||||
|
||||
@disjoint_base
|
||||
class property:
|
||||
fget: Callable[[Any], Any] | None
|
||||
fset: Callable[[Any, Any], None] | None
|
||||
@@ -1482,6 +1502,7 @@ else:
|
||||
|
||||
exit: _sitebuiltins.Quitter
|
||||
|
||||
@disjoint_base
|
||||
class filter(Generic[_T]):
|
||||
@overload
|
||||
def __new__(cls, function: None, iterable: Iterable[_T | None], /) -> Self: ...
|
||||
@@ -1545,7 +1566,7 @@ def len(obj: Sized, /) -> int: ...
|
||||
license: _sitebuiltins._Printer
|
||||
|
||||
def locals() -> dict[str, Any]: ...
|
||||
|
||||
@disjoint_base
|
||||
class map(Generic[_S]):
|
||||
# 3.14 adds `strict` argument.
|
||||
if sys.version_info >= (3, 14):
|
||||
@@ -1852,6 +1873,7 @@ def pow(base: _SupportsSomeKindOfPow, exp: complex, mod: None = None) -> complex
|
||||
|
||||
quit: _sitebuiltins.Quitter
|
||||
|
||||
@disjoint_base
|
||||
class reversed(Generic[_T]):
|
||||
@overload
|
||||
def __new__(cls, sequence: Reversible[_T], /) -> Iterator[_T]: ... # type: ignore[misc]
|
||||
@@ -1915,7 +1937,7 @@ def sum(iterable: Iterable[_AddableT1], /, start: _AddableT2) -> _AddableT1 | _A
|
||||
def vars(object: type, /) -> types.MappingProxyType[str, Any]: ...
|
||||
@overload
|
||||
def vars(object: Any = ..., /) -> dict[str, Any]: ...
|
||||
|
||||
@disjoint_base
|
||||
class zip(Generic[_T_co]):
|
||||
if sys.version_info >= (3, 10):
|
||||
@overload
|
||||
@@ -2019,6 +2041,7 @@ else:
|
||||
|
||||
Ellipsis: ellipsis
|
||||
|
||||
@disjoint_base
|
||||
class BaseException:
|
||||
args: tuple[Any, ...]
|
||||
__cause__: BaseException | None
|
||||
@@ -2037,14 +2060,17 @@ class BaseException:
|
||||
class GeneratorExit(BaseException): ...
|
||||
class KeyboardInterrupt(BaseException): ...
|
||||
|
||||
@disjoint_base
|
||||
class SystemExit(BaseException):
|
||||
code: sys._ExitCode
|
||||
|
||||
class Exception(BaseException): ...
|
||||
|
||||
@disjoint_base
|
||||
class StopIteration(Exception):
|
||||
value: Any
|
||||
|
||||
@disjoint_base
|
||||
class OSError(Exception):
|
||||
errno: int | None
|
||||
strerror: str | None
|
||||
@@ -2062,15 +2088,20 @@ if sys.platform == "win32":
|
||||
class ArithmeticError(Exception): ...
|
||||
class AssertionError(Exception): ...
|
||||
|
||||
class AttributeError(Exception):
|
||||
if sys.version_info >= (3, 10):
|
||||
if sys.version_info >= (3, 10):
|
||||
@disjoint_base
|
||||
class AttributeError(Exception):
|
||||
def __init__(self, *args: object, name: str | None = ..., obj: object = ...) -> None: ...
|
||||
name: str
|
||||
obj: object
|
||||
|
||||
else:
|
||||
class AttributeError(Exception): ...
|
||||
|
||||
class BufferError(Exception): ...
|
||||
class EOFError(Exception): ...
|
||||
|
||||
@disjoint_base
|
||||
class ImportError(Exception):
|
||||
def __init__(self, *args: object, name: str | None = ..., path: str | None = ...) -> None: ...
|
||||
name: str | None
|
||||
@@ -2082,15 +2113,20 @@ class ImportError(Exception):
|
||||
class LookupError(Exception): ...
|
||||
class MemoryError(Exception): ...
|
||||
|
||||
class NameError(Exception):
|
||||
if sys.version_info >= (3, 10):
|
||||
if sys.version_info >= (3, 10):
|
||||
@disjoint_base
|
||||
class NameError(Exception):
|
||||
def __init__(self, *args: object, name: str | None = ...) -> None: ...
|
||||
name: str
|
||||
|
||||
else:
|
||||
class NameError(Exception): ...
|
||||
|
||||
class ReferenceError(Exception): ...
|
||||
class RuntimeError(Exception): ...
|
||||
class StopAsyncIteration(Exception): ...
|
||||
|
||||
@disjoint_base
|
||||
class SyntaxError(Exception):
|
||||
msg: str
|
||||
filename: str | None
|
||||
@@ -2154,6 +2190,7 @@ class IndentationError(SyntaxError): ...
|
||||
class TabError(IndentationError): ...
|
||||
class UnicodeError(ValueError): ...
|
||||
|
||||
@disjoint_base
|
||||
class UnicodeDecodeError(UnicodeError):
|
||||
encoding: str
|
||||
object: bytes
|
||||
@@ -2162,6 +2199,7 @@ class UnicodeDecodeError(UnicodeError):
|
||||
reason: str
|
||||
def __init__(self, encoding: str, object: ReadableBuffer, start: int, end: int, reason: str, /) -> None: ...
|
||||
|
||||
@disjoint_base
|
||||
class UnicodeEncodeError(UnicodeError):
|
||||
encoding: str
|
||||
object: str
|
||||
@@ -2170,6 +2208,7 @@ class UnicodeEncodeError(UnicodeError):
|
||||
reason: str
|
||||
def __init__(self, encoding: str, object: str, start: int, end: int, reason: str, /) -> None: ...
|
||||
|
||||
@disjoint_base
|
||||
class UnicodeTranslateError(UnicodeError):
|
||||
encoding: None
|
||||
object: str
|
||||
@@ -2200,6 +2239,7 @@ if sys.version_info >= (3, 11):
|
||||
_ExceptionT = TypeVar("_ExceptionT", bound=Exception)
|
||||
|
||||
# See `check_exception_group.py` for use-cases and comments.
|
||||
@disjoint_base
|
||||
class BaseExceptionGroup(BaseException, Generic[_BaseExceptionT_co]):
|
||||
def __new__(cls, message: str, exceptions: Sequence[_BaseExceptionT_co], /) -> Self: ...
|
||||
def __init__(self, message: str, exceptions: Sequence[_BaseExceptionT_co], /) -> None: ...
|
||||
|
||||
+60
-28
@@ -1,10 +1,11 @@
|
||||
import sys
|
||||
import types
|
||||
from _codecs import *
|
||||
from _typeshed import ReadableBuffer
|
||||
from abc import abstractmethod
|
||||
from collections.abc import Callable, Generator, Iterable
|
||||
from typing import Any, BinaryIO, ClassVar, Final, Literal, Protocol, TextIO, overload, type_check_only
|
||||
from typing_extensions import Self, TypeAlias
|
||||
from typing_extensions import Self, TypeAlias, disjoint_base
|
||||
|
||||
__all__ = [
|
||||
"register",
|
||||
@@ -122,33 +123,64 @@ class _IncrementalDecoder(Protocol):
|
||||
class _BufferedIncrementalDecoder(Protocol):
|
||||
def __call__(self, errors: str = ...) -> BufferedIncrementalDecoder: ...
|
||||
|
||||
class CodecInfo(tuple[_Encoder, _Decoder, _StreamReader, _StreamWriter]):
|
||||
_is_text_encoding: bool
|
||||
@property
|
||||
def encode(self) -> _Encoder: ...
|
||||
@property
|
||||
def decode(self) -> _Decoder: ...
|
||||
@property
|
||||
def streamreader(self) -> _StreamReader: ...
|
||||
@property
|
||||
def streamwriter(self) -> _StreamWriter: ...
|
||||
@property
|
||||
def incrementalencoder(self) -> _IncrementalEncoder: ...
|
||||
@property
|
||||
def incrementaldecoder(self) -> _IncrementalDecoder: ...
|
||||
name: str
|
||||
def __new__(
|
||||
cls,
|
||||
encode: _Encoder,
|
||||
decode: _Decoder,
|
||||
streamreader: _StreamReader | None = None,
|
||||
streamwriter: _StreamWriter | None = None,
|
||||
incrementalencoder: _IncrementalEncoder | None = None,
|
||||
incrementaldecoder: _IncrementalDecoder | None = None,
|
||||
name: str | None = None,
|
||||
*,
|
||||
_is_text_encoding: bool | None = None,
|
||||
) -> Self: ...
|
||||
if sys.version_info >= (3, 12):
|
||||
class CodecInfo(tuple[_Encoder, _Decoder, _StreamReader, _StreamWriter]):
|
||||
_is_text_encoding: bool
|
||||
@property
|
||||
def encode(self) -> _Encoder: ...
|
||||
@property
|
||||
def decode(self) -> _Decoder: ...
|
||||
@property
|
||||
def streamreader(self) -> _StreamReader: ...
|
||||
@property
|
||||
def streamwriter(self) -> _StreamWriter: ...
|
||||
@property
|
||||
def incrementalencoder(self) -> _IncrementalEncoder: ...
|
||||
@property
|
||||
def incrementaldecoder(self) -> _IncrementalDecoder: ...
|
||||
name: str
|
||||
def __new__(
|
||||
cls,
|
||||
encode: _Encoder,
|
||||
decode: _Decoder,
|
||||
streamreader: _StreamReader | None = None,
|
||||
streamwriter: _StreamWriter | None = None,
|
||||
incrementalencoder: _IncrementalEncoder | None = None,
|
||||
incrementaldecoder: _IncrementalDecoder | None = None,
|
||||
name: str | None = None,
|
||||
*,
|
||||
_is_text_encoding: bool | None = None,
|
||||
) -> Self: ...
|
||||
|
||||
else:
|
||||
@disjoint_base
|
||||
class CodecInfo(tuple[_Encoder, _Decoder, _StreamReader, _StreamWriter]):
|
||||
_is_text_encoding: bool
|
||||
@property
|
||||
def encode(self) -> _Encoder: ...
|
||||
@property
|
||||
def decode(self) -> _Decoder: ...
|
||||
@property
|
||||
def streamreader(self) -> _StreamReader: ...
|
||||
@property
|
||||
def streamwriter(self) -> _StreamWriter: ...
|
||||
@property
|
||||
def incrementalencoder(self) -> _IncrementalEncoder: ...
|
||||
@property
|
||||
def incrementaldecoder(self) -> _IncrementalDecoder: ...
|
||||
name: str
|
||||
def __new__(
|
||||
cls,
|
||||
encode: _Encoder,
|
||||
decode: _Decoder,
|
||||
streamreader: _StreamReader | None = None,
|
||||
streamwriter: _StreamWriter | None = None,
|
||||
incrementalencoder: _IncrementalEncoder | None = None,
|
||||
incrementaldecoder: _IncrementalDecoder | None = None,
|
||||
name: str | None = None,
|
||||
*,
|
||||
_is_text_encoding: bool | None = None,
|
||||
) -> Self: ...
|
||||
|
||||
def getencoder(encoding: str) -> _Encoder: ...
|
||||
def getdecoder(encoding: str) -> _Decoder: ...
|
||||
|
||||
@@ -3,7 +3,7 @@ from _collections_abc import dict_items, dict_keys, dict_values
|
||||
from _typeshed import SupportsItems, SupportsKeysAndGetItem, SupportsRichComparison, SupportsRichComparisonT
|
||||
from types import GenericAlias
|
||||
from typing import Any, ClassVar, Generic, NoReturn, SupportsIndex, TypeVar, final, overload, type_check_only
|
||||
from typing_extensions import Self
|
||||
from typing_extensions import Self, disjoint_base
|
||||
|
||||
if sys.version_info >= (3, 10):
|
||||
from collections.abc import (
|
||||
@@ -231,6 +231,7 @@ class UserString(Sequence[UserString]):
|
||||
def upper(self) -> Self: ...
|
||||
def zfill(self, width: int) -> Self: ...
|
||||
|
||||
@disjoint_base
|
||||
class deque(MutableSequence[_T]):
|
||||
@property
|
||||
def maxlen(self) -> int | None: ...
|
||||
@@ -356,6 +357,7 @@ class _odict_items(dict_items[_KT_co, _VT_co]): # type: ignore[misc] # pyright
|
||||
class _odict_values(dict_values[_KT_co, _VT_co]): # type: ignore[misc] # pyright: ignore[reportGeneralTypeIssues]
|
||||
def __reversed__(self) -> Iterator[_VT_co]: ...
|
||||
|
||||
@disjoint_base
|
||||
class OrderedDict(dict[_KT, _VT]):
|
||||
def popitem(self, last: bool = True) -> tuple[_KT, _VT]: ...
|
||||
def move_to_end(self, key: _KT, last: bool = True) -> None: ...
|
||||
@@ -395,6 +397,7 @@ class OrderedDict(dict[_KT, _VT]):
|
||||
@overload
|
||||
def __ror__(self, value: dict[_T1, _T2], /) -> OrderedDict[_KT | _T1, _VT | _T2]: ... # type: ignore[misc]
|
||||
|
||||
@disjoint_base
|
||||
class defaultdict(dict[_KT, _VT]):
|
||||
default_factory: Callable[[], _VT] | None
|
||||
@overload
|
||||
@@ -477,9 +480,15 @@ class ChainMap(MutableMapping[_KT, _VT]):
|
||||
__copy__ = copy
|
||||
# All arguments to `fromkeys` are passed to `dict.fromkeys` at runtime,
|
||||
# so the signature should be kept in line with `dict.fromkeys`.
|
||||
@classmethod
|
||||
@overload
|
||||
def fromkeys(cls, iterable: Iterable[_T]) -> ChainMap[_T, Any | None]: ...
|
||||
if sys.version_info >= (3, 13):
|
||||
@classmethod
|
||||
@overload
|
||||
def fromkeys(cls, iterable: Iterable[_T], /) -> ChainMap[_T, Any | None]: ...
|
||||
else:
|
||||
@classmethod
|
||||
@overload
|
||||
def fromkeys(cls, iterable: Iterable[_T]) -> ChainMap[_T, Any | None]: ...
|
||||
|
||||
@classmethod
|
||||
@overload
|
||||
# Special-case None: the user probably wants to add non-None values later.
|
||||
|
||||
+7
-1
@@ -1,5 +1,6 @@
|
||||
import sys
|
||||
from typing import Final, NamedTuple, type_check_only
|
||||
from typing_extensions import disjoint_base
|
||||
|
||||
if sys.platform != "win32":
|
||||
@type_check_only
|
||||
@@ -9,7 +10,12 @@ if sys.platform != "win32":
|
||||
salt_chars: int
|
||||
total_size: int
|
||||
|
||||
class _Method(_MethodBase): ...
|
||||
if sys.version_info >= (3, 12):
|
||||
class _Method(_MethodBase): ...
|
||||
else:
|
||||
@disjoint_base
|
||||
class _Method(_MethodBase): ...
|
||||
|
||||
METHOD_CRYPT: Final[_Method]
|
||||
METHOD_MD5: Final[_Method]
|
||||
METHOD_SHA256: Final[_Method]
|
||||
|
||||
+5
-1
@@ -2,7 +2,7 @@ import sys
|
||||
from abc import abstractmethod
|
||||
from time import struct_time
|
||||
from typing import ClassVar, Final, NoReturn, SupportsIndex, final, overload, type_check_only
|
||||
from typing_extensions import CapsuleType, Self, TypeAlias, deprecated
|
||||
from typing_extensions import CapsuleType, Self, TypeAlias, deprecated, disjoint_base
|
||||
|
||||
if sys.version_info >= (3, 11):
|
||||
__all__ = ("date", "datetime", "time", "timedelta", "timezone", "tzinfo", "MINYEAR", "MAXYEAR", "UTC")
|
||||
@@ -51,6 +51,7 @@ class _IsoCalendarDate(tuple[int, int, int]):
|
||||
@property
|
||||
def weekday(self) -> int: ...
|
||||
|
||||
@disjoint_base
|
||||
class date:
|
||||
min: ClassVar[date]
|
||||
max: ClassVar[date]
|
||||
@@ -112,6 +113,7 @@ class date:
|
||||
def isoweekday(self) -> int: ...
|
||||
def isocalendar(self) -> _IsoCalendarDate: ...
|
||||
|
||||
@disjoint_base
|
||||
class time:
|
||||
min: ClassVar[time]
|
||||
max: ClassVar[time]
|
||||
@@ -191,6 +193,7 @@ class time:
|
||||
_Date: TypeAlias = date
|
||||
_Time: TypeAlias = time
|
||||
|
||||
@disjoint_base
|
||||
class timedelta:
|
||||
min: ClassVar[timedelta]
|
||||
max: ClassVar[timedelta]
|
||||
@@ -239,6 +242,7 @@ class timedelta:
|
||||
def __bool__(self) -> bool: ...
|
||||
def __hash__(self) -> int: ...
|
||||
|
||||
@disjoint_base
|
||||
class datetime(date):
|
||||
min: ClassVar[datetime]
|
||||
max: ClassVar[datetime]
|
||||
|
||||
+3
-1
@@ -27,7 +27,7 @@ from _decimal import (
|
||||
from collections.abc import Container, Sequence
|
||||
from types import TracebackType
|
||||
from typing import Any, ClassVar, Literal, NamedTuple, final, overload, type_check_only
|
||||
from typing_extensions import Self, TypeAlias
|
||||
from typing_extensions import Self, TypeAlias, disjoint_base
|
||||
|
||||
if sys.version_info >= (3, 14):
|
||||
from _decimal import IEEE_CONTEXT_MAX_BITS as IEEE_CONTEXT_MAX_BITS, IEEEContext as IEEEContext
|
||||
@@ -68,6 +68,7 @@ class Overflow(Inexact, Rounded): ...
|
||||
class Underflow(Inexact, Rounded, Subnormal): ...
|
||||
class FloatOperation(DecimalException, TypeError): ...
|
||||
|
||||
@disjoint_base
|
||||
class Decimal:
|
||||
def __new__(cls, value: _DecimalNew = "0", context: Context | None = None) -> Self: ...
|
||||
if sys.version_info >= (3, 14):
|
||||
@@ -173,6 +174,7 @@ class Decimal:
|
||||
def __deepcopy__(self, memo: Any, /) -> Self: ...
|
||||
def __format__(self, specifier: str, context: Context | None = None, /) -> str: ...
|
||||
|
||||
@disjoint_base
|
||||
class Context:
|
||||
# TODO: Context doesn't allow you to delete *any* attributes from instances of the class at runtime,
|
||||
# even settable attributes like `prec` and `rounding`,
|
||||
|
||||
+39
-33
@@ -3,7 +3,7 @@ import types
|
||||
from collections.abc import Callable, Iterator
|
||||
from opcode import * # `dis` re-exports it as a part of public API
|
||||
from typing import IO, Any, Final, NamedTuple
|
||||
from typing_extensions import Self, TypeAlias
|
||||
from typing_extensions import Self, TypeAlias, disjoint_base
|
||||
|
||||
__all__ = [
|
||||
"code_info",
|
||||
@@ -88,39 +88,45 @@ else:
|
||||
starts_line: int | None
|
||||
is_jump_target: bool
|
||||
|
||||
class Instruction(_Instruction):
|
||||
if sys.version_info < (3, 13):
|
||||
if sys.version_info >= (3, 12):
|
||||
class Instruction(_Instruction):
|
||||
if sys.version_info < (3, 13):
|
||||
def _disassemble(self, lineno_width: int = 3, mark_as_current: bool = False, offset_width: int = 4) -> str: ...
|
||||
if sys.version_info >= (3, 13):
|
||||
@property
|
||||
def oparg(self) -> int: ...
|
||||
@property
|
||||
def baseopcode(self) -> int: ...
|
||||
@property
|
||||
def baseopname(self) -> str: ...
|
||||
@property
|
||||
def cache_offset(self) -> int: ...
|
||||
@property
|
||||
def end_offset(self) -> int: ...
|
||||
@property
|
||||
def jump_target(self) -> int: ...
|
||||
@property
|
||||
def is_jump_target(self) -> bool: ...
|
||||
if sys.version_info >= (3, 14):
|
||||
@staticmethod
|
||||
def make(
|
||||
opname: str,
|
||||
arg: int | None,
|
||||
argval: Any,
|
||||
argrepr: str,
|
||||
offset: int,
|
||||
start_offset: int,
|
||||
starts_line: bool,
|
||||
line_number: int | None,
|
||||
label: int | None = None,
|
||||
positions: Positions | None = None,
|
||||
cache_info: list[tuple[str, int, Any]] | None = None,
|
||||
) -> Instruction: ...
|
||||
|
||||
else:
|
||||
@disjoint_base
|
||||
class Instruction(_Instruction):
|
||||
def _disassemble(self, lineno_width: int = 3, mark_as_current: bool = False, offset_width: int = 4) -> str: ...
|
||||
if sys.version_info >= (3, 13):
|
||||
@property
|
||||
def oparg(self) -> int: ...
|
||||
@property
|
||||
def baseopcode(self) -> int: ...
|
||||
@property
|
||||
def baseopname(self) -> str: ...
|
||||
@property
|
||||
def cache_offset(self) -> int: ...
|
||||
@property
|
||||
def end_offset(self) -> int: ...
|
||||
@property
|
||||
def jump_target(self) -> int: ...
|
||||
@property
|
||||
def is_jump_target(self) -> bool: ...
|
||||
if sys.version_info >= (3, 14):
|
||||
@staticmethod
|
||||
def make(
|
||||
opname: str,
|
||||
arg: int | None,
|
||||
argval: Any,
|
||||
argrepr: str,
|
||||
offset: int,
|
||||
start_offset: int,
|
||||
starts_line: bool,
|
||||
line_number: int | None,
|
||||
label: int | None = None,
|
||||
positions: Positions | None = None,
|
||||
cache_info: list[tuple[str, int, Any]] | None = None,
|
||||
) -> Instruction: ...
|
||||
|
||||
class Bytecode:
|
||||
codeobj: types.CodeType
|
||||
|
||||
+34
-11
@@ -5,7 +5,7 @@ from _typeshed import SupportsKeysAndGetItem, Unused
|
||||
from builtins import property as _builtins_property
|
||||
from collections.abc import Callable, Iterable, Iterator, Mapping
|
||||
from typing import Any, Final, Generic, Literal, TypeVar, overload
|
||||
from typing_extensions import Self, TypeAlias
|
||||
from typing_extensions import Self, TypeAlias, disjoint_base
|
||||
|
||||
__all__ = ["EnumMeta", "Enum", "IntEnum", "Flag", "IntFlag", "auto", "unique"]
|
||||
|
||||
@@ -228,16 +228,25 @@ class Enum(metaclass=EnumMeta):
|
||||
if sys.version_info >= (3, 11):
|
||||
class ReprEnum(Enum): ...
|
||||
|
||||
if sys.version_info >= (3, 11):
|
||||
_IntEnumBase = ReprEnum
|
||||
else:
|
||||
_IntEnumBase = Enum
|
||||
if sys.version_info >= (3, 12):
|
||||
class IntEnum(int, ReprEnum):
|
||||
_value_: int
|
||||
@_magic_enum_attr
|
||||
def value(self) -> int: ...
|
||||
def __new__(cls, value: int) -> Self: ...
|
||||
|
||||
class IntEnum(int, _IntEnumBase):
|
||||
_value_: int
|
||||
@_magic_enum_attr
|
||||
def value(self) -> int: ...
|
||||
def __new__(cls, value: int) -> Self: ...
|
||||
else:
|
||||
if sys.version_info >= (3, 11):
|
||||
_IntEnumBase = ReprEnum
|
||||
else:
|
||||
_IntEnumBase = Enum
|
||||
|
||||
@disjoint_base
|
||||
class IntEnum(int, _IntEnumBase):
|
||||
_value_: int
|
||||
@_magic_enum_attr
|
||||
def value(self) -> int: ...
|
||||
def __new__(cls, value: int) -> Self: ...
|
||||
|
||||
def unique(enumeration: _EnumerationT) -> _EnumerationT: ...
|
||||
|
||||
@@ -301,7 +310,7 @@ if sys.version_info >= (3, 11):
|
||||
def global_enum_repr(self: Enum) -> str: ...
|
||||
def global_flag_repr(self: Flag) -> str: ...
|
||||
|
||||
if sys.version_info >= (3, 11):
|
||||
if sys.version_info >= (3, 12):
|
||||
# The body of the class is the same, but the base classes are different.
|
||||
class IntFlag(int, ReprEnum, Flag, boundary=KEEP): # type: ignore[misc] # complaints about incompatible bases
|
||||
def __new__(cls, value: int) -> Self: ...
|
||||
@@ -313,7 +322,21 @@ if sys.version_info >= (3, 11):
|
||||
__rand__ = __and__
|
||||
__rxor__ = __xor__
|
||||
|
||||
elif sys.version_info >= (3, 11):
|
||||
# The body of the class is the same, but the base classes are different.
|
||||
@disjoint_base
|
||||
class IntFlag(int, ReprEnum, Flag, boundary=KEEP): # type: ignore[misc] # complaints about incompatible bases
|
||||
def __new__(cls, value: int) -> Self: ...
|
||||
def __or__(self, other: int) -> Self: ...
|
||||
def __and__(self, other: int) -> Self: ...
|
||||
def __xor__(self, other: int) -> Self: ...
|
||||
def __invert__(self) -> Self: ...
|
||||
__ror__ = __or__
|
||||
__rand__ = __and__
|
||||
__rxor__ = __xor__
|
||||
|
||||
else:
|
||||
@disjoint_base
|
||||
class IntFlag(int, Flag): # type: ignore[misc] # complaints about incompatible bases
|
||||
def __new__(cls, value: int) -> Self: ...
|
||||
def __or__(self, other: int) -> Self: ...
|
||||
|
||||
@@ -4,7 +4,7 @@ from _typeshed import SupportsAllComparisons, SupportsItems
|
||||
from collections.abc import Callable, Hashable, Iterable, Sized
|
||||
from types import GenericAlias
|
||||
from typing import Any, Final, Generic, Literal, NamedTuple, TypedDict, TypeVar, final, overload, type_check_only
|
||||
from typing_extensions import ParamSpec, Self, TypeAlias
|
||||
from typing_extensions import ParamSpec, Self, TypeAlias, disjoint_base
|
||||
|
||||
__all__ = [
|
||||
"update_wrapper",
|
||||
@@ -150,7 +150,7 @@ else:
|
||||
|
||||
def total_ordering(cls: type[_T]) -> type[_T]: ...
|
||||
def cmp_to_key(mycmp: Callable[[_T, _T], int]) -> Callable[[_T], SupportsAllComparisons]: ...
|
||||
|
||||
@disjoint_base
|
||||
class partial(Generic[_T]):
|
||||
@property
|
||||
def func(self) -> Callable[..., _T]: ...
|
||||
|
||||
@@ -11,7 +11,7 @@ from os import PathLike
|
||||
from pathlib import Path
|
||||
from re import Pattern
|
||||
from typing import Any, ClassVar, Generic, NamedTuple, TypeVar, overload
|
||||
from typing_extensions import Self, TypeAlias, deprecated
|
||||
from typing_extensions import Self, TypeAlias, deprecated, disjoint_base
|
||||
|
||||
_T = TypeVar("_T")
|
||||
_KT = TypeVar("_KT")
|
||||
@@ -59,23 +59,21 @@ else:
|
||||
value: str
|
||||
group: str
|
||||
|
||||
class EntryPoint(_EntryPointBase):
|
||||
pattern: ClassVar[Pattern[str]]
|
||||
if sys.version_info >= (3, 11):
|
||||
if sys.version_info >= (3, 11):
|
||||
class EntryPoint(_EntryPointBase):
|
||||
pattern: ClassVar[Pattern[str]]
|
||||
name: str
|
||||
value: str
|
||||
group: str
|
||||
|
||||
def __init__(self, name: str, value: str, group: str) -> None: ...
|
||||
|
||||
def load(self) -> Any: ... # Callable[[], Any] or an importable module
|
||||
@property
|
||||
def extras(self) -> list[str]: ...
|
||||
@property
|
||||
def module(self) -> str: ...
|
||||
@property
|
||||
def attr(self) -> str: ...
|
||||
if sys.version_info >= (3, 10):
|
||||
def load(self) -> Any: ... # Callable[[], Any] or an importable module
|
||||
@property
|
||||
def extras(self) -> list[str]: ...
|
||||
@property
|
||||
def module(self) -> str: ...
|
||||
@property
|
||||
def attr(self) -> str: ...
|
||||
dist: ClassVar[Distribution | None]
|
||||
def matches(
|
||||
self,
|
||||
@@ -87,12 +85,38 @@ class EntryPoint(_EntryPointBase):
|
||||
attr: str = ...,
|
||||
extras: list[str] = ...,
|
||||
) -> bool: ... # undocumented
|
||||
|
||||
def __hash__(self) -> int: ...
|
||||
if sys.version_info >= (3, 11):
|
||||
def __hash__(self) -> int: ...
|
||||
def __eq__(self, other: object) -> bool: ...
|
||||
def __lt__(self, other: object) -> bool: ...
|
||||
if sys.version_info < (3, 12):
|
||||
if sys.version_info < (3, 12):
|
||||
def __iter__(self) -> Iterator[Any]: ... # result of iter((str, Self)), really
|
||||
|
||||
else:
|
||||
@disjoint_base
|
||||
class EntryPoint(_EntryPointBase):
|
||||
pattern: ClassVar[Pattern[str]]
|
||||
|
||||
def load(self) -> Any: ... # Callable[[], Any] or an importable module
|
||||
@property
|
||||
def extras(self) -> list[str]: ...
|
||||
@property
|
||||
def module(self) -> str: ...
|
||||
@property
|
||||
def attr(self) -> str: ...
|
||||
if sys.version_info >= (3, 10):
|
||||
dist: ClassVar[Distribution | None]
|
||||
def matches(
|
||||
self,
|
||||
*,
|
||||
name: str = ...,
|
||||
value: str = ...,
|
||||
group: str = ...,
|
||||
module: str = ...,
|
||||
attr: str = ...,
|
||||
extras: list[str] = ...,
|
||||
) -> bool: ... # undocumented
|
||||
|
||||
def __hash__(self) -> int: ...
|
||||
def __iter__(self) -> Iterator[Any]: ... # result of iter((str, Self)), really
|
||||
|
||||
if sys.version_info >= (3, 12):
|
||||
@@ -115,10 +139,12 @@ if sys.version_info >= (3, 12):
|
||||
def groups(self) -> set[str]: ...
|
||||
|
||||
elif sys.version_info >= (3, 10):
|
||||
class DeprecatedList(list[_T]): ...
|
||||
class DeprecatedList(list[_T]):
|
||||
__slots__ = ()
|
||||
|
||||
class EntryPoints(DeprecatedList[EntryPoint]): # use as list is deprecated since 3.10
|
||||
# int argument is deprecated since 3.10
|
||||
__slots__ = ()
|
||||
def __getitem__(self, name: int | str) -> EntryPoint: ... # type: ignore[override]
|
||||
def select(
|
||||
self,
|
||||
|
||||
+58
-27
@@ -26,7 +26,7 @@ from types import (
|
||||
WrapperDescriptorType,
|
||||
)
|
||||
from typing import Any, ClassVar, Final, Literal, NamedTuple, Protocol, TypeVar, overload, type_check_only
|
||||
from typing_extensions import ParamSpec, Self, TypeAlias, TypeGuard, TypeIs, deprecated
|
||||
from typing_extensions import ParamSpec, Self, TypeAlias, TypeGuard, TypeIs, deprecated, disjoint_base
|
||||
|
||||
if sys.version_info >= (3, 14):
|
||||
from annotationlib import Format
|
||||
@@ -570,19 +570,6 @@ if sys.version_info >= (3, 11):
|
||||
code_context: list[str] | None
|
||||
index: int | None # type: ignore[assignment]
|
||||
|
||||
class Traceback(_Traceback):
|
||||
positions: dis.Positions | None
|
||||
def __new__(
|
||||
cls,
|
||||
filename: str,
|
||||
lineno: int,
|
||||
function: str,
|
||||
code_context: list[str] | None,
|
||||
index: int | None,
|
||||
*,
|
||||
positions: dis.Positions | None = None,
|
||||
) -> Self: ...
|
||||
|
||||
class _FrameInfo(NamedTuple):
|
||||
frame: FrameType
|
||||
filename: str
|
||||
@@ -591,19 +578,63 @@ if sys.version_info >= (3, 11):
|
||||
code_context: list[str] | None
|
||||
index: int | None # type: ignore[assignment]
|
||||
|
||||
class FrameInfo(_FrameInfo):
|
||||
positions: dis.Positions | None
|
||||
def __new__(
|
||||
cls,
|
||||
frame: FrameType,
|
||||
filename: str,
|
||||
lineno: int,
|
||||
function: str,
|
||||
code_context: list[str] | None,
|
||||
index: int | None,
|
||||
*,
|
||||
positions: dis.Positions | None = None,
|
||||
) -> Self: ...
|
||||
if sys.version_info >= (3, 12):
|
||||
class Traceback(_Traceback):
|
||||
positions: dis.Positions | None
|
||||
def __new__(
|
||||
cls,
|
||||
filename: str,
|
||||
lineno: int,
|
||||
function: str,
|
||||
code_context: list[str] | None,
|
||||
index: int | None,
|
||||
*,
|
||||
positions: dis.Positions | None = None,
|
||||
) -> Self: ...
|
||||
|
||||
class FrameInfo(_FrameInfo):
|
||||
positions: dis.Positions | None
|
||||
def __new__(
|
||||
cls,
|
||||
frame: FrameType,
|
||||
filename: str,
|
||||
lineno: int,
|
||||
function: str,
|
||||
code_context: list[str] | None,
|
||||
index: int | None,
|
||||
*,
|
||||
positions: dis.Positions | None = None,
|
||||
) -> Self: ...
|
||||
|
||||
else:
|
||||
@disjoint_base
|
||||
class Traceback(_Traceback):
|
||||
positions: dis.Positions | None
|
||||
def __new__(
|
||||
cls,
|
||||
filename: str,
|
||||
lineno: int,
|
||||
function: str,
|
||||
code_context: list[str] | None,
|
||||
index: int | None,
|
||||
*,
|
||||
positions: dis.Positions | None = None,
|
||||
) -> Self: ...
|
||||
|
||||
@disjoint_base
|
||||
class FrameInfo(_FrameInfo):
|
||||
positions: dis.Positions | None
|
||||
def __new__(
|
||||
cls,
|
||||
frame: FrameType,
|
||||
filename: str,
|
||||
lineno: int,
|
||||
function: str,
|
||||
code_context: list[str] | None,
|
||||
index: int | None,
|
||||
*,
|
||||
positions: dis.Positions | None = None,
|
||||
) -> Self: ...
|
||||
|
||||
else:
|
||||
class Traceback(NamedTuple):
|
||||
|
||||
+20
-2
@@ -3,7 +3,7 @@ from _typeshed import MaybeNone
|
||||
from collections.abc import Callable, Iterable, Iterator
|
||||
from types import GenericAlias
|
||||
from typing import Any, Generic, Literal, SupportsComplex, SupportsFloat, SupportsIndex, SupportsInt, TypeVar, overload
|
||||
from typing_extensions import Self, TypeAlias
|
||||
from typing_extensions import Self, TypeAlias, disjoint_base
|
||||
|
||||
_T = TypeVar("_T")
|
||||
_S = TypeVar("_S")
|
||||
@@ -27,6 +27,7 @@ _Predicate: TypeAlias = Callable[[_T], object]
|
||||
|
||||
# Technically count can take anything that implements a number protocol and has an add method
|
||||
# but we can't enforce the add method
|
||||
@disjoint_base
|
||||
class count(Generic[_N]):
|
||||
@overload
|
||||
def __new__(cls) -> count[int]: ...
|
||||
@@ -37,11 +38,13 @@ class count(Generic[_N]):
|
||||
def __next__(self) -> _N: ...
|
||||
def __iter__(self) -> Self: ...
|
||||
|
||||
@disjoint_base
|
||||
class cycle(Generic[_T]):
|
||||
def __new__(cls, iterable: Iterable[_T], /) -> Self: ...
|
||||
def __next__(self) -> _T: ...
|
||||
def __iter__(self) -> Self: ...
|
||||
|
||||
@disjoint_base
|
||||
class repeat(Generic[_T]):
|
||||
@overload
|
||||
def __new__(cls, object: _T) -> Self: ...
|
||||
@@ -51,6 +54,7 @@ class repeat(Generic[_T]):
|
||||
def __iter__(self) -> Self: ...
|
||||
def __length_hint__(self) -> int: ...
|
||||
|
||||
@disjoint_base
|
||||
class accumulate(Generic[_T]):
|
||||
@overload
|
||||
def __new__(cls, iterable: Iterable[_T], func: None = None, *, initial: _T | None = ...) -> Self: ...
|
||||
@@ -59,6 +63,7 @@ class accumulate(Generic[_T]):
|
||||
def __iter__(self) -> Self: ...
|
||||
def __next__(self) -> _T: ...
|
||||
|
||||
@disjoint_base
|
||||
class chain(Generic[_T]):
|
||||
def __new__(cls, *iterables: Iterable[_T]) -> Self: ...
|
||||
def __next__(self) -> _T: ...
|
||||
@@ -68,21 +73,25 @@ class chain(Generic[_T]):
|
||||
def from_iterable(cls: type[Any], iterable: Iterable[Iterable[_S]], /) -> chain[_S]: ...
|
||||
def __class_getitem__(cls, item: Any, /) -> GenericAlias: ...
|
||||
|
||||
@disjoint_base
|
||||
class compress(Generic[_T]):
|
||||
def __new__(cls, data: Iterable[_T], selectors: Iterable[Any]) -> Self: ...
|
||||
def __iter__(self) -> Self: ...
|
||||
def __next__(self) -> _T: ...
|
||||
|
||||
@disjoint_base
|
||||
class dropwhile(Generic[_T]):
|
||||
def __new__(cls, predicate: _Predicate[_T], iterable: Iterable[_T], /) -> Self: ...
|
||||
def __iter__(self) -> Self: ...
|
||||
def __next__(self) -> _T: ...
|
||||
|
||||
@disjoint_base
|
||||
class filterfalse(Generic[_T]):
|
||||
def __new__(cls, function: _Predicate[_T] | None, iterable: Iterable[_T], /) -> Self: ...
|
||||
def __iter__(self) -> Self: ...
|
||||
def __next__(self) -> _T: ...
|
||||
|
||||
@disjoint_base
|
||||
class groupby(Generic[_T_co, _S_co]):
|
||||
@overload
|
||||
def __new__(cls, iterable: Iterable[_T1], key: None = None) -> groupby[_T1, _T1]: ...
|
||||
@@ -91,6 +100,7 @@ class groupby(Generic[_T_co, _S_co]):
|
||||
def __iter__(self) -> Self: ...
|
||||
def __next__(self) -> tuple[_T_co, Iterator[_S_co]]: ...
|
||||
|
||||
@disjoint_base
|
||||
class islice(Generic[_T]):
|
||||
@overload
|
||||
def __new__(cls, iterable: Iterable[_T], stop: int | None, /) -> Self: ...
|
||||
@@ -99,18 +109,20 @@ class islice(Generic[_T]):
|
||||
def __iter__(self) -> Self: ...
|
||||
def __next__(self) -> _T: ...
|
||||
|
||||
@disjoint_base
|
||||
class starmap(Generic[_T_co]):
|
||||
def __new__(cls, function: Callable[..., _T], iterable: Iterable[Iterable[Any]], /) -> starmap[_T]: ...
|
||||
def __iter__(self) -> Self: ...
|
||||
def __next__(self) -> _T_co: ...
|
||||
|
||||
@disjoint_base
|
||||
class takewhile(Generic[_T]):
|
||||
def __new__(cls, predicate: _Predicate[_T], iterable: Iterable[_T], /) -> Self: ...
|
||||
def __iter__(self) -> Self: ...
|
||||
def __next__(self) -> _T: ...
|
||||
|
||||
def tee(iterable: Iterable[_T], n: int = 2, /) -> tuple[Iterator[_T], ...]: ...
|
||||
|
||||
@disjoint_base
|
||||
class zip_longest(Generic[_T_co]):
|
||||
# one iterable (fillvalue doesn't matter)
|
||||
@overload
|
||||
@@ -189,6 +201,7 @@ class zip_longest(Generic[_T_co]):
|
||||
def __iter__(self) -> Self: ...
|
||||
def __next__(self) -> _T_co: ...
|
||||
|
||||
@disjoint_base
|
||||
class product(Generic[_T_co]):
|
||||
@overload
|
||||
def __new__(cls, iter1: Iterable[_T1], /) -> product[tuple[_T1]]: ...
|
||||
@@ -274,6 +287,7 @@ class product(Generic[_T_co]):
|
||||
def __iter__(self) -> Self: ...
|
||||
def __next__(self) -> _T_co: ...
|
||||
|
||||
@disjoint_base
|
||||
class permutations(Generic[_T_co]):
|
||||
@overload
|
||||
def __new__(cls, iterable: Iterable[_T], r: Literal[2]) -> permutations[tuple[_T, _T]]: ...
|
||||
@@ -288,6 +302,7 @@ class permutations(Generic[_T_co]):
|
||||
def __iter__(self) -> Self: ...
|
||||
def __next__(self) -> _T_co: ...
|
||||
|
||||
@disjoint_base
|
||||
class combinations(Generic[_T_co]):
|
||||
@overload
|
||||
def __new__(cls, iterable: Iterable[_T], r: Literal[2]) -> combinations[tuple[_T, _T]]: ...
|
||||
@@ -302,6 +317,7 @@ class combinations(Generic[_T_co]):
|
||||
def __iter__(self) -> Self: ...
|
||||
def __next__(self) -> _T_co: ...
|
||||
|
||||
@disjoint_base
|
||||
class combinations_with_replacement(Generic[_T_co]):
|
||||
@overload
|
||||
def __new__(cls, iterable: Iterable[_T], r: Literal[2]) -> combinations_with_replacement[tuple[_T, _T]]: ...
|
||||
@@ -317,12 +333,14 @@ class combinations_with_replacement(Generic[_T_co]):
|
||||
def __next__(self) -> _T_co: ...
|
||||
|
||||
if sys.version_info >= (3, 10):
|
||||
@disjoint_base
|
||||
class pairwise(Generic[_T_co]):
|
||||
def __new__(cls, iterable: Iterable[_T], /) -> pairwise[tuple[_T, _T]]: ...
|
||||
def __iter__(self) -> Self: ...
|
||||
def __next__(self) -> _T_co: ...
|
||||
|
||||
if sys.version_info >= (3, 12):
|
||||
@disjoint_base
|
||||
class batched(Generic[_T_co]):
|
||||
if sys.version_info >= (3, 13):
|
||||
def __new__(cls, iterable: Iterable[_T_co], n: int, *, strict: bool = False) -> Self: ...
|
||||
|
||||
@@ -5,7 +5,7 @@ from configparser import RawConfigParser
|
||||
from re import Pattern
|
||||
from threading import Thread
|
||||
from typing import IO, Any, Final, Literal, SupportsIndex, TypedDict, overload, type_check_only
|
||||
from typing_extensions import Required, TypeAlias
|
||||
from typing_extensions import Required, TypeAlias, disjoint_base
|
||||
|
||||
from . import Filter, Filterer, Formatter, Handler, Logger, _FilterType, _FormatStyle, _Level
|
||||
|
||||
@@ -100,11 +100,20 @@ class ConvertingList(list[Any], ConvertingMixin): # undocumented
|
||||
def __getitem__(self, key: slice) -> Any: ...
|
||||
def pop(self, idx: SupportsIndex = -1) -> Any: ...
|
||||
|
||||
class ConvertingTuple(tuple[Any, ...], ConvertingMixin): # undocumented
|
||||
@overload
|
||||
def __getitem__(self, key: SupportsIndex) -> Any: ...
|
||||
@overload
|
||||
def __getitem__(self, key: slice) -> Any: ...
|
||||
if sys.version_info >= (3, 12):
|
||||
class ConvertingTuple(tuple[Any, ...], ConvertingMixin): # undocumented
|
||||
@overload
|
||||
def __getitem__(self, key: SupportsIndex) -> Any: ...
|
||||
@overload
|
||||
def __getitem__(self, key: slice) -> Any: ...
|
||||
|
||||
else:
|
||||
@disjoint_base
|
||||
class ConvertingTuple(tuple[Any, ...], ConvertingMixin): # undocumented
|
||||
@overload
|
||||
def __getitem__(self, key: SupportsIndex) -> Any: ...
|
||||
@overload
|
||||
def __getitem__(self, key: slice) -> Any: ...
|
||||
|
||||
class BaseConfigurator:
|
||||
CONVERT_PATTERN: Pattern[str]
|
||||
|
||||
+2
-1
@@ -3,7 +3,7 @@ import sys
|
||||
from _typeshed import ReadableBuffer, Unused
|
||||
from collections.abc import Iterator
|
||||
from typing import Final, Literal, NoReturn, overload
|
||||
from typing_extensions import Self
|
||||
from typing_extensions import Self, disjoint_base
|
||||
|
||||
ACCESS_DEFAULT: Final = 0
|
||||
ACCESS_READ: Final = 1
|
||||
@@ -31,6 +31,7 @@ if sys.platform != "win32":
|
||||
|
||||
PAGESIZE: Final[int]
|
||||
|
||||
@disjoint_base
|
||||
class mmap:
|
||||
if sys.platform == "win32":
|
||||
def __new__(self, fileno: int, length: int, tagname: str | None = None, access: int = 0, offset: int = 0) -> Self: ...
|
||||
|
||||
@@ -146,6 +146,7 @@ class Path(PurePath):
|
||||
__slots__ = ()
|
||||
else:
|
||||
__slots__ = ("_accessor",)
|
||||
|
||||
if sys.version_info >= (3, 12):
|
||||
def __new__(cls, *args: StrPath, **kwargs: Unused) -> Self: ... # pyright: ignore[reportInconsistentConstructor]
|
||||
else:
|
||||
|
||||
+16
-6
@@ -1,6 +1,6 @@
|
||||
import sys
|
||||
from typing import NamedTuple, type_check_only
|
||||
from typing_extensions import Self, deprecated
|
||||
from typing_extensions import Self, deprecated, disjoint_base
|
||||
|
||||
def libc_ver(executable: str | None = None, lib: str = "", version: str = "", chunksize: int = 16384) -> tuple[str, str]: ...
|
||||
def win32_ver(release: str = "", version: str = "", csd: str = "", ptype: str = "") -> tuple[str, str, str, str]: ...
|
||||
@@ -46,13 +46,23 @@ class _uname_result_base(NamedTuple):
|
||||
|
||||
# uname_result emulates a 6-field named tuple, but the processor field
|
||||
# is lazily evaluated rather than being passed in to the constructor.
|
||||
class uname_result(_uname_result_base):
|
||||
if sys.version_info >= (3, 10):
|
||||
if sys.version_info >= (3, 12):
|
||||
class uname_result(_uname_result_base):
|
||||
__match_args__ = ("system", "node", "release", "version", "machine") # pyright: ignore[reportAssignmentType]
|
||||
|
||||
def __new__(_cls, system: str, node: str, release: str, version: str, machine: str) -> Self: ...
|
||||
@property
|
||||
def processor(self) -> str: ...
|
||||
def __new__(_cls, system: str, node: str, release: str, version: str, machine: str) -> Self: ...
|
||||
@property
|
||||
def processor(self) -> str: ...
|
||||
|
||||
else:
|
||||
@disjoint_base
|
||||
class uname_result(_uname_result_base):
|
||||
if sys.version_info >= (3, 10):
|
||||
__match_args__ = ("system", "node", "release", "version", "machine") # pyright: ignore[reportAssignmentType]
|
||||
|
||||
def __new__(_cls, system: str, node: str, release: str, version: str, machine: str) -> Self: ...
|
||||
@property
|
||||
def processor(self) -> str: ...
|
||||
|
||||
def uname() -> uname_result: ...
|
||||
def system() -> str: ...
|
||||
|
||||
@@ -63,7 +63,7 @@ from sqlite3.dbapi2 import (
|
||||
)
|
||||
from types import TracebackType
|
||||
from typing import Any, Literal, Protocol, SupportsIndex, TypeVar, final, overload, type_check_only
|
||||
from typing_extensions import Self, TypeAlias
|
||||
from typing_extensions import Self, TypeAlias, disjoint_base
|
||||
|
||||
if sys.version_info < (3, 14):
|
||||
from sqlite3.dbapi2 import version_info as version_info
|
||||
@@ -268,6 +268,7 @@ class OperationalError(DatabaseError): ...
|
||||
class ProgrammingError(DatabaseError): ...
|
||||
class Warning(Exception): ...
|
||||
|
||||
@disjoint_base
|
||||
class Connection:
|
||||
@property
|
||||
def DataError(self) -> type[DataError]: ...
|
||||
@@ -405,6 +406,7 @@ class Connection:
|
||||
self, type: type[BaseException] | None, value: BaseException | None, traceback: TracebackType | None, /
|
||||
) -> Literal[False]: ...
|
||||
|
||||
@disjoint_base
|
||||
class Cursor:
|
||||
arraysize: int
|
||||
@property
|
||||
@@ -436,6 +438,7 @@ class Cursor:
|
||||
class PrepareProtocol:
|
||||
def __init__(self, *args: object, **kwargs: object) -> None: ...
|
||||
|
||||
@disjoint_base
|
||||
class Row(Sequence[Any]):
|
||||
def __new__(cls, cursor: Cursor, data: tuple[Any, ...], /) -> Self: ...
|
||||
def keys(self) -> list[str]: ...
|
||||
|
||||
@@ -1,15 +1,22 @@
|
||||
import sys
|
||||
from re import error as error
|
||||
from typing import Final
|
||||
from typing_extensions import Self
|
||||
from typing_extensions import Self, disjoint_base
|
||||
|
||||
MAXGROUPS: Final[int]
|
||||
|
||||
MAGIC: Final[int]
|
||||
|
||||
class _NamedIntConstant(int):
|
||||
name: str
|
||||
def __new__(cls, value: int, name: str) -> Self: ...
|
||||
if sys.version_info >= (3, 12):
|
||||
class _NamedIntConstant(int):
|
||||
name: str
|
||||
def __new__(cls, value: int, name: str) -> Self: ...
|
||||
|
||||
else:
|
||||
@disjoint_base
|
||||
class _NamedIntConstant(int):
|
||||
name: str
|
||||
def __new__(cls, value: int, name: str) -> Self: ...
|
||||
|
||||
MAXREPEAT: Final[_NamedIntConstant]
|
||||
OPCODES: list[_NamedIntConstant]
|
||||
|
||||
@@ -744,6 +744,28 @@ def tar_filter(member: TarInfo, dest_path: str) -> TarInfo: ...
|
||||
def data_filter(member: TarInfo, dest_path: str) -> TarInfo: ...
|
||||
|
||||
class TarInfo:
|
||||
__slots__ = (
|
||||
"name",
|
||||
"mode",
|
||||
"uid",
|
||||
"gid",
|
||||
"size",
|
||||
"mtime",
|
||||
"chksum",
|
||||
"type",
|
||||
"linkname",
|
||||
"uname",
|
||||
"gname",
|
||||
"devmajor",
|
||||
"devminor",
|
||||
"offset",
|
||||
"offset_data",
|
||||
"pax_headers",
|
||||
"sparse",
|
||||
"_tarfile",
|
||||
"_sparse_structs",
|
||||
"_link_target",
|
||||
)
|
||||
name: str
|
||||
path: str
|
||||
size: int
|
||||
|
||||
@@ -6,7 +6,7 @@ from tkinter.constants import *
|
||||
from tkinter.font import _FontDescription
|
||||
from types import GenericAlias, TracebackType
|
||||
from typing import Any, ClassVar, Final, Generic, Literal, NamedTuple, Protocol, TypedDict, TypeVar, overload, type_check_only
|
||||
from typing_extensions import TypeAlias, TypeVarTuple, Unpack, deprecated
|
||||
from typing_extensions import TypeAlias, TypeVarTuple, Unpack, deprecated, disjoint_base
|
||||
|
||||
if sys.version_info >= (3, 11):
|
||||
from enum import StrEnum
|
||||
@@ -198,7 +198,11 @@ if sys.version_info >= (3, 11):
|
||||
releaselevel: str
|
||||
serial: int
|
||||
|
||||
class _VersionInfoType(_VersionInfoTypeBase): ...
|
||||
if sys.version_info >= (3, 12):
|
||||
class _VersionInfoType(_VersionInfoTypeBase): ...
|
||||
else:
|
||||
@disjoint_base
|
||||
class _VersionInfoType(_VersionInfoTypeBase): ...
|
||||
|
||||
if sys.version_info >= (3, 11):
|
||||
class EventType(StrEnum):
|
||||
|
||||
+11
-4
@@ -4,7 +4,7 @@ from collections.abc import Callable, Generator, Iterable, Sequence
|
||||
from re import Pattern
|
||||
from token import *
|
||||
from typing import Any, Final, NamedTuple, TextIO, type_check_only
|
||||
from typing_extensions import TypeAlias
|
||||
from typing_extensions import TypeAlias, disjoint_base
|
||||
|
||||
if sys.version_info < (3, 12):
|
||||
# Avoid double assignment to Final name by imports, which pyright objects to.
|
||||
@@ -115,9 +115,16 @@ class _TokenInfo(NamedTuple):
|
||||
end: _Position
|
||||
line: str
|
||||
|
||||
class TokenInfo(_TokenInfo):
|
||||
@property
|
||||
def exact_type(self) -> int: ...
|
||||
if sys.version_info >= (3, 12):
|
||||
class TokenInfo(_TokenInfo):
|
||||
@property
|
||||
def exact_type(self) -> int: ...
|
||||
|
||||
else:
|
||||
@disjoint_base
|
||||
class TokenInfo(_TokenInfo):
|
||||
@property
|
||||
def exact_type(self) -> int: ...
|
||||
|
||||
# Backwards compatible tokens can be sequences of a shorter length too
|
||||
_Token: TypeAlias = TokenInfo | Sequence[int | str | _Position]
|
||||
|
||||
+29
-13
@@ -4,7 +4,7 @@ from collections.abc import Callable, Generator, Sequence
|
||||
from contextlib import contextmanager
|
||||
from tkinter import Canvas, Frame, Misc, PhotoImage, Scrollbar
|
||||
from typing import Any, ClassVar, Literal, TypedDict, overload, type_check_only
|
||||
from typing_extensions import Self, TypeAlias, deprecated
|
||||
from typing_extensions import Self, TypeAlias, deprecated, disjoint_base
|
||||
|
||||
__all__ = [
|
||||
"ScrolledCanvas",
|
||||
@@ -163,18 +163,34 @@ class _PenState(TypedDict):
|
||||
_Speed: TypeAlias = str | float
|
||||
_PolygonCoords: TypeAlias = Sequence[tuple[float, float]]
|
||||
|
||||
class Vec2D(tuple[float, float]):
|
||||
def __new__(cls, x: float, y: float) -> Self: ...
|
||||
def __add__(self, other: tuple[float, float]) -> Vec2D: ... # type: ignore[override]
|
||||
@overload # type: ignore[override]
|
||||
def __mul__(self, other: Vec2D) -> float: ...
|
||||
@overload
|
||||
def __mul__(self, other: float) -> Vec2D: ...
|
||||
def __rmul__(self, other: float) -> Vec2D: ... # type: ignore[override]
|
||||
def __sub__(self, other: tuple[float, float]) -> Vec2D: ...
|
||||
def __neg__(self) -> Vec2D: ...
|
||||
def __abs__(self) -> float: ...
|
||||
def rotate(self, angle: float) -> Vec2D: ...
|
||||
if sys.version_info >= (3, 12):
|
||||
class Vec2D(tuple[float, float]):
|
||||
def __new__(cls, x: float, y: float) -> Self: ...
|
||||
def __add__(self, other: tuple[float, float]) -> Vec2D: ... # type: ignore[override]
|
||||
@overload # type: ignore[override]
|
||||
def __mul__(self, other: Vec2D) -> float: ...
|
||||
@overload
|
||||
def __mul__(self, other: float) -> Vec2D: ...
|
||||
def __rmul__(self, other: float) -> Vec2D: ... # type: ignore[override]
|
||||
def __sub__(self, other: tuple[float, float]) -> Vec2D: ...
|
||||
def __neg__(self) -> Vec2D: ...
|
||||
def __abs__(self) -> float: ...
|
||||
def rotate(self, angle: float) -> Vec2D: ...
|
||||
|
||||
else:
|
||||
@disjoint_base
|
||||
class Vec2D(tuple[float, float]):
|
||||
def __new__(cls, x: float, y: float) -> Self: ...
|
||||
def __add__(self, other: tuple[float, float]) -> Vec2D: ... # type: ignore[override]
|
||||
@overload # type: ignore[override]
|
||||
def __mul__(self, other: Vec2D) -> float: ...
|
||||
@overload
|
||||
def __mul__(self, other: float) -> Vec2D: ...
|
||||
def __rmul__(self, other: float) -> Vec2D: ... # type: ignore[override]
|
||||
def __sub__(self, other: tuple[float, float]) -> Vec2D: ...
|
||||
def __neg__(self) -> Vec2D: ...
|
||||
def __abs__(self) -> float: ...
|
||||
def rotate(self, angle: float) -> Vec2D: ...
|
||||
|
||||
# Does not actually inherit from Canvas, but dynamically gets all methods of Canvas
|
||||
class ScrolledCanvas(Canvas, Frame): # type: ignore[misc]
|
||||
|
||||
+28
-14
@@ -17,7 +17,7 @@ from collections.abc import (
|
||||
)
|
||||
from importlib.machinery import ModuleSpec
|
||||
from typing import Any, ClassVar, Literal, TypeVar, final, overload
|
||||
from typing_extensions import ParamSpec, Self, TypeAliasType, TypeVarTuple, deprecated
|
||||
from typing_extensions import ParamSpec, Self, TypeAliasType, TypeVarTuple, deprecated, disjoint_base
|
||||
|
||||
if sys.version_info >= (3, 14):
|
||||
from _typeshed import AnnotateFunc
|
||||
@@ -331,20 +331,34 @@ class MappingProxyType(Mapping[_KT, _VT_co]):
|
||||
def __or__(self, value: Mapping[_T1, _T2], /) -> dict[_KT | _T1, _VT_co | _T2]: ...
|
||||
def __ror__(self, value: Mapping[_T1, _T2], /) -> dict[_KT | _T1, _VT_co | _T2]: ...
|
||||
|
||||
class SimpleNamespace:
|
||||
__hash__: ClassVar[None] # type: ignore[assignment]
|
||||
if sys.version_info >= (3, 13):
|
||||
def __init__(self, mapping_or_iterable: Mapping[str, Any] | Iterable[tuple[str, Any]] = (), /, **kwargs: Any) -> None: ...
|
||||
else:
|
||||
if sys.version_info >= (3, 12):
|
||||
@disjoint_base
|
||||
class SimpleNamespace:
|
||||
__hash__: ClassVar[None] # type: ignore[assignment]
|
||||
if sys.version_info >= (3, 13):
|
||||
def __init__(
|
||||
self, mapping_or_iterable: Mapping[str, Any] | Iterable[tuple[str, Any]] = (), /, **kwargs: Any
|
||||
) -> None: ...
|
||||
else:
|
||||
def __init__(self, **kwargs: Any) -> None: ...
|
||||
|
||||
def __eq__(self, value: object, /) -> bool: ...
|
||||
def __getattribute__(self, name: str, /) -> Any: ...
|
||||
def __setattr__(self, name: str, value: Any, /) -> None: ...
|
||||
def __delattr__(self, name: str, /) -> None: ...
|
||||
if sys.version_info >= (3, 13):
|
||||
def __replace__(self, **kwargs: Any) -> Self: ...
|
||||
|
||||
else:
|
||||
class SimpleNamespace:
|
||||
__hash__: ClassVar[None] # type: ignore[assignment]
|
||||
def __init__(self, **kwargs: Any) -> None: ...
|
||||
def __eq__(self, value: object, /) -> bool: ...
|
||||
def __getattribute__(self, name: str, /) -> Any: ...
|
||||
def __setattr__(self, name: str, value: Any, /) -> None: ...
|
||||
def __delattr__(self, name: str, /) -> None: ...
|
||||
|
||||
def __eq__(self, value: object, /) -> bool: ...
|
||||
def __getattribute__(self, name: str, /) -> Any: ...
|
||||
def __setattr__(self, name: str, value: Any, /) -> None: ...
|
||||
def __delattr__(self, name: str, /) -> None: ...
|
||||
if sys.version_info >= (3, 13):
|
||||
def __replace__(self, **kwargs: Any) -> Self: ...
|
||||
|
||||
@disjoint_base
|
||||
class ModuleType:
|
||||
__name__: str
|
||||
__file__: str | None
|
||||
@@ -661,7 +675,7 @@ _P = ParamSpec("_P")
|
||||
def coroutine(func: Callable[_P, Generator[Any, Any, _R]]) -> Callable[_P, Awaitable[_R]]: ...
|
||||
@overload
|
||||
def coroutine(func: _Fn) -> _Fn: ...
|
||||
|
||||
@disjoint_base
|
||||
class GenericAlias:
|
||||
@property
|
||||
def __origin__(self) -> type | TypeAliasType: ...
|
||||
|
||||
@@ -726,6 +726,7 @@ class MutableSet(AbstractSet[_T]):
|
||||
def __isub__(self, it: AbstractSet[Any]) -> typing_extensions.Self: ...
|
||||
|
||||
class MappingView(Sized):
|
||||
__slots__ = ("_mapping",)
|
||||
def __init__(self, mapping: Sized) -> None: ... # undocumented
|
||||
def __len__(self) -> int: ...
|
||||
|
||||
|
||||
@@ -408,36 +408,43 @@ else:
|
||||
|
||||
@runtime_checkable
|
||||
class SupportsInt(Protocol, metaclass=abc.ABCMeta):
|
||||
__slots__ = ()
|
||||
@abc.abstractmethod
|
||||
def __int__(self) -> int: ...
|
||||
|
||||
@runtime_checkable
|
||||
class SupportsFloat(Protocol, metaclass=abc.ABCMeta):
|
||||
__slots__ = ()
|
||||
@abc.abstractmethod
|
||||
def __float__(self) -> float: ...
|
||||
|
||||
@runtime_checkable
|
||||
class SupportsComplex(Protocol, metaclass=abc.ABCMeta):
|
||||
__slots__ = ()
|
||||
@abc.abstractmethod
|
||||
def __complex__(self) -> complex: ...
|
||||
|
||||
@runtime_checkable
|
||||
class SupportsBytes(Protocol, metaclass=abc.ABCMeta):
|
||||
__slots__ = ()
|
||||
@abc.abstractmethod
|
||||
def __bytes__(self) -> bytes: ...
|
||||
|
||||
@runtime_checkable
|
||||
class SupportsIndex(Protocol, metaclass=abc.ABCMeta):
|
||||
__slots__ = ()
|
||||
@abc.abstractmethod
|
||||
def __index__(self) -> int: ...
|
||||
|
||||
@runtime_checkable
|
||||
class SupportsAbs(Protocol[_T_co]):
|
||||
__slots__ = ()
|
||||
@abc.abstractmethod
|
||||
def __abs__(self) -> _T_co: ...
|
||||
|
||||
@runtime_checkable
|
||||
class SupportsRound(Protocol[_T_co]):
|
||||
__slots__ = ()
|
||||
@overload
|
||||
@abc.abstractmethod
|
||||
def __round__(self) -> int: ...
|
||||
|
||||
+61
-24
@@ -4,7 +4,7 @@ from collections.abc import Awaitable, Callable, Coroutine, Iterable, Mapping, S
|
||||
from contextlib import _GeneratorContextManager
|
||||
from types import TracebackType
|
||||
from typing import Any, ClassVar, Final, Generic, Literal, TypeVar, overload, type_check_only
|
||||
from typing_extensions import ParamSpec, Self, TypeAlias
|
||||
from typing_extensions import ParamSpec, Self, TypeAlias, disjoint_base
|
||||
|
||||
_T = TypeVar("_T")
|
||||
_TT = TypeVar("_TT", bound=type[Any])
|
||||
@@ -68,29 +68,66 @@ _ArgsKwargs: TypeAlias = tuple[tuple[Any, ...], Mapping[str, Any]]
|
||||
_NameArgsKwargs: TypeAlias = tuple[str, tuple[Any, ...], Mapping[str, Any]]
|
||||
_CallValue: TypeAlias = str | tuple[Any, ...] | Mapping[str, Any] | _ArgsKwargs | _NameArgsKwargs
|
||||
|
||||
class _Call(tuple[Any, ...]):
|
||||
def __new__(
|
||||
cls, value: _CallValue = (), name: str | None = "", parent: _Call | None = None, two: bool = False, from_kall: bool = True
|
||||
) -> Self: ...
|
||||
def __init__(
|
||||
self,
|
||||
value: _CallValue = (),
|
||||
name: str | None = None,
|
||||
parent: _Call | None = None,
|
||||
two: bool = False,
|
||||
from_kall: bool = True,
|
||||
) -> None: ...
|
||||
__hash__: ClassVar[None] # type: ignore[assignment]
|
||||
def __eq__(self, other: object) -> bool: ...
|
||||
def __ne__(self, value: object, /) -> bool: ...
|
||||
def __call__(self, *args: Any, **kwargs: Any) -> _Call: ...
|
||||
def __getattr__(self, attr: str) -> Any: ...
|
||||
def __getattribute__(self, attr: str) -> Any: ...
|
||||
@property
|
||||
def args(self) -> tuple[Any, ...]: ...
|
||||
@property
|
||||
def kwargs(self) -> Mapping[str, Any]: ...
|
||||
def call_list(self) -> Any: ...
|
||||
if sys.version_info >= (3, 12):
|
||||
class _Call(tuple[Any, ...]):
|
||||
def __new__(
|
||||
cls,
|
||||
value: _CallValue = (),
|
||||
name: str | None = "",
|
||||
parent: _Call | None = None,
|
||||
two: bool = False,
|
||||
from_kall: bool = True,
|
||||
) -> Self: ...
|
||||
def __init__(
|
||||
self,
|
||||
value: _CallValue = (),
|
||||
name: str | None = None,
|
||||
parent: _Call | None = None,
|
||||
two: bool = False,
|
||||
from_kall: bool = True,
|
||||
) -> None: ...
|
||||
__hash__: ClassVar[None] # type: ignore[assignment]
|
||||
def __eq__(self, other: object) -> bool: ...
|
||||
def __ne__(self, value: object, /) -> bool: ...
|
||||
def __call__(self, *args: Any, **kwargs: Any) -> _Call: ...
|
||||
def __getattr__(self, attr: str) -> Any: ...
|
||||
def __getattribute__(self, attr: str) -> Any: ...
|
||||
@property
|
||||
def args(self) -> tuple[Any, ...]: ...
|
||||
@property
|
||||
def kwargs(self) -> Mapping[str, Any]: ...
|
||||
def call_list(self) -> Any: ...
|
||||
|
||||
else:
|
||||
@disjoint_base
|
||||
class _Call(tuple[Any, ...]):
|
||||
def __new__(
|
||||
cls,
|
||||
value: _CallValue = (),
|
||||
name: str | None = "",
|
||||
parent: _Call | None = None,
|
||||
two: bool = False,
|
||||
from_kall: bool = True,
|
||||
) -> Self: ...
|
||||
def __init__(
|
||||
self,
|
||||
value: _CallValue = (),
|
||||
name: str | None = None,
|
||||
parent: _Call | None = None,
|
||||
two: bool = False,
|
||||
from_kall: bool = True,
|
||||
) -> None: ...
|
||||
__hash__: ClassVar[None] # type: ignore[assignment]
|
||||
def __eq__(self, other: object) -> bool: ...
|
||||
def __ne__(self, value: object, /) -> bool: ...
|
||||
def __call__(self, *args: Any, **kwargs: Any) -> _Call: ...
|
||||
def __getattr__(self, attr: str) -> Any: ...
|
||||
def __getattribute__(self, attr: str) -> Any: ...
|
||||
@property
|
||||
def args(self) -> tuple[Any, ...]: ...
|
||||
@property
|
||||
def kwargs(self) -> Mapping[str, Any]: ...
|
||||
def call_list(self) -> Any: ...
|
||||
|
||||
call: _Call
|
||||
|
||||
|
||||
+2
-1
@@ -4,7 +4,7 @@ from _weakrefset import WeakSet as WeakSet
|
||||
from collections.abc import Callable, Iterable, Iterator, Mapping, MutableMapping
|
||||
from types import GenericAlias
|
||||
from typing import Any, ClassVar, Generic, TypeVar, final, overload
|
||||
from typing_extensions import ParamSpec, Self
|
||||
from typing_extensions import ParamSpec, Self, disjoint_base
|
||||
|
||||
__all__ = [
|
||||
"ref",
|
||||
@@ -52,6 +52,7 @@ class ProxyType(Generic[_T]): # "weakproxy"
|
||||
def __getattr__(self, attr: str) -> Any: ...
|
||||
__hash__: ClassVar[None] # type: ignore[assignment]
|
||||
|
||||
@disjoint_base
|
||||
class ReferenceType(Generic[_T]): # "weakref"
|
||||
__callback__: Callable[[Self], Any]
|
||||
def __new__(cls, o: _T, callback: Callable[[Self], Any] | None = ..., /) -> Self: ...
|
||||
|
||||
@@ -3,7 +3,7 @@ from _collections_abc import dict_keys
|
||||
from _typeshed import FileDescriptorOrPath, ReadableBuffer, SupportsRead, SupportsWrite
|
||||
from collections.abc import Callable, Generator, ItemsView, Iterable, Iterator, Mapping, Sequence
|
||||
from typing import Any, Final, Generic, Literal, Protocol, SupportsIndex, TypeVar, overload, type_check_only
|
||||
from typing_extensions import TypeAlias, TypeGuard, deprecated
|
||||
from typing_extensions import TypeAlias, TypeGuard, deprecated, disjoint_base
|
||||
from xml.parsers.expat import XMLParserType
|
||||
|
||||
__all__ = [
|
||||
@@ -84,6 +84,7 @@ _ElementCallable: TypeAlias = Callable[..., Element[_ElementCallable]]
|
||||
_Tag = TypeVar("_Tag", default=str, bound=str | _ElementCallable)
|
||||
_OtherTag = TypeVar("_OtherTag", default=str, bound=str | _ElementCallable)
|
||||
|
||||
@disjoint_base
|
||||
class Element(Generic[_Tag]):
|
||||
tag: _Tag
|
||||
attrib: dict[str, str]
|
||||
@@ -286,6 +287,7 @@ def fromstringlist(sequence: Sequence[str | ReadableBuffer], parser: XMLParser |
|
||||
# elementfactories.
|
||||
_ElementFactory: TypeAlias = Callable[[Any, dict[Any, Any]], Element]
|
||||
|
||||
@disjoint_base
|
||||
class TreeBuilder:
|
||||
# comment_factory can take None because passing None to Comment is not an error
|
||||
def __init__(
|
||||
@@ -351,6 +353,7 @@ _E = TypeVar("_E", default=Element)
|
||||
# The default target is TreeBuilder, which returns Element.
|
||||
# C14NWriterTarget does not implement a close method, so using it results
|
||||
# in a type of XMLParser[None].
|
||||
@disjoint_base
|
||||
class XMLParser(Generic[_E]):
|
||||
parser: XMLParserType
|
||||
target: _Target
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import sys
|
||||
from collections.abc import Iterable
|
||||
from datetime import datetime, timedelta, tzinfo
|
||||
from typing_extensions import Self
|
||||
from typing_extensions import Self, disjoint_base
|
||||
from zoneinfo._common import ZoneInfoNotFoundError as ZoneInfoNotFoundError, _IOBytes
|
||||
from zoneinfo._tzpath import (
|
||||
TZPATH as TZPATH,
|
||||
@@ -12,6 +12,7 @@ from zoneinfo._tzpath import (
|
||||
|
||||
__all__ = ["ZoneInfo", "reset_tzpath", "available_timezones", "TZPATH", "ZoneInfoNotFoundError", "InvalidTZPathWarning"]
|
||||
|
||||
@disjoint_base
|
||||
class ZoneInfo(tzinfo):
|
||||
@property
|
||||
def key(self) -> str: ...
|
||||
|
||||
Reference in New Issue
Block a user