| """ | |
| babel.localtime | |
| ~~~~~~~~~~~~~~~ | |
| Babel specific fork of tzlocal to determine the local timezone | |
| of the system. | |
| :copyright: (c) 2013-2026 by the Babel Team. | |
| :license: BSD, see LICENSE for more details. | |
| """ | |
| import datetime | |
| import sys | |
| if sys.platform == 'win32': | |
| from babel.localtime._win32 import _get_localzone | |
| else: | |
| from babel.localtime._unix import _get_localzone | |
| # TODO(3.0): the offset constants are not part of the public API | |
| # and should be removed | |
| from babel.localtime._fallback import ( | |
| DSTDIFF, # noqa: F401 | |
| DSTOFFSET, # noqa: F401 | |
| STDOFFSET, # noqa: F401 | |
| ZERO, # noqa: F401 | |
| _FallbackLocalTimezone, | |
| ) | |
| def get_localzone() -> datetime.tzinfo: | |
| """Returns the current underlying local timezone object. | |
| Generally this function does not need to be used, it's a | |
| better idea to use the :data:`LOCALTZ` singleton instead. | |
| """ | |
| return _get_localzone() | |
| try: | |
| LOCALTZ = get_localzone() | |
| except LookupError: | |
| LOCALTZ = _FallbackLocalTimezone() | |