Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/babel/localtime/_fallback.py: 50%
22 statements
« prev ^ index » next coverage.py v7.2.7, created at 2023-06-07 06:39 +0000
« prev ^ index » next coverage.py v7.2.7, created at 2023-06-07 06:39 +0000
1"""
2 babel.localtime._fallback
3 ~~~~~~~~~~~~~~~~~~~~~~~~~
5 Emulated fallback local timezone when all else fails.
7 :copyright: (c) 2013-2023 by the Babel Team.
8 :license: BSD, see LICENSE for more details.
9"""
11import datetime
12import time
14STDOFFSET = datetime.timedelta(seconds=-time.timezone)
15DSTOFFSET = datetime.timedelta(seconds=-time.altzone) if time.daylight else STDOFFSET
17DSTDIFF = DSTOFFSET - STDOFFSET
18ZERO = datetime.timedelta(0)
21class _FallbackLocalTimezone(datetime.tzinfo):
23 def utcoffset(self, dt: datetime.datetime) -> datetime.timedelta:
24 if self._isdst(dt):
25 return DSTOFFSET
26 else:
27 return STDOFFSET
29 def dst(self, dt: datetime.datetime) -> datetime.timedelta:
30 if self._isdst(dt):
31 return DSTDIFF
32 else:
33 return ZERO
35 def tzname(self, dt: datetime.datetime) -> str:
36 return time.tzname[self._isdst(dt)]
38 def _isdst(self, dt: datetime.datetime) -> bool:
39 tt = (dt.year, dt.month, dt.day,
40 dt.hour, dt.minute, dt.second,
41 dt.weekday(), 0, -1)
42 stamp = time.mktime(tt)
43 tt = time.localtime(stamp)
44 return tt.tm_isdst > 0