Avatar for the python-pendulum user
python-pendulum
pendulum
BlogDocsChangelog

Make empty durations an error in pure-Python parser

#903
Comparing
cjwatson:pure-python-empty-duration
(
ce1220a
) with
master
(
fc386be
)
CodSpeed Performance Gauge
0%
Improvements
0
Regressions
0
Untouched
1
New
0
Dropped
0
Ignored
0

Benchmarks

Passed

test_parse_iso8601
tests/benchmarks/test_parse_8601.py::test_parse_iso8601
CodSpeed Performance Gauge
0%
14.4 ms
14.4 ms

Commits

Click on a commit to change the comparison range
Base
master
fc386be
0%
Make empty durations an error in pure-Python parser Some of Debian's test runners noticed that the pydantic-extra-types tests are failing on 32-bit architectures: ______________________ test_invalid_zero_duration_string _______________________ def test_invalid_zero_duration_string(): """'P' is not a valid ISO 8601 duration and should raise a validation error.""" > with pytest.raises(ValidationError): E Failed: DID NOT RAISE <class 'pydantic_core._pydantic_core.ValidationError'> tests/test_pendulum_dt.py:447: Failed Debian currently has pendulum 3.0.0, which disabled the Rust extensions if `struct.calcsize("P") == 4`, and the Rust and Python parsers disagree about how to handle an empty duration: the Rust parser reports an error, while the Python parser returns `Duration()`. 3.1.0 removes that particular limitation on using Rust extensions on 32-bit architectures, but the parser discrepancy still seems to be present. I don't have access to the full text of the standard, but Wikipedia's summary says 'However, at least one element must be present, thus "P" is not a valid representation for a duration of 0 seconds', so I think the Rust parser is correct. Adjust the Python parser to match.
ce1220a
2 days ago
by cjwatson
© 2025 CodSpeed Technology
Home Terms Privacy Docs