From 999605fc3e32350d5607509e33e0a2f51c59f758 Mon Sep 17 00:00:00 2001 From: "John T. Wodder II" Date: Sat, 29 Nov 2025 07:47:26 -0500 Subject: [PATCH] Omit unparseable dates --- CHANGELOG.md | 5 ++++- src/mailbits/__init__.py | 2 +- src/mailbits/email2dict.py | 8 +++++--- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 716d6db..5cab4fb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,11 @@ -v0.3.0 (in development) +v0.2.3 (in development) ----------------------- - Remove unused `typing_extensions` dependency - Support Python 3.14 - Drop support for Python 3.8 and 3.9 +- `email2dict()`: + - Omit the `Date` header if the date cannot be parsed + - Omit the `Resent-Date` header if no dates can be parsed v0.2.2 (2024-12-01) ------------------- diff --git a/src/mailbits/__init__.py b/src/mailbits/__init__.py index 648a085..546fff6 100644 --- a/src/mailbits/__init__.py +++ b/src/mailbits/__init__.py @@ -12,7 +12,7 @@ Visit for more information. """ -__version__ = "0.3.0.dev1" +__version__ = "0.2.3.dev1" __author__ = "John Thorvald Wodder II" __author_email__ = "mailbits@varonathe.org" __license__ = "MIT" diff --git a/src/mailbits/email2dict.py b/src/mailbits/email2dict.py index a48ec73..af70897 100644 --- a/src/mailbits/email2dict.py +++ b/src/mailbits/email2dict.py @@ -69,11 +69,12 @@ def process_date_headers(dh: list[Any]) -> list[datetime]: data = [] for h in dh: assert isinstance(h, hr.DateHeader) - data.append(h.datetime) + if (dt := h.datetime) is not None: + data.append(dt) return data -def process_unique_date_header(dh: list[Any]) -> datetime: +def process_unique_date_header(dh: list[Any]) -> datetime | None: assert len(dh) == 1 assert isinstance(dh[0], hr.UniqueDateHeader) return dh[0].datetime @@ -184,7 +185,8 @@ def email2dict(msg: Message, include_all: bool = False) -> MessageDict: if takes_argument(processor, "include_all"): kwargs["include_all"] = include_all v = processor(values, **kwargs) - data["headers"][header] = v + if v is not None and v != []: + data["headers"][header] = v data["preamble"] = msg.preamble if msg.get_content_maintype() == "message": # Some "message/*" subtypes (specifically, as of Python 3.9, rfc822 and