10000 email: improve bytes handling (#9032) · python/typeshed@7ab933f · GitHub
[go: up one dir, main page]

Skip to content

Commit 7ab933f

Browse files
email: improve bytes handling (#9032)
1 parent 3e46f9a commit 7ab933f

File tree

10 files changed

+26
-19
lines changed

10 files changed

+26
-19
lines changed

stdlib/email/__init__.pyi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ _ParamType: TypeAlias = Union[str, tuple[str | None, str | None, str]] # noqa:
99
_ParamsType: TypeAlias = Union[str, None, tuple[str, str | None, str]] # noqa: Y047
1010

1111
def message_from_string(s: str, _class: Callable[[], Message] = ..., *, policy: Policy = ...) -> Message: ...
12-
def message_from_bytes(s: bytes, _class: Callable[[], Message] = ..., *, policy: Policy = ...) -> Message: ...
12+
def message_from_bytes(s: bytes | bytearray, _class: Callable[[], Message] = ..., *, policy: Policy = ...) -> Message: ...
1313
def message_from_file(fp: IO[str], _class: Callable[[], Message] = ..., *, policy: Policy = ...) -> Message: ...
1414
def message_from_binary_file(fp: IO[bytes], _class: Callable[[], Message] = ..., *, policy: Policy = ...) -> Message: ...
1515

stdlib/email/base64mime.pyi

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
__all__ = ["body_decode", "body_encode", "decode", "decodestring", "header_encode", "header_length"]
22

3-
def header_length(bytearray: str | bytes) -> int: ...
4-
def header_encode(header_bytes: str | bytes, charset: str = ...) -> str: ...
5-
def body_encode(s: bytes, maxlinelen: int = ..., eol: str = ...) -> str: ...
6-
def decode(string: str | bytes) -> bytes: ...
3+
from _typeshed import ReadableBuffer
4+
5+
def header_length(bytearray: str | bytes | bytearray) -> int: ...
6+
def header_encode(header_bytes: str | ReadableBuffer, charset: str = ...) -> str: ...
7+
8+
# First argument should be a buffer that supports slicing and len().
9+
def body_encode(s: bytes | bytearray, maxlinelen: int = ..., eol: str = ...) -> str: ...
10+
def decode(string: str | ReadableBuffer) -> bytes: ...
711

812
body_decode = decode
913
decodestring = decode

stdlib/email/feedparser.pyi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,5 @@ class BytesFeedParser(Generic[_MessageT]):
2020
def __init__(self: BytesFeedParser[Message], _factory: None = ..., *, policy: Policy = ...) -> None: ...
2121
@overload
2222
def __init__(self, _factory: Callable[[], _MessageT], *, policy: Policy = ...) -> None: ...
23-
def feed(self, data: bytes) -> None: ...
23+
def feed(self, data: bytes | bytearray) -> None: ...
2424
def close(self) -> _MessageT: ...

stdlib/email/header.pyi

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from collections.abc import Iterable
12
from email.charset import Charset
23
from typing import Any
34

@@ -6,14 +7,14 @@ __all__ = ["Header", "decode_header", "make_header"]
67
class Header:
78
def __init__(
89
self,
9-
s: bytes | str | None = ...,
10+
s: bytes | bytearray | str | None = ...,
1011
charset: Charset | str | None = ...,
1112
maxlinelen: int | None = ...,
1213
header_name: str | None = ...,
1314
continuation_ws: str = ...,
1415
errors: str = ...,
1516
) -> None: ...
16-
def append(self, s: bytes | str, charset: Charset | str | None = ..., errors: str = ...) -> None: ...
17+
def append(self, s: bytes | bytearray | str, charset: Charset | str | None = ..., errors: str = ...) -> None: ...
1718
def encode(self, splitchars: str = ..., maxlinelen: int | None = ..., linesep: str = ...) -> str: ...
1819
def __eq__(self, other: object) -> bool: ...
1920
def __ne__(self, __other: object) -> bool: ...
@@ -23,7 +24,7 @@ class Header:
2324
# contains at least one encoded part.
2425
def decode_header(header: Header | str) -> list[tuple[Any, Any | None]]: ...
2526
def make_header(
26-
decoded_seq: list[tuple[bytes, str | None]],
27+
decoded_seq: Iterable[tuple[bytes | bytearray | str, str | None]],
2728
maxlinelen: int | None = ...,
2829
header_name: str | None = ...,
2930
continuation_ws: str = ...,

stdlib/email/message.pyi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ __all__ = ["Message", "EmailMessage"]
1212

1313
_T = TypeVar("_T")
1414

15-
_PayloadType: TypeAlias = list[Message] | str | bytes
15+
_PayloadType: TypeAlias = list[Message] | str | bytes | bytearray
1616
_CharsetType: TypeAlias = Charset | str | None
1717
_HeaderType: TypeAlias = Any
1818

stdlib/email/mime/application.pyi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ __all__ = ["MIMEApplication"]
88
class MIMEApplication(MIMENonMultipart):
99
def __init__(
1010
self,
11-
_data: str | bytes,
11+
_data: str | bytes | bytearray,
1212
_subtype: str = ...,
1313
_encoder: Callable[[MIMEApplication], object] = ...,
1414
*,

stdlib/email/mime/audio.pyi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ __all__ = ["MIMEAudio"]
88
class MIMEAudio(MIMENonMultipart):
99
def __init__(
1010
self,
11-
_audiodata: str | bytes,
11+
_audiodata: str | bytes | bytearray,
1212
_subtype: str | None = ...,
1313
_encoder: Callable[[MIMEAudio], object] = ...,
1414
*,

stdlib/email/mime/image.pyi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ __all__ = ["MIMEImage"]
88
class MIMEImage(MIMENonMultipart):
99
def __init__(
1010
self,
11-
_imagedata: str | bytes,
11+
_imagedata: str | bytes | bytearray,
1212
_subtype: str | None = ...,
1313
_encoder: Callable[[MIMEImage], object] = ...,
1414
*,

stdlib/email/parser.pyi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,6 @@ class HeaderParser(Parser): ...
1616
class BytesParser:
1717
def __init__(self, _class: Callable[[], Message] = ..., *, policy: Policy = ...) -> None: ...
1818
def parse(self, fp: BinaryIO, headersonly: bool = ...) -> Message: ...
19-
def parsebytes(self, text: bytes, headersonly: bool = ...) -> Message: ...
19+
def parsebytes(self, text: bytes | bytearray, headersonly: bool = ...) -> Message: ...
2020

2121
class BytesHeaderParser(BytesParser): ...

stdlib/email/quoprimime.pyi

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from collections.abc import Iterable
2+
13
__all__ = [
24
"body_decode",
35
"body_encode",
@@ -13,11 +15,11 @@ __all__ = [
1315

1416
def header_check(octet: int) -> bool: ...
1517
def body_check(octet: int) -> bool: ...
16-
def header_length(bytearray: bytes) -> int: ...
17-
def body_length(bytearray: bytes) -> int: ...
18-
def unquote(s: str | bytes) -> str: ...
19-
def quote(c: str | bytes) -> str: ...
20-
def header_encode(header_bytes: bytes, charset: str = ...) -> str: ...
18+
def header_length(bytearray: Iterable[int]) -> int: ...
19+
def body_length(bytearray: Iterable[int]) -> int: ...
20+
def unquote(s: str | bytes | bytearray) -> str: ...
21+
def quote(c: str | bytes | bytearray) -> str: ...
22+
def header_encode(header_bytes: bytes | bytearray, charset: str = ...) -> str: ...
2123
def body_encode(body: str, maxlinelen: int = ..., eol: str = ...) -> str: ...
2224
def decode(encoded: str, eol: str = ...) -> str: ...
2325
def header_decode(s: str) -> str: ...

0 commit comments

Comments
 (0)
0