Skip to content

Commit cff2b3d

Browse files
authored
add email._policybase (#11146)
1 parent 1574ff3 commit cff2b3d

File tree

2 files changed

+52
-45
lines changed

2 files changed

+52
-45
lines changed

stdlib/email/_policybase.pyi

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
from abc import ABCMeta, abstractmethod
2+
from collections.abc import Callable
3+
from email.errors import MessageDefect
4+
from email.header import Header
5+
from email.message import Message
6+
from typing import Any
7+
from typing_extensions import Self
8+
9+
class _PolicyBase:
10+
def __add__(self, other: Any) -> Self: ...
11+
def clone(self, **kw: Any) -> Self: ...
12+
13+
class Policy(_PolicyBase, metaclass=ABCMeta):
14+
max_line_length: int | None
15+
linesep: str
16+
cte_type: str
17+
raise_on_defect: bool
18+
mangle_from_: bool
19+
message_factory: Callable[[Policy], Message] | None
20+
def __init__(
21+
self,
22+
*,
23+
max_line_length: int | None = 78,
24+
linesep: str = "\n",
25+
cte_type: str = "8bit",
26+
raise_on_defect: bool = False,
27+
mangle_from_: bool = False,
28+
message_factory: Callable[[Policy], Message] | None = None,
29+
) -> None: ...
30+
def handle_defect(self, obj: Message, defect: MessageDefect) -> None: ...
31+
def register_defect(self, obj: Message, defect: MessageDefect) -> None: ...
32+
def header_max_count(self, name: str) -> int | None: ...
33+
@abstractmethod
34+
def header_source_parse(self, sourcelines: list[str]) -> tuple[str, str]: ...
35+
@abstractmethod
36+
def header_store_parse(self, name: str, value: str) -> tuple[str, str]: ...
37+
@abstractmethod
38+
def header_fetch_parse(self, name: str, value: str) -> str: ...
39+
@abstractmethod
40+
def fold(self, name: str, value: str) -> str: ...
41+
@abstractmethod
42+
def fold_binary(self, name: str, value: str) -> bytes: ...
43+
44+
class Compat32(Policy):
45+
def header_source_parse(self, sourcelines: list[str]) -> tuple[str, str]: ...
46+
def header_store_parse(self, name: str, value: str) -> tuple[str, str]: ...
47+
def header_fetch_parse(self, name: str, value: str) -> str | Header: ... # type: ignore[override]
48+
def fold(self, name: str, value: str) -> str: ...
49+
def fold_binary(self, name: str, value: str) -> bytes: ...
50+
51+
compat32: Compat32

stdlib/email/policy.pyi

Lines changed: 1 addition & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,55 +1,11 @@
1-
from abc import ABCMeta, abstractmethod
21
from collections.abc import Callable
2+
from email._policybase import Compat32 as Compat32, Policy as Policy, compat32 as compat32
33
from email.contentmanager import ContentManager
4-
from email.errors import MessageDefect
5-
from email.header import Header
64
from email.message import Message
75
from typing import Any
8-
from typing_extensions import Self
96

107
__all__ = ["Compat32", "compat32", "Policy", "EmailPolicy", "default", "strict", "SMTP", "HTTP"]
118

12-
class Policy(metaclass=ABCMeta):
13-
max_line_length: int | None
14-
linesep: str
15-
cte_type: str
16-
raise_on_defect: bool
17-
mangle_from_: bool
18-
message_factory: Callable[[Policy], Message] | None
19-
def __init__(
20-
self,
21-
*,
22-
max_line_length: int | None = ...,
23-
linesep: str = ...,
24-
cte_type: str = ...,
25-
raise_on_defect: bool = ...,
26-
mangle_from_: bool = ...,
27-
message_factory: Callable[[Policy], Message] | None = ...,
28-
) -> None: ...
29-
def clone(self, **kw: Any) -> Self: ...
30-
def handle_defect(self, obj: Message, defect: MessageDefect) -> None: ...
31-
def register_defect(self, obj: Message, defect: MessageDefect) -> None: ...
32-
def header_max_count(self, name: str) -> int | None: ...
33-
@abstractmethod
34-
def header_source_parse(self, sourcelines: list[str]) -> tuple[str, str]: ...
35-
@abstractmethod
36-
def header_store_parse(self, name: str, value: str) -> tuple[str, str]: ...
37-
@abstractmethod
38-
def header_fetch_parse(self, name: str, value: str) -> str: ...
39-
@abstractmethod
40-
def fold(self, name: str, value: str) -> str: ...
41-
@abstractmethod
42-
def fold_binary(self, name: str, value: str) -> bytes: ...
43-
44-
class Compat32(Policy):
45-
def header_source_parse(self, sourcelines: list[str]) -> tuple[str, str]: ...
46-
def header_store_parse(self, name: str, value: str) -> tuple[str, str]: ...
47-
def header_fetch_parse(self, name: str, value: str) -> str | Header: ... # type: ignore[override]
48-
def fold(self, name: str, value: str) -> str: ...
49-
def fold_binary(self, name: str, value: str) -> bytes: ...
50-
51-
compat32: Compat32
52-
539
class EmailPolicy(Policy):
5410
utf8: bool
5511
refold_source: str

0 commit comments

Comments
 (0)