From f3c1c9711ae8bb0011c2e8db782eb48fd86ede28 Mon Sep 17 00:00:00 2001 From: XananasX7 Date: Sun, 14 Jun 2026 18:22:37 +0000 Subject: [PATCH] fix: add missing 'd' (days) unit to parse_duration The _UNITS dict accepted the 'd' character via the token regex but never mapped it to a second value, so day-based durations silently returned 0 instead of the correct number of seconds. Fix: add 'd': 86400 to _UNITS so parse_duration('1d') == 86400 and parse_duration('2d4h') == 187200. Tests: add test_days and test_days_combined to cover both cases. Closes #1 --- duration_utils.py | 4 +++- tests/test_duration_utils.py | 6 ++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/duration_utils.py b/duration_utils.py index ee515c6..b39ec94 100644 --- a/duration_utils.py +++ b/duration_utils.py @@ -4,9 +4,10 @@ import re -# Seconds per unit. Supported: weeks, hours, minutes, seconds. +# Seconds per unit. Supported: weeks, days, hours, minutes, seconds. _UNITS = { "w": 604800, + "d": 86400, "h": 3600, "m": 60, "s": 1, @@ -21,6 +22,7 @@ def parse_duration(text: str) -> int: Examples: parse_duration("1h30m") -> 5400 parse_duration("1w") -> 604800 + parse_duration("1d") -> 86400 Raises ValueError on empty or malformed input. """ diff --git a/tests/test_duration_utils.py b/tests/test_duration_utils.py index b259480..79b10c2 100644 --- a/tests/test_duration_utils.py +++ b/tests/test_duration_utils.py @@ -16,6 +16,12 @@ def test_seconds(self): def test_weeks(self): self.assertEqual(parse_duration("1w"), 604800) + def test_days(self): + self.assertEqual(parse_duration("1d"), 86400) + + def test_days_combined(self): + self.assertEqual(parse_duration("2d4h"), 187200) + def test_combined(self): self.assertEqual(parse_duration("1h30m"), 5400)