Mercurial > repos > shellac > guppy_basecaller
comparison env/lib/python3.7/site-packages/isodate/tzinfo.py @ 5:9b1c78e6ba9c draft default tip
"planemo upload commit 6c0a8142489327ece472c84e558c47da711a9142"
author | shellac |
---|---|
date | Mon, 01 Jun 2020 08:59:25 -0400 |
parents | 79f47841a781 |
children |
comparison
equal
deleted
inserted
replaced
4:79f47841a781 | 5:9b1c78e6ba9c |
---|---|
1 ''' | |
2 This module provides some datetime.tzinfo implementations. | |
3 | |
4 All those classes are taken from the Python documentation. | |
5 ''' | |
6 from datetime import timedelta, tzinfo | |
7 import time | |
8 | |
9 ZERO = timedelta(0) | |
10 # constant for zero time offset. | |
11 | |
12 | |
13 class Utc(tzinfo): | |
14 '''UTC | |
15 | |
16 Universal time coordinated time zone. | |
17 ''' | |
18 | |
19 def utcoffset(self, dt): | |
20 ''' | |
21 Return offset from UTC in minutes east of UTC, which is ZERO for UTC. | |
22 ''' | |
23 return ZERO | |
24 | |
25 def tzname(self, dt): | |
26 ''' | |
27 Return the time zone name corresponding to the datetime object dt, | |
28 as a string. | |
29 ''' | |
30 return "UTC" | |
31 | |
32 def dst(self, dt): | |
33 ''' | |
34 Return the daylight saving time (DST) adjustment, in minutes east | |
35 of UTC. | |
36 ''' | |
37 return ZERO | |
38 | |
39 def __reduce__(self): | |
40 ''' | |
41 When unpickling a Utc object, return the default instance below, UTC. | |
42 ''' | |
43 return _Utc, () | |
44 | |
45 | |
46 UTC = Utc() | |
47 # the default instance for UTC. | |
48 | |
49 | |
50 def _Utc(): | |
51 ''' | |
52 Helper function for unpickling a Utc object. | |
53 ''' | |
54 return UTC | |
55 | |
56 | |
57 class FixedOffset(tzinfo): | |
58 ''' | |
59 A class building tzinfo objects for fixed-offset time zones. | |
60 | |
61 Note that FixedOffset(0, 0, "UTC") or FixedOffset() is a different way to | |
62 build a UTC tzinfo object. | |
63 ''' | |
64 | |
65 def __init__(self, offset_hours=0, offset_minutes=0, name="UTC"): | |
66 ''' | |
67 Initialise an instance with time offset and name. | |
68 The time offset should be positive for time zones east of UTC | |
69 and negate for time zones west of UTC. | |
70 ''' | |
71 self.__offset = timedelta(hours=offset_hours, minutes=offset_minutes) | |
72 self.__name = name | |
73 | |
74 def utcoffset(self, dt): | |
75 ''' | |
76 Return offset from UTC in minutes of UTC. | |
77 ''' | |
78 return self.__offset | |
79 | |
80 def tzname(self, dt): | |
81 ''' | |
82 Return the time zone name corresponding to the datetime object dt, as a | |
83 string. | |
84 ''' | |
85 return self.__name | |
86 | |
87 def dst(self, dt): | |
88 ''' | |
89 Return the daylight saving time (DST) adjustment, in minutes east of | |
90 UTC. | |
91 ''' | |
92 return ZERO | |
93 | |
94 def __repr__(self): | |
95 ''' | |
96 Return nicely formatted repr string. | |
97 ''' | |
98 return "<FixedOffset %r>" % self.__name | |
99 | |
100 | |
101 STDOFFSET = timedelta(seconds=-time.timezone) | |
102 # locale time zone offset | |
103 | |
104 # calculate local daylight saving offset if any. | |
105 if time.daylight: | |
106 DSTOFFSET = timedelta(seconds=-time.altzone) | |
107 else: | |
108 DSTOFFSET = STDOFFSET | |
109 | |
110 DSTDIFF = DSTOFFSET - STDOFFSET | |
111 # difference between local time zone and local DST time zone | |
112 | |
113 | |
114 class LocalTimezone(tzinfo): | |
115 """ | |
116 A class capturing the platform's idea of local time. | |
117 """ | |
118 | |
119 def utcoffset(self, dt): | |
120 ''' | |
121 Return offset from UTC in minutes of UTC. | |
122 ''' | |
123 if self._isdst(dt): | |
124 return DSTOFFSET | |
125 else: | |
126 return STDOFFSET | |
127 | |
128 def dst(self, dt): | |
129 ''' | |
130 Return daylight saving offset. | |
131 ''' | |
132 if self._isdst(dt): | |
133 return DSTDIFF | |
134 else: | |
135 return ZERO | |
136 | |
137 def tzname(self, dt): | |
138 ''' | |
139 Return the time zone name corresponding to the datetime object dt, as a | |
140 string. | |
141 ''' | |
142 return time.tzname[self._isdst(dt)] | |
143 | |
144 def _isdst(self, dt): | |
145 ''' | |
146 Returns true if DST is active for given datetime object dt. | |
147 ''' | |
148 tt = (dt.year, dt.month, dt.day, | |
149 dt.hour, dt.minute, dt.second, | |
150 dt.weekday(), 0, -1) | |
151 stamp = time.mktime(tt) | |
152 tt = time.localtime(stamp) | |
153 return tt.tm_isdst > 0 | |
154 | |
155 | |
156 # the default instance for local time zone. | |
157 LOCAL = LocalTimezone() |