[issue43295] datetime.strptime emits IndexError on parsing 'z' as %z

2021-02-22 Thread itchyny


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

2021-02-22 Thread itchyny

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

2021-02-25 Thread itchyny


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