Skip to content

Commit fd4fc60

Browse files
Return BufferedIncrementalReader for some encodings (#13523)
1 parent adba435 commit fd4fc60

1 file changed

Lines changed: 23 additions & 2 deletions

File tree

stdlib/codecs.pyi

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ from _codecs import *
33
from _typeshed import ReadableBuffer
44
from abc import abstractmethod
55
from collections.abc import Callable, Generator, Iterable
6-
from typing import Any, BinaryIO, ClassVar, Final, Literal, Protocol, TextIO
7-
from typing_extensions import Self
6+
from typing import Any, BinaryIO, ClassVar, Final, Literal, Protocol, TextIO, overload
7+
from typing_extensions import Self, TypeAlias
88

99
__all__ = [
1010
"register",
@@ -58,6 +58,21 @@ BOM32_LE: Final = b"\xff\xfe"
5858
BOM64_BE: Final = b"\x00\x00\xfe\xff"
5959
BOM64_LE: Final = b"\xff\xfe\x00\x00"
6060

61+
_BufferedEncoding: TypeAlias = Literal[
62+
"idna",
63+
"raw-unicode-escape",
64+
"unicode-escape",
65+
"utf-16",
66+
"utf-16-be",
67+
"utf-16-le",
68+
"utf-32",
69+
"utf-32-be",
70+
"utf-32-le",
71+
"utf-7",
72+
"utf-8",
73+
"utf-8-sig",
74+
]
75+
6176
class _WritableStream(Protocol):
6277
def write(self, data: bytes, /) -> object: ...
6378
def seek(self, offset: int, whence: int, /) -> object: ...
@@ -94,6 +109,9 @@ class _IncrementalEncoder(Protocol):
94109
class _IncrementalDecoder(Protocol):
95110
def __call__(self, errors: str = ...) -> IncrementalDecoder: ...
96111

112+
class _BufferedIncrementalDecoder(Protocol):
113+
def __call__(self, errors: str = ...) -> BufferedIncrementalDecoder: ...
114+
97115
class CodecInfo(tuple[_Encoder, _Decoder, _StreamReader, _StreamWriter]):
98116
_is_text_encoding: bool
99117
@property
@@ -125,6 +143,9 @@ class CodecInfo(tuple[_Encoder, _Decoder, _StreamReader, _StreamWriter]):
125143
def getencoder(encoding: str) -> _Encoder: ...
126144
def getdecoder(encoding: str) -> _Decoder: ...
127145
def getincrementalencoder(encoding: str) -> _IncrementalEncoder: ...
146+
@overload
147+
def getincrementaldecoder(encoding: _BufferedEncoding) -> _BufferedIncrementalDecoder: ...
148+
@overload
128149
def getincrementaldecoder(encoding: str) -> _IncrementalDecoder: ...
129150
def getreader(encoding: str) -> _StreamReader: ...
130151
def getwriter(encoding: str) -> _StreamWriter: ...

0 commit comments

Comments
 (0)