Clean up babel.localtime by akx · Pull Request #952 · python-babel/babel

Expand Up @@ -11,52 +11,22 @@
import datetime import sys import time from threading import RLock
if sys.platform == 'win32': from babel.localtime._win32 import _get_localzone else: from babel.localtime._unix import _get_localzone

_cached_tz = None _cache_lock = RLock()
STDOFFSET = datetime.timedelta(seconds=-time.timezone) if time.daylight: DSTOFFSET = datetime.timedelta(seconds=-time.altzone) else: DSTOFFSET = STDOFFSET
DSTDIFF = DSTOFFSET - STDOFFSET ZERO = datetime.timedelta(0)

class _FallbackLocalTimezone(datetime.tzinfo):
def utcoffset(self, dt: datetime.datetime) -> datetime.timedelta: if self._isdst(dt): return DSTOFFSET else: return STDOFFSET
def dst(self, dt: datetime.datetime) -> datetime.timedelta: if self._isdst(dt): return DSTDIFF else: return ZERO
def tzname(self, dt: datetime.datetime) -> str: return time.tzname[self._isdst(dt)]
def _isdst(self, dt: datetime.datetime) -> bool: tt = (dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second, dt.weekday(), 0, -1) stamp = time.mktime(tt) tt = time.localtime(stamp) return tt.tm_isdst > 0 # 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: Expand Down