Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/pendulum/tz/__init__.py: 69%

29 statements  

« prev     ^ index     » next       coverage.py v7.3.1, created at 2023-09-30 06:11 +0000

1from __future__ import annotations 

2 

3from pathlib import Path 

4from typing import cast 

5 

6from pendulum.tz.local_timezone import get_local_timezone 

7from pendulum.tz.local_timezone import set_local_timezone 

8from pendulum.tz.local_timezone import test_local_timezone 

9from pendulum.tz.timezone import UTC 

10from pendulum.tz.timezone import FixedTimezone 

11from pendulum.tz.timezone import Timezone 

12from pendulum.utils._compat import resources 

13 

14 

15PRE_TRANSITION = "pre" 

16POST_TRANSITION = "post" 

17TRANSITION_ERROR = "error" 

18 

19_timezones = None 

20 

21_tz_cache: dict[int, FixedTimezone] = {} 

22 

23 

24def timezones() -> tuple[str, ...]: 

25 global _timezones 

26 

27 if _timezones is None: 

28 with cast(Path, resources.files("tzdata").joinpath("zones")).open() as f: 

29 _timezones = tuple(tz.strip() for tz in f.readlines()) 

30 

31 return _timezones 

32 

33 

34def fixed_timezone(offset: int) -> FixedTimezone: 

35 """ 

36 Return a Timezone instance given its offset in seconds. 

37 """ 

38 if offset in _tz_cache: 

39 return _tz_cache[offset] 

40 

41 tz = FixedTimezone(offset) 

42 _tz_cache[offset] = tz 

43 

44 return tz 

45 

46 

47def local_timezone() -> Timezone | FixedTimezone: 

48 """ 

49 Return the local timezone. 

50 """ 

51 return get_local_timezone() 

52 

53 

54__all__ = [ 

55 "UTC", 

56 "Timezone", 

57 "FixedTimezone", 

58 "set_local_timezone", 

59 "get_local_timezone", 

60 "test_local_timezone", 

61 "fixed_timezone", 

62 "local_timezone", 

63 "timezones", 

64]