diff --git a/django-stubs/utils/timezone.pyi b/django-stubs/utils/timezone.pyi index 8d5923592..c61d4a5ce 100644 --- a/django-stubs/utils/timezone.pyi +++ b/django-stubs/utils/timezone.pyi @@ -1,8 +1,10 @@ import types from contextlib import ContextDecorator -from datetime import date, datetime as datetime, time, timedelta as timedelta, tzinfo as tzinfo +from datetime import date, datetime as datetime, time, timedelta as timedelta, tzinfo as tzinfo, timezone from typing import Optional, Union, Type +from pytz import BaseTzInfo + _AnyTime = Union[time, datetime] class UTC(tzinfo): @@ -30,10 +32,14 @@ class LocalTimezone(ReferenceLocalTimezone): utc: UTC = ... -def get_fixed_timezone(offset: Union[timedelta, int]) -> tzinfo: ... -def get_default_timezone() -> tzinfo: ... +def get_fixed_timezone(offset: Union[timedelta, int]) -> timezone: ... +def get_default_timezone() -> BaseTzInfo: ... def get_default_timezone_name() -> str: ... -def get_current_timezone() -> tzinfo: ... + +# Strictly speaking, it is possible to activate() a non-pytz timezone, +# in which case BaseTzInfo is incorrect. However, this is unlikely, +# so we use it anyway, to keep things ergonomic for most users. +def get_current_timezone() -> BaseTzInfo: ... def get_current_timezone_name() -> str: ... def activate(timezone: Union[tzinfo, str]) -> None: ... def deactivate() -> None: ...