You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Bug / regression: Unable to parse string '031' with 'DDDD' format using Pendulum 3.0.0 #797
Pendulum 3 is unable to parse string '031' with 'DDDD' format:
>>> import pendulum
>>> pendulum.__version__
'3.0.0'
>>> p = pendulum.from_format(f"2023-031", 'YYYY-DDDD')
Traceback (most recent call last):
File "[..]/python3.9/site-packages/pendulum/__init__.py", line 284, in from_format
def duration(
File "[..]/python3.9/site-packages/pendulum/formatting/formatter.py", line 416, in parse
File "[..]/python3.9/site-packages/pendulum/formatting/formatter.py", line 482, in _check_parsed
"{}-{:>03d}".format(validated["year"], parsed["day_of_year"])
File "[..]/python3.9/site-packages/pendulum/parser.py", line 30, in parse
File "[..]/python3.9/site-packages/pendulum/parser.py", line 43, in _parse
return pendulum.now()
File "[..]/python3.9/site-packages/pendulum/parsing/__init__.py", line 78, in parse
"""
File "[..]/python3.9/site-packages/pendulum/parsing/__init__.py", line 125, in _parse
# so we fallback on the dateutil parser
pendulum.parsing.exceptions.ParserError: Unable to parse string [2023-031]
but it works for other values:
>>> p = pendulum.from_format(f"2023-030", 'YYYY-DDDD')
>>> p
DateTime(2023, 1, 30, 0, 0, 0, tzinfo=Timezone('UTC'))
>>> p = pendulum.from_format(f"2023-032", 'YYYY-DDDD')
>>> p
DateTime(2023, 2, 1, 0, 0, 0, tzinfo=Timezone('UTC'))
The bug does not seem to be present in the previous version of Pendulum :
>>> import pendulum
>>> pendulum.__version__
'2.1.2'
>>> p = pendulum.from_format(f"2023-031", 'YYYY-DDDD')
>>> p
DateTime(2023, 1, 31, 0, 0, 0, tzinfo=Timezone('UTC'))
Activity
simonpanay commentedon Jul 9, 2024
It seems that this bug appears for each day representing the last day of each month :
This bug appears when
pendulum._pendulum.parse_iso8601is called in https://github.com/sdispater/pendulum/blob/3.0.0/src/pendulum/parsing/__init__.py#L113It should return a Date object but instead raises a ValueError.
The error in probably located in https://github.com/sdispater/pendulum/blob/3.0.0/rust/src/parsing.rs#L212
As it is written in Rust, I can't go further in investigating why it's happening
simonpanay commentedon Jun 15, 2026
This issue has been fixed in pendulum 3.2.0 (#918)