bpo-30681: Support invalid date format or value in email Date header by timb07 · Pull Request #10783 · python/cpython (original) (raw)
In email.utils.parsedate_to_datetime()
, a failure to parse the date, or invalid date components (such as hour outside 0..23) raises an exception. Document this behaviour, and add tests to test_email/test_utils.py to confirm this behaviour.
In email.headerregistry.DateHeader.parse()
, check when parsedate_to_datetime()
raises an exception and add a new defect InvalidDateDefect
; preserve the invalid value as the string value of the header, but set the datetime
attribute to None
.
Add tests to test_email/test_headerregistry.py to confirm this behaviour; also added test to test_email/test_inversion.py to confirm emails with such defective date headers round trip successfully.
This pull request incorporates feedback gratefully received from @bitdancer, @brettcannon, @Mariatta and @warsaw, and replaces the earlier PR #2254.