5
5
6
6
from __future__ import annotations
7
7
8
- import datetime as dt
9
- import math
10
8
from enum import Enum
11
9
from functools import total_ordering
12
10
16
14
17
15
TYPE_CHECKING = False
18
16
if TYPE_CHECKING :
17
+ import datetime as dt
19
18
from collections .abc import Iterable
20
19
from typing import Any
21
20
@@ -46,6 +45,8 @@ def __lt__(self, other: Any) -> Any:
46
45
47
46
48
47
def _now () -> dt .datetime :
48
+ import datetime as dt
49
+
49
50
return dt .datetime .now ()
50
51
51
52
@@ -69,6 +70,8 @@ def _date_and_delta(value: Any, *, now: dt.datetime | None = None) -> tuple[Any,
69
70
70
71
If that's not possible, return `(None, value)`.
71
72
"""
73
+ import datetime as dt
74
+
72
75
if not now :
73
76
now = _now ()
74
77
if isinstance (value , dt .datetime ):
@@ -123,6 +126,8 @@ def naturaldelta(
123
126
124
127
assert naturaldelta(later - now) == "30 minutes"
125
128
"""
129
+ import datetime as dt
130
+
126
131
tmp = Unit [minimum_unit .upper ()]
127
132
if tmp not in (Unit .SECONDS , Unit .MILLISECONDS , Unit .MICROSECONDS ):
128
133
msg = f"Minimum unit '{ minimum_unit } ' not supported"
@@ -246,6 +251,8 @@ def naturaltime(
246
251
Returns:
247
252
str: A natural representation of the input in a resolution that makes sense.
248
253
"""
254
+ import datetime as dt
255
+
249
256
value = _convert_aware_datetime (value )
250
257
when = _convert_aware_datetime (when )
251
258
@@ -271,6 +278,8 @@ def _convert_aware_datetime(
271
278
value : dt .datetime | dt .timedelta | float | None ,
272
279
) -> Any :
273
280
"""Convert aware datetime to naive datetime and pass through any other type."""
281
+ import datetime as dt
282
+
274
283
if isinstance (value , dt .datetime ) and value .tzinfo is not None :
275
284
value = dt .datetime .fromtimestamp (value .timestamp ())
276
285
return value
@@ -284,6 +293,8 @@ def naturalday(value: dt.date | dt.datetime, format: str = "%b %d") -> str:
284
293
formatted according to `format`.
285
294
286
295
"""
296
+ import datetime as dt
297
+
287
298
try :
288
299
value = dt .date (value .year , value .month , value .day )
289
300
except AttributeError :
@@ -308,6 +319,8 @@ def naturalday(value: dt.date | dt.datetime, format: str = "%b %d") -> str:
308
319
309
320
def naturaldate (value : dt .date | dt .datetime ) -> str :
310
321
"""Like `naturalday`, but append a year for dates more than ~five months away."""
322
+ import datetime as dt
323
+
311
324
try :
312
325
value = dt .date (value .year , value .month , value .day )
313
326
except AttributeError :
@@ -594,6 +607,8 @@ def precisedelta(
594
607
if fmt_value > 0 or (not texts and unit == min_unit ):
595
608
_fmt_value = 2 if 1 < fmt_value < 2 else int (fmt_value )
596
609
fmt_txt = _ngettext (singular_txt , plural_txt , _fmt_value )
610
+ import math
611
+
597
612
if unit == min_unit and math .modf (fmt_value )[0 ] > 0 :
598
613
fmt_txt = fmt_txt .replace ("%d" , format )
599
614
elif unit == YEARS :
0 commit comments