Add @disjoint_base decorator in the stdlib (#14599)

And fix some other new stubtest finds.
This commit is contained in:
Jelle Zijlstra
2025-08-24 07:27:14 -07:00
committed by GitHub
parent 2565f34946
commit e8ba06f710
55 changed files with 701 additions and 307 deletions
+60 -28
View File
@@ -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: ...