2 from email.errors import HeaderParseError, MessageDefect
3 from email.policy import Policy
4 from typing import Any, Iterable, Iterator, List, Pattern, Type, TypeVar, Union
5 from typing_extensions import Final
10 CFWS_LEADER: Final[set[str]]
11 SPECIALS: Final[set[str]]
12 ATOM_ENDS: Final[set[str]]
13 DOT_ATOM_ENDS: Final[set[str]]
14 PHRASE_ENDS: Final[set[str]]
15 TSPECIALS: Final[set[str]]
16 TOKEN_ENDS: Final[set[str]]
17 ASPECIALS: Final[set[str]]
18 ATTRIBUTE_ENDS: Final[set[str]]
19 EXTENDED_ATTRIBUTE_ENDS: Final[set[str]]
21 def quote_string(value: Any) -> str: ...
23 if sys.version_info >= (3, 7):
24 rfc2047_matcher: Pattern[str]
26 class TokenList(List[Union[TokenList, Terminal]]):
27 token_type: str | None
29 ew_combine_allowed: bool
30 defects: list[MessageDefect]
31 def __init__(self, *args: Any, **kw: Any) -> None: ...
33 def value(self) -> str: ...
35 def all_defects(self) -> list[MessageDefect]: ...
36 def startswith_fws(self) -> bool: ...
38 def as_ew_allowed(self) -> bool: ...
40 def comments(self) -> list[str]: ...
41 def fold(self, *, policy: Policy) -> str: ...
42 def pprint(self, indent: str = ...) -> None: ...
43 def ppstr(self, indent: str = ...) -> str: ...
45 class WhiteSpaceTokenList(TokenList):
47 def value(self) -> str: ...
49 def comments(self) -> list[str]: ...
51 class UnstructuredTokenList(TokenList):
54 class Phrase(TokenList):
57 class Word(TokenList):
60 class CFWSList(WhiteSpaceTokenList):
63 class Atom(TokenList):
66 class Token(TokenList):
70 class EncodedWord(TokenList):
76 class QuotedString(TokenList):
79 def content(self) -> str: ...
81 def quoted_value(self) -> str: ...
83 def stripped_value(self) -> str: ...
85 class BareQuotedString(QuotedString):
88 def value(self) -> str: ...
90 class Comment(WhiteSpaceTokenList):
92 def quote(self, value: Any) -> str: ...
94 def content(self) -> str: ...
96 def comments(self) -> list[str]: ...
98 class AddressList(TokenList):
101 def addresses(self) -> list[Address]: ...
103 def mailboxes(self) -> list[Mailbox]: ...
105 def all_mailboxes(self) -> list[Mailbox]: ...
107 class Address(TokenList):
110 def display_name(self) -> str: ...
112 def mailboxes(self) -> list[Mailbox]: ...
114 def all_mailboxes(self) -> list[Mailbox]: ...
116 class MailboxList(TokenList):
119 def mailboxes(self) -> list[Mailbox]: ...
121 def all_mailboxes(self) -> list[Mailbox]: ...
123 class GroupList(TokenList):
126 def mailboxes(self) -> list[Mailbox]: ...
128 def all_mailboxes(self) -> list[Mailbox]: ...
130 class Group(TokenList):
133 def mailboxes(self) -> list[Mailbox]: ...
135 def all_mailboxes(self) -> list[Mailbox]: ...
137 def display_name(self) -> str: ...
139 class NameAddr(TokenList):
142 def display_name(self) -> str: ...
144 def local_part(self) -> str: ...
146 def domain(self) -> str: ...
148 def route(self) -> list[Domain] | None: ...
150 def addr_spec(self) -> str: ...
152 class AngleAddr(TokenList):
155 def local_part(self) -> str: ...
157 def domain(self) -> str: ...
159 def route(self) -> list[Domain] | None: ...
161 def addr_spec(self) -> str: ...
163 class ObsRoute(TokenList):
166 def domains(self) -> list[Domain]: ...
168 class Mailbox(TokenList):
171 def display_name(self) -> str: ...
173 def local_part(self) -> str: ...
175 def domain(self) -> str: ...
177 def route(self) -> list[str]: ...
179 def addr_spec(self) -> str: ...
181 class InvalidMailbox(TokenList):
184 def display_name(self) -> None: ...
190 class Domain(TokenList):
194 def domain(self) -> str: ...
196 class DotAtom(TokenList):
199 class DotAtomText(TokenList):
203 if sys.version_info >= (3, 8):
204 class NoFoldLiteral(TokenList):
208 class AddrSpec(TokenList):
212 def local_part(self) -> str: ...
214 def domain(self) -> str: ...
216 def value(self) -> str: ...
218 def addr_spec(self) -> str: ...
220 class ObsLocalPart(TokenList):
224 class DisplayName(Phrase):
226 ew_combine_allowed: bool
228 def display_name(self) -> str: ...
230 def value(self) -> str: ...
232 class LocalPart(TokenList):
236 def value(self) -> str: ...
238 def local_part(self) -> str: ...
240 class DomainLiteral(TokenList):
244 def domain(self) -> str: ...
246 def ip(self) -> str: ...
248 class MIMEVersion(TokenList):
253 class Parameter(TokenList):
259 def section_number(self) -> int: ...
261 def param_value(self) -> str: ...
263 class InvalidParameter(Parameter):
266 class Attribute(TokenList):
269 def stripped_value(self) -> str: ...
271 class Section(TokenList):
275 class Value(TokenList):
278 def stripped_value(self) -> str: ...
280 class MimeParameters(TokenList):
282 syntactic_break: bool
284 def params(self) -> Iterator[tuple[str, str]]: ...
286 class ParameterizedHeaderValue(TokenList):
287 syntactic_break: bool
289 def params(self) -> Iterable[tuple[str, str]]: ...
291 class ContentType(ParameterizedHeaderValue):
297 class ContentDisposition(ParameterizedHeaderValue):
300 content_disposition: Any
302 class ContentTransferEncoding(TokenList):
307 class HeaderLabel(TokenList):
311 if sys.version_info >= (3, 8):
312 class MsgID(TokenList):
315 def fold(self, policy: Policy) -> str: ...
316 class MessageID(MsgID):
318 class InvalidMessageID(MessageID):
321 class Header(TokenList):
326 ew_combine_allowed: bool
327 syntactic_break: bool
329 defects: list[MessageDefect]
330 def __new__(cls: Type[_T], value: str, token_type: str) -> _T: ...
331 def pprint(self) -> None: ...
333 def all_defects(self) -> list[MessageDefect]: ...
334 def pop_trailing_ws(self) -> None: ...
336 def comments(self) -> list[str]: ...
337 def __getnewargs__(self) -> tuple[str, str]: ... # type: ignore
339 class WhiteSpaceTerminal(Terminal):
341 def value(self) -> str: ...
342 def startswith_fws(self) -> bool: ...
344 class ValueTerminal(Terminal):
346 def value(self) -> ValueTerminal: ...
347 def startswith_fws(self) -> bool: ...
349 class EWWhiteSpaceTerminal(WhiteSpaceTerminal):
351 def value(self) -> str: ...
353 class _InvalidEwError(HeaderParseError): ...
355 DOT: Final[ValueTerminal]
356 ListSeparator: Final[ValueTerminal]
357 RouteComponentMarker: Final[ValueTerminal]
359 def get_fws(value: str) -> tuple[WhiteSpaceTerminal, str]: ...
360 def get_encoded_word(value: str) -> tuple[EncodedWord, str]: ...
361 def get_unstructured(value: str) -> UnstructuredTokenList: ...
362 def get_qp_ctext(value: str) -> tuple[WhiteSpaceTerminal, str]: ...
363 def get_qcontent(value: str) -> tuple[ValueTerminal, str]: ...
364 def get_atext(value: str) -> tuple[ValueTerminal, str]: ...
365 def get_bare_quoted_string(value: str) -> tuple[BareQuotedString, str]: ...
366 def get_comment(value: str) -> tuple[Comment, str]: ...
367 def get_cfws(value: str) -> tuple[CFWSList, str]: ...
368 def get_quoted_string(value: str) -> tuple[QuotedString, str]: ...
369 def get_atom(value: str) -> tuple[Atom, str]: ...
370 def get_dot_atom_text(value: str) -> tuple[DotAtomText, str]: ...
371 def get_dot_atom(value: str) -> tuple[DotAtom, str]: ...
372 def get_word(value: str) -> tuple[Any, str]: ...
373 def get_phrase(value: str) -> tuple[Phrase, str]: ...
374 def get_local_part(value: str) -> tuple[LocalPart, str]: ...
375 def get_obs_local_part(value: str) -> tuple[ObsLocalPart, str]: ...
376 def get_dtext(value: str) -> tuple[ValueTerminal, str]: ...
377 def get_domain_literal(value: str) -> tuple[DomainLiteral, str]: ...
378 def get_domain(value: str) -> tuple[Domain, str]: ...
379 def get_addr_spec(value: str) -> tuple[AddrSpec, str]: ...
380 def get_obs_route(value: str) -> tuple[ObsRoute, str]: ...
381 def get_angle_addr(value: str) -> tuple[AngleAddr, str]: ...
382 def get_display_name(value: str) -> tuple[DisplayName, str]: ...
383 def get_name_addr(value: str) -> tuple[NameAddr, str]: ...
384 def get_mailbox(value: str) -> tuple[Mailbox, str]: ...
385 def get_invalid_mailbox(value: str, endchars: str) -> tuple[InvalidMailbox, str]: ...
386 def get_mailbox_list(value: str) -> tuple[MailboxList, str]: ...
387 def get_group_list(value: str) -> tuple[GroupList, str]: ...
388 def get_group(value: str) -> tuple[Group, str]: ...
389 def get_address(value: str) -> tuple[Address, str]: ...
390 def get_address_list(value: str) -> tuple[AddressList, str]: ...
392 if sys.version_info >= (3, 8):
393 def get_no_fold_literal(value: str) -> tuple[NoFoldLiteral, str]: ...
394 def get_msg_id(value: str) -> tuple[MsgID, str]: ...
395 def parse_message_id(value: str) -> MessageID: ...
397 def parse_mime_version(value: str) -> MIMEVersion: ...
398 def get_invalid_parameter(value: str) -> tuple[InvalidParameter, str]: ...
399 def get_ttext(value: str) -> tuple[ValueTerminal, str]: ...
400 def get_token(value: str) -> tuple[Token, str]: ...
401 def get_attrtext(value: str) -> tuple[ValueTerminal, str]: ...
402 def get_attribute(value: str) -> tuple[Attribute, str]: ...
403 def get_extended_attrtext(value: str) -> tuple[ValueTerminal, str]: ...
404 def get_extended_attribute(value: str) -> tuple[Attribute, str]: ...
405 def get_section(value: str) -> tuple[Section, str]: ...
406 def get_value(value: str) -> tuple[Value, str]: ...
407 def get_parameter(value: str) -> tuple[Parameter, str]: ...
408 def parse_mime_parameters(value: str) -> MimeParameters: ...
409 def parse_content_type_header(value: str) -> ContentType: ...
410 def parse_content_disposition_header(value: str) -> ContentDisposition: ...
411 def parse_content_transfer_encoding_header(value: str) -> ContentTransferEncoding: ...