From 5cc966cc57313ced3fc136c9354e4841eba4ce84 Mon Sep 17 00:00:00 2001 From: Nikita Sobolev Date: Wed, 10 Aug 2022 21:00:11 +0300 Subject: [PATCH] Improve `email.headerregistry.HeaderRegistry` stub (#8516) --- stdlib/email/headerregistry.pyi | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/stdlib/email/headerregistry.pyi b/stdlib/email/headerregistry.pyi index 7f1d86b98..b2b63c4ac 100644 --- a/stdlib/email/headerregistry.pyi +++ b/stdlib/email/headerregistry.pyi @@ -14,7 +14,7 @@ from email._header_value_parser import ( ) from email.errors import MessageDefect from email.policy import Policy -from typing import Any, ClassVar +from typing import Any, ClassVar, Protocol from typing_extensions import Literal class BaseHeader(str): @@ -141,9 +141,19 @@ if sys.version_info >= (3, 8): @staticmethod def value_parser(value: str) -> MessageID: ... +class _HeaderParser(Protocol): + max_count: ClassVar[Literal[1] | None] + @staticmethod + def value_parser(value: str) -> TokenList: ... + @classmethod + def parse(cls, value: str, kwds: dict[str, Any]) -> None: ... + class HeaderRegistry: + registry: dict[str, type[_HeaderParser]] + base_class: type[BaseHeader] + default_class: type[_HeaderParser] def __init__( - self, base_class: type[BaseHeader] = ..., default_class: type[BaseHeader] = ..., use_default_map: bool = ... + self, base_class: type[BaseHeader] = ..., default_class: type[_HeaderParser] = ..., use_default_map: bool = ... ) -> None: ... def map_to_type(self, name: str, cls: type[BaseHeader]) -> None: ... def __getitem__(self, name: str) -> type[BaseHeader]: ...