Skip to content

fix: add missing days (d) unit to parse_duration (fixes #1) - #130

Open
iprasen wants to merge 1 commit into
tine1117:mainfrom
iprasen:fix/parse-duration-days-unit
Open

iprasen wants to merge 1 commit into
tine1117:mainfrom
iprasen:fix/parse-duration-days-unit

Conversation

@iprasen

@iprasen iprasen commented Sep 7, 2026

Copy link
Copy Markdown

Resolves #1

Root Cause

In duration_utils.py, _UNITS defined mappings for weeks (w), hours (h), minutes (m), and seconds (s), but omitted days (d). Because d was included in the regex pattern _TOKEN_RE, durations containing d parsed tokens without raising an error, but silently evaluated the day component as 0 seconds.

Changes

  1. duration_utils.py:
    • Added "d": 86400 to _UNITS.
    • Added parse_duration("1d") -> 86400 example to the docstring.
  2. tests/test_duration_utils.py:
    • Added test_days validating "1d", "1D" (case-insensitivity), and "2d".
    • Added test_days_combined validating combined durations "2d4h" and "1w2d3h4m5s".

Verification

Ran test suite:

python3 -m unittest discover -v -s tests

Output:

test_combined (test_duration_utils.ParseDuration.test_combined) ... ok
test_days (test_duration_utils.ParseDuration.test_days) ... ok
test_empty_raises (test_duration_utils.ParseDuration.test_empty_raises) ... ok
test_hours (test_duration_utils.ParseDuration.test_hours) ... ok
test_invalid_raises (test_duration_utils.ParseDuration.test_invalid_raises) ... ok
test_minutes (test_duration_utils.ParseDuration.test_minutes) ... ok
test_seconds (test_duration_utils.ParseDuration.test_seconds) ... ok
test_weeks (test_duration_utils.ParseDuration.test_weeks) ... ok

----------------------------------------------------------------------
Ran 8 tests in 0.002s

OK

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

parse_duration drops the days (d) unit

1 participant