Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/pendulum/tz/zoneinfo/transition.py: 48%

50 statements  

« prev     ^ index     » next       coverage.py v7.2.7, created at 2023-06-07 06:35 +0000

1from datetime import timedelta 

2from typing import Optional 

3 

4from .transition_type import TransitionType 

5 

6 

7class Transition: 

8 def __init__( 

9 self, 

10 at, # type: int 

11 ttype, # type: TransitionType 

12 previous, # type: Optional[Transition] 

13 ): 

14 self._at = at 

15 

16 if previous: 

17 self._local = at + previous.ttype.offset 

18 else: 

19 self._local = at + ttype.offset 

20 

21 self._ttype = ttype 

22 self._previous = previous 

23 

24 if self.previous: 

25 self._fix = self._ttype.offset - self.previous.ttype.offset 

26 else: 

27 self._fix = 0 

28 

29 self._to = self._local + self._fix 

30 self._to_utc = self._at + self._fix 

31 self._utcoffset = timedelta(seconds=ttype.offset) 

32 

33 @property 

34 def at(self): # type: () -> int 

35 return self._at 

36 

37 @property 

38 def local(self): # type: () -> int 

39 return self._local 

40 

41 @property 

42 def to(self): # type: () -> int 

43 return self._to 

44 

45 @property 

46 def to_utc(self): # type: () -> int 

47 return self._to 

48 

49 @property 

50 def ttype(self): # type: () -> TransitionType 

51 return self._ttype 

52 

53 @property 

54 def previous(self): # type: () -> Optional[Transition] 

55 return self._previous 

56 

57 @property 

58 def fix(self): # type: () -> int 

59 return self._fix 

60 

61 def is_ambiguous(self, stamp): # type: (int) -> bool 

62 return self._to <= stamp < self._local 

63 

64 def is_missing(self, stamp): # type: (int) -> bool 

65 return self._local <= stamp < self._to 

66 

67 def utcoffset(self): # type: () -> timedelta 

68 return self._utcoffset 

69 

70 def __contains__(self, stamp): # type: (int) -> bool 

71 if self.previous is None: 

72 return stamp < self.local 

73 

74 return self.previous.local <= stamp < self.local 

75 

76 def __repr__(self): # type: () -> str 

77 return "Transition({} -> {}, {})".format(self._local, self._to, self._ttype)