From 4c5c5760cfa7c9707383b2e6fe4faf021911e08c Mon Sep 17 00:00:00 2001 From: Sebastian Rittau Date: Mon, 11 Mar 2024 22:47:00 +0100 Subject: [PATCH] email.message: Allow any header value (#11574) --- stdlib/email/message.pyi | 8 ++++++-- test_cases/stdlib/email/check_message.py | 6 ++++++ 2 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 test_cases/stdlib/email/check_message.py diff --git a/stdlib/email/message.pyi b/stdlib/email/message.pyi index b80779fdc..d7d7e8c8e 100644 --- a/stdlib/email/message.pyi +++ b/stdlib/email/message.pyi @@ -15,9 +15,10 @@ _PayloadType: TypeAlias = Message | str _EncodedPayloadType: TypeAlias = Message | bytes _MultipartPayloadType: TypeAlias = list[_PayloadType] _CharsetType: TypeAlias = Charset | str | None -# Type returned by Policy.header_fetch_parse, AnyOf[str | Header] +# Type returned by Policy.header_fetch_parse, often str or Header. _HeaderType: TypeAlias = Any -_HeaderTypeParam: TypeAlias = str | Header +# Type accepted by Policy.header_store_parse. +_HeaderTypeParam: TypeAlias = str | Header | Any class _SupportsEncodeToPayload(Protocol): def encode(self, encoding: str, /) -> _PayloadType | _MultipartPayloadType | _SupportsDecodeToPayload: ... @@ -25,6 +26,9 @@ class _SupportsEncodeToPayload(Protocol): class _SupportsDecodeToPayload(Protocol): def decode(self, encoding: str, errors: str, /) -> _PayloadType | _MultipartPayloadType: ... +# TODO: This class should be generic over the header policy and/or the header +# value types allowed by the policy. This depends on PEP 696 support +# (https://github.com/python/typeshed/issues/11422). class Message: policy: Policy # undocumented preamble: str | None diff --git a/test_cases/stdlib/email/check_message.py b/test_cases/stdlib/email/check_message.py new file mode 100644 index 000000000..a9b43e23f --- /dev/null +++ b/test_cases/stdlib/email/check_message.py @@ -0,0 +1,6 @@ +from email.headerregistry import Address +from email.message import EmailMessage + +msg = EmailMessage() +msg["To"] = "receiver@example.com" +msg["From"] = Address("Sender Name", "sender", "example.com")