[issue43295] datetime.strptime emits IndexError on parsing 'z' as %z
New submission from itchyny : In Python 3.9.2, parsing 'z' (small letter) as '%z' (time zone offset) using datetime.strptime emits an IndexError. >>> from datetime import datetime >>> datetime.strptime('z', '%z') Traceback (most recent call last): File "", line 1, in File "/usr/local/lib/python3.9/_strptime.py", line 568, in _strptime_datetime tt, fraction, gmtoff_fraction = _strptime(data_string, format) File "/usr/local/lib/python3.9/_strptime.py", line 453, in _strptime if z[3] == ':': IndexError: string index out of range I expect ValueError (or some another useful error) as follows. ValueError: time data 'z' does not match format '%z' This is caused by compiling '%z' to a pattern containing 'Z' (for UTC) with the IGNORECASE flag and accessing z[3] without noticing 'z' is accepted by the regexp. -- components: Library (Lib) messages: 387514 nosy: itchyny priority: normal severity: normal status: open title: datetime.strptime emits IndexError on parsing 'z' as %z type: behavior versions: Python 3.9 ___ Python tracker <https://bugs.python.org/issue43295> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue43295] datetime.strptime emits IndexError on parsing 'z' as %z
itchyny added the comment: I noticed another unexpectedeffect of the IGNORECASE flag. It enables some non-ascii characters to match against the alphabets. >>> from datetime import datetime >>> datetime.strptime("Apr\u0130l", "%B") Traceback (most recent call last): File "", line 1, in File "/usr/local/lib/python3.9/_strptime.py", line 568, in _strptime_datetime tt, fraction, gmtoff_fraction = _strptime(data_string, format) File "/usr/local/lib/python3.9/_strptime.py", line 391, in _strptime month = locale_time.f_month.index(found_dict['B'].lower()) ValueError: 'apri̇l' is not in list I expect time data does not match error. The ASCII flag will disable matching unexpected unicode characters. -- ___ Python tracker <https://bugs.python.org/issue43295> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue43295] datetime.strptime emits IndexError on parsing 'z' as %z
itchyny added the comment: @noormichael Thank you for submitting a patch, I confirmed the original issue is fixed. I'm ok this ticket is closed. Regarding the second issue, I learned it is a Turkish character (thanks!), but the error is same type so will not cause such a critical issue. -- ___ Python tracker <https://bugs.python.org/issue43295> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com