Skip to content

Commit 0a541ad

Browse files
authored
add multi-byte encodings submodules (#13093)
1 parent fadb539 commit 0a541ad

27 files changed

+597
-10
lines changed

stdlib/@tests/stubtest_allowlists/common.txt

-10
Original file line numberDiff line numberDiff line change
@@ -65,27 +65,17 @@ ctypes.macholib.framework
6565
encodings.aliases
6666
encodings.ascii
6767
encodings.base64_codec
68-
encodings.big5
69-
encodings.big5hkscs
7068
encodings.bz2_codec
7169
encodings.charmap
7270
encodings\.cp\d+
73-
encodings\.euc_.+
74-
encodings.gb18030
75-
encodings.gb2312
76-
encodings.gbk
7771
encodings.hex_codec
78-
encodings.hz
7972
encodings.idna
80-
encodings\.iso2022_.*
81-
encodings.johab
8273
encodings.latin_1
8374
encodings\.mac_.+
8475
encodings.punycode
8576
encodings.quopri_codec
8677
encodings.raw_unicode_escape
8778
encodings.rot_13
88-
encodings\.shift_jis.*
8979
encodings.undefined
9080
encodings.unicode_escape
9181
encodings.utf_16

stdlib/VERSIONS

+1
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ _lsprof: 3.0-
5454
_lzma: 3.3-
5555
_markupbase: 3.0-
5656
_msi: 3.0-3.12
57+
_multibytecodec: 3.0-
5758
_operator: 3.4-
5859
_osx_support: 3.0-
5960
_posixsubprocess: 3.2-

stdlib/_multibytecodec.pyi

+44
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
from _typeshed import ReadableBuffer
2+
from codecs import _ReadableStream, _WritableStream
3+
from collections.abc import Iterable
4+
from typing import final, type_check_only
5+
6+
# This class is not exposed. It calls itself _multibytecodec.MultibyteCodec.
7+
@final
8+
@type_check_only
9+
class _MultibyteCodec:
10+
def decode(self, input: ReadableBuffer, errors: str | None = None) -> str: ...
11+
def encode(self, input: str, errors: str | None = None) -> bytes: ...
12+
13+
class MultibyteIncrementalDecoder:
14+
errors: str
15+
def __init__(self, errors: str = "strict") -> None: ...
16+
def decode(self, input: ReadableBuffer, final: bool = False) -> str: ...
17+
def getstate(self) -> tuple[bytes, int]: ...
18+
def reset(self) -> None: ...
19+
def setstate(self, state: tuple[bytes, int], /) -> None: ...
20+
21+
class MultibyteIncrementalEncoder:
22+
errors: str
23+
def __init__(self, errors: str = "strict") -> None: ...
24+
def encode(self, input: str, final: bool = False) -> bytes: ...
25+
def getstate(self) -> int: ...
26+
def reset(self) -> None: ...
27+
def setstate(self, state: int, /) -> None: ...
28+
29+
class MultibyteStreamReader:
30+
errors: str
31+
stream: _ReadableStream
32+
def __init__(self, stream: _ReadableStream, errors: str = "strict") -> None: ...
33+
def read(self, sizeobj: int | None = None, /) -> str: ...
34+
def readline(self, sizeobj: int | None = None, /) -> str: ...
35+
def readlines(self, sizehintobj: int | None = None, /) -> list[str]: ...
36+
def reset(self) -> None: ...
37+
38+
class MultibyteStreamWriter:
39+
errors: str
40+
stream: _WritableStream
41+
def __init__(self, stream: _WritableStream, errors: str = "strict") -> None: ...
42+
def reset(self) -> None: ...
43+
def write(self, strobj: str, /) -> None: ...
44+
def writelines(self, lines: Iterable[str], /) -> None: ...

stdlib/encodings/big5.pyi

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import _multibytecodec as mbc
2+
import codecs
3+
from typing import ClassVar
4+
5+
codec: mbc._MultibyteCodec
6+
7+
class Codec(codecs.Codec):
8+
encode = codec.encode # type: ignore[assignment] # pyright: ignore[reportAssignmentType]
9+
decode = codec.decode # type: ignore[assignment] # pyright: ignore[reportAssignmentType]
10+
11+
class IncrementalEncoder(mbc.MultibyteIncrementalEncoder, codecs.IncrementalEncoder): # type: ignore[misc]
12+
codec: ClassVar[mbc._MultibyteCodec] = ...
13+
14+
class IncrementalDecoder(mbc.MultibyteIncrementalDecoder, codecs.IncrementalDecoder):
15+
codec: ClassVar[mbc._MultibyteCodec] = ...
16+
17+
class StreamReader(Codec, mbc.MultibyteStreamReader, codecs.StreamReader): # type: ignore[misc]
18+
codec: ClassVar[mbc._MultibyteCodec] = ...
19+
20+
class StreamWriter(Codec, mbc.MultibyteStreamWriter, codecs.StreamWriter):
21+
codec: ClassVar[mbc._MultibyteCodec] = ...
22+
23+
def getregentry() -> codecs.CodecInfo: ...

stdlib/encodings/big5hkscs.pyi

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import _multibytecodec as mbc
2+
import codecs
3+
from typing import ClassVar
4+
5+
codec: mbc._MultibyteCodec
6+
7+
class Codec(codecs.Codec):
8+
encode = codec.encode # type: ignore[assignment] # pyright: ignore[reportAssignmentType]
9+
decode = codec.decode # type: ignore[assignment] # pyright: ignore[reportAssignmentType]
10+
11+
class IncrementalEncoder(mbc.MultibyteIncrementalEncoder, codecs.IncrementalEncoder): # type: ignore[misc]
12+
codec: ClassVar[mbc._MultibyteCodec] = ...
13+
14+
class IncrementalDecoder(mbc.MultibyteIncrementalDecoder, codecs.IncrementalDecoder):
15+
codec: ClassVar[mbc._MultibyteCodec] = ...
16+
17+
class StreamReader(Codec, mbc.MultibyteStreamReader, codecs.StreamReader): # type: ignore[misc]
18+
codec: ClassVar[mbc._MultibyteCodec] = ...
19+
20+
class StreamWriter(Codec, mbc.MultibyteStreamWriter, codecs.StreamWriter):
21+
codec: ClassVar[mbc._MultibyteCodec] = ...
22+
23+
def getregentry() -> codecs.CodecInfo: ...

stdlib/encodings/cp932.pyi

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import _multibytecodec as mbc
2+
import codecs
3+
from typing import ClassVar
4+
5+
codec: mbc._MultibyteCodec
6+
7+
class Codec(codecs.Codec):
8+
encode = codec.encode # type: ignore[assignment] # pyright: ignore[reportAssignmentType]
9+
decode = codec.decode # type: ignore[assignment] # pyright: ignore[reportAssignmentType]
10+
11+
class IncrementalEncoder(mbc.MultibyteIncrementalEncoder, codecs.IncrementalEncoder): # type: ignore[misc]
12+
codec: ClassVar[mbc._MultibyteCodec] = ...
13+
14+
class IncrementalDecoder(mbc.MultibyteIncrementalDecoder, codecs.IncrementalDecoder):
15+
codec: ClassVar[mbc._MultibyteCodec] = ...
16+
17+
class StreamReader(Codec, mbc.MultibyteStreamReader, codecs.StreamReader): # type: ignore[misc]
18+
codec: ClassVar[mbc._MultibyteCodec] = ...
19+
20+
class StreamWriter(Codec, mbc.MultibyteStreamWriter, codecs.StreamWriter):
21+
codec: ClassVar[mbc._MultibyteCodec] = ...
22+
23+
def getregentry() -> codecs.CodecInfo: ...

stdlib/encodings/cp949.pyi

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import _multibytecodec as mbc
2+
import codecs
3+
from typing import ClassVar
4+
5+
codec: mbc._MultibyteCodec
6+
7+
class Codec(codecs.Codec):
8+
encode = codec.encode # type: ignore[assignment] # pyright: ignore[reportAssignmentType]
9+
decode = codec.decode # type: ignore[assignment] # pyright: ignore[reportAssignmentType]
10+
11+
class IncrementalEncoder(mbc.MultibyteIncrementalEncoder, codecs.IncrementalEncoder): # type: ignore[misc]
12+
codec: ClassVar[mbc._MultibyteCodec] = ...
13+
14+
class IncrementalDecoder(mbc.MultibyteIncrementalDecoder, codecs.IncrementalDecoder):
15+
codec: ClassVar[mbc._MultibyteCodec] = ...
16+
17+
class StreamReader(Codec, mbc.MultibyteStreamReader, codecs.StreamReader): # type: ignore[misc]
18+
codec: ClassVar[mbc._MultibyteCodec] = ...
19+
20+
class StreamWriter(Codec, mbc.MultibyteStreamWriter, codecs.StreamWriter):
21+
codec: ClassVar[mbc._MultibyteCodec] = ...
22+
23+
def getregentry() -> codecs.CodecInfo: ...

stdlib/encodings/cp950.pyi

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import _multibytecodec as mbc
2+
import codecs
3+
from typing import ClassVar
4+
5+
codec: mbc._MultibyteCodec
6+
7+
class Codec(codecs.Codec):
8+
encode = codec.encode # type: ignore[assignment] # pyright: ignore[reportAssignmentType]
9+
decode = codec.decode # type: ignore[assignment] # pyright: ignore[reportAssignmentType]
10+
11+
class IncrementalEncoder(mbc.MultibyteIncrementalEncoder, codecs.IncrementalEncoder): # type: ignore[misc]
12+
codec: ClassVar[mbc._MultibyteCodec] = ...
13+
14+
class IncrementalDecoder(mbc.MultibyteIncrementalDecoder, codecs.IncrementalDecoder):
15+
codec: ClassVar[mbc._MultibyteCodec] = ...
16+
17+
class StreamReader(Codec, mbc.MultibyteStreamReader, codecs.StreamReader): # type: ignore[misc]
18+
codec: ClassVar[mbc._MultibyteCodec] = ...
19+
20+
class StreamWriter(Codec, mbc.MultibyteStreamWriter, codecs.StreamWriter):
21+
codec: ClassVar[mbc._MultibyteCodec] = ...
22+
23+
def getregentry() -> codecs.CodecInfo: ...

stdlib/encodings/euc_jis_2004.pyi

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import _multibytecodec as mbc
2+
import codecs
3+
from typing import ClassVar
4+
5+
codec: mbc._MultibyteCodec
6+
7+
class Codec(codecs.Codec):
8+
encode = codec.encode # type: ignore[assignment] # pyright: ignore[reportAssignmentType]
9+
decode = codec.decode # type: ignore[assignment] # pyright: ignore[reportAssignmentType]
10+
11+
class IncrementalEncoder(mbc.MultibyteIncrementalEncoder, codecs.IncrementalEncoder): # type: ignore[misc]
12+
codec: ClassVar[mbc._MultibyteCodec] = ...
13+
14+
class IncrementalDecoder(mbc.MultibyteIncrementalDecoder, codecs.IncrementalDecoder):
15+
codec: ClassVar[mbc._MultibyteCodec] = ...
16+
17+
class StreamReader(Codec, mbc.MultibyteStreamReader, codecs.StreamReader): # type: ignore[misc]
18+
codec: ClassVar[mbc._MultibyteCodec] = ...
19+
20+
class StreamWriter(Codec, mbc.MultibyteStreamWriter, codecs.StreamWriter):
21+
codec: ClassVar[mbc._MultibyteCodec] = ...
22+
23+
def getregentry() -> codecs.CodecInfo: ...

stdlib/encodings/euc_jisx0213.pyi

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import _multibytecodec as mbc
2+
import codecs
3+
from typing import ClassVar
4+
5+
codec: mbc._MultibyteCodec
6+
7+
class Codec(codecs.Codec):
8+
encode = codec.encode # type: ignore[assignment] # pyright: ignore[reportAssignmentType]
9+
decode = codec.decode # type: ignore[assignment] # pyright: ignore[reportAssignmentType]
10+
11+
class IncrementalEncoder(mbc.MultibyteIncrementalEncoder, codecs.IncrementalEncoder): # type: ignore[misc]
12+
codec: ClassVar[mbc._MultibyteCodec] = ...
13+
14+
class IncrementalDecoder(mbc.MultibyteIncrementalDecoder, codecs.IncrementalDecoder):
15+
codec: ClassVar[mbc._MultibyteCodec] = ...
16+
17+
class StreamReader(Codec, mbc.MultibyteStreamReader, codecs.StreamReader): # type: ignore[misc]
18+
codec: ClassVar[mbc._MultibyteCodec] = ...
19+
20+
class StreamWriter(Codec, mbc.MultibyteStreamWriter, codecs.StreamWriter):
21+
codec: ClassVar[mbc._MultibyteCodec] = ...
22+
23+
def getregentry() -> codecs.CodecInfo: ...

stdlib/encodings/euc_jp.pyi

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import _multibytecodec as mbc
2+
import codecs
3+
from typing import ClassVar
4+
5+
codec: mbc._MultibyteCodec
6+
7+
class Codec(codecs.Codec):
8+
encode = codec.encode # type: ignore[assignment] # pyright: ignore[reportAssignmentType]
9+
decode = codec.decode # type: ignore[assignment] # pyright: ignore[reportAssignmentType]
10+
11+
class IncrementalEncoder(mbc.MultibyteIncrementalEncoder, codecs.IncrementalEncoder): # type: ignore[misc]
12+
codec: ClassVar[mbc._MultibyteCodec] = ...
13+
14+
class IncrementalDecoder(mbc.MultibyteIncrementalDecoder, codecs.IncrementalDecoder):
15+
codec: ClassVar[mbc._MultibyteCodec] = ...
16+
17+
class StreamReader(Codec, mbc.MultibyteStreamReader, codecs.StreamReader): # type: ignore[misc]
18+
codec: ClassVar[mbc._MultibyteCodec] = ...
19+
20+
class StreamWriter(Codec, mbc.MultibyteStreamWriter, codecs.StreamWriter):
21+
codec: ClassVar[mbc._MultibyteCodec] = ...
22+
23+
def getregentry() -> codecs.CodecInfo: ...

stdlib/encodings/euc_kr.pyi

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import _multibytecodec as mbc
2+
import codecs
3+
from typing import ClassVar
4+
5+
codec: mbc._MultibyteCodec
6+
7+
class Codec(codecs.Codec):
8+
encode = codec.encode # type: ignore[assignment] # pyright: ignore[reportAssignmentType]
9+
decode = codec.decode # type: ignore[assignment] # pyright: ignore[reportAssignmentType]
10+
11+
class IncrementalEncoder(mbc.MultibyteIncrementalEncoder, codecs.IncrementalEncoder): # type: ignore[misc]
12+
codec: ClassVar[mbc._MultibyteCodec] = ...
13+
14+
class IncrementalDecoder(mbc.MultibyteIncrementalDecoder, codecs.IncrementalDecoder):
15+
codec: ClassVar[mbc._MultibyteCodec] = ...
16+
17+
class StreamReader(Codec, mbc.MultibyteStreamReader, codecs.StreamReader): # type: ignore[misc]
18+
codec: ClassVar[mbc._MultibyteCodec] = ...
19+
20+
class StreamWriter(Codec, mbc.MultibyteStreamWriter, codecs.StreamWriter):
21+
codec: ClassVar[mbc._MultibyteCodec] = ...
22+
23+
def getregentry() -> codecs.CodecInfo: ...

stdlib/encodings/gb18030.pyi

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import _multibytecodec as mbc
2+
import codecs
3+
from typing import ClassVar
4+
5+
codec: mbc._MultibyteCodec
6+
7+
class Codec(codecs.Codec):
8+
encode = codec.encode # type: ignore[assignment] # pyright: ignore[reportAssignmentType]
9+
decode = codec.decode # type: ignore[assignment] # pyright: ignore[reportAssignmentType]
10+
11+
class IncrementalEncoder(mbc.MultibyteIncrementalEncoder, codecs.IncrementalEncoder): # type: ignore[misc]
12+
codec: ClassVar[mbc._MultibyteCodec] = ...
13+
14+
class IncrementalDecoder(mbc.MultibyteIncrementalDecoder, codecs.IncrementalDecoder):
15+
codec: ClassVar[mbc._MultibyteCodec] = ...
16+
17+
class StreamReader(Codec, mbc.MultibyteStreamReader, codecs.StreamReader): # type: ignore[misc]
18+
codec: ClassVar[mbc._MultibyteCodec] = ...
19+
20+
class StreamWriter(Codec, mbc.MultibyteStreamWriter, codecs.StreamWriter):
21+
codec: ClassVar[mbc._MultibyteCodec] = ...
22+
23+
def getregentry() -> codecs.CodecInfo: ...

stdlib/encodings/gb2312.pyi

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import _multibytecodec as mbc
2+
import codecs
3+
from typing import ClassVar
4+
5+
codec: mbc._MultibyteCodec
6+
7+
class Codec(codecs.Codec):
8+
encode = codec.encode # type: ignore[assignment] # pyright: ignore[reportAssignmentType]
9+
decode = codec.decode # type: ignore[assignment] # pyright: ignore[reportAssignmentType]
10+
11+
class IncrementalEncoder(mbc.MultibyteIncrementalEncoder, codecs.IncrementalEncoder): # type: ignore[misc]
12+
codec: ClassVar[mbc._MultibyteCodec] = ...
13+
14+
class IncrementalDecoder(mbc.MultibyteIncrementalDecoder, codecs.IncrementalDecoder):
15+
codec: ClassVar[mbc._MultibyteCodec] = ...
16+
17+
class StreamReader(Codec, mbc.MultibyteStreamReader, codecs.StreamReader): # type: ignore[misc]
18+
codec: ClassVar[mbc._MultibyteCodec] = ...
19+
20+
class StreamWriter(Codec, mbc.MultibyteStreamWriter, codecs.StreamWriter):
21+
codec: ClassVar[mbc._MultibyteCodec] = ...
22+
23+
def getregentry() -> codecs.CodecInfo: ...

stdlib/encodings/gbk.pyi

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import _multibytecodec as mbc
2+
import codecs
3+
from typing import ClassVar
4+
5+
codec: mbc._MultibyteCodec
6+
7+
class Codec(codecs.Codec):
8+
encode = codec.encode # type: ignore[assignment] # pyright: ignore[reportAssignmentType]
9+
decode = codec.decode # type: ignore[assignment] # pyright: ignore[reportAssignmentType]
10+
11+
class IncrementalEncoder(mbc.MultibyteIncrementalEncoder, codecs.IncrementalEncoder): # type: ignore[misc]
12+
codec: ClassVar[mbc._MultibyteCodec] = ...
13+
14+
class IncrementalDecoder(mbc.MultibyteIncrementalDecoder, codecs.IncrementalDecoder):
15+
codec: ClassVar[mbc._MultibyteCodec] = ...
16+
17+
class StreamReader(Codec, mbc.MultibyteStreamReader, codecs.StreamReader): # type: ignore[misc]
18+
codec: ClassVar[mbc._MultibyteCodec] = ...
19+
20+
class StreamWriter(Codec, mbc.MultibyteStreamWriter, codecs.StreamWriter):
21+
codec: ClassVar[mbc._MultibyteCodec] = ...
22+
23+
def getregentry() -> codecs.CodecInfo: ...

stdlib/encodings/hz.pyi

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import _multibytecodec as mbc
2+
import codecs
3+
from typing import ClassVar
4+
5+
codec: mbc._MultibyteCodec
6+
7+
class Codec(codecs.Codec):
8+
encode = codec.encode # type: ignore[assignment] # pyright: ignore[reportAssignmentType]
9+
decode = codec.decode # type: ignore[assignment] # pyright: ignore[reportAssignmentType]
10+
11+
class IncrementalEncoder(mbc.MultibyteIncrementalEncoder, codecs.IncrementalEncoder): # type: ignore[misc]
12+
codec: ClassVar[mbc._MultibyteCodec] = ...
13+
14+
class IncrementalDecoder(mbc.MultibyteIncrementalDecoder, codecs.IncrementalDecoder):
15+
codec: ClassVar[mbc._MultibyteCodec] = ...
16+
17+
class StreamReader(Codec, mbc.MultibyteStreamReader, codecs.StreamReader): # type: ignore[misc]
18+
codec: ClassVar[mbc._MultibyteCodec] = ...
19+
20+
class StreamWriter(Codec, mbc.MultibyteStreamWriter, codecs.StreamWriter):
21+
codec: ClassVar[mbc._MultibyteCodec] = ...
22+
23+
def getregentry() -> codecs.CodecInfo: ...

0 commit comments

Comments
 (0)