Module peprock.datetime.awareness
Timezone awareness helpers.
See https://docs.python.org/3/library/datetime.html#determining-if-an-object-is-aware-or-naive for definitions.
Examples
>>> naive = datetime.datetime.now()
>>> is_naive(naive)
True
>>> is_aware(naive)
False
>>> aware = ensure_aware(naive, assumed_tz=datetime.timezone.utc)
>>> is_naive(aware)
False
>>> is_aware(aware)
True
Functions
def ensure_aware(arg: datetime.datetime,
/,
*,
assumed_tz: datetime.tzinfo | None = None,
target_tz: datetime.tzinfo | None = None) ‑> datetime.datetime-
Expand source code
def ensure_aware( arg: datetime.datetime, /, *, assumed_tz: datetime.tzinfo | None = None, target_tz: datetime.tzinfo | None = None, ) -> datetime.datetime: """Ensure timezone awareness of arg.""" if arg.tzinfo is None: if assumed_tz is None: raise EnsureAwareError( arg, assumed_tz=assumed_tz, target_tz=target_tz, ) arg = arg.replace(tzinfo=assumed_tz) if target_tz: return arg.astimezone(tz=target_tz) return arg
Ensure timezone awareness of arg.
def is_aware(arg: datetime.date | datetime.time | datetime.datetime, /) ‑> bool
-
Expand source code
def is_aware(arg: datetime.date | datetime.time | datetime.datetime, /) -> bool: """Determine if arg is timezone aware and return a bool.""" return not is_naive(arg)
Determine if arg is timezone aware and return a bool.
def is_naive(arg: datetime.date | datetime.time | datetime.datetime, /) ‑> bool
-
Expand source code
@functools.singledispatch def is_naive(arg: datetime.date | datetime.time | datetime.datetime, /) -> bool: """Determine if arg is timezone naive and return a bool.""" msg: str = ( f"expected datetime.date | datetime.time | datetime.datetime, got {arg!r}" ) raise TypeError(msg)
Determine if arg is timezone naive and return a bool.
Classes
class EnsureAwareError (arg: datetime.datetime,
/,
*,
assumed_tz: datetime.tzinfo | None = None,
target_tz: datetime.tzinfo | None = None)-
Expand source code
class EnsureAwareError(ValueError): """Unable to ensure awareness.""" def __init__( self: EnsureAwareError, arg: datetime.datetime, /, *, assumed_tz: datetime.tzinfo | None = None, target_tz: datetime.tzinfo | None = None, ) -> None: """Initialize EnsureAwareError with arguments used in ensure_aware().""" super().__init__( f"Unable to ensure awareness of '{arg!r}' using " f"'{assumed_tz=}' and '{target_tz=}'", )
Unable to ensure awareness.
Initialize EnsureAwareError with arguments used in ensure_aware().
Ancestors
- builtins.ValueError
- builtins.Exception
- builtins.BaseException