Skip to content

Commit 32014ab

Browse files
committed
fixed mypy errors, but not happy with code in time.naturaltime that verifies value is not of type dt.date
1 parent d5eb5ac commit 32014ab

File tree

2 files changed

+10
-4
lines changed

2 files changed

+10
-4
lines changed

src/humanize/time.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,12 @@ def _now() -> dt.datetime:
4747
return dt.datetime.now()
4848

4949

50+
T = typing.TypeVar("T")
51+
52+
5053
def _parse_iso(
51-
value: dt.date | dt.datetime | float | str,
52-
) -> dt.date | dt.datetime | float | str:
54+
value: T,
55+
) -> T | dt.date | dt.datetime:
5356
"""If string attempts to parse as iso8601 date or datetime.
5457
5558
Args:
@@ -278,7 +281,10 @@ def naturaltime(
278281
str: A natural representation of the input in a resolution that makes sense.
279282
"""
280283
now = when or _now()
281-
value = _parse_iso(value)
284+
_value = _parse_iso(value)
285+
if type(_value) != dt.date:
286+
# naturaltime is not built to handle dt.date
287+
value = typing.cast(typing.Union[dt.datetime, dt.timedelta, float, str], _value)
282288

283289
if isinstance(value, dt.datetime) and value.tzinfo is not None:
284290
value = dt.datetime.fromtimestamp(value.timestamp())

tests/test_time.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ def assert_equal_timedelta(td1: dt.timedelta, td2: dt.timedelta) -> None:
9999
),
100100
],
101101
)
102-
def test_parse_iso(test_input: Object, expected: Object) -> None:
102+
def test_parse_iso(test_input: object, expected: object) -> None:
103103
assert time._parse_iso(test_input) == expected
104104

105105

0 commit comments

Comments
 (0)