This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: email.utils.parsedate_to_datetime() should return None when date cannot be parsed
Type: Stage: resolved
Components: email, Library (Lib) Versions: Python 3.10
process
Status: closed Resolution: duplicate
Dependencies: Superseder: email.utils.parsedate_to_datetime() should return None when date cannot be parsed
View: 30681
Assigned To: Nosy List: barry, maxking, r.david.murray, serhiy.storchaka
Priority: normal Keywords:

Created on 2020-10-26 11:41 by serhiy.storchaka, last changed 2022-04-11 14:59 by admin. This issue is now closed.

Messages (2)
msg379661 - (view) Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) Date: 2020-10-26 11:41
Documentation says that parsedate_to_datetime() performs the same function as parsedata(), but on success returns a datetime.

parsedata() returns None when date cannot be parsed, but parsedate_to_datetime() raises TypeError.

>>> email.utils.parsedate("0")
>>> email.utils.parsedate_to_datetime("0")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/serhiy/py/cpython/Lib/email/utils.py", line 198, in parsedate_to_datetime
    *dtuple, tz = _parsedate_tz(data)
TypeError: cannot unpack non-iterable NoneType object

The other use case is passing None as arguments. Although it is not documented, but I seen the following code in wild:

    parsedate(header.get('Date'))

parsedate() and parsedate_tz() accept None, but parsedate_to_datetime() does not.
msg379671 - (view) Author: Barry A. Warsaw (barry) * (Python committer) Date: 2020-10-26 16:32
Hi Serhiy.  I believe this is a duplicate of bpo-30681 which is active and has a good PR IMHO.  The only hold up is whether to backport that PR to 3.9 and 3.8.  See the bug and PR for details.
History
Date User Action Args
2022-04-11 14:59:37adminsetgithub: 86321
2020-10-26 16:32:43barrysetstatus: open -> closed
stage: resolved
2020-10-26 16:32:29barrysetsuperseder: email.utils.parsedate_to_datetime() should return None when date cannot be parsed
resolution: duplicate
messages: + msg379671
2020-10-26 11:41:51serhiy.storchakacreate