Diffusers
Safetensors
leewheel commited on
Commit
5ffb6cd
·
verified ·
1 Parent(s): 9ff7459

Upload 635 files

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. python_env/lib/site-packages/pytz-2025.2.dist-info/INSTALLER +1 -0
  2. python_env/lib/site-packages/pytz-2025.2.dist-info/LICENSE.txt +19 -0
  3. python_env/lib/site-packages/pytz-2025.2.dist-info/METADATA +648 -0
  4. python_env/lib/site-packages/pytz-2025.2.dist-info/RECORD +623 -0
  5. python_env/lib/site-packages/pytz-2025.2.dist-info/WHEEL +6 -0
  6. python_env/lib/site-packages/pytz-2025.2.dist-info/top_level.txt +1 -0
  7. python_env/lib/site-packages/pytz-2025.2.dist-info/zip-safe +1 -0
  8. python_env/lib/site-packages/pytz/__init__.py +1556 -0
  9. python_env/lib/site-packages/pytz/__pycache__/__init__.cpython-310.pyc +0 -0
  10. python_env/lib/site-packages/pytz/__pycache__/exceptions.cpython-310.pyc +0 -0
  11. python_env/lib/site-packages/pytz/__pycache__/lazy.cpython-310.pyc +0 -0
  12. python_env/lib/site-packages/pytz/__pycache__/reference.cpython-310.pyc +0 -0
  13. python_env/lib/site-packages/pytz/__pycache__/tzfile.cpython-310.pyc +0 -0
  14. python_env/lib/site-packages/pytz/__pycache__/tzinfo.cpython-310.pyc +0 -0
  15. python_env/lib/site-packages/pytz/exceptions.py +59 -0
  16. python_env/lib/site-packages/pytz/lazy.py +172 -0
  17. python_env/lib/site-packages/pytz/reference.py +140 -0
  18. python_env/lib/site-packages/pytz/tzfile.py +133 -0
  19. python_env/lib/site-packages/pytz/tzinfo.py +580 -0
  20. python_env/lib/site-packages/pytz/zoneinfo/Africa/Abidjan +0 -0
  21. python_env/lib/site-packages/pytz/zoneinfo/Africa/Accra +0 -0
  22. python_env/lib/site-packages/pytz/zoneinfo/Africa/Addis_Ababa +0 -0
  23. python_env/lib/site-packages/pytz/zoneinfo/Africa/Algiers +0 -0
  24. python_env/lib/site-packages/pytz/zoneinfo/Africa/Asmara +0 -0
  25. python_env/lib/site-packages/pytz/zoneinfo/Africa/Asmera +0 -0
  26. python_env/lib/site-packages/pytz/zoneinfo/Africa/Bamako +0 -0
  27. python_env/lib/site-packages/pytz/zoneinfo/Africa/Bangui +0 -0
  28. python_env/lib/site-packages/pytz/zoneinfo/Africa/Banjul +0 -0
  29. python_env/lib/site-packages/pytz/zoneinfo/Africa/Bissau +0 -0
  30. python_env/lib/site-packages/pytz/zoneinfo/Africa/Blantyre +0 -0
  31. python_env/lib/site-packages/pytz/zoneinfo/Africa/Brazzaville +0 -0
  32. python_env/lib/site-packages/pytz/zoneinfo/Africa/Bujumbura +0 -0
  33. python_env/lib/site-packages/pytz/zoneinfo/Africa/Cairo +0 -0
  34. python_env/lib/site-packages/pytz/zoneinfo/Africa/Casablanca +0 -0
  35. python_env/lib/site-packages/pytz/zoneinfo/Africa/Ceuta +0 -0
  36. python_env/lib/site-packages/pytz/zoneinfo/Africa/Conakry +0 -0
  37. python_env/lib/site-packages/pytz/zoneinfo/Africa/Dakar +0 -0
  38. python_env/lib/site-packages/pytz/zoneinfo/Africa/Dar_es_Salaam +0 -0
  39. python_env/lib/site-packages/pytz/zoneinfo/Africa/Djibouti +0 -0
  40. python_env/lib/site-packages/pytz/zoneinfo/Africa/Douala +0 -0
  41. python_env/lib/site-packages/pytz/zoneinfo/Africa/El_Aaiun +0 -0
  42. python_env/lib/site-packages/pytz/zoneinfo/Africa/Freetown +0 -0
  43. python_env/lib/site-packages/pytz/zoneinfo/Africa/Gaborone +0 -0
  44. python_env/lib/site-packages/pytz/zoneinfo/Africa/Harare +0 -0
  45. python_env/lib/site-packages/pytz/zoneinfo/Africa/Johannesburg +0 -0
  46. python_env/lib/site-packages/pytz/zoneinfo/Africa/Juba +0 -0
  47. python_env/lib/site-packages/pytz/zoneinfo/Africa/Kampala +0 -0
  48. python_env/lib/site-packages/pytz/zoneinfo/Africa/Khartoum +0 -0
  49. python_env/lib/site-packages/pytz/zoneinfo/Africa/Kigali +0 -0
  50. python_env/lib/site-packages/pytz/zoneinfo/Africa/Kinshasa +0 -0
python_env/lib/site-packages/pytz-2025.2.dist-info/INSTALLER ADDED
@@ -0,0 +1 @@
 
 
1
+ pip
python_env/lib/site-packages/pytz-2025.2.dist-info/LICENSE.txt ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Copyright (c) 2003-2019 Stuart Bishop <stuart@stuartbishop.net>
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a
4
+ copy of this software and associated documentation files (the "Software"),
5
+ to deal in the Software without restriction, including without limitation
6
+ the rights to use, copy, modify, merge, publish, distribute, sublicense,
7
+ and/or sell copies of the Software, and to permit persons to whom the
8
+ Software is furnished to do so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in
11
+ all copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
16
+ THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
18
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
19
+ DEALINGS IN THE SOFTWARE.
python_env/lib/site-packages/pytz-2025.2.dist-info/METADATA ADDED
@@ -0,0 +1,648 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Metadata-Version: 2.1
2
+ Name: pytz
3
+ Version: 2025.2
4
+ Summary: World timezone definitions, modern and historical
5
+ Home-page: http://pythonhosted.org/pytz
6
+ Download-URL: https://pypi.org/project/pytz/
7
+ Author: Stuart Bishop
8
+ Author-email: stuart@stuartbishop.net
9
+ Maintainer: Stuart Bishop
10
+ Maintainer-email: stuart@stuartbishop.net
11
+ License: MIT
12
+ Keywords: timezone,tzinfo,datetime,olson,time
13
+ Platform: Independent
14
+ Classifier: Development Status :: 6 - Mature
15
+ Classifier: Intended Audience :: Developers
16
+ Classifier: License :: OSI Approved :: MIT License
17
+ Classifier: Natural Language :: English
18
+ Classifier: Operating System :: OS Independent
19
+ Classifier: Programming Language :: Python
20
+ Classifier: Programming Language :: Python :: 2
21
+ Classifier: Programming Language :: Python :: 2.4
22
+ Classifier: Programming Language :: Python :: 2.5
23
+ Classifier: Programming Language :: Python :: 2.6
24
+ Classifier: Programming Language :: Python :: 2.7
25
+ Classifier: Programming Language :: Python :: 3
26
+ Classifier: Programming Language :: Python :: 3.1
27
+ Classifier: Programming Language :: Python :: 3.2
28
+ Classifier: Programming Language :: Python :: 3.3
29
+ Classifier: Programming Language :: Python :: 3.4
30
+ Classifier: Programming Language :: Python :: 3.5
31
+ Classifier: Programming Language :: Python :: 3.6
32
+ Classifier: Programming Language :: Python :: 3.7
33
+ Classifier: Programming Language :: Python :: 3.8
34
+ Classifier: Programming Language :: Python :: 3.9
35
+ Classifier: Programming Language :: Python :: 3.10
36
+ Classifier: Programming Language :: Python :: 3.11
37
+ Classifier: Programming Language :: Python :: 3.12
38
+ Classifier: Programming Language :: Python :: 3.13
39
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
40
+ License-File: LICENSE.txt
41
+
42
+ pytz - World Timezone Definitions for Python
43
+ ============================================
44
+
45
+ :Author: Stuart Bishop <stuart@stuartbishop.net>
46
+
47
+ Introduction
48
+ ~~~~~~~~~~~~
49
+
50
+ pytz brings the Olson tz database into Python. This library allows
51
+ accurate and cross platform timezone calculations using Python 2.4
52
+ or higher. It also solves the issue of ambiguous times at the end
53
+ of daylight saving time, which you can read more about in the Python
54
+ Library Reference (``datetime.tzinfo``).
55
+
56
+ Almost all of the Olson timezones are supported.
57
+
58
+ .. note::
59
+
60
+ Projects using Python 3.9 or later should be using the support
61
+ now included as part of the standard library, and third party
62
+ packages work with it such as `tzdata <https://pypi.org/project/tzdata/>`_.
63
+ pytz offers no advantages beyond backwards compatibility with
64
+ code written for earlier versions of Python.
65
+
66
+ .. note::
67
+
68
+ This library differs from the documented Python API for
69
+ tzinfo implementations; if you want to create local wallclock
70
+ times you need to use the ``localize()`` method documented in this
71
+ document. In addition, if you perform date arithmetic on local
72
+ times that cross DST boundaries, the result may be in an incorrect
73
+ timezone (ie. subtract 1 minute from 2002-10-27 1:00 EST and you get
74
+ 2002-10-27 0:59 EST instead of the correct 2002-10-27 1:59 EDT). A
75
+ ``normalize()`` method is provided to correct this. Unfortunately these
76
+ issues cannot be resolved without modifying the Python datetime
77
+ implementation (see PEP-431).
78
+
79
+
80
+ Installation
81
+ ~~~~~~~~~~~~
82
+
83
+ This package can either be installed using ``pip`` or from a tarball using the
84
+ standard Python distutils.
85
+
86
+ If you are installing using ``pip``, you don't need to download anything as the
87
+ latest version will be downloaded for you from PyPI::
88
+
89
+ pip install pytz
90
+
91
+ If you are installing from a tarball, run the following command as an
92
+ administrative user::
93
+
94
+ python setup.py install
95
+
96
+
97
+ pytz for Enterprise
98
+ ~~~~~~~~~~~~~~~~~~~
99
+
100
+ Available as part of the Tidelift Subscription.
101
+
102
+ The maintainers of pytz and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source dependencies you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use. `Learn more. <https://tidelift.com/subscription/pkg/pypi-pytz?utm_source=pypi-pytz&utm_medium=referral&utm_campaign=enterprise&utm_term=repo>`_.
103
+
104
+
105
+ Example & Usage
106
+ ~~~~~~~~~~~~~~~
107
+
108
+ Localized times and date arithmetic
109
+ -----------------------------------
110
+
111
+ >>> from datetime import datetime, timedelta
112
+ >>> from pytz import timezone
113
+ >>> import pytz
114
+ >>> utc = pytz.utc
115
+ >>> utc.zone
116
+ 'UTC'
117
+ >>> eastern = timezone('US/Eastern')
118
+ >>> eastern.zone
119
+ 'US/Eastern'
120
+ >>> amsterdam = timezone('Europe/Amsterdam')
121
+ >>> fmt = '%Y-%m-%d %H:%M:%S %Z%z'
122
+
123
+ This library only supports two ways of building a localized time. The
124
+ first is to use the ``localize()`` method provided by the pytz library.
125
+ This is used to localize a naive datetime (datetime with no timezone
126
+ information):
127
+
128
+ >>> loc_dt = eastern.localize(datetime(2002, 10, 27, 6, 0, 0))
129
+ >>> print(loc_dt.strftime(fmt))
130
+ 2002-10-27 06:00:00 EST-0500
131
+
132
+ The second way of building a localized time is by converting an existing
133
+ localized time using the standard ``astimezone()`` method:
134
+
135
+ >>> ams_dt = loc_dt.astimezone(amsterdam)
136
+ >>> ams_dt.strftime(fmt)
137
+ '2002-10-27 12:00:00 CET+0100'
138
+
139
+ Unfortunately using the tzinfo argument of the standard datetime
140
+ constructors ''does not work'' with pytz for many timezones.
141
+
142
+ >>> datetime(2002, 10, 27, 12, 0, 0, tzinfo=amsterdam).strftime(fmt) # /!\ Does not work this way!
143
+ '2002-10-27 12:00:00 LMT+0018'
144
+
145
+ It is safe for timezones without daylight saving transitions though, such
146
+ as UTC:
147
+
148
+ >>> datetime(2002, 10, 27, 12, 0, 0, tzinfo=pytz.utc).strftime(fmt) # /!\ Not recommended except for UTC
149
+ '2002-10-27 12:00:00 UTC+0000'
150
+
151
+ The preferred way of dealing with times is to always work in UTC,
152
+ converting to localtime only when generating output to be read
153
+ by humans.
154
+
155
+ >>> utc_dt = datetime(2002, 10, 27, 6, 0, 0, tzinfo=utc)
156
+ >>> loc_dt = utc_dt.astimezone(eastern)
157
+ >>> loc_dt.strftime(fmt)
158
+ '2002-10-27 01:00:00 EST-0500'
159
+
160
+ This library also allows you to do date arithmetic using local
161
+ times, although it is more complicated than working in UTC as you
162
+ need to use the ``normalize()`` method to handle daylight saving time
163
+ and other timezone transitions. In this example, ``loc_dt`` is set
164
+ to the instant when daylight saving time ends in the US/Eastern
165
+ timezone.
166
+
167
+ >>> before = loc_dt - timedelta(minutes=10)
168
+ >>> before.strftime(fmt)
169
+ '2002-10-27 00:50:00 EST-0500'
170
+ >>> eastern.normalize(before).strftime(fmt)
171
+ '2002-10-27 01:50:00 EDT-0400'
172
+ >>> after = eastern.normalize(before + timedelta(minutes=20))
173
+ >>> after.strftime(fmt)
174
+ '2002-10-27 01:10:00 EST-0500'
175
+
176
+ Creating local times is also tricky, and the reason why working with
177
+ local times is not recommended. Unfortunately, you cannot just pass
178
+ a ``tzinfo`` argument when constructing a datetime (see the next
179
+ section for more details)
180
+
181
+ >>> dt = datetime(2002, 10, 27, 1, 30, 0)
182
+ >>> dt1 = eastern.localize(dt, is_dst=True)
183
+ >>> dt1.strftime(fmt)
184
+ '2002-10-27 01:30:00 EDT-0400'
185
+ >>> dt2 = eastern.localize(dt, is_dst=False)
186
+ >>> dt2.strftime(fmt)
187
+ '2002-10-27 01:30:00 EST-0500'
188
+
189
+ Converting between timezones is more easily done, using the
190
+ standard astimezone method.
191
+
192
+ >>> utc_dt = datetime.fromtimestamp(1143408899, tz=utc)
193
+ >>> utc_dt.strftime(fmt)
194
+ '2006-03-26 21:34:59 UTC+0000'
195
+ >>> au_tz = timezone('Australia/Sydney')
196
+ >>> au_dt = utc_dt.astimezone(au_tz)
197
+ >>> au_dt.strftime(fmt)
198
+ '2006-03-27 08:34:59 AEDT+1100'
199
+ >>> utc_dt2 = au_dt.astimezone(utc)
200
+ >>> utc_dt2.strftime(fmt)
201
+ '2006-03-26 21:34:59 UTC+0000'
202
+ >>> utc_dt == utc_dt2
203
+ True
204
+
205
+ You can take shortcuts when dealing with the UTC side of timezone
206
+ conversions. ``normalize()`` and ``localize()`` are not really
207
+ necessary when there are no daylight saving time transitions to
208
+ deal with.
209
+
210
+ >>> utc_dt = datetime.fromtimestamp(1143408899, tz=utc)
211
+ >>> utc_dt.strftime(fmt)
212
+ '2006-03-26 21:34:59 UTC+0000'
213
+ >>> au_tz = timezone('Australia/Sydney')
214
+ >>> au_dt = au_tz.normalize(utc_dt.astimezone(au_tz))
215
+ >>> au_dt.strftime(fmt)
216
+ '2006-03-27 08:34:59 AEDT+1100'
217
+ >>> utc_dt2 = au_dt.astimezone(utc)
218
+ >>> utc_dt2.strftime(fmt)
219
+ '2006-03-26 21:34:59 UTC+0000'
220
+
221
+
222
+ ``tzinfo`` API
223
+ --------------
224
+
225
+ The ``tzinfo`` instances returned by the ``timezone()`` function have
226
+ been extended to cope with ambiguous times by adding an ``is_dst``
227
+ parameter to the ``utcoffset()``, ``dst()`` && ``tzname()`` methods.
228
+
229
+ >>> tz = timezone('America/St_Johns')
230
+
231
+ >>> normal = datetime(2009, 9, 1)
232
+ >>> ambiguous = datetime(2009, 10, 31, 23, 30)
233
+
234
+ The ``is_dst`` parameter is ignored for most timestamps. It is only used
235
+ during DST transition ambiguous periods to resolve that ambiguity.
236
+
237
+ >>> print(tz.utcoffset(normal, is_dst=True))
238
+ -1 day, 21:30:00
239
+ >>> print(tz.dst(normal, is_dst=True))
240
+ 1:00:00
241
+ >>> tz.tzname(normal, is_dst=True)
242
+ 'NDT'
243
+
244
+ >>> print(tz.utcoffset(ambiguous, is_dst=True))
245
+ -1 day, 21:30:00
246
+ >>> print(tz.dst(ambiguous, is_dst=True))
247
+ 1:00:00
248
+ >>> tz.tzname(ambiguous, is_dst=True)
249
+ 'NDT'
250
+
251
+ >>> print(tz.utcoffset(normal, is_dst=False))
252
+ -1 day, 21:30:00
253
+ >>> tz.dst(normal, is_dst=False).seconds
254
+ 3600
255
+ >>> tz.tzname(normal, is_dst=False)
256
+ 'NDT'
257
+
258
+ >>> print(tz.utcoffset(ambiguous, is_dst=False))
259
+ -1 day, 20:30:00
260
+ >>> tz.dst(ambiguous, is_dst=False)
261
+ datetime.timedelta(0)
262
+ >>> tz.tzname(ambiguous, is_dst=False)
263
+ 'NST'
264
+
265
+ If ``is_dst`` is not specified, ambiguous timestamps will raise
266
+ an ``pytz.exceptions.AmbiguousTimeError`` exception.
267
+
268
+ >>> print(tz.utcoffset(normal))
269
+ -1 day, 21:30:00
270
+ >>> print(tz.dst(normal))
271
+ 1:00:00
272
+ >>> tz.tzname(normal)
273
+ 'NDT'
274
+
275
+ >>> import pytz.exceptions
276
+ >>> try:
277
+ ... tz.utcoffset(ambiguous)
278
+ ... except pytz.exceptions.AmbiguousTimeError:
279
+ ... print('pytz.exceptions.AmbiguousTimeError: %s' % ambiguous)
280
+ pytz.exceptions.AmbiguousTimeError: 2009-10-31 23:30:00
281
+ >>> try:
282
+ ... tz.dst(ambiguous)
283
+ ... except pytz.exceptions.AmbiguousTimeError:
284
+ ... print('pytz.exceptions.AmbiguousTimeError: %s' % ambiguous)
285
+ pytz.exceptions.AmbiguousTimeError: 2009-10-31 23:30:00
286
+ >>> try:
287
+ ... tz.tzname(ambiguous)
288
+ ... except pytz.exceptions.AmbiguousTimeError:
289
+ ... print('pytz.exceptions.AmbiguousTimeError: %s' % ambiguous)
290
+ pytz.exceptions.AmbiguousTimeError: 2009-10-31 23:30:00
291
+
292
+
293
+ Problems with Localtime
294
+ ~~~~~~~~~~~~~~~~~~~~~~~
295
+
296
+ The major problem we have to deal with is that certain datetimes
297
+ may occur twice in a year. For example, in the US/Eastern timezone
298
+ on the last Sunday morning in October, the following sequence
299
+ happens:
300
+
301
+ - 01:00 EDT occurs
302
+ - 1 hour later, instead of 2:00am the clock is turned back 1 hour
303
+ and 01:00 happens again (this time 01:00 EST)
304
+
305
+ In fact, every instant between 01:00 and 02:00 occurs twice. This means
306
+ that if you try and create a time in the 'US/Eastern' timezone
307
+ the standard datetime syntax, there is no way to specify if you meant
308
+ before of after the end-of-daylight-saving-time transition. Using the
309
+ pytz custom syntax, the best you can do is make an educated guess:
310
+
311
+ >>> loc_dt = eastern.localize(datetime(2002, 10, 27, 1, 30, 00))
312
+ >>> loc_dt.strftime(fmt)
313
+ '2002-10-27 01:30:00 EST-0500'
314
+
315
+ As you can see, the system has chosen one for you and there is a 50%
316
+ chance of it being out by one hour. For some applications, this does
317
+ not matter. However, if you are trying to schedule meetings with people
318
+ in different timezones or analyze log files it is not acceptable.
319
+
320
+ The best and simplest solution is to stick with using UTC. The pytz
321
+ package encourages using UTC for internal timezone representation by
322
+ including a special UTC implementation based on the standard Python
323
+ reference implementation in the Python documentation.
324
+
325
+ The UTC timezone unpickles to be the same instance, and pickles to a
326
+ smaller size than other pytz tzinfo instances. The UTC implementation
327
+ can be obtained as pytz.utc, pytz.UTC, or pytz.timezone('UTC').
328
+
329
+ >>> import pickle, pytz
330
+ >>> dt = datetime(2005, 3, 1, 14, 13, 21, tzinfo=utc)
331
+ >>> naive = dt.replace(tzinfo=None)
332
+ >>> p = pickle.dumps(dt, 1)
333
+ >>> naive_p = pickle.dumps(naive, 1)
334
+ >>> len(p) - len(naive_p)
335
+ 17
336
+ >>> new = pickle.loads(p)
337
+ >>> new == dt
338
+ True
339
+ >>> new is dt
340
+ False
341
+ >>> new.tzinfo is dt.tzinfo
342
+ True
343
+ >>> pytz.utc is pytz.UTC is pytz.timezone('UTC')
344
+ True
345
+
346
+ Note that some other timezones are commonly thought of as the same (GMT,
347
+ Greenwich, Universal, etc.). The definition of UTC is distinct from these
348
+ other timezones, and they are not equivalent. For this reason, they will
349
+ not compare the same in Python.
350
+
351
+ >>> utc == pytz.timezone('GMT')
352
+ False
353
+
354
+ See the section `What is UTC`_, below.
355
+
356
+ If you insist on working with local times, this library provides a
357
+ facility for constructing them unambiguously:
358
+
359
+ >>> loc_dt = datetime(2002, 10, 27, 1, 30, 00)
360
+ >>> est_dt = eastern.localize(loc_dt, is_dst=True)
361
+ >>> edt_dt = eastern.localize(loc_dt, is_dst=False)
362
+ >>> print(est_dt.strftime(fmt) + ' / ' + edt_dt.strftime(fmt))
363
+ 2002-10-27 01:30:00 EDT-0400 / 2002-10-27 01:30:00 EST-0500
364
+
365
+ If you pass None as the is_dst flag to localize(), pytz will refuse to
366
+ guess and raise exceptions if you try to build ambiguous or non-existent
367
+ times.
368
+
369
+ For example, 1:30am on 27th Oct 2002 happened twice in the US/Eastern
370
+ timezone when the clocks where put back at the end of Daylight Saving
371
+ Time:
372
+
373
+ >>> dt = datetime(2002, 10, 27, 1, 30, 00)
374
+ >>> try:
375
+ ... eastern.localize(dt, is_dst=None)
376
+ ... except pytz.exceptions.AmbiguousTimeError:
377
+ ... print('pytz.exceptions.AmbiguousTimeError: %s' % dt)
378
+ pytz.exceptions.AmbiguousTimeError: 2002-10-27 01:30:00
379
+
380
+ Similarly, 2:30am on 7th April 2002 never happened at all in the
381
+ US/Eastern timezone, as the clocks where put forward at 2:00am skipping
382
+ the entire hour:
383
+
384
+ >>> dt = datetime(2002, 4, 7, 2, 30, 00)
385
+ >>> try:
386
+ ... eastern.localize(dt, is_dst=None)
387
+ ... except pytz.exceptions.NonExistentTimeError:
388
+ ... print('pytz.exceptions.NonExistentTimeError: %s' % dt)
389
+ pytz.exceptions.NonExistentTimeError: 2002-04-07 02:30:00
390
+
391
+ Both of these exceptions share a common base class to make error handling
392
+ easier:
393
+
394
+ >>> isinstance(pytz.AmbiguousTimeError(), pytz.InvalidTimeError)
395
+ True
396
+ >>> isinstance(pytz.NonExistentTimeError(), pytz.InvalidTimeError)
397
+ True
398
+
399
+
400
+ A special case is where countries change their timezone definitions
401
+ with no daylight savings time switch. For example, in 1915 Warsaw
402
+ switched from Warsaw time to Central European time with no daylight savings
403
+ transition. So at the stroke of midnight on August 5th 1915 the clocks
404
+ were wound back 24 minutes creating an ambiguous time period that cannot
405
+ be specified without referring to the timezone abbreviation or the
406
+ actual UTC offset. In this case midnight happened twice, neither time
407
+ during a daylight saving time period. pytz handles this transition by
408
+ treating the ambiguous period before the switch as daylight savings
409
+ time, and the ambiguous period after as standard time.
410
+
411
+
412
+ >>> warsaw = pytz.timezone('Europe/Warsaw')
413
+ >>> amb_dt1 = warsaw.localize(datetime(1915, 8, 4, 23, 59, 59), is_dst=True)
414
+ >>> amb_dt1.strftime(fmt)
415
+ '1915-08-04 23:59:59 WMT+0124'
416
+ >>> amb_dt2 = warsaw.localize(datetime(1915, 8, 4, 23, 59, 59), is_dst=False)
417
+ >>> amb_dt2.strftime(fmt)
418
+ '1915-08-04 23:59:59 CET+0100'
419
+ >>> switch_dt = warsaw.localize(datetime(1915, 8, 5, 00, 00, 00), is_dst=False)
420
+ >>> switch_dt.strftime(fmt)
421
+ '1915-08-05 00:00:00 CET+0100'
422
+ >>> str(switch_dt - amb_dt1)
423
+ '0:24:01'
424
+ >>> str(switch_dt - amb_dt2)
425
+ '0:00:01'
426
+
427
+ The best way of creating a time during an ambiguous time period is
428
+ by converting from another timezone such as UTC:
429
+
430
+ >>> utc_dt = datetime(1915, 8, 4, 22, 36, tzinfo=pytz.utc)
431
+ >>> utc_dt.astimezone(warsaw).strftime(fmt)
432
+ '1915-08-04 23:36:00 CET+0100'
433
+
434
+ The standard Python way of handling all these ambiguities is not to
435
+ handle them, such as demonstrated in this example using the US/Eastern
436
+ timezone definition from the Python documentation (Note that this
437
+ implementation only works for dates between 1987 and 2006 - it is
438
+ included for tests only!):
439
+
440
+ >>> from pytz.reference import Eastern # pytz.reference only for tests
441
+ >>> dt = datetime(2002, 10, 27, 0, 30, tzinfo=Eastern)
442
+ >>> str(dt)
443
+ '2002-10-27 00:30:00-04:00'
444
+ >>> str(dt + timedelta(hours=1))
445
+ '2002-10-27 01:30:00-05:00'
446
+ >>> str(dt + timedelta(hours=2))
447
+ '2002-10-27 02:30:00-05:00'
448
+ >>> str(dt + timedelta(hours=3))
449
+ '2002-10-27 03:30:00-05:00'
450
+
451
+ Notice the first two results? At first glance you might think they are
452
+ correct, but taking the UTC offset into account you find that they are
453
+ actually two hours appart instead of the 1 hour we asked for.
454
+
455
+ >>> from pytz.reference import UTC # pytz.reference only for tests
456
+ >>> str(dt.astimezone(UTC))
457
+ '2002-10-27 04:30:00+00:00'
458
+ >>> str((dt + timedelta(hours=1)).astimezone(UTC))
459
+ '2002-10-27 06:30:00+00:00'
460
+
461
+
462
+ Country Information
463
+ ~~~~~~~~~~~~~~~~~~~
464
+
465
+ A mechanism is provided to access the timezones commonly in use
466
+ for a particular country, looked up using the ISO 3166 country code.
467
+ It returns a list of strings that can be used to retrieve the relevant
468
+ tzinfo instance using ``pytz.timezone()``:
469
+
470
+ >>> print(' '.join(pytz.country_timezones['nz']))
471
+ Pacific/Auckland Pacific/Chatham
472
+
473
+ The Olson database comes with a ISO 3166 country code to English country
474
+ name mapping that pytz exposes as a dictionary:
475
+
476
+ >>> print(pytz.country_names['nz'])
477
+ New Zealand
478
+
479
+
480
+ What is UTC
481
+ ~~~~~~~~~~~
482
+
483
+ 'UTC' is `Coordinated Universal Time`_. It is a successor to, but distinct
484
+ from, Greenwich Mean Time (GMT) and the various definitions of Universal
485
+ Time. UTC is now the worldwide standard for regulating clocks and time
486
+ measurement.
487
+
488
+ All other timezones are defined relative to UTC, and include offsets like
489
+ UTC+0800 - hours to add or subtract from UTC to derive the local time. No
490
+ daylight saving time occurs in UTC, making it a useful timezone to perform
491
+ date arithmetic without worrying about the confusion and ambiguities caused
492
+ by daylight saving time transitions, your country changing its timezone, or
493
+ mobile computers that roam through multiple timezones.
494
+
495
+ .. _Coordinated Universal Time: https://en.wikipedia.org/wiki/Coordinated_Universal_Time
496
+
497
+
498
+ Helpers
499
+ ~~~~~~~
500
+
501
+ There are two lists of timezones provided.
502
+
503
+ ``all_timezones`` is the exhaustive list of the timezone names that can
504
+ be used.
505
+
506
+ >>> from pytz import all_timezones
507
+ >>> len(all_timezones) >= 500
508
+ True
509
+ >>> 'Etc/Greenwich' in all_timezones
510
+ True
511
+
512
+ ``common_timezones`` is a list of useful, current timezones. It doesn't
513
+ contain deprecated zones or historical zones, except for a few I've
514
+ deemed in common usage, such as US/Eastern (open a bug report if you
515
+ think other timezones are deserving of being included here). It is also
516
+ a sequence of strings.
517
+
518
+ >>> from pytz import common_timezones
519
+ >>> len(common_timezones) < len(all_timezones)
520
+ True
521
+ >>> 'Etc/Greenwich' in common_timezones
522
+ False
523
+ >>> 'Australia/Melbourne' in common_timezones
524
+ True
525
+ >>> 'US/Eastern' in common_timezones
526
+ True
527
+ >>> 'Canada/Eastern' in common_timezones
528
+ True
529
+ >>> 'Australia/Yancowinna' in all_timezones
530
+ True
531
+ >>> 'Australia/Yancowinna' in common_timezones
532
+ False
533
+
534
+ Both ``common_timezones`` and ``all_timezones`` are alphabetically
535
+ sorted:
536
+
537
+ >>> common_timezones_dupe = common_timezones[:]
538
+ >>> common_timezones_dupe.sort()
539
+ >>> common_timezones == common_timezones_dupe
540
+ True
541
+ >>> all_timezones_dupe = all_timezones[:]
542
+ >>> all_timezones_dupe.sort()
543
+ >>> all_timezones == all_timezones_dupe
544
+ True
545
+
546
+ ``all_timezones`` and ``common_timezones`` are also available as sets.
547
+
548
+ >>> from pytz import all_timezones_set, common_timezones_set
549
+ >>> 'US/Eastern' in all_timezones_set
550
+ True
551
+ >>> 'US/Eastern' in common_timezones_set
552
+ True
553
+ >>> 'Australia/Victoria' in common_timezones_set
554
+ False
555
+
556
+ You can also retrieve lists of timezones used by particular countries
557
+ using the ``country_timezones()`` function. It requires an ISO-3166
558
+ two letter country code.
559
+
560
+ >>> from pytz import country_timezones
561
+ >>> print(' '.join(country_timezones('ch')))
562
+ Europe/Zurich
563
+ >>> print(' '.join(country_timezones('CH')))
564
+ Europe/Zurich
565
+
566
+
567
+ Internationalization - i18n/l10n
568
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
569
+
570
+ Pytz is an interface to the IANA database, which uses ASCII names. The `Unicode Consortium's Unicode Locales (CLDR) <http://cldr.unicode.org>`_
571
+ project provides translations. Python packages such as
572
+ `Babel <https://babel.pocoo.org/en/latest/api/dates.html#timezone-functionality>`_
573
+ and Thomas Khyn's `l18n <https://pypi.org/project/l18n/>`_ package can be used
574
+ to access these translations from Python.
575
+
576
+
577
+ License
578
+ ~~~~~~~
579
+
580
+ MIT license.
581
+
582
+ This code is also available as part of Zope 3 under the Zope Public
583
+ License, Version 2.1 (ZPL).
584
+
585
+ I'm happy to relicense this code if necessary for inclusion in other
586
+ open source projects.
587
+
588
+
589
+ Latest Versions
590
+ ~~~~~~~~~~~~~~~
591
+
592
+ This package will be updated after releases of the Olson timezone
593
+ database. The latest version can be downloaded from the `Python Package
594
+ Index <https://pypi.org/project/pytz/>`_. The code that is used
595
+ to generate this distribution is hosted on Github and available
596
+ using git::
597
+
598
+ git clone https://github.com/stub42/pytz.git
599
+
600
+ Announcements of new releases are made on
601
+ `Launchpad <https://launchpad.net/pytz>`_, and the
602
+ `Atom feed <http://feeds.launchpad.net/pytz/announcements.atom>`_
603
+ hosted there.
604
+
605
+
606
+ Bugs, Feature Requests & Patches
607
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
608
+
609
+ Bugs should be reported on `Github <https://github.com/stub42/pytz/issues>`_.
610
+ Feature requests are unlikely to be considered, and efforts instead directed
611
+ to timezone support now built into Python or packages that work with it.
612
+
613
+
614
+ Security Issues
615
+ ~~~~~~~~~~~~~~~
616
+
617
+ Reports about security issues can be made via `Tidelift <https://tidelift.com/security>`_.
618
+
619
+
620
+ Issues & Limitations
621
+ ~~~~~~~~~~~~~~~~~~~~
622
+
623
+ - This project is in maintenance mode. Projects using Python 3.9 or later
624
+ are best served by using the timezone functionaly now included in core
625
+ Python and packages that work with it such as `tzdata <https://pypi.org/project/tzdata/>`_.
626
+
627
+ - Offsets from UTC are rounded to the nearest whole minute, so timezones
628
+ such as Europe/Amsterdam pre 1937 will be up to 30 seconds out. This
629
+ was a limitation of the Python datetime library.
630
+
631
+ - If you think a timezone definition is incorrect, I probably can't fix
632
+ it. pytz is a direct translation of the Olson timezone database, and
633
+ changes to the timezone definitions need to be made to this source.
634
+ If you find errors they should be reported to the time zone mailing
635
+ list, linked from http://www.iana.org/time-zones.
636
+
637
+
638
+ Further Reading
639
+ ~~~~~~~~~~~~~~~
640
+
641
+ More info than you want to know about timezones:
642
+ https://data.iana.org/time-zones/tz-link.html
643
+
644
+
645
+ Contact
646
+ ~~~~~~~
647
+
648
+ Stuart Bishop <stuart@stuartbishop.net>
python_env/lib/site-packages/pytz-2025.2.dist-info/RECORD ADDED
@@ -0,0 +1,623 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ pytz-2025.2.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
2
+ pytz-2025.2.dist-info/LICENSE.txt,sha256=vosaN-vibFkqkPbA6zMQOn84POL010mMCvmlJpkKB7g,1088
3
+ pytz-2025.2.dist-info/METADATA,sha256=5iDk4fnxyAGWGTiNTaSW6wIRmhPzWqrVXwImlKPIH2w,22374
4
+ pytz-2025.2.dist-info/RECORD,,
5
+ pytz-2025.2.dist-info/WHEEL,sha256=-G_t0oGuE7UD0DrSpVZnq1hHMBV9DD2XkS5v7XpmTnk,110
6
+ pytz-2025.2.dist-info/top_level.txt,sha256=6xRYlt934v1yHb1JIrXgHyGxn3cqACvd-yE8ski_kcc,5
7
+ pytz-2025.2.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
8
+ pytz/__init__.py,sha256=dml-pbWn-1xqv_ZWHoKoPmhruaO63GoIubnxtFnEvDc,35125
9
+ pytz/__pycache__/__init__.cpython-310.pyc,,
10
+ pytz/__pycache__/exceptions.cpython-310.pyc,,
11
+ pytz/__pycache__/lazy.cpython-310.pyc,,
12
+ pytz/__pycache__/reference.cpython-310.pyc,,
13
+ pytz/__pycache__/tzfile.cpython-310.pyc,,
14
+ pytz/__pycache__/tzinfo.cpython-310.pyc,,
15
+ pytz/exceptions.py,sha256=434ZcuLlpLQY9mWoGq7zJMV1TyiYvVgpKBU1qZkbDjM,1571
16
+ pytz/lazy.py,sha256=toeR5uDWKBj6ezsUZ4elNP6CEMtK7CO2jS9A30nsFbo,5404
17
+ pytz/reference.py,sha256=zUtCki7JFEmrzrjNsfMD7YL0lWDxynKc1Ubo4iXSs74,3778
18
+ pytz/tzfile.py,sha256=K2y7pZs4vydpZVftrfAA_-hgw17y1Szc7z_QCse6udU,4723
19
+ pytz/tzinfo.py,sha256=XfaVOoO3KsCvtUYaCd0fvgBXWZ8tgevGYUoBh_uiE60,19340
20
+ pytz/zoneinfo/Africa/Abidjan,sha256=0u-sTl8j2IyV1ywdtCgHFw9S9D3ZiiBa9akqkbny2Zc,148
21
+ pytz/zoneinfo/Africa/Accra,sha256=0u-sTl8j2IyV1ywdtCgHFw9S9D3ZiiBa9akqkbny2Zc,148
22
+ pytz/zoneinfo/Africa/Addis_Ababa,sha256=yJsuJTqJJqbOz37_NOS_zbf-JNr_IthHGMMN7sDqSWg,265
23
+ pytz/zoneinfo/Africa/Algiers,sha256=vaFpjNVCwObnbfu82rOQzdJvN6nVgmpXpQ1aqzfzsqY,735
24
+ pytz/zoneinfo/Africa/Asmara,sha256=yJsuJTqJJqbOz37_NOS_zbf-JNr_IthHGMMN7sDqSWg,265
25
+ pytz/zoneinfo/Africa/Asmera,sha256=yJsuJTqJJqbOz37_NOS_zbf-JNr_IthHGMMN7sDqSWg,265
26
+ pytz/zoneinfo/Africa/Bamako,sha256=0u-sTl8j2IyV1ywdtCgHFw9S9D3ZiiBa9akqkbny2Zc,148
27
+ pytz/zoneinfo/Africa/Bangui,sha256=z_6wKCzL1_ug5JP_hneh5abdUZeIUELkN_ladz-ESEY,235
28
+ pytz/zoneinfo/Africa/Banjul,sha256=0u-sTl8j2IyV1ywdtCgHFw9S9D3ZiiBa9akqkbny2Zc,148
29
+ pytz/zoneinfo/Africa/Bissau,sha256=IjuxDP6EZiDHFvl_bHS6NN7sdRxLKXllooBC829poak,194
30
+ pytz/zoneinfo/Africa/Blantyre,sha256=RE7TpxBBS8a_Q-sn5ZHaSdO-PbFTRJpqDJRz9-Of28s,149
31
+ pytz/zoneinfo/Africa/Brazzaville,sha256=z_6wKCzL1_ug5JP_hneh5abdUZeIUELkN_ladz-ESEY,235
32
+ pytz/zoneinfo/Africa/Bujumbura,sha256=RE7TpxBBS8a_Q-sn5ZHaSdO-PbFTRJpqDJRz9-Of28s,149
33
+ pytz/zoneinfo/Africa/Cairo,sha256=Lft-GCLQhaSJm9VqUmsEFoHIS1Vhfa7pFJn9GZCpifs,2399
34
+ pytz/zoneinfo/Africa/Casablanca,sha256=4RqVbw_F3ZucopIC2ivAJ8WDwj5wRODAB67tBpdXcgA,2429
35
+ pytz/zoneinfo/Africa/Ceuta,sha256=Cw-2_nFDGbN8WqIsVpcauyZooWX8j3Kmx2PnC0fHut8,2052
36
+ pytz/zoneinfo/Africa/Conakry,sha256=0u-sTl8j2IyV1ywdtCgHFw9S9D3ZiiBa9akqkbny2Zc,148
37
+ pytz/zoneinfo/Africa/Dakar,sha256=0u-sTl8j2IyV1ywdtCgHFw9S9D3ZiiBa9akqkbny2Zc,148
38
+ pytz/zoneinfo/Africa/Dar_es_Salaam,sha256=yJsuJTqJJqbOz37_NOS_zbf-JNr_IthHGMMN7sDqSWg,265
39
+ pytz/zoneinfo/Africa/Djibouti,sha256=yJsuJTqJJqbOz37_NOS_zbf-JNr_IthHGMMN7sDqSWg,265
40
+ pytz/zoneinfo/Africa/Douala,sha256=z_6wKCzL1_ug5JP_hneh5abdUZeIUELkN_ladz-ESEY,235
41
+ pytz/zoneinfo/Africa/El_Aaiun,sha256=UWCCqQLJxd8qsTYw82kz9W1suwW5TRgnZw31sDWDz20,2295
42
+ pytz/zoneinfo/Africa/Freetown,sha256=0u-sTl8j2IyV1ywdtCgHFw9S9D3ZiiBa9akqkbny2Zc,148
43
+ pytz/zoneinfo/Africa/Gaborone,sha256=RE7TpxBBS8a_Q-sn5ZHaSdO-PbFTRJpqDJRz9-Of28s,149
44
+ pytz/zoneinfo/Africa/Harare,sha256=RE7TpxBBS8a_Q-sn5ZHaSdO-PbFTRJpqDJRz9-Of28s,149
45
+ pytz/zoneinfo/Africa/Johannesburg,sha256=bBvMdSZo53WFowiuhUO9C8zY6BOGViboCb-U8_49l34,246
46
+ pytz/zoneinfo/Africa/Juba,sha256=UVnIqEPJwHLTMC-r5qZQHNv9opoYVsKdq-ta_5XUw_Q,679
47
+ pytz/zoneinfo/Africa/Kampala,sha256=yJsuJTqJJqbOz37_NOS_zbf-JNr_IthHGMMN7sDqSWg,265
48
+ pytz/zoneinfo/Africa/Khartoum,sha256=MYWDoJ3AcCItZdApoeOgtWWDDxquwTon5v5TOGP70-o,679
49
+ pytz/zoneinfo/Africa/Kigali,sha256=RE7TpxBBS8a_Q-sn5ZHaSdO-PbFTRJpqDJRz9-Of28s,149
50
+ pytz/zoneinfo/Africa/Kinshasa,sha256=z_6wKCzL1_ug5JP_hneh5abdUZeIUELkN_ladz-ESEY,235
51
+ pytz/zoneinfo/Africa/Lagos,sha256=z_6wKCzL1_ug5JP_hneh5abdUZeIUELkN_ladz-ESEY,235
52
+ pytz/zoneinfo/Africa/Libreville,sha256=z_6wKCzL1_ug5JP_hneh5abdUZeIUELkN_ladz-ESEY,235
53
+ pytz/zoneinfo/Africa/Lome,sha256=0u-sTl8j2IyV1ywdtCgHFw9S9D3ZiiBa9akqkbny2Zc,148
54
+ pytz/zoneinfo/Africa/Luanda,sha256=z_6wKCzL1_ug5JP_hneh5abdUZeIUELkN_ladz-ESEY,235
55
+ pytz/zoneinfo/Africa/Lubumbashi,sha256=RE7TpxBBS8a_Q-sn5ZHaSdO-PbFTRJpqDJRz9-Of28s,149
56
+ pytz/zoneinfo/Africa/Lusaka,sha256=RE7TpxBBS8a_Q-sn5ZHaSdO-PbFTRJpqDJRz9-Of28s,149
57
+ pytz/zoneinfo/Africa/Malabo,sha256=z_6wKCzL1_ug5JP_hneh5abdUZeIUELkN_ladz-ESEY,235
58
+ pytz/zoneinfo/Africa/Maputo,sha256=RE7TpxBBS8a_Q-sn5ZHaSdO-PbFTRJpqDJRz9-Of28s,149
59
+ pytz/zoneinfo/Africa/Maseru,sha256=bBvMdSZo53WFowiuhUO9C8zY6BOGViboCb-U8_49l34,246
60
+ pytz/zoneinfo/Africa/Mbabane,sha256=bBvMdSZo53WFowiuhUO9C8zY6BOGViboCb-U8_49l34,246
61
+ pytz/zoneinfo/Africa/Mogadishu,sha256=yJsuJTqJJqbOz37_NOS_zbf-JNr_IthHGMMN7sDqSWg,265
62
+ pytz/zoneinfo/Africa/Monrovia,sha256=-VsJW5cU4KdvfgYaQVv4lcuzmaKIVFMd42nO6RXOBdU,208
63
+ pytz/zoneinfo/Africa/Nairobi,sha256=yJsuJTqJJqbOz37_NOS_zbf-JNr_IthHGMMN7sDqSWg,265
64
+ pytz/zoneinfo/Africa/Ndjamena,sha256=8T3A0Zm9Gj0Bvm6rd88t3GAXKiKdGUfHlIqYlkYI0KM,199
65
+ pytz/zoneinfo/Africa/Niamey,sha256=z_6wKCzL1_ug5JP_hneh5abdUZeIUELkN_ladz-ESEY,235
66
+ pytz/zoneinfo/Africa/Nouakchott,sha256=0u-sTl8j2IyV1ywdtCgHFw9S9D3ZiiBa9akqkbny2Zc,148
67
+ pytz/zoneinfo/Africa/Ouagadougou,sha256=0u-sTl8j2IyV1ywdtCgHFw9S9D3ZiiBa9akqkbny2Zc,148
68
+ pytz/zoneinfo/Africa/Porto-Novo,sha256=z_6wKCzL1_ug5JP_hneh5abdUZeIUELkN_ladz-ESEY,235
69
+ pytz/zoneinfo/Africa/Sao_Tome,sha256=MdjxpQ268uzJ7Zx1ZroFUtRUwqsJ6F_yY3AYV9FXw1I,254
70
+ pytz/zoneinfo/Africa/Timbuktu,sha256=0u-sTl8j2IyV1ywdtCgHFw9S9D3ZiiBa9akqkbny2Zc,148
71
+ pytz/zoneinfo/Africa/Tripoli,sha256=W1dptGD70T7ppGoo0fczFQeDiIp0nultLNPV66MwB2c,625
72
+ pytz/zoneinfo/Africa/Tunis,sha256=OFVMEM4eYT2Ez0beuhEUCTSIpcFldWxsV2uEoTZIUNI,689
73
+ pytz/zoneinfo/Africa/Windhoek,sha256=xuhvudrMH4alnVmouSTQI8YL8F_HbgsF2EQ7AZKzuHs,955
74
+ pytz/zoneinfo/America/Adak,sha256=IB1DhwJQAKbhPJ9jHLf8zW5Dad7HIkBS-dhv64E1OlM,2356
75
+ pytz/zoneinfo/America/Anchorage,sha256=oZA1NSPS2BWdymYpnCHFO8BlYVS-ll5KLg2Ez9CbETs,2371
76
+ pytz/zoneinfo/America/Anguilla,sha256=hJHlV_-AGoMGUWuMpZRv9fLmghrzFHfrR9fRkcxaZJc,246
77
+ pytz/zoneinfo/America/Antigua,sha256=hJHlV_-AGoMGUWuMpZRv9fLmghrzFHfrR9fRkcxaZJc,246
78
+ pytz/zoneinfo/America/Araguaina,sha256=G6v9wYFZ8EB4WQfIsqRbbiiKd2b27j7Zt5dFjBbzx2o,870
79
+ pytz/zoneinfo/America/Argentina/Buenos_Aires,sha256=JmU8lBwmy29gR6OmeytvFdMRx6ObJKnYNHmLyMmXX2M,1062
80
+ pytz/zoneinfo/America/Argentina/Catamarca,sha256=uMCJXXGYmNESHVvj5RYBZ0McrOdE14hwm17l25MgRW0,1062
81
+ pytz/zoneinfo/America/Argentina/ComodRivadavia,sha256=uMCJXXGYmNESHVvj5RYBZ0McrOdE14hwm17l25MgRW0,1062
82
+ pytz/zoneinfo/America/Argentina/Cordoba,sha256=uniNihhMHnr4XK4WpwiPUnrAT0YPmvzqB6f0hRLtXvY,1062
83
+ pytz/zoneinfo/America/Argentina/Jujuy,sha256=PGmAehypCxj0XCenCSWqylDIPbKLK0DlrwJK_24D590,1034
84
+ pytz/zoneinfo/America/Argentina/La_Rioja,sha256=Um6XoVXhsr62ad1mWuebe6NY0ZHauBdR9tMGDgqCOHg,1076
85
+ pytz/zoneinfo/America/Argentina/Mendoza,sha256=xcOVtvRyVYFAU90y2QYwpyQhpMLyAp7-Fxvku4kgl0c,1062
86
+ pytz/zoneinfo/America/Argentina/Rio_Gallegos,sha256=F9ZKR4o8gLHX7QBuIjMapGIdmzJxpqwbouPgZ5MqDpY,1062
87
+ pytz/zoneinfo/America/Argentina/Salta,sha256=h1KYrDNIapvDkYhi1PaB8WD1qWOe4vhhgDJWDCGV4jc,1034
88
+ pytz/zoneinfo/America/Argentina/San_Juan,sha256=AI2GltA80mPNzhHxYycuEwIbO1ANXyIqBQZMpjqKqdQ,1076
89
+ pytz/zoneinfo/America/Argentina/San_Luis,sha256=2ItGRcLVK2wx8MyJsHbIBBeAkU4B-MN5x1ZxNyZ7UJE,1088
90
+ pytz/zoneinfo/America/Argentina/Tucuman,sha256=twO-FqtNJV8XOzWTvFQ-xnEcWCoDUHY3gpVIG0Mzbf8,1090
91
+ pytz/zoneinfo/America/Argentina/Ushuaia,sha256=A6IbpVlY9IIPoSKMFRR9DMROdwXUSDc2HsASueOSnqo,1062
92
+ pytz/zoneinfo/America/Aruba,sha256=hJHlV_-AGoMGUWuMpZRv9fLmghrzFHfrR9fRkcxaZJc,246
93
+ pytz/zoneinfo/America/Asuncion,sha256=9yfGiENhXNgd2_0xHVsF-hLeJkGSqRs-zD9O945KJWc,1644
94
+ pytz/zoneinfo/America/Atikokan,sha256=kayA_pdpMcSQ0FjIzotdcf-m1JYfbKE-qcFT8LC8zqA,182
95
+ pytz/zoneinfo/America/Atka,sha256=IB1DhwJQAKbhPJ9jHLf8zW5Dad7HIkBS-dhv64E1OlM,2356
96
+ pytz/zoneinfo/America/Bahia,sha256=qi7dA6FofDhLxVMmd2L8bK3HeaQnc9X-jiijwyfhs3g,1010
97
+ pytz/zoneinfo/America/Bahia_Banderas,sha256=MvrXGJ5LzaHOeguJqxszxjxMhVafGVbk-ojXEc7_YEI,1100
98
+ pytz/zoneinfo/America/Barbados,sha256=ima-Qrrhazu4Qfvu2Z0-e6E-GTiYknuJBu6c2yVG9LE,436
99
+ pytz/zoneinfo/America/Belem,sha256=aZMUgtFDdHNISpqyQRYbmS2IBD-BAS3CaJnhu6onLCY,562
100
+ pytz/zoneinfo/America/Belize,sha256=pkfLY2KfPchbeJa1pWcXmWAwp4ZlRvxWLVezXnrbkws,1614
101
+ pytz/zoneinfo/America/Blanc-Sablon,sha256=hJHlV_-AGoMGUWuMpZRv9fLmghrzFHfrR9fRkcxaZJc,246
102
+ pytz/zoneinfo/America/Boa_Vista,sha256=dMtaG11kGlJrgJJgGWEDZZAmnO_HfT3L4X8pI72LLFY,618
103
+ pytz/zoneinfo/America/Bogota,sha256=Z1ernZZGQxulE8KFWHYWcM3SV1jn2_QEc1Q0OJzHRak,232
104
+ pytz/zoneinfo/America/Boise,sha256=7HQsNPJiUheQgFz5kVLvTnf5xhXAYaeANqDskxKz2Vs,2410
105
+ pytz/zoneinfo/America/Buenos_Aires,sha256=JmU8lBwmy29gR6OmeytvFdMRx6ObJKnYNHmLyMmXX2M,1062
106
+ pytz/zoneinfo/America/Cambridge_Bay,sha256=_4xRlX3WdVpEcqoT6myD7NeTCXnn9OYk_iH006bwULo,2254
107
+ pytz/zoneinfo/America/Campo_Grande,sha256=gINiXg5i2e6Rh2Nbo2bFqhPAJL4F4cAqGnBankXTDXw,1430
108
+ pytz/zoneinfo/America/Cancun,sha256=EdV0Nw2WjM7VnjFHoq5jsSbLuuE7eP1OE74utEyWJG4,864
109
+ pytz/zoneinfo/America/Caracas,sha256=mUNMFdDzZLav_ePA1ocBdmqVBierkeEszTIFpNCm5J0,250
110
+ pytz/zoneinfo/America/Catamarca,sha256=uMCJXXGYmNESHVvj5RYBZ0McrOdE14hwm17l25MgRW0,1062
111
+ pytz/zoneinfo/America/Cayenne,sha256=4k7Iv1woX4atqePKrcvMQD2Vk9Tmma7rW_AW_R62pCc,184
112
+ pytz/zoneinfo/America/Cayman,sha256=kayA_pdpMcSQ0FjIzotdcf-m1JYfbKE-qcFT8LC8zqA,182
113
+ pytz/zoneinfo/America/Chicago,sha256=_roybr6I6sIAF6cYdIxGxoRpoef153Fty48dQ6bm9oY,3592
114
+ pytz/zoneinfo/America/Chihuahua,sha256=3Ngzbedg8AzAqxsbQSG0jVRx-LxYlw1i3kx-Yzl-2Ic,1102
115
+ pytz/zoneinfo/America/Ciudad_Juarez,sha256=ir4b27DiFrhL0H4fZQ92nEa-BBoPfLWIz3phU373dgE,1538
116
+ pytz/zoneinfo/America/Coral_Harbour,sha256=kayA_pdpMcSQ0FjIzotdcf-m1JYfbKE-qcFT8LC8zqA,182
117
+ pytz/zoneinfo/America/Cordoba,sha256=uniNihhMHnr4XK4WpwiPUnrAT0YPmvzqB6f0hRLtXvY,1062
118
+ pytz/zoneinfo/America/Costa_Rica,sha256=74rYa6lrgIkyls9PkHo8SCYl9oOqiuG5S7MWdnJelP4,316
119
+ pytz/zoneinfo/America/Coyhaique,sha256=beZXU6Lw5jx2Wp3dNRkFiofXGma2dM6DsqvJT9CSHdc,2126
120
+ pytz/zoneinfo/America/Creston,sha256=illz0sYuLL8lIPK0Tkou6dL0Vck_D0W_3rRTOvFYRmQ,360
121
+ pytz/zoneinfo/America/Cuiaba,sha256=GRJqkhRXNsOUcgjZddQxRIJdRYaw9pM_YLWbun88dkg,1402
122
+ pytz/zoneinfo/America/Curacao,sha256=hJHlV_-AGoMGUWuMpZRv9fLmghrzFHfrR9fRkcxaZJc,246
123
+ pytz/zoneinfo/America/Danmarkshavn,sha256=YRZAfUCoVtaL1L-MYMYMH1wyOaVQnfUo_gFnvMXSuzw,698
124
+ pytz/zoneinfo/America/Dawson,sha256=rAHhyuMuyjf_eyA2SBG76MRBf_fj_xi5FAuiWVQgJhw,1614
125
+ pytz/zoneinfo/America/Dawson_Creek,sha256=aJXCyP4j3ggE4wGCN-LrS9hpD_5zWHzQTeSAKTWEPUM,1050
126
+ pytz/zoneinfo/America/Denver,sha256=MugZwApDs8NI9TnXANQlUE8guNBowWQY0m-ptpPndck,2460
127
+ pytz/zoneinfo/America/Detroit,sha256=hecz8yqY2Cj5B61G3gLZdAVZvRgK9l0P90c_gN-uD5g,2230
128
+ pytz/zoneinfo/America/Dominica,sha256=hJHlV_-AGoMGUWuMpZRv9fLmghrzFHfrR9fRkcxaZJc,246
129
+ pytz/zoneinfo/America/Edmonton,sha256=-TkIfc3QlvaCf0p8COZ43Y1HRBAl-nARUi-JdXeK1vE,2332
130
+ pytz/zoneinfo/America/Eirunepe,sha256=j5eExkjFaqtC-D8XK0rGzoF9yEgbSlTbPqVG9WKhEa8,642
131
+ pytz/zoneinfo/America/El_Salvador,sha256=gvGN8Lkj-sGm2_rs8OUjAMf1oMtKp2Xes6UfWT0WqgU,224
132
+ pytz/zoneinfo/America/Ensenada,sha256=SluV7xzZm24LgMXSUVt1cD1AlE7y_bdE65HhDIdXLcs,2458
133
+ pytz/zoneinfo/America/Fort_Nelson,sha256=erfODr3DrSpz65kAdO7Ts2dGbZxvddEP6gx4BX3y2J0,2240
134
+ pytz/zoneinfo/America/Fort_Wayne,sha256=kNKy9Kj9ICsiYYfCCbAggzMA7exf-GpGPMxoXocHUyw,1682
135
+ pytz/zoneinfo/America/Fortaleza,sha256=rjiSB0q1cBuMDOM9orW_uwe5UOLBwTlfjFotwOYe1mU,702
136
+ pytz/zoneinfo/America/Glace_Bay,sha256=G8DGLGCapH_aYCF_OhaL5Qonf7FOAgAPwelO5htCWBc,2192
137
+ pytz/zoneinfo/America/Godthab,sha256=KGXrMN-YkYpVCgLdpcfwMFQ77EsRAGsjUCG3yAUvVfw,1889
138
+ pytz/zoneinfo/America/Goose_Bay,sha256=JgaLueghSvX2g725FOfIgpgvsqxZGykWOhAZWGpQZRY,3210
139
+ pytz/zoneinfo/America/Grand_Turk,sha256=4YOFEPK60Bel2_fCsY6vSZxUcMJKjiKtyOf_Q0khEwU,1834
140
+ pytz/zoneinfo/America/Grenada,sha256=hJHlV_-AGoMGUWuMpZRv9fLmghrzFHfrR9fRkcxaZJc,246
141
+ pytz/zoneinfo/America/Guadeloupe,sha256=hJHlV_-AGoMGUWuMpZRv9fLmghrzFHfrR9fRkcxaZJc,246
142
+ pytz/zoneinfo/America/Guatemala,sha256=dugUgCd6QY52yHkHuUP4jRWzo5x439IQigaYCvEF46Q,280
143
+ pytz/zoneinfo/America/Guayaquil,sha256=j2UuIo-4RgSOlTNfu77mhZ92waNTeKFSvmoVemJooT0,232
144
+ pytz/zoneinfo/America/Guyana,sha256=R0bOvCRDC8SRIexmhsduPdHbbRPwI2GviD9otExiUrk,248
145
+ pytz/zoneinfo/America/Halifax,sha256=TZpmc5PwWoLfTfQoQ_b3U17BE2iVKSeNkR0Ho8mbTn8,3424
146
+ pytz/zoneinfo/America/Havana,sha256=HUQeAuKBsEkI5SLZjqynXICOUVOajkKzKH5r-Ov5Odc,2416
147
+ pytz/zoneinfo/America/Hermosillo,sha256=ixYKestLmS7gWobk9Kq6FtLZo1yqbWActrFUKluzctw,388
148
+ pytz/zoneinfo/America/Indiana/Indianapolis,sha256=kNKy9Kj9ICsiYYfCCbAggzMA7exf-GpGPMxoXocHUyw,1682
149
+ pytz/zoneinfo/America/Indiana/Knox,sha256=CsvZ5BKw2qVav3x_F8CU9taJdDk7jX41Cfsqms6jXV8,2444
150
+ pytz/zoneinfo/America/Indiana/Marengo,sha256=f3tQ-lgMSUA7nvn64pXhKtJL7mWzGajoCega5MEJSbI,1738
151
+ pytz/zoneinfo/America/Indiana/Petersburg,sha256=A88OHuM0Rg3iMLHjKgXq_d2jZCdVSytUQs-9W0KcFyQ,1920
152
+ pytz/zoneinfo/America/Indiana/Tell_City,sha256=4dWqAr9Y2BXfL4pAQk-81c3gGl2cNdHXOD7_wJhhhn8,1700
153
+ pytz/zoneinfo/America/Indiana/Vevay,sha256=H7VR2G-_sD_C5Rm4P3g1iRC1FWCPg4m0MGD3P1PLzsk,1430
154
+ pytz/zoneinfo/America/Indiana/Vincennes,sha256=62mAxT7APFCaoygflnEzdOpe-fuW1yObI6m6EUUcS7A,1710
155
+ pytz/zoneinfo/America/Indiana/Winamac,sha256=aZGM2jR8CH9BHSUq7XygiweDd6dorXLPXg246XsbR6s,1794
156
+ pytz/zoneinfo/America/Indianapolis,sha256=kNKy9Kj9ICsiYYfCCbAggzMA7exf-GpGPMxoXocHUyw,1682
157
+ pytz/zoneinfo/America/Inuvik,sha256=6J-mapDnrk9A1LtswoE34tqSy_ufedcEBNxixkrEjIo,2074
158
+ pytz/zoneinfo/America/Iqaluit,sha256=feOnxAN0N0r-M1qlkrA4JMyawoc0tqae0iiBCPDAs4k,2202
159
+ pytz/zoneinfo/America/Jamaica,sha256=wlagieUPRf5-beie-h7QsONbNzjGsm8vMs8uf28pw28,482
160
+ pytz/zoneinfo/America/Jujuy,sha256=PGmAehypCxj0XCenCSWqylDIPbKLK0DlrwJK_24D590,1034
161
+ pytz/zoneinfo/America/Juneau,sha256=k7hxb0aGRnfnE-DBi3LkcjAzRPyAf0_Hw0vVFfjGeb0,2353
162
+ pytz/zoneinfo/America/Kentucky/Louisville,sha256=tP072xV_n_vIQjxxcJ77AGeGj6yL1KPpn3fwids9g1U,2788
163
+ pytz/zoneinfo/America/Kentucky/Monticello,sha256=LtdyCo85BrXQs6rlH61Ym-8KqWHH6PwAOjD0QxhIdzM,2368
164
+ pytz/zoneinfo/America/Knox_IN,sha256=CsvZ5BKw2qVav3x_F8CU9taJdDk7jX41Cfsqms6jXV8,2444
165
+ pytz/zoneinfo/America/Kralendijk,sha256=hJHlV_-AGoMGUWuMpZRv9fLmghrzFHfrR9fRkcxaZJc,246
166
+ pytz/zoneinfo/America/La_Paz,sha256=hqfD8LQHupdZhji2e93_9pOQAT-R7muzzjP0nyfbFXY,218
167
+ pytz/zoneinfo/America/Lima,sha256=HHgTnDUnCZzibvL0MrG8qyOuvjmYYw3e3R5VbnxMZs8,392
168
+ pytz/zoneinfo/America/Los_Angeles,sha256=aJd7ua1tGG_vxser02AQpm4wAI3LLTdgh6QcSYYecmg,2852
169
+ pytz/zoneinfo/America/Louisville,sha256=tP072xV_n_vIQjxxcJ77AGeGj6yL1KPpn3fwids9g1U,2788
170
+ pytz/zoneinfo/America/Lower_Princes,sha256=hJHlV_-AGoMGUWuMpZRv9fLmghrzFHfrR9fRkcxaZJc,246
171
+ pytz/zoneinfo/America/Maceio,sha256=3R5DlSe32kQDmoSVIWpcyk2o7qohr-rliwqDSGFIMyQ,730
172
+ pytz/zoneinfo/America/Managua,sha256=xBzF01AHn2E2fD8Qdy-DHFe36UqoeNpKPfChduBKWdk,430
173
+ pytz/zoneinfo/America/Manaus,sha256=F6RLOOeOi9lymZiQmQ9pR8tFpPZ6EguNdPfOc6BhXDE,590
174
+ pytz/zoneinfo/America/Marigot,sha256=hJHlV_-AGoMGUWuMpZRv9fLmghrzFHfrR9fRkcxaZJc,246
175
+ pytz/zoneinfo/America/Martinique,sha256=fMs80kOU2YFvC0f9y2eje97JeAtTYBamXrnlTunNLzQ,232
176
+ pytz/zoneinfo/America/Matamoros,sha256=fq-PqdmZrQ98UsFmHA9ivjBZv5GEBRTOuLQ5Cu5ajW8,1418
177
+ pytz/zoneinfo/America/Mazatlan,sha256=BWH2NqVPA1PsyELPN_2BF8KllrsmQkqg1eujsQvnnx8,1060
178
+ pytz/zoneinfo/America/Mendoza,sha256=xcOVtvRyVYFAU90y2QYwpyQhpMLyAp7-Fxvku4kgl0c,1062
179
+ pytz/zoneinfo/America/Menominee,sha256=Arv9WLbfhNcpRsUjHDU757BEdwlp08Gt30AixG3gZ04,2274
180
+ pytz/zoneinfo/America/Merida,sha256=SVNEHCazjomftnuPVBayFI-E-IQ0WmluHfTpHP0h3d0,1004
181
+ pytz/zoneinfo/America/Metlakatla,sha256=twmieGTVY2V-U8nFxqvx7asYv8GVjeWdLtrOI7UApVI,1423
182
+ pytz/zoneinfo/America/Mexico_City,sha256=Uog2-FMWz2o12jR6sK9vemJamLeo6OEFMQR3s0xTxkc,1222
183
+ pytz/zoneinfo/America/Miquelon,sha256=l5txBJYe9HTRZlILcbSL_HNDYrjUb0ouecNy7QEkg9c,1652
184
+ pytz/zoneinfo/America/Moncton,sha256=Wmv-bk9aKKcWWzOpc1UFu67HOfwaIk2Wmh3LgqGctys,3154
185
+ pytz/zoneinfo/America/Monterrey,sha256=YixTESJubf6ZBUXy6g32hAM2gR4GXXPqOU4tv0L3kG0,1114
186
+ pytz/zoneinfo/America/Montevideo,sha256=dQEBE4mjZPtyRjKXK6Z-bMHJdFqpwhIzxDH4x04rKYk,1496
187
+ pytz/zoneinfo/America/Montreal,sha256=pYehoWB0Ofe6woPhgV8r26-5ZJpFPRjgbC5E5pltiI8,3494
188
+ pytz/zoneinfo/America/Montserrat,sha256=hJHlV_-AGoMGUWuMpZRv9fLmghrzFHfrR9fRkcxaZJc,246
189
+ pytz/zoneinfo/America/Nassau,sha256=pYehoWB0Ofe6woPhgV8r26-5ZJpFPRjgbC5E5pltiI8,3494
190
+ pytz/zoneinfo/America/New_York,sha256=6e0H177gx2qdRC0JHvHwFmj-58TyYBTAqGixn-bBipU,3552
191
+ pytz/zoneinfo/America/Nipigon,sha256=pYehoWB0Ofe6woPhgV8r26-5ZJpFPRjgbC5E5pltiI8,3494
192
+ pytz/zoneinfo/America/Nome,sha256=2izM3-P-PqJ9za6MdhzFfMvPFNq7Gim69tAvEwPeY2s,2367
193
+ pytz/zoneinfo/America/Noronha,sha256=feeRAijQqKylZgqe84nKhsFLycT5zIBm7mLIvdyGw4w,702
194
+ pytz/zoneinfo/America/North_Dakota/Beulah,sha256=qtgbqNu8M3AkHF2n-_oSps1pYT4SxgclbkkPKbXaBHs,2396
195
+ pytz/zoneinfo/America/North_Dakota/Center,sha256=9ZWbK9YKkquULyBUFS3Lr_idxbt7V7y4W4EO0Kn20sw,2396
196
+ pytz/zoneinfo/America/North_Dakota/New_Salem,sha256=DH_bsQfuUnK2obdb06KgisO4XLqht12BXdrgUsZZveg,2396
197
+ pytz/zoneinfo/America/Nuuk,sha256=KGXrMN-YkYpVCgLdpcfwMFQ77EsRAGsjUCG3yAUvVfw,1889
198
+ pytz/zoneinfo/America/Ojinaga,sha256=b38Q_7VdkCZzaVwb7OXuddihJAzUKPTTqXcmpBm1ntE,1524
199
+ pytz/zoneinfo/America/Panama,sha256=kayA_pdpMcSQ0FjIzotdcf-m1JYfbKE-qcFT8LC8zqA,182
200
+ pytz/zoneinfo/America/Pangnirtung,sha256=feOnxAN0N0r-M1qlkrA4JMyawoc0tqae0iiBCPDAs4k,2202
201
+ pytz/zoneinfo/America/Paramaribo,sha256=Z7UZvNlgd-qEUHjEPYXIkLNTgjMcCzk9EfUUEmUyd7M,248
202
+ pytz/zoneinfo/America/Phoenix,sha256=illz0sYuLL8lIPK0Tkou6dL0Vck_D0W_3rRTOvFYRmQ,360
203
+ pytz/zoneinfo/America/Port-au-Prince,sha256=09ZAJd4IOiMpfdpUuF1U44R_hRt6BvpAkFXOnYO9yOM,1434
204
+ pytz/zoneinfo/America/Port_of_Spain,sha256=hJHlV_-AGoMGUWuMpZRv9fLmghrzFHfrR9fRkcxaZJc,246
205
+ pytz/zoneinfo/America/Porto_Acre,sha256=0gpJUl46hQbp0P6Xj1S0NArIWeAryuuDXjsldvB5GHE,614
206
+ pytz/zoneinfo/America/Porto_Velho,sha256=uSMV2hZWj-VyBhFBwC950wcThfN3jq6KlycESmQTLOA,562
207
+ pytz/zoneinfo/America/Puerto_Rico,sha256=hJHlV_-AGoMGUWuMpZRv9fLmghrzFHfrR9fRkcxaZJc,246
208
+ pytz/zoneinfo/America/Punta_Arenas,sha256=tR5uIf1351AWFqrqNtmXnhQWnKREmJaZqKBzaWRVMTQ,1902
209
+ pytz/zoneinfo/America/Rainy_River,sha256=7P-_YQrneFcon7QKSTOnkiGjEppFDn3Z48MJ1qq8VBw,2868
210
+ pytz/zoneinfo/America/Rankin_Inlet,sha256=nXgqjL3O2BV0em-Xk8qVRRZb_X0yQmHE6vmSSvI9Kzc,2066
211
+ pytz/zoneinfo/America/Recife,sha256=bJ_HE0-JFio4-owpZ0pLO8U3ai0fiGu8QHL0DexLiLc,702
212
+ pytz/zoneinfo/America/Regina,sha256=yjqT08pHbICYe83H8JmtaDBvCFqRv7Tfze3Y8xuXukw,980
213
+ pytz/zoneinfo/America/Resolute,sha256=CnMU2dBI-63vt8-J0Q1Ropx-8b9pRCLjhvrycMIedGg,2066
214
+ pytz/zoneinfo/America/Rio_Branco,sha256=0gpJUl46hQbp0P6Xj1S0NArIWeAryuuDXjsldvB5GHE,614
215
+ pytz/zoneinfo/America/Rosario,sha256=uniNihhMHnr4XK4WpwiPUnrAT0YPmvzqB6f0hRLtXvY,1062
216
+ pytz/zoneinfo/America/Santa_Isabel,sha256=SluV7xzZm24LgMXSUVt1cD1AlE7y_bdE65HhDIdXLcs,2458
217
+ pytz/zoneinfo/America/Santarem,sha256=VmZP9S5pPucFxyqAOV908EmWXQZvgCgWLmlJJTUl0LE,588
218
+ pytz/zoneinfo/America/Santiago,sha256=0CDw13dCMUsoquMupoJgupkzAUNhDK6E0lVxURA7osA,2515
219
+ pytz/zoneinfo/America/Santo_Domingo,sha256=DKtaEj8fQ92ybITTWU4Bm160S9pzJmUVbjaWRnenxU4,458
220
+ pytz/zoneinfo/America/Sao_Paulo,sha256=BMBnRO4_4HjvO4t3njjrMGZr-ZPmegkvyvL8KPY6ZM4,1430
221
+ pytz/zoneinfo/America/Scoresbysund,sha256=K-qkiMCCFgOe8ccPMABA-lDjc9vb6wpluBOCVfiBdLI,1935
222
+ pytz/zoneinfo/America/Shiprock,sha256=MugZwApDs8NI9TnXANQlUE8guNBowWQY0m-ptpPndck,2460
223
+ pytz/zoneinfo/America/Sitka,sha256=aiS7Fk37hZpzZ9VkeJQeF-BqTLRC1QOTCgMAJwT8UxA,2329
224
+ pytz/zoneinfo/America/St_Barthelemy,sha256=hJHlV_-AGoMGUWuMpZRv9fLmghrzFHfrR9fRkcxaZJc,246
225
+ pytz/zoneinfo/America/St_Johns,sha256=r1-17uKv27eZ3JsVkw_DLZQbo6wvjuuVu7C2pDsmOgI,3655
226
+ pytz/zoneinfo/America/St_Kitts,sha256=hJHlV_-AGoMGUWuMpZRv9fLmghrzFHfrR9fRkcxaZJc,246
227
+ pytz/zoneinfo/America/St_Lucia,sha256=hJHlV_-AGoMGUWuMpZRv9fLmghrzFHfrR9fRkcxaZJc,246
228
+ pytz/zoneinfo/America/St_Thomas,sha256=hJHlV_-AGoMGUWuMpZRv9fLmghrzFHfrR9fRkcxaZJc,246
229
+ pytz/zoneinfo/America/St_Vincent,sha256=hJHlV_-AGoMGUWuMpZRv9fLmghrzFHfrR9fRkcxaZJc,246
230
+ pytz/zoneinfo/America/Swift_Current,sha256=RRKOF7vZC8VvYxD8PP4J1_hUPayKBP7Lu80avRkfPDY,560
231
+ pytz/zoneinfo/America/Tegucigalpa,sha256=EzOz7ntTlreMq69JZ2CcAb8Ps98V9bUMN480tpPIyw4,252
232
+ pytz/zoneinfo/America/Thule,sha256=8xuPRaZU8RgO5ECqFYHYmnHioc81sBOailkVu8Y02i8,1502
233
+ pytz/zoneinfo/America/Thunder_Bay,sha256=pYehoWB0Ofe6woPhgV8r26-5ZJpFPRjgbC5E5pltiI8,3494
234
+ pytz/zoneinfo/America/Tijuana,sha256=SluV7xzZm24LgMXSUVt1cD1AlE7y_bdE65HhDIdXLcs,2458
235
+ pytz/zoneinfo/America/Toronto,sha256=pYehoWB0Ofe6woPhgV8r26-5ZJpFPRjgbC5E5pltiI8,3494
236
+ pytz/zoneinfo/America/Tortola,sha256=hJHlV_-AGoMGUWuMpZRv9fLmghrzFHfrR9fRkcxaZJc,246
237
+ pytz/zoneinfo/America/Vancouver,sha256=sknKH0jSPWam-DHfM35qXs8Nam7d5TFlkUI9Sgxryyg,2892
238
+ pytz/zoneinfo/America/Virgin,sha256=hJHlV_-AGoMGUWuMpZRv9fLmghrzFHfrR9fRkcxaZJc,246
239
+ pytz/zoneinfo/America/Whitehorse,sha256=TrR6PCnYG-mSClBMohqlP8qnYhXMUsydI-L-quXFxyM,1614
240
+ pytz/zoneinfo/America/Winnipeg,sha256=7P-_YQrneFcon7QKSTOnkiGjEppFDn3Z48MJ1qq8VBw,2868
241
+ pytz/zoneinfo/America/Yakutat,sha256=tFwnKbvwhyyn4LNTAn5ye_JWDdxjCerNDt7oOwUwO2M,2305
242
+ pytz/zoneinfo/America/Yellowknife,sha256=-TkIfc3QlvaCf0p8COZ43Y1HRBAl-nARUi-JdXeK1vE,2332
243
+ pytz/zoneinfo/Antarctica/Casey,sha256=VeaLOxTfDyjfGXq5Ul95JEIMXNWHSW-0N3yOoS7VK-c,423
244
+ pytz/zoneinfo/Antarctica/Davis,sha256=XB12dEq0Q-3XkzBNTNC7G1fzH-WxxctIuZqI3zp8ypI,283
245
+ pytz/zoneinfo/Antarctica/DumontDUrville,sha256=nB36HBWZTdh3TlP0DLFNz1KRQ0aHIfHbp7LC4Urp9fA,172
246
+ pytz/zoneinfo/Antarctica/Macquarie,sha256=ie7RlaU8RHTorVVj-MX8StKMqx_oXf4UH2PUqpzcwe0,2260
247
+ pytz/zoneinfo/Antarctica/Mawson,sha256=EjIFbqRdr2ZJBaI1XvoWRptnnW1LFrlhydxDDuIQjSI,185
248
+ pytz/zoneinfo/Antarctica/McMurdo,sha256=gADjoyPo_QISQU6UJrAgcHp3HDaMoOFRdH-d23uBSyc,2437
249
+ pytz/zoneinfo/Antarctica/Palmer,sha256=HTZY0M8td7oUx5REPgRCHuqKg5V3fjJEi4lYBNL4Etg,1404
250
+ pytz/zoneinfo/Antarctica/Rothera,sha256=_9NY-f8vkozQYrjbUHP5YjcICg0-LuyA9PnIeK123RU,150
251
+ pytz/zoneinfo/Antarctica/South_Pole,sha256=gADjoyPo_QISQU6UJrAgcHp3HDaMoOFRdH-d23uBSyc,2437
252
+ pytz/zoneinfo/Antarctica/Syowa,sha256=oCKH7uafN8R1o-ijXGoT5U1JZxwvoLzJu_2Cqyi2hUM,151
253
+ pytz/zoneinfo/Antarctica/Troll,sha256=fjcYppwr1FnjEssee-RLgGOANzoUyfjse-RGK46PR2E,1148
254
+ pytz/zoneinfo/Antarctica/Vostok,sha256=KfftwdzK6PkMDz0d-D3z4HKIBgY9KqsqHnTnqsPMrUg,213
255
+ pytz/zoneinfo/Arctic/Longyearbyen,sha256=XuR19xoPwaMvrrhJ-MOcbnqmbW1B7HQrl7OnQ2s7BwE,2298
256
+ pytz/zoneinfo/Asia/Aden,sha256=oCKH7uafN8R1o-ijXGoT5U1JZxwvoLzJu_2Cqyi2hUM,151
257
+ pytz/zoneinfo/Asia/Almaty,sha256=lPLWXk2f1mWYRQZFkIrq_5HkhocsUBis0M-yhdDHcBQ,983
258
+ pytz/zoneinfo/Asia/Amman,sha256=Qv4cXXw7KBQWE882cgj0kjQ3wh1vpV1orJ2v2Jjxr2U,1433
259
+ pytz/zoneinfo/Asia/Anadyr,sha256=WqKnHo5IHSWZ08d2sS5ytHtv0MQMoczP3W9zbDDrbYU,1174
260
+ pytz/zoneinfo/Asia/Aqtau,sha256=4n654FZtDssXSfhQszjZG5OmtbE2zo1KbiWcYrFJg00,969
261
+ pytz/zoneinfo/Asia/Aqtobe,sha256=1oFHTb-ybcTqLXm0r1ZOVgdYMTHlGoNs-Pgvux50d3E,997
262
+ pytz/zoneinfo/Asia/Ashgabat,sha256=-sfGnRumio7_Bs8w9YH4xRDWgjB3wBeW7c0C56Qqk64,605
263
+ pytz/zoneinfo/Asia/Ashkhabad,sha256=-sfGnRumio7_Bs8w9YH4xRDWgjB3wBeW7c0C56Qqk64,605
264
+ pytz/zoneinfo/Asia/Atyrau,sha256=_U8COUIE9nG_HKddZE1Q0sPuz3rMwfjwmfnVDY_vSmg,977
265
+ pytz/zoneinfo/Asia/Baghdad,sha256=S-plKI4zCLqI0idGABEk3oRTazNyrIj2T98-EtWtZD8,969
266
+ pytz/zoneinfo/Asia/Bahrain,sha256=wklGY3WPGp-z1OUwb_KOHzRTwBndt1RfDg9Uttt36G4,185
267
+ pytz/zoneinfo/Asia/Baku,sha256=6_hq98SGG0j0JA8qYx96WcIMZSLW4w460QXh_OM_ccg,1213
268
+ pytz/zoneinfo/Asia/Bangkok,sha256=hf_5PVegQcFSS60CjS80C7h-TGOrfQ4ncm83N8VmZkk,185
269
+ pytz/zoneinfo/Asia/Barnaul,sha256=3zeUimLTMrIZE0vX6XHFvB3MoqExoVbE5CSm6GV0zf0,1207
270
+ pytz/zoneinfo/Asia/Beirut,sha256=_Z_2ZAg_iL9vU51JDB8CB04uXBDrf1kLIis-JnXaS2o,2154
271
+ pytz/zoneinfo/Asia/Bishkek,sha256=IOoUyjABILCkXu1rjCIqSwAufRYFklc5YAC4jdhVw6Q,969
272
+ pytz/zoneinfo/Asia/Brunei,sha256=D5qtyWJ_SM8bTQeJJIYhqqojxlVKbrFC1EYMDU9GzXQ,469
273
+ pytz/zoneinfo/Asia/Calcutta,sha256=6Qw0EDbLcgMgDik8s7UTJn4QSjmllPNeGVJU5rwKF88,285
274
+ pytz/zoneinfo/Asia/Chita,sha256=LbSlS23swFkANUScg8zkNR0imANWNfOIaYd39HbLdIQ,1207
275
+ pytz/zoneinfo/Asia/Choibalsan,sha256=qUkXRsTc_u7B90JxULSu7yzKbGtGfKcfEFIasGPC2ec,877
276
+ pytz/zoneinfo/Asia/Chongqing,sha256=ZP_C5DqUQ1oEPAQNHTr36S0DGtx453N68YYbqk7u8-Y,561
277
+ pytz/zoneinfo/Asia/Chungking,sha256=ZP_C5DqUQ1oEPAQNHTr36S0DGtx453N68YYbqk7u8-Y,561
278
+ pytz/zoneinfo/Asia/Colombo,sha256=w52L7bgT4m5hcgRuevIPY83xytfkBmkLhnKMwp16KsY,358
279
+ pytz/zoneinfo/Asia/Dacca,sha256=-xulJ2KVhvKp6rlZLMydpw7oXVirk-riEH-181xPE54,323
280
+ pytz/zoneinfo/Asia/Damascus,sha256=EthGheaHWmy5IrLCc9NmM3jvASQFHt8TsBF07I1tgbg,1873
281
+ pytz/zoneinfo/Asia/Dhaka,sha256=-xulJ2KVhvKp6rlZLMydpw7oXVirk-riEH-181xPE54,323
282
+ pytz/zoneinfo/Asia/Dili,sha256=2A9uFmwSwoFA5o2ek1LA0ucohPnM42ghWvD9D5TdnJk,257
283
+ pytz/zoneinfo/Asia/Dubai,sha256=pmdhPhaJRwKwONvxiZNGeFSICjlWzyY9JlFHv-H9upY,151
284
+ pytz/zoneinfo/Asia/Dushanbe,sha256=koYnnYWuFsBXd1vJfZsGdpwnbFHEwvkGBmSrrx3KIss,577
285
+ pytz/zoneinfo/Asia/Famagusta,sha256=CFrcygd8ude5x6OEtfM_Dw0KYHoxpPPzq46KoHVxjjc,2028
286
+ pytz/zoneinfo/Asia/Gaza,sha256=t0YxcUQL53VNKnKbKijn0OE_MaryEynonabse-iTtzs,3844
287
+ pytz/zoneinfo/Asia/Harbin,sha256=ZP_C5DqUQ1oEPAQNHTr36S0DGtx453N68YYbqk7u8-Y,561
288
+ pytz/zoneinfo/Asia/Hebron,sha256=6Y0USHKx-xoCxCr_WpCuM3olP1vUGnzrcnGiyQFcqdQ,3872
289
+ pytz/zoneinfo/Asia/Ho_Chi_Minh,sha256=Lnv1vpUNAXBo8v0b9d9AQpy-AEyO5Qa2Ig0PvDkjrmU,337
290
+ pytz/zoneinfo/Asia/Hong_Kong,sha256=al_O4kPlq5JpgkLYjEaZzrcgiiLul9NC0R5B69JVWhc,1233
291
+ pytz/zoneinfo/Asia/Hovd,sha256=Zn4PLGlD-URJDsbChor5bqWTzuAil2tbrGJW0j5TLbs,877
292
+ pytz/zoneinfo/Asia/Irkutsk,sha256=IVuoXCwdeI-KIUfFkEt6yBjqYP3V9GTrF-_WLnffFzk,1229
293
+ pytz/zoneinfo/Asia/Istanbul,sha256=Jk4wjndDta_uLWc8W1dWdjbavJJbsL5ROTmZboVnGKU,1933
294
+ pytz/zoneinfo/Asia/Jakarta,sha256=TvEzBvSzfzFCdOsMAZ0QgR95JA5xf3kAZONhy5gEXRE,383
295
+ pytz/zoneinfo/Asia/Jayapura,sha256=ihzUd-L8HUVqG-Na10MyPE-YYwjVFj-xerqjTN4EJZs,221
296
+ pytz/zoneinfo/Asia/Jerusalem,sha256=JUuWQmW5Tha0pJjw61Q5aN7CX0z4D7ops9OOSnda6Dc,2388
297
+ pytz/zoneinfo/Asia/Kabul,sha256=JZEbo8bSj_L7HnXUm2gAUlNlCvJlRJhFkSHCg5o3ggk,194
298
+ pytz/zoneinfo/Asia/Kamchatka,sha256=KY1PlJvRSNkY_5hyJBxj5DDweeYVQaBK05ZgL3kdcCY,1152
299
+ pytz/zoneinfo/Asia/Karachi,sha256=iB-mWMTXUyfBwAkZdz8_UmEw0xsgxIub-KNI7akzhkk,379
300
+ pytz/zoneinfo/Asia/Kashgar,sha256=F1ZOdZZDsVHwDJinksR-hjcqPzqOljvdreZIWFulJxY,151
301
+ pytz/zoneinfo/Asia/Kathmandu,sha256=_RsfeSWbCr8kM4YRJi7Xv6hAEiHW14IFhsXsfhbPjoM,198
302
+ pytz/zoneinfo/Asia/Katmandu,sha256=_RsfeSWbCr8kM4YRJi7Xv6hAEiHW14IFhsXsfhbPjoM,198
303
+ pytz/zoneinfo/Asia/Khandyga,sha256=bKfmw6k5qYDQsEHG3Mv-VYis3YhCeV7qijDxfxQNn_g,1257
304
+ pytz/zoneinfo/Asia/Kolkata,sha256=6Qw0EDbLcgMgDik8s7UTJn4QSjmllPNeGVJU5rwKF88,285
305
+ pytz/zoneinfo/Asia/Krasnoyarsk,sha256=D5KE_1wWSD2YdixDy8n3LBNaAlE1_y3TWXw6NrxFKKA,1193
306
+ pytz/zoneinfo/Asia/Kuala_Lumpur,sha256=XmeVImeqcJ8hJzm7TjAti1nWJAxawOqq7jIzDnHX2hI,401
307
+ pytz/zoneinfo/Asia/Kuching,sha256=D5qtyWJ_SM8bTQeJJIYhqqojxlVKbrFC1EYMDU9GzXQ,469
308
+ pytz/zoneinfo/Asia/Kuwait,sha256=oCKH7uafN8R1o-ijXGoT5U1JZxwvoLzJu_2Cqyi2hUM,151
309
+ pytz/zoneinfo/Asia/Macao,sha256=MvAkRyRsrA2r052ItlyF5bh2FheRjI0jPwg0uIiH2Yk,1227
310
+ pytz/zoneinfo/Asia/Macau,sha256=MvAkRyRsrA2r052ItlyF5bh2FheRjI0jPwg0uIiH2Yk,1227
311
+ pytz/zoneinfo/Asia/Magadan,sha256=HccEEXBQvMmLoC_JE-zP_MlLAZ1WmNLQLfM3tJt55M4,1208
312
+ pytz/zoneinfo/Asia/Makassar,sha256=OhJtCqSTEU-u5n0opBVO5Bu-wQzcYPy9S_6aAhJXgOw,254
313
+ pytz/zoneinfo/Asia/Manila,sha256=8xTSHFQuYVdW3ThdNqiWzVe6Fv75g_5rTQYURLvxrJ4,422
314
+ pytz/zoneinfo/Asia/Muscat,sha256=pmdhPhaJRwKwONvxiZNGeFSICjlWzyY9JlFHv-H9upY,151
315
+ pytz/zoneinfo/Asia/Nicosia,sha256=0Unm0IFT7HyGeQ7F3vTa_-klfysCgrulqFO6BD1plZU,2002
316
+ pytz/zoneinfo/Asia/Novokuznetsk,sha256=pyxxtSUtYDeVmFk0Cg-F33laZS0iKtde9_GJnL9f0KM,1151
317
+ pytz/zoneinfo/Asia/Novosibirsk,sha256=5K2-Gx15ThlHfolyW85S5zREtAcMjeHBYWK4E8x2LdY,1207
318
+ pytz/zoneinfo/Asia/Omsk,sha256=HyXIWItJXBKVHUzWcQPi1Mmd6ZLmZk-QhRUo9Kv2XOI,1193
319
+ pytz/zoneinfo/Asia/Oral,sha256=WQT4qRmC9RI_ll8zB9FvkAL8ezGb8qoqWd75GTlC7kQ,991
320
+ pytz/zoneinfo/Asia/Phnom_Penh,sha256=hf_5PVegQcFSS60CjS80C7h-TGOrfQ4ncm83N8VmZkk,185
321
+ pytz/zoneinfo/Asia/Pontianak,sha256=inOXwuKtjKv1z_eliPZSIqjSt6whtuxhPeG1YpjU_BQ,353
322
+ pytz/zoneinfo/Asia/Pyongyang,sha256=_-g3GnDAtfDX4XAktXH9jFouLUDmOovnjoOfvRpUDsE,237
323
+ pytz/zoneinfo/Asia/Qatar,sha256=wklGY3WPGp-z1OUwb_KOHzRTwBndt1RfDg9Uttt36G4,185
324
+ pytz/zoneinfo/Asia/Qostanay,sha256=HIjln8QIPNRU6MkWzyPi6vDrjlmVZ4XzFxcUHtXMi7s,1025
325
+ pytz/zoneinfo/Asia/Qyzylorda,sha256=JZLNN6NuLkqaWEeVaCZiW_gL6BrIFL9lr65iK7myVPg,1011
326
+ pytz/zoneinfo/Asia/Rangoon,sha256=_YHASq4Z5YcUILIdhEzg27CGLzarUHPDHs1Dj0QgNGM,254
327
+ pytz/zoneinfo/Asia/Riyadh,sha256=oCKH7uafN8R1o-ijXGoT5U1JZxwvoLzJu_2Cqyi2hUM,151
328
+ pytz/zoneinfo/Asia/Saigon,sha256=Lnv1vpUNAXBo8v0b9d9AQpy-AEyO5Qa2Ig0PvDkjrmU,337
329
+ pytz/zoneinfo/Asia/Sakhalin,sha256=xzAor82ihAe-yXEwC6OWiMzo9b6Z-oQl39NIkU5Hhbs,1188
330
+ pytz/zoneinfo/Asia/Samarkand,sha256=zJKSRt3lEvd6Qvg9b49QAyO4cTJyVnTKyPYcyudpHxk,563
331
+ pytz/zoneinfo/Asia/Seoul,sha256=LI9LsV3XcJC0l-KoQf8zI-y7rk-du57erS-N2Ptdi7Q,617
332
+ pytz/zoneinfo/Asia/Shanghai,sha256=ZP_C5DqUQ1oEPAQNHTr36S0DGtx453N68YYbqk7u8-Y,561
333
+ pytz/zoneinfo/Asia/Singapore,sha256=XmeVImeqcJ8hJzm7TjAti1nWJAxawOqq7jIzDnHX2hI,401
334
+ pytz/zoneinfo/Asia/Srednekolymsk,sha256=efaaT8iFHrcccp-VZKNMvtTuPLNjG5V9JH5KKHhH3SI,1194
335
+ pytz/zoneinfo/Asia/Taipei,sha256=DMmQwOpPql25ue3Nf8vAKKT4em06D1Z9rHbLIitxixk,761
336
+ pytz/zoneinfo/Asia/Tashkent,sha256=apRPy251fSRy_ixsg3BOZNmUbHdO86P5-PdgC1Xws7U,577
337
+ pytz/zoneinfo/Asia/Tbilisi,sha256=zQ-2bVq5_USUSbwN6q0qvWjD-HXkKaH4ifMVq1lEeIM,1021
338
+ pytz/zoneinfo/Asia/Tehran,sha256=Lb2H9BCBXtz819FL6E3gBA7w2ROiIgPgx-f08XpqkVo,1248
339
+ pytz/zoneinfo/Asia/Tel_Aviv,sha256=JUuWQmW5Tha0pJjw61Q5aN7CX0z4D7ops9OOSnda6Dc,2388
340
+ pytz/zoneinfo/Asia/Thimbu,sha256=G2nTQVEMmKlWt0B74_fUAL7KQ3YAu__J6HciiYs2IyU,189
341
+ pytz/zoneinfo/Asia/Thimphu,sha256=G2nTQVEMmKlWt0B74_fUAL7KQ3YAu__J6HciiYs2IyU,189
342
+ pytz/zoneinfo/Asia/Tokyo,sha256=oCueZgRNxcNcX3ZGdif9y6Su4cyVhga4XHdwlcrYLOs,309
343
+ pytz/zoneinfo/Asia/Tomsk,sha256=cr0ULZgWBnQfzDiJeYmqpA7Xo5QRzurvrHsrbZsnhOQ,1207
344
+ pytz/zoneinfo/Asia/Ujung_Pandang,sha256=OhJtCqSTEU-u5n0opBVO5Bu-wQzcYPy9S_6aAhJXgOw,254
345
+ pytz/zoneinfo/Asia/Ulaanbaatar,sha256=qUkXRsTc_u7B90JxULSu7yzKbGtGfKcfEFIasGPC2ec,877
346
+ pytz/zoneinfo/Asia/Ulan_Bator,sha256=qUkXRsTc_u7B90JxULSu7yzKbGtGfKcfEFIasGPC2ec,877
347
+ pytz/zoneinfo/Asia/Urumqi,sha256=F1ZOdZZDsVHwDJinksR-hjcqPzqOljvdreZIWFulJxY,151
348
+ pytz/zoneinfo/Asia/Ust-Nera,sha256=zsG8kgnw0Fcs5N2WwNTVmvWkTlpwf7Oo8y68HcXjYyw,1238
349
+ pytz/zoneinfo/Asia/Vientiane,sha256=hf_5PVegQcFSS60CjS80C7h-TGOrfQ4ncm83N8VmZkk,185
350
+ pytz/zoneinfo/Asia/Vladivostok,sha256=XMQLMh5SPbI6C4R3UO4KhbnG4hWVkHNedzCQeqxFk6A,1194
351
+ pytz/zoneinfo/Asia/Yakutsk,sha256=PPNrRGgg9jefOUM-6M8XqaIm-ElfmRZSWAtSGKLzNXQ,1193
352
+ pytz/zoneinfo/Asia/Yangon,sha256=_YHASq4Z5YcUILIdhEzg27CGLzarUHPDHs1Dj0QgNGM,254
353
+ pytz/zoneinfo/Asia/Yekaterinburg,sha256=4NyEW6Xjr4UsWPh63HIPI4G6GT_tVG1Xkgc2xbwGjzA,1229
354
+ pytz/zoneinfo/Asia/Yerevan,sha256=FM0pUA4NbTWBb_CsJ5KCLVrLoNmad7njBKqFrJBDoxE,1137
355
+ pytz/zoneinfo/Atlantic/Azores,sha256=66hDxaK8xFnktLMrpNxkD4r1gGkhS-PEpleuwzuGRA0,3442
356
+ pytz/zoneinfo/Atlantic/Bermuda,sha256=LNGKfMsnYvwImjTyzXrLhMOHHDu7qI67RbYNKvvI15I,2396
357
+ pytz/zoneinfo/Atlantic/Canary,sha256=ymK9ufqphvNjDK3hzikN4GfkcR3QeCBiPKyVc6FjlbA,1897
358
+ pytz/zoneinfo/Atlantic/Cape_Verde,sha256=o92pLdLFX_b9vUiq3rNpca4tupIO3dx9rNrnPcA8474,256
359
+ pytz/zoneinfo/Atlantic/Faeroe,sha256=NibdZPZtapnYR_myIZnMdTaSKGsOBGgujj0_T2NvAzs,1815
360
+ pytz/zoneinfo/Atlantic/Faroe,sha256=NibdZPZtapnYR_myIZnMdTaSKGsOBGgujj0_T2NvAzs,1815
361
+ pytz/zoneinfo/Atlantic/Jan_Mayen,sha256=XuR19xoPwaMvrrhJ-MOcbnqmbW1B7HQrl7OnQ2s7BwE,2298
362
+ pytz/zoneinfo/Atlantic/Madeira,sha256=lYY85MC5-GUKExm353ixwtZDxasYavTTWELvv5RXLxE,3377
363
+ pytz/zoneinfo/Atlantic/Reykjavik,sha256=0u-sTl8j2IyV1ywdtCgHFw9S9D3ZiiBa9akqkbny2Zc,148
364
+ pytz/zoneinfo/Atlantic/South_Georgia,sha256=I9SAcPPumy6Xf9P7dg2aE16oxwDIqyKFqinJTC-XsgM,150
365
+ pytz/zoneinfo/Atlantic/St_Helena,sha256=0u-sTl8j2IyV1ywdtCgHFw9S9D3ZiiBa9akqkbny2Zc,148
366
+ pytz/zoneinfo/Atlantic/Stanley,sha256=siEjXTAuTum_4XGtS98MBE34XW_5xgXShEX5OMnSFjo,1200
367
+ pytz/zoneinfo/Australia/ACT,sha256=QsOFdYWxbbL4_9R7oZ-qYPRzNA3o1P6TIOp76GFgWQY,2190
368
+ pytz/zoneinfo/Australia/Adelaide,sha256=ld2EbxU75oVgmPe703z-I6aqLg0Kmv62ZcCGzkT5R20,2208
369
+ pytz/zoneinfo/Australia/Brisbane,sha256=eW6Qzze2t0-speJmmvt1JMzbkSadIKdE84XHc7JUtGc,419
370
+ pytz/zoneinfo/Australia/Broken_Hill,sha256=3k_3ljTvS5GSfo7Xh6w71UgR3aAwYPBsnCJ-mlEYCqQ,2229
371
+ pytz/zoneinfo/Australia/Canberra,sha256=QsOFdYWxbbL4_9R7oZ-qYPRzNA3o1P6TIOp76GFgWQY,2190
372
+ pytz/zoneinfo/Australia/Currie,sha256=GLQSzgIfsWxOvmKOrhpfofWqINQf6h36NYy3mcq6gcg,2358
373
+ pytz/zoneinfo/Australia/Darwin,sha256=fn0IZhIW98FAnzLig-_GBtW5LA54jajdeeUzg4tCGvo,325
374
+ pytz/zoneinfo/Australia/Eucla,sha256=i1-XGG8I6E0dXIdWGF4DlkfDLWhiAxJ_3gMpt-nm_u4,456
375
+ pytz/zoneinfo/Australia/Hobart,sha256=GLQSzgIfsWxOvmKOrhpfofWqINQf6h36NYy3mcq6gcg,2358
376
+ pytz/zoneinfo/Australia/LHI,sha256=oyPFQzmRqWPrSXt9pNHQmEi_PvX11k2clknziOS6ud8,1846
377
+ pytz/zoneinfo/Australia/Lindeman,sha256=xM6Udx22oLNoLR1Y7GQhHOYov8nw3xQNqgc_NVQ2JK4,475
378
+ pytz/zoneinfo/Australia/Lord_Howe,sha256=oyPFQzmRqWPrSXt9pNHQmEi_PvX11k2clknziOS6ud8,1846
379
+ pytz/zoneinfo/Australia/Melbourne,sha256=lvx_MQcunMc6u2smIrl8X427bLsXvjkgpCSdjYCTNBM,2190
380
+ pytz/zoneinfo/Australia/NSW,sha256=QsOFdYWxbbL4_9R7oZ-qYPRzNA3o1P6TIOp76GFgWQY,2190
381
+ pytz/zoneinfo/Australia/North,sha256=fn0IZhIW98FAnzLig-_GBtW5LA54jajdeeUzg4tCGvo,325
382
+ pytz/zoneinfo/Australia/Perth,sha256=Al1DOUh4U_ofMUQSeVlzSyD3x7SUjP9dchSaBUGmeWg,446
383
+ pytz/zoneinfo/Australia/Queensland,sha256=eW6Qzze2t0-speJmmvt1JMzbkSadIKdE84XHc7JUtGc,419
384
+ pytz/zoneinfo/Australia/South,sha256=ld2EbxU75oVgmPe703z-I6aqLg0Kmv62ZcCGzkT5R20,2208
385
+ pytz/zoneinfo/Australia/Sydney,sha256=QsOFdYWxbbL4_9R7oZ-qYPRzNA3o1P6TIOp76GFgWQY,2190
386
+ pytz/zoneinfo/Australia/Tasmania,sha256=GLQSzgIfsWxOvmKOrhpfofWqINQf6h36NYy3mcq6gcg,2358
387
+ pytz/zoneinfo/Australia/Victoria,sha256=lvx_MQcunMc6u2smIrl8X427bLsXvjkgpCSdjYCTNBM,2190
388
+ pytz/zoneinfo/Australia/West,sha256=Al1DOUh4U_ofMUQSeVlzSyD3x7SUjP9dchSaBUGmeWg,446
389
+ pytz/zoneinfo/Australia/Yancowinna,sha256=3k_3ljTvS5GSfo7Xh6w71UgR3aAwYPBsnCJ-mlEYCqQ,2229
390
+ pytz/zoneinfo/Brazil/Acre,sha256=0gpJUl46hQbp0P6Xj1S0NArIWeAryuuDXjsldvB5GHE,614
391
+ pytz/zoneinfo/Brazil/DeNoronha,sha256=feeRAijQqKylZgqe84nKhsFLycT5zIBm7mLIvdyGw4w,702
392
+ pytz/zoneinfo/Brazil/East,sha256=BMBnRO4_4HjvO4t3njjrMGZr-ZPmegkvyvL8KPY6ZM4,1430
393
+ pytz/zoneinfo/Brazil/West,sha256=F6RLOOeOi9lymZiQmQ9pR8tFpPZ6EguNdPfOc6BhXDE,590
394
+ pytz/zoneinfo/CET,sha256=gS9Vrrbozend9HhuFetCVrIegs9fXSjaG60X2UVwysA,2933
395
+ pytz/zoneinfo/CST6CDT,sha256=_roybr6I6sIAF6cYdIxGxoRpoef153Fty48dQ6bm9oY,3592
396
+ pytz/zoneinfo/Canada/Atlantic,sha256=TZpmc5PwWoLfTfQoQ_b3U17BE2iVKSeNkR0Ho8mbTn8,3424
397
+ pytz/zoneinfo/Canada/Central,sha256=7P-_YQrneFcon7QKSTOnkiGjEppFDn3Z48MJ1qq8VBw,2868
398
+ pytz/zoneinfo/Canada/Eastern,sha256=pYehoWB0Ofe6woPhgV8r26-5ZJpFPRjgbC5E5pltiI8,3494
399
+ pytz/zoneinfo/Canada/Mountain,sha256=-TkIfc3QlvaCf0p8COZ43Y1HRBAl-nARUi-JdXeK1vE,2332
400
+ pytz/zoneinfo/Canada/Newfoundland,sha256=r1-17uKv27eZ3JsVkw_DLZQbo6wvjuuVu7C2pDsmOgI,3655
401
+ pytz/zoneinfo/Canada/Pacific,sha256=sknKH0jSPWam-DHfM35qXs8Nam7d5TFlkUI9Sgxryyg,2892
402
+ pytz/zoneinfo/Canada/Saskatchewan,sha256=yjqT08pHbICYe83H8JmtaDBvCFqRv7Tfze3Y8xuXukw,980
403
+ pytz/zoneinfo/Canada/Yukon,sha256=TrR6PCnYG-mSClBMohqlP8qnYhXMUsydI-L-quXFxyM,1614
404
+ pytz/zoneinfo/Chile/Continental,sha256=0CDw13dCMUsoquMupoJgupkzAUNhDK6E0lVxURA7osA,2515
405
+ pytz/zoneinfo/Chile/EasterIsland,sha256=QbubBs_xQlvKweAnurhyHjIK4ji77Gh4G-usXul6XVM,2219
406
+ pytz/zoneinfo/Cuba,sha256=HUQeAuKBsEkI5SLZjqynXICOUVOajkKzKH5r-Ov5Odc,2416
407
+ pytz/zoneinfo/EET,sha256=XDY-FBUddRyQHN8GxQLZ4awjuOlWlzlUdjv7OdXFNzA,2262
408
+ pytz/zoneinfo/EST,sha256=kayA_pdpMcSQ0FjIzotdcf-m1JYfbKE-qcFT8LC8zqA,182
409
+ pytz/zoneinfo/EST5EDT,sha256=6e0H177gx2qdRC0JHvHwFmj-58TyYBTAqGixn-bBipU,3552
410
+ pytz/zoneinfo/Egypt,sha256=Lft-GCLQhaSJm9VqUmsEFoHIS1Vhfa7pFJn9GZCpifs,2399
411
+ pytz/zoneinfo/Eire,sha256=QOjSocO1cihNo59vQkWxvIFPRSxE9apz0KARVx1czEM,3492
412
+ pytz/zoneinfo/Etc/GMT,sha256=bZ83iIPAefhsA4elVHqSxEmGnYBuB94QCEqwTwJJAY0,114
413
+ pytz/zoneinfo/Etc/GMT+0,sha256=bZ83iIPAefhsA4elVHqSxEmGnYBuB94QCEqwTwJJAY0,114
414
+ pytz/zoneinfo/Etc/GMT+1,sha256=1Qzl2X9rQ_RXEf11yH09wQZCr_ph6UdFP7E0yu9s-IQ,116
415
+ pytz/zoneinfo/Etc/GMT+10,sha256=JEQyQyQlkC0o6ZTdeVjZhCIOh6cK5TF7H00Pkls-sUI,117
416
+ pytz/zoneinfo/Etc/GMT+11,sha256=tWvcvYMFCaE60nJVvDrrov7stJvs1KQYOyrhl3dzcUs,117
417
+ pytz/zoneinfo/Etc/GMT+12,sha256=b70HEhErq8IJmq8x7cOZy4eR__3fq5uHHpjvPBEHqMA,117
418
+ pytz/zoneinfo/Etc/GMT+2,sha256=T6Ep5zhslBKbYaECFUB6gUKh3iTZPyMoW1kjhonxrUo,116
419
+ pytz/zoneinfo/Etc/GMT+3,sha256=QGoYrE04bUJ-OzL37dt2MZT5FxWNLpJDPVXgJbstYZA,116
420
+ pytz/zoneinfo/Etc/GMT+4,sha256=RWrkNki-wV7X-coe0VvufBe6LrWVpkPJgia5QQYEnBo,116
421
+ pytz/zoneinfo/Etc/GMT+5,sha256=oRmeC41dgYXT-zzyZIRKXN9IvdL2Da5nTuwmG2_prIA,116
422
+ pytz/zoneinfo/Etc/GMT+6,sha256=d6dAnwiejyFI2n7AzFlFW0aFAT6zYNEjBIEG0uu0sbQ,116
423
+ pytz/zoneinfo/Etc/GMT+7,sha256=TqjYbzd0YHpx1wisFg08J19wTpg6ztJLLongZY_lozs,116
424
+ pytz/zoneinfo/Etc/GMT+8,sha256=th_8bIMmYgRPCesBrbmBhRr0jQO7whd70LiY9HfwJyk,116
425
+ pytz/zoneinfo/Etc/GMT+9,sha256=Qq5E6iUS7JMJIymT7YoqlI8MtqtVy0mr9t6zWFtWc9Y,116
426
+ pytz/zoneinfo/Etc/GMT-0,sha256=bZ83iIPAefhsA4elVHqSxEmGnYBuB94QCEqwTwJJAY0,114
427
+ pytz/zoneinfo/Etc/GMT-1,sha256=73F1eU8uAQGP3mcoB2q99CjfManGFHk3fefljp9pYC4,117
428
+ pytz/zoneinfo/Etc/GMT-10,sha256=fKWWNwLBOp1OkKjtc1w9LIXJR1mTTD-JdvYflRy1IrU,118
429
+ pytz/zoneinfo/Etc/GMT-11,sha256=D2S79n6psa9t9_2vj5wIrFpHH2OJLcCKP6vtwzFZINY,118
430
+ pytz/zoneinfo/Etc/GMT-12,sha256=me4V6lmWI8gSr8H7N41WAD0Eww1anh_EF34Qr9UoSnI,118
431
+ pytz/zoneinfo/Etc/GMT-13,sha256=xbmbG1BQA6Dlpa_iUwEGyJxW4a3t6lmawdPKAE8vbR8,118
432
+ pytz/zoneinfo/Etc/GMT-14,sha256=PpXoREBh02qFpvxVMj2pV9IAzSQvBE7XPvnN9qSZ-Kc,118
433
+ pytz/zoneinfo/Etc/GMT-2,sha256=ve6hWLdeuiLhqagaWLqMD6HNybS1chRwjudfTZ2bYBE,117
434
+ pytz/zoneinfo/Etc/GMT-3,sha256=N77jILanuLDVkLsdujXZSu-dsHiwN5MIpwh7fMUifso,117
435
+ pytz/zoneinfo/Etc/GMT-4,sha256=LSko5fVHqPl5zfwjGqkbMa_OFnvtpT6o_4xYxNz9n5o,117
436
+ pytz/zoneinfo/Etc/GMT-5,sha256=uLaSR5Mb18HRTsAA5SveY9PAJ97dO8QzIWqNXe3wZb4,117
437
+ pytz/zoneinfo/Etc/GMT-6,sha256=JSN-RUAphJ50fpIv7cYC6unrtrz9S1Wma-piDHlGe7c,117
438
+ pytz/zoneinfo/Etc/GMT-7,sha256=vVAOF8xU9T9ESnw68c0SFXpcvkoopaiwTR0zbefHHSU,117
439
+ pytz/zoneinfo/Etc/GMT-8,sha256=S7xFQbFMpiDZy4v5L4D9fCrjRIzzoLC5p8Se23xi7us,117
440
+ pytz/zoneinfo/Etc/GMT-9,sha256=I5vHNmUK-Yyg_S1skFN44VGVzBgktjFgVQiDIKO4aMI,117
441
+ pytz/zoneinfo/Etc/GMT0,sha256=bZ83iIPAefhsA4elVHqSxEmGnYBuB94QCEqwTwJJAY0,114
442
+ pytz/zoneinfo/Etc/Greenwich,sha256=bZ83iIPAefhsA4elVHqSxEmGnYBuB94QCEqwTwJJAY0,114
443
+ pytz/zoneinfo/Etc/UCT,sha256=i4WEZ5GrLIpUY8g6W-PAQ-JXDXRIQ01BOYlp7Ufj5vI,114
444
+ pytz/zoneinfo/Etc/UTC,sha256=i4WEZ5GrLIpUY8g6W-PAQ-JXDXRIQ01BOYlp7Ufj5vI,114
445
+ pytz/zoneinfo/Etc/Universal,sha256=i4WEZ5GrLIpUY8g6W-PAQ-JXDXRIQ01BOYlp7Ufj5vI,114
446
+ pytz/zoneinfo/Etc/Zulu,sha256=i4WEZ5GrLIpUY8g6W-PAQ-JXDXRIQ01BOYlp7Ufj5vI,114
447
+ pytz/zoneinfo/Europe/Amsterdam,sha256=gS9Vrrbozend9HhuFetCVrIegs9fXSjaG60X2UVwysA,2933
448
+ pytz/zoneinfo/Europe/Andorra,sha256=gTB5jCQmvIw3JJi1_vAcOYuhtzPBR6RXUx9gVV6p6ug,1742
449
+ pytz/zoneinfo/Europe/Astrakhan,sha256=ZeGDZjwVVRoeR-J642zEnN26BPL58ViTJLbwnk7pLXk,1151
450
+ pytz/zoneinfo/Europe/Athens,sha256=XDY-FBUddRyQHN8GxQLZ4awjuOlWlzlUdjv7OdXFNzA,2262
451
+ pytz/zoneinfo/Europe/Belfast,sha256=yFSVBw3KQmh99qHD7ngKJ8vLgvGER1Dqb2QoM6RNKbQ,3664
452
+ pytz/zoneinfo/Europe/Belgrade,sha256=OpWtsGFWBE_S-mYoQcAmjCta9HwbGQANnSmVY9OHCTo,1920
453
+ pytz/zoneinfo/Europe/Berlin,sha256=XuR19xoPwaMvrrhJ-MOcbnqmbW1B7HQrl7OnQ2s7BwE,2298
454
+ pytz/zoneinfo/Europe/Bratislava,sha256=G9fdhUXmzx651BnyZ6V7AOYIV9EV5aMJMm44eJaLLZw,2301
455
+ pytz/zoneinfo/Europe/Brussels,sha256=gS9Vrrbozend9HhuFetCVrIegs9fXSjaG60X2UVwysA,2933
456
+ pytz/zoneinfo/Europe/Bucharest,sha256=nfg6-bU2D6DMEWb9EMIBR5kxnNsbDSx0UKfHH_ZzqFc,2184
457
+ pytz/zoneinfo/Europe/Budapest,sha256=lNwqxWciBvw9ei81VQwIKHbC_ZDJjpgHU6HFg4wCUkY,2368
458
+ pytz/zoneinfo/Europe/Busingen,sha256=K5QY7Ujj2VUchKR4bhhb0hgdAJhmwED71ykXDQOGKe8,1909
459
+ pytz/zoneinfo/Europe/Chisinau,sha256=p1J_rqFE13pL8cpBRrEFe-teCI8f0fKK4uTUy_4diF4,2390
460
+ pytz/zoneinfo/Europe/Copenhagen,sha256=XuR19xoPwaMvrrhJ-MOcbnqmbW1B7HQrl7OnQ2s7BwE,2298
461
+ pytz/zoneinfo/Europe/Dublin,sha256=QOjSocO1cihNo59vQkWxvIFPRSxE9apz0KARVx1czEM,3492
462
+ pytz/zoneinfo/Europe/Gibraltar,sha256=a87WpaBlvxI4gAU9OpQOkN8VUJbirVWYf-VfFLTIoS4,3068
463
+ pytz/zoneinfo/Europe/Guernsey,sha256=yFSVBw3KQmh99qHD7ngKJ8vLgvGER1Dqb2QoM6RNKbQ,3664
464
+ pytz/zoneinfo/Europe/Helsinki,sha256=GEkB7LsVhmegt7YuuWheCDvDGC7b7Nw9bTdDGS9qkJc,1900
465
+ pytz/zoneinfo/Europe/Isle_of_Man,sha256=yFSVBw3KQmh99qHD7ngKJ8vLgvGER1Dqb2QoM6RNKbQ,3664
466
+ pytz/zoneinfo/Europe/Istanbul,sha256=Jk4wjndDta_uLWc8W1dWdjbavJJbsL5ROTmZboVnGKU,1933
467
+ pytz/zoneinfo/Europe/Jersey,sha256=yFSVBw3KQmh99qHD7ngKJ8vLgvGER1Dqb2QoM6RNKbQ,3664
468
+ pytz/zoneinfo/Europe/Kaliningrad,sha256=s7GXSe1YvMcs7AiUhHNTA6I4nAOQn_Kmz_ZqJYO-LMM,1493
469
+ pytz/zoneinfo/Europe/Kiev,sha256=-wrpG9jPuIKFP1NgBVvnxsMRf9L_h5z3J6Q3jj1AwNM,2120
470
+ pytz/zoneinfo/Europe/Kirov,sha256=P7T2Zf5Eo6o4L4Dbg_BfiFjUgTj0dQXlrwY-QZ1eBVk,1185
471
+ pytz/zoneinfo/Europe/Kyiv,sha256=-wrpG9jPuIKFP1NgBVvnxsMRf9L_h5z3J6Q3jj1AwNM,2120
472
+ pytz/zoneinfo/Europe/Lisbon,sha256=krB8skaJImv5NDCNHxvTPDBqpNphDFLNW84lB3lgUCw,3527
473
+ pytz/zoneinfo/Europe/Ljubljana,sha256=OpWtsGFWBE_S-mYoQcAmjCta9HwbGQANnSmVY9OHCTo,1920
474
+ pytz/zoneinfo/Europe/London,sha256=yFSVBw3KQmh99qHD7ngKJ8vLgvGER1Dqb2QoM6RNKbQ,3664
475
+ pytz/zoneinfo/Europe/Luxembourg,sha256=gS9Vrrbozend9HhuFetCVrIegs9fXSjaG60X2UVwysA,2933
476
+ pytz/zoneinfo/Europe/Madrid,sha256=mkLX03rW3t0tmzKBIPe_noUvaFDErwC6_5ZPZZsWHOo,2614
477
+ pytz/zoneinfo/Europe/Malta,sha256=EhKcbPL47765tWAiQ57cusaK2TaIQqZCgtJoEZs3Ud0,2620
478
+ pytz/zoneinfo/Europe/Mariehamn,sha256=GEkB7LsVhmegt7YuuWheCDvDGC7b7Nw9bTdDGS9qkJc,1900
479
+ pytz/zoneinfo/Europe/Minsk,sha256=KgPm0fHycntgd3xbTmmDl4O13Xh_9e2zUnd8XFSU29o,1307
480
+ pytz/zoneinfo/Europe/Monaco,sha256=q3ehSIot1GZ6TyMHIjbg0oRf4ghAXuwbSDSYVim6evg,2962
481
+ pytz/zoneinfo/Europe/Moscow,sha256=KmkofRcj6T8Ph28PJChm8JVp13uRvef6TZ0GuPzUiDw,1535
482
+ pytz/zoneinfo/Europe/Nicosia,sha256=0Unm0IFT7HyGeQ7F3vTa_-klfysCgrulqFO6BD1plZU,2002
483
+ pytz/zoneinfo/Europe/Oslo,sha256=XuR19xoPwaMvrrhJ-MOcbnqmbW1B7HQrl7OnQ2s7BwE,2298
484
+ pytz/zoneinfo/Europe/Paris,sha256=q3ehSIot1GZ6TyMHIjbg0oRf4ghAXuwbSDSYVim6evg,2962
485
+ pytz/zoneinfo/Europe/Podgorica,sha256=OpWtsGFWBE_S-mYoQcAmjCta9HwbGQANnSmVY9OHCTo,1920
486
+ pytz/zoneinfo/Europe/Prague,sha256=G9fdhUXmzx651BnyZ6V7AOYIV9EV5aMJMm44eJaLLZw,2301
487
+ pytz/zoneinfo/Europe/Riga,sha256=hJ2_0m1taW9IuA-hMyP5n-WX7YOrR0heKszJhgljRWk,2198
488
+ pytz/zoneinfo/Europe/Rome,sha256=1a3oLMSiMpSbh9QxV8hLLDVbZqash89iUO1urYC1AY8,2641
489
+ pytz/zoneinfo/Europe/Samara,sha256=nXL0IxbT6qu10CNuaDHxx4W1OaAnaaKTtIJ9N9URMoU,1201
490
+ pytz/zoneinfo/Europe/San_Marino,sha256=1a3oLMSiMpSbh9QxV8hLLDVbZqash89iUO1urYC1AY8,2641
491
+ pytz/zoneinfo/Europe/Sarajevo,sha256=OpWtsGFWBE_S-mYoQcAmjCta9HwbGQANnSmVY9OHCTo,1920
492
+ pytz/zoneinfo/Europe/Saratov,sha256=ygwjvXN13TgaWxjg6ysWEnHWNxwrVtkEbrk8t9bzVVw,1169
493
+ pytz/zoneinfo/Europe/Simferopol,sha256=tzl7xdNVSZprNCul4YE5LSpoR9JoujmOq8VbbB8wHic,1469
494
+ pytz/zoneinfo/Europe/Skopje,sha256=OpWtsGFWBE_S-mYoQcAmjCta9HwbGQANnSmVY9OHCTo,1920
495
+ pytz/zoneinfo/Europe/Sofia,sha256=hCQKXfMNrnA5xHNw_uzTjKzVw4-Bvsq5oGO4yUCv5tY,2077
496
+ pytz/zoneinfo/Europe/Stockholm,sha256=XuR19xoPwaMvrrhJ-MOcbnqmbW1B7HQrl7OnQ2s7BwE,2298
497
+ pytz/zoneinfo/Europe/Tallinn,sha256=4a6JC0aIpMzqIV7O35zoG0LLJwkQq5AoXZ2ivkic6-w,2148
498
+ pytz/zoneinfo/Europe/Tirane,sha256=ztlZyCS9WCXeVW8nBun3Tyi5HUY0EtFbiBbEc1gucuw,2084
499
+ pytz/zoneinfo/Europe/Tiraspol,sha256=p1J_rqFE13pL8cpBRrEFe-teCI8f0fKK4uTUy_4diF4,2390
500
+ pytz/zoneinfo/Europe/Ulyanovsk,sha256=c8Ad5p7CKj_1cCA7lVRpcPqbQXGYaX83cuu6uIFx-Bg,1253
501
+ pytz/zoneinfo/Europe/Uzhgorod,sha256=-wrpG9jPuIKFP1NgBVvnxsMRf9L_h5z3J6Q3jj1AwNM,2120
502
+ pytz/zoneinfo/Europe/Vaduz,sha256=K5QY7Ujj2VUchKR4bhhb0hgdAJhmwED71ykXDQOGKe8,1909
503
+ pytz/zoneinfo/Europe/Vatican,sha256=1a3oLMSiMpSbh9QxV8hLLDVbZqash89iUO1urYC1AY8,2641
504
+ pytz/zoneinfo/Europe/Vienna,sha256=ZmI3kADE6bnrJEccqh73XXBY36L1G4DkpiTQImtNrUk,2200
505
+ pytz/zoneinfo/Europe/Vilnius,sha256=UFzRX3orCTB8d9IzlxJPy5eUA2oBPuCu1UJl-2D7C3U,2162
506
+ pytz/zoneinfo/Europe/Volgograd,sha256=RgFvt7mzZ-TtIKL9BVHmoNZLIeLIuiDdXeY10g2_vks,1193
507
+ pytz/zoneinfo/Europe/Warsaw,sha256=TiLDPbeVF0ckgLVEkaSeDaKZ8wctdJDOl_HE_Wd5rKs,2654
508
+ pytz/zoneinfo/Europe/Zagreb,sha256=OpWtsGFWBE_S-mYoQcAmjCta9HwbGQANnSmVY9OHCTo,1920
509
+ pytz/zoneinfo/Europe/Zaporozhye,sha256=-wrpG9jPuIKFP1NgBVvnxsMRf9L_h5z3J6Q3jj1AwNM,2120
510
+ pytz/zoneinfo/Europe/Zurich,sha256=K5QY7Ujj2VUchKR4bhhb0hgdAJhmwED71ykXDQOGKe8,1909
511
+ pytz/zoneinfo/Factory,sha256=aFFlKx93HXoJoF4SSuTlD8cZtJA-ne5oKzAa6eX2V4k,116
512
+ pytz/zoneinfo/GB,sha256=yFSVBw3KQmh99qHD7ngKJ8vLgvGER1Dqb2QoM6RNKbQ,3664
513
+ pytz/zoneinfo/GB-Eire,sha256=yFSVBw3KQmh99qHD7ngKJ8vLgvGER1Dqb2QoM6RNKbQ,3664
514
+ pytz/zoneinfo/GMT,sha256=bZ83iIPAefhsA4elVHqSxEmGnYBuB94QCEqwTwJJAY0,114
515
+ pytz/zoneinfo/GMT+0,sha256=bZ83iIPAefhsA4elVHqSxEmGnYBuB94QCEqwTwJJAY0,114
516
+ pytz/zoneinfo/GMT-0,sha256=bZ83iIPAefhsA4elVHqSxEmGnYBuB94QCEqwTwJJAY0,114
517
+ pytz/zoneinfo/GMT0,sha256=bZ83iIPAefhsA4elVHqSxEmGnYBuB94QCEqwTwJJAY0,114
518
+ pytz/zoneinfo/Greenwich,sha256=bZ83iIPAefhsA4elVHqSxEmGnYBuB94QCEqwTwJJAY0,114
519
+ pytz/zoneinfo/HST,sha256=fwPRv1Jk56sCOi75uZfd_Iy2k2aSQHx3B2K5xUlSPzM,329
520
+ pytz/zoneinfo/Hongkong,sha256=al_O4kPlq5JpgkLYjEaZzrcgiiLul9NC0R5B69JVWhc,1233
521
+ pytz/zoneinfo/Iceland,sha256=0u-sTl8j2IyV1ywdtCgHFw9S9D3ZiiBa9akqkbny2Zc,148
522
+ pytz/zoneinfo/Indian/Antananarivo,sha256=yJsuJTqJJqbOz37_NOS_zbf-JNr_IthHGMMN7sDqSWg,265
523
+ pytz/zoneinfo/Indian/Chagos,sha256=2errXzKdFIcpU0L-XRhSHxhNabIzbI5lXV3Pq6lt40Y,185
524
+ pytz/zoneinfo/Indian/Christmas,sha256=hf_5PVegQcFSS60CjS80C7h-TGOrfQ4ncm83N8VmZkk,185
525
+ pytz/zoneinfo/Indian/Cocos,sha256=_YHASq4Z5YcUILIdhEzg27CGLzarUHPDHs1Dj0QgNGM,254
526
+ pytz/zoneinfo/Indian/Comoro,sha256=yJsuJTqJJqbOz37_NOS_zbf-JNr_IthHGMMN7sDqSWg,265
527
+ pytz/zoneinfo/Indian/Kerguelen,sha256=F73ffVfBoUoHre0-DwsiQrYJcLpPOW-JJGk3n88lM5U,185
528
+ pytz/zoneinfo/Indian/Mahe,sha256=pmdhPhaJRwKwONvxiZNGeFSICjlWzyY9JlFHv-H9upY,151
529
+ pytz/zoneinfo/Indian/Maldives,sha256=F73ffVfBoUoHre0-DwsiQrYJcLpPOW-JJGk3n88lM5U,185
530
+ pytz/zoneinfo/Indian/Mauritius,sha256=Znqrc1chimlciJsYBOl0NvIHnrNdCxncGxWczq1PBeI,227
531
+ pytz/zoneinfo/Indian/Mayotte,sha256=yJsuJTqJJqbOz37_NOS_zbf-JNr_IthHGMMN7sDqSWg,265
532
+ pytz/zoneinfo/Indian/Reunion,sha256=pmdhPhaJRwKwONvxiZNGeFSICjlWzyY9JlFHv-H9upY,151
533
+ pytz/zoneinfo/Iran,sha256=Lb2H9BCBXtz819FL6E3gBA7w2ROiIgPgx-f08XpqkVo,1248
534
+ pytz/zoneinfo/Israel,sha256=JUuWQmW5Tha0pJjw61Q5aN7CX0z4D7ops9OOSnda6Dc,2388
535
+ pytz/zoneinfo/Jamaica,sha256=wlagieUPRf5-beie-h7QsONbNzjGsm8vMs8uf28pw28,482
536
+ pytz/zoneinfo/Japan,sha256=oCueZgRNxcNcX3ZGdif9y6Su4cyVhga4XHdwlcrYLOs,309
537
+ pytz/zoneinfo/Kwajalein,sha256=TmZ_0f-ySQ-saBAlRXV0f49Itwne51VBXn6rWcrWqHQ,302
538
+ pytz/zoneinfo/Libya,sha256=W1dptGD70T7ppGoo0fczFQeDiIp0nultLNPV66MwB2c,625
539
+ pytz/zoneinfo/MET,sha256=gS9Vrrbozend9HhuFetCVrIegs9fXSjaG60X2UVwysA,2933
540
+ pytz/zoneinfo/MST,sha256=illz0sYuLL8lIPK0Tkou6dL0Vck_D0W_3rRTOvFYRmQ,360
541
+ pytz/zoneinfo/MST7MDT,sha256=MugZwApDs8NI9TnXANQlUE8guNBowWQY0m-ptpPndck,2460
542
+ pytz/zoneinfo/Mexico/BajaNorte,sha256=SluV7xzZm24LgMXSUVt1cD1AlE7y_bdE65HhDIdXLcs,2458
543
+ pytz/zoneinfo/Mexico/BajaSur,sha256=BWH2NqVPA1PsyELPN_2BF8KllrsmQkqg1eujsQvnnx8,1060
544
+ pytz/zoneinfo/Mexico/General,sha256=Uog2-FMWz2o12jR6sK9vemJamLeo6OEFMQR3s0xTxkc,1222
545
+ pytz/zoneinfo/NZ,sha256=gADjoyPo_QISQU6UJrAgcHp3HDaMoOFRdH-d23uBSyc,2437
546
+ pytz/zoneinfo/NZ-CHAT,sha256=xhexVc5lfJ_qAv2d3HrII6lfRSxKZYBAjY2zpYkCGE8,2054
547
+ pytz/zoneinfo/Navajo,sha256=MugZwApDs8NI9TnXANQlUE8guNBowWQY0m-ptpPndck,2460
548
+ pytz/zoneinfo/PRC,sha256=ZP_C5DqUQ1oEPAQNHTr36S0DGtx453N68YYbqk7u8-Y,561
549
+ pytz/zoneinfo/PST8PDT,sha256=aJd7ua1tGG_vxser02AQpm4wAI3LLTdgh6QcSYYecmg,2852
550
+ pytz/zoneinfo/Pacific/Apia,sha256=M3QKsp75Q7H1X3aeE_9ZqQli9aEkNCCQctZQ5sEKu00,598
551
+ pytz/zoneinfo/Pacific/Auckland,sha256=gADjoyPo_QISQU6UJrAgcHp3HDaMoOFRdH-d23uBSyc,2437
552
+ pytz/zoneinfo/Pacific/Bougainville,sha256=hWE86eXnNx-vABbp7-YSIqWyecHPMIWLftVloAoPhL8,254
553
+ pytz/zoneinfo/Pacific/Chatham,sha256=xhexVc5lfJ_qAv2d3HrII6lfRSxKZYBAjY2zpYkCGE8,2054
554
+ pytz/zoneinfo/Pacific/Chuuk,sha256=nB36HBWZTdh3TlP0DLFNz1KRQ0aHIfHbp7LC4Urp9fA,172
555
+ pytz/zoneinfo/Pacific/Easter,sha256=QbubBs_xQlvKweAnurhyHjIK4ji77Gh4G-usXul6XVM,2219
556
+ pytz/zoneinfo/Pacific/Efate,sha256=oSxNcQYx5-1FU2_yHzHI-hT-dMJcPxzy4XmdI1UxXAo,524
557
+ pytz/zoneinfo/Pacific/Enderbury,sha256=HNTAKrsH_R2W3QRlKcmNld5KcXdP0ygXCjEovc1i-6Q,220
558
+ pytz/zoneinfo/Pacific/Fakaofo,sha256=qOodpTMKjztvZIXVLe_f_kZ6WcHl9fCLE9ZsyvdFKLI,186
559
+ pytz/zoneinfo/Pacific/Fiji,sha256=jB5FbOsCnHVQQ2ohPiWEQUPhG6JybB3Nog3qT6WJQ0I,564
560
+ pytz/zoneinfo/Pacific/Funafuti,sha256=UyaKimsR8LjgL8Z2g65I0HTvr3tMZuA2wUeBB6_Zp9c,152
561
+ pytz/zoneinfo/Pacific/Galapagos,sha256=_GJUYOjSiIjoNBO2qdq23isLMJ4NCVk3DKIRGeDc8BA,224
562
+ pytz/zoneinfo/Pacific/Gambier,sha256=gAS7gr1HH_re0uYnL6eWo5KGJ-B5QaiM8mV2cY5mQxE,150
563
+ pytz/zoneinfo/Pacific/Guadalcanal,sha256=M4kTWqaSQaV1AMhyLSvmwoBJF7X9icrILbvQJwp940g,152
564
+ pytz/zoneinfo/Pacific/Guam,sha256=Ex9znmf6rNfGze6gNpZJCMr1TT4rkl2SnrhecrdJufI,494
565
+ pytz/zoneinfo/Pacific/Honolulu,sha256=fwPRv1Jk56sCOi75uZfd_Iy2k2aSQHx3B2K5xUlSPzM,329
566
+ pytz/zoneinfo/Pacific/Johnston,sha256=fwPRv1Jk56sCOi75uZfd_Iy2k2aSQHx3B2K5xUlSPzM,329
567
+ pytz/zoneinfo/Pacific/Kanton,sha256=HNTAKrsH_R2W3QRlKcmNld5KcXdP0ygXCjEovc1i-6Q,220
568
+ pytz/zoneinfo/Pacific/Kiritimati,sha256=hYk1Ooz-Lj1PuZCbNV2WJIvOLtCwSwq2u63cb1Z-3NQ,224
569
+ pytz/zoneinfo/Pacific/Kosrae,sha256=Q0jrb4zeDrd61bU4V8TqjMc0Iep8rWZyZqJ0uqsunxs,337
570
+ pytz/zoneinfo/Pacific/Kwajalein,sha256=TmZ_0f-ySQ-saBAlRXV0f49Itwne51VBXn6rWcrWqHQ,302
571
+ pytz/zoneinfo/Pacific/Majuro,sha256=UyaKimsR8LjgL8Z2g65I0HTvr3tMZuA2wUeBB6_Zp9c,152
572
+ pytz/zoneinfo/Pacific/Marquesas,sha256=FTxPJTWtk48LVb3N2U64KLpLsmvu0DQBubTCg-dvyGM,159
573
+ pytz/zoneinfo/Pacific/Midway,sha256=fCYrYphYY6rUfxOw712y5cyRe104AC3pouqD3bCINFg,175
574
+ pytz/zoneinfo/Pacific/Nauru,sha256=9ASKgLHB-8nsTEK1ApzfTH0yQtbNAmGX-JI7uHZiqnA,238
575
+ pytz/zoneinfo/Pacific/Niue,sha256=OllXxukncR7a-SMmdFox5az1xpIPMhbahQhtObmpuDM,189
576
+ pytz/zoneinfo/Pacific/Norfolk,sha256=DMdX1Bm18lzNuiCWzwfeHUMRGXPS8v5AWnh-_EX_AZw,866
577
+ pytz/zoneinfo/Pacific/Noumea,sha256=tkHxxnxsXTOqz3YzWi0mkhTCIONzg-W7EpSRMdPjKdQ,290
578
+ pytz/zoneinfo/Pacific/Pago_Pago,sha256=fCYrYphYY6rUfxOw712y5cyRe104AC3pouqD3bCINFg,175
579
+ pytz/zoneinfo/Pacific/Palau,sha256=aN2HbT0reqwKrtLKDK9M2zb0d0ikdNlTrrntVxdH66o,166
580
+ pytz/zoneinfo/Pacific/Pitcairn,sha256=U4jAUuvsRNoy8XrPa16YpcXCcqHJY0u6JvCNgPEWO1c,188
581
+ pytz/zoneinfo/Pacific/Pohnpei,sha256=M4kTWqaSQaV1AMhyLSvmwoBJF7X9icrILbvQJwp940g,152
582
+ pytz/zoneinfo/Pacific/Ponape,sha256=M4kTWqaSQaV1AMhyLSvmwoBJF7X9icrILbvQJwp940g,152
583
+ pytz/zoneinfo/Pacific/Port_Moresby,sha256=nB36HBWZTdh3TlP0DLFNz1KRQ0aHIfHbp7LC4Urp9fA,172
584
+ pytz/zoneinfo/Pacific/Rarotonga,sha256=wPEsoXbyDnuhfzkgLvUqhSzrMx_FD42uAPluSPMh3Bc,589
585
+ pytz/zoneinfo/Pacific/Saipan,sha256=Ex9znmf6rNfGze6gNpZJCMr1TT4rkl2SnrhecrdJufI,494
586
+ pytz/zoneinfo/Pacific/Samoa,sha256=fCYrYphYY6rUfxOw712y5cyRe104AC3pouqD3bCINFg,175
587
+ pytz/zoneinfo/Pacific/Tahiti,sha256=BRff9G3E-iWKhOWR1Wu02Z0iMgjrwDXV-XNrqItXdTY,151
588
+ pytz/zoneinfo/Pacific/Tarawa,sha256=UyaKimsR8LjgL8Z2g65I0HTvr3tMZuA2wUeBB6_Zp9c,152
589
+ pytz/zoneinfo/Pacific/Tongatapu,sha256=OppBZqTAZib9HY7U9AC-JavO7m6NxPGUtUfPQAl9oBY,358
590
+ pytz/zoneinfo/Pacific/Truk,sha256=nB36HBWZTdh3TlP0DLFNz1KRQ0aHIfHbp7LC4Urp9fA,172
591
+ pytz/zoneinfo/Pacific/Wake,sha256=UyaKimsR8LjgL8Z2g65I0HTvr3tMZuA2wUeBB6_Zp9c,152
592
+ pytz/zoneinfo/Pacific/Wallis,sha256=UyaKimsR8LjgL8Z2g65I0HTvr3tMZuA2wUeBB6_Zp9c,152
593
+ pytz/zoneinfo/Pacific/Yap,sha256=nB36HBWZTdh3TlP0DLFNz1KRQ0aHIfHbp7LC4Urp9fA,172
594
+ pytz/zoneinfo/Poland,sha256=TiLDPbeVF0ckgLVEkaSeDaKZ8wctdJDOl_HE_Wd5rKs,2654
595
+ pytz/zoneinfo/Portugal,sha256=krB8skaJImv5NDCNHxvTPDBqpNphDFLNW84lB3lgUCw,3527
596
+ pytz/zoneinfo/ROC,sha256=DMmQwOpPql25ue3Nf8vAKKT4em06D1Z9rHbLIitxixk,761
597
+ pytz/zoneinfo/ROK,sha256=LI9LsV3XcJC0l-KoQf8zI-y7rk-du57erS-N2Ptdi7Q,617
598
+ pytz/zoneinfo/Singapore,sha256=XmeVImeqcJ8hJzm7TjAti1nWJAxawOqq7jIzDnHX2hI,401
599
+ pytz/zoneinfo/Turkey,sha256=Jk4wjndDta_uLWc8W1dWdjbavJJbsL5ROTmZboVnGKU,1933
600
+ pytz/zoneinfo/UCT,sha256=i4WEZ5GrLIpUY8g6W-PAQ-JXDXRIQ01BOYlp7Ufj5vI,114
601
+ pytz/zoneinfo/US/Alaska,sha256=oZA1NSPS2BWdymYpnCHFO8BlYVS-ll5KLg2Ez9CbETs,2371
602
+ pytz/zoneinfo/US/Aleutian,sha256=IB1DhwJQAKbhPJ9jHLf8zW5Dad7HIkBS-dhv64E1OlM,2356
603
+ pytz/zoneinfo/US/Arizona,sha256=illz0sYuLL8lIPK0Tkou6dL0Vck_D0W_3rRTOvFYRmQ,360
604
+ pytz/zoneinfo/US/Central,sha256=_roybr6I6sIAF6cYdIxGxoRpoef153Fty48dQ6bm9oY,3592
605
+ pytz/zoneinfo/US/East-Indiana,sha256=kNKy9Kj9ICsiYYfCCbAggzMA7exf-GpGPMxoXocHUyw,1682
606
+ pytz/zoneinfo/US/Eastern,sha256=6e0H177gx2qdRC0JHvHwFmj-58TyYBTAqGixn-bBipU,3552
607
+ pytz/zoneinfo/US/Hawaii,sha256=fwPRv1Jk56sCOi75uZfd_Iy2k2aSQHx3B2K5xUlSPzM,329
608
+ pytz/zoneinfo/US/Indiana-Starke,sha256=CsvZ5BKw2qVav3x_F8CU9taJdDk7jX41Cfsqms6jXV8,2444
609
+ pytz/zoneinfo/US/Michigan,sha256=hecz8yqY2Cj5B61G3gLZdAVZvRgK9l0P90c_gN-uD5g,2230
610
+ pytz/zoneinfo/US/Mountain,sha256=MugZwApDs8NI9TnXANQlUE8guNBowWQY0m-ptpPndck,2460
611
+ pytz/zoneinfo/US/Pacific,sha256=aJd7ua1tGG_vxser02AQpm4wAI3LLTdgh6QcSYYecmg,2852
612
+ pytz/zoneinfo/US/Samoa,sha256=fCYrYphYY6rUfxOw712y5cyRe104AC3pouqD3bCINFg,175
613
+ pytz/zoneinfo/UTC,sha256=i4WEZ5GrLIpUY8g6W-PAQ-JXDXRIQ01BOYlp7Ufj5vI,114
614
+ pytz/zoneinfo/Universal,sha256=i4WEZ5GrLIpUY8g6W-PAQ-JXDXRIQ01BOYlp7Ufj5vI,114
615
+ pytz/zoneinfo/W-SU,sha256=KmkofRcj6T8Ph28PJChm8JVp13uRvef6TZ0GuPzUiDw,1535
616
+ pytz/zoneinfo/WET,sha256=krB8skaJImv5NDCNHxvTPDBqpNphDFLNW84lB3lgUCw,3527
617
+ pytz/zoneinfo/Zulu,sha256=i4WEZ5GrLIpUY8g6W-PAQ-JXDXRIQ01BOYlp7Ufj5vI,114
618
+ pytz/zoneinfo/iso3166.tab,sha256=oBpdFY8x1GrY5vjMKgbGQYEGgqk5fUYDIPaNVCG2XnE,4791
619
+ pytz/zoneinfo/leapseconds,sha256=gWAzwRuERloD6ADF5V6tUV26U_oVm5xh2nYC6jVwYOg,3257
620
+ pytz/zoneinfo/tzdata.zi,sha256=-EeBhT7eWZNN3RIVLVFnf0Ekn2iff5gPQIxShpDY0lA,107471
621
+ pytz/zoneinfo/zone.tab,sha256=WGtCB-bHZyLegq3Npr9J12H2aFF_RaZz9k2oOzM-7MQ,18822
622
+ pytz/zoneinfo/zone1970.tab,sha256=VxlOQ7ABuPgymHshuClT2Zeu6uvrU6hSAUC8EtfYz8w,17597
623
+ pytz/zoneinfo/zonenow.tab,sha256=JGdDvM4N0VGEYGVD2AgcuxIExbb_gje3WMtnwQkAzi8,8084
python_env/lib/site-packages/pytz-2025.2.dist-info/WHEEL ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ Wheel-Version: 1.0
2
+ Generator: bdist_wheel (0.42.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py2-none-any
5
+ Tag: py3-none-any
6
+
python_env/lib/site-packages/pytz-2025.2.dist-info/top_level.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ pytz
python_env/lib/site-packages/pytz-2025.2.dist-info/zip-safe ADDED
@@ -0,0 +1 @@
 
 
1
+
python_env/lib/site-packages/pytz/__init__.py ADDED
@@ -0,0 +1,1556 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ '''
2
+ datetime.tzinfo timezone definitions generated from the
3
+ Olson timezone database:
4
+
5
+ ftp://elsie.nci.nih.gov/pub/tz*.tar.gz
6
+
7
+ See the datetime section of the Python Library Reference for information
8
+ on how to use these modules.
9
+ '''
10
+
11
+ import sys
12
+ import datetime
13
+ import os.path
14
+
15
+ from pytz.exceptions import AmbiguousTimeError
16
+ from pytz.exceptions import InvalidTimeError
17
+ from pytz.exceptions import NonExistentTimeError
18
+ from pytz.exceptions import UnknownTimeZoneError
19
+ from pytz.lazy import LazyDict, LazyList, LazySet # noqa
20
+ from pytz.tzinfo import unpickler, BaseTzInfo
21
+ from pytz.tzfile import build_tzinfo
22
+
23
+
24
+ # The IANA (nee Olson) database is updated several times a year.
25
+ OLSON_VERSION = '2025b'
26
+ VERSION = '2025.2' # pip compatible version number.
27
+ __version__ = VERSION
28
+
29
+ OLSEN_VERSION = OLSON_VERSION # Old releases had this misspelling
30
+
31
+ __all__ = [
32
+ 'timezone', 'utc', 'country_timezones', 'country_names',
33
+ 'AmbiguousTimeError', 'InvalidTimeError',
34
+ 'NonExistentTimeError', 'UnknownTimeZoneError',
35
+ 'all_timezones', 'all_timezones_set',
36
+ 'common_timezones', 'common_timezones_set',
37
+ 'BaseTzInfo', 'FixedOffset',
38
+ ]
39
+
40
+
41
+ if sys.version_info[0] > 2: # Python 3.x
42
+
43
+ # Python 3.x doesn't have unicode(), making writing code
44
+ # for Python 2.3 and Python 3.x a pain.
45
+ unicode = str
46
+
47
+ def ascii(s):
48
+ r"""
49
+ >>> ascii('Hello')
50
+ 'Hello'
51
+ >>> ascii('\N{TRADE MARK SIGN}') #doctest: +IGNORE_EXCEPTION_DETAIL
52
+ Traceback (most recent call last):
53
+ ...
54
+ UnicodeEncodeError: ...
55
+ """
56
+ if type(s) == bytes:
57
+ s = s.decode('ASCII')
58
+ else:
59
+ s.encode('ASCII') # Raise an exception if not ASCII
60
+ return s # But the string - not a byte string.
61
+
62
+ else: # Python 2.x
63
+
64
+ def ascii(s):
65
+ r"""
66
+ >>> ascii('Hello')
67
+ 'Hello'
68
+ >>> ascii(u'Hello')
69
+ 'Hello'
70
+ >>> ascii(u'\N{TRADE MARK SIGN}') #doctest: +IGNORE_EXCEPTION_DETAIL
71
+ Traceback (most recent call last):
72
+ ...
73
+ UnicodeEncodeError: ...
74
+ """
75
+ return s.encode('ASCII')
76
+
77
+
78
+ def open_resource(name):
79
+ """Open a resource from the zoneinfo subdir for reading.
80
+
81
+ Uses the pkg_resources module if available and no standard file
82
+ found at the calculated location.
83
+
84
+ It is possible to specify different location for zoneinfo
85
+ subdir by using the PYTZ_TZDATADIR environment variable.
86
+ """
87
+ name_parts = name.lstrip('/').split('/')
88
+ for part in name_parts:
89
+ if part == os.path.pardir or os.sep in part:
90
+ raise ValueError('Bad path segment: %r' % part)
91
+ zoneinfo_dir = os.environ.get('PYTZ_TZDATADIR', None)
92
+ if zoneinfo_dir is not None:
93
+ filename = os.path.join(zoneinfo_dir, *name_parts)
94
+ else:
95
+ filename = os.path.join(os.path.dirname(__file__),
96
+ 'zoneinfo', *name_parts)
97
+ if not os.path.exists(filename):
98
+ # http://bugs.launchpad.net/bugs/383171 - we avoid using this
99
+ # unless absolutely necessary to help when a broken version of
100
+ # pkg_resources is installed.
101
+ try:
102
+ from pkg_resources import resource_stream
103
+ except ImportError:
104
+ resource_stream = None
105
+
106
+ if resource_stream is not None:
107
+ return resource_stream(__name__, 'zoneinfo/' + name)
108
+ return open(filename, 'rb')
109
+
110
+
111
+ def resource_exists(name):
112
+ """Return true if the given resource exists"""
113
+ try:
114
+ if os.environ.get('PYTZ_SKIPEXISTSCHECK', ''):
115
+ # In "standard" distributions, we can assume that
116
+ # all the listed timezones are present. As an
117
+ # import-speed optimization, you can set the
118
+ # PYTZ_SKIPEXISTSCHECK flag to skip checking
119
+ # for the presence of the resource file on disk.
120
+ return True
121
+ open_resource(name).close()
122
+ return True
123
+ except IOError:
124
+ return False
125
+
126
+
127
+ _tzinfo_cache = {}
128
+
129
+
130
+ def timezone(zone):
131
+ r''' Return a datetime.tzinfo implementation for the given timezone
132
+
133
+ >>> from datetime import datetime, timedelta
134
+ >>> utc = timezone('UTC')
135
+ >>> eastern = timezone('US/Eastern')
136
+ >>> eastern.zone
137
+ 'US/Eastern'
138
+ >>> timezone(unicode('US/Eastern')) is eastern
139
+ True
140
+ >>> utc_dt = datetime(2002, 10, 27, 6, 0, 0, tzinfo=utc)
141
+ >>> loc_dt = utc_dt.astimezone(eastern)
142
+ >>> fmt = '%Y-%m-%d %H:%M:%S %Z (%z)'
143
+ >>> loc_dt.strftime(fmt)
144
+ '2002-10-27 01:00:00 EST (-0500)'
145
+ >>> (loc_dt - timedelta(minutes=10)).strftime(fmt)
146
+ '2002-10-27 00:50:00 EST (-0500)'
147
+ >>> eastern.normalize(loc_dt - timedelta(minutes=10)).strftime(fmt)
148
+ '2002-10-27 01:50:00 EDT (-0400)'
149
+ >>> (loc_dt + timedelta(minutes=10)).strftime(fmt)
150
+ '2002-10-27 01:10:00 EST (-0500)'
151
+
152
+ Raises UnknownTimeZoneError if passed an unknown zone.
153
+
154
+ >>> try:
155
+ ... timezone('Asia/Shangri-La')
156
+ ... except UnknownTimeZoneError:
157
+ ... print('Unknown')
158
+ Unknown
159
+
160
+ >>> try:
161
+ ... timezone(unicode('\N{TRADE MARK SIGN}'))
162
+ ... except UnknownTimeZoneError:
163
+ ... print('Unknown')
164
+ Unknown
165
+
166
+ '''
167
+ if zone is None:
168
+ raise UnknownTimeZoneError(None)
169
+
170
+ if zone.upper() == 'UTC':
171
+ return utc
172
+
173
+ try:
174
+ zone = ascii(zone)
175
+ except UnicodeEncodeError:
176
+ # All valid timezones are ASCII
177
+ raise UnknownTimeZoneError(zone)
178
+
179
+ zone = _case_insensitive_zone_lookup(_unmunge_zone(zone))
180
+ if zone not in _tzinfo_cache:
181
+ if zone in all_timezones_set: # noqa
182
+ fp = open_resource(zone)
183
+ try:
184
+ _tzinfo_cache[zone] = build_tzinfo(zone, fp)
185
+ finally:
186
+ fp.close()
187
+ else:
188
+ raise UnknownTimeZoneError(zone)
189
+
190
+ return _tzinfo_cache[zone]
191
+
192
+
193
+ def _unmunge_zone(zone):
194
+ """Undo the time zone name munging done by older versions of pytz."""
195
+ return zone.replace('_plus_', '+').replace('_minus_', '-')
196
+
197
+
198
+ _all_timezones_lower_to_standard = None
199
+
200
+
201
+ def _case_insensitive_zone_lookup(zone):
202
+ """case-insensitively matching timezone, else return zone unchanged"""
203
+ global _all_timezones_lower_to_standard
204
+ if _all_timezones_lower_to_standard is None:
205
+ _all_timezones_lower_to_standard = dict((tz.lower(), tz) for tz in _all_timezones_unchecked) # noqa
206
+ return _all_timezones_lower_to_standard.get(zone.lower()) or zone # noqa
207
+
208
+
209
+ ZERO = datetime.timedelta(0)
210
+ HOUR = datetime.timedelta(hours=1)
211
+
212
+
213
+ class UTC(BaseTzInfo):
214
+ """UTC
215
+
216
+ Optimized UTC implementation. It unpickles using the single module global
217
+ instance defined beneath this class declaration.
218
+ """
219
+ zone = "UTC"
220
+
221
+ _utcoffset = ZERO
222
+ _dst = ZERO
223
+ _tzname = zone
224
+
225
+ def fromutc(self, dt):
226
+ if dt.tzinfo is None:
227
+ return self.localize(dt)
228
+ return super(utc.__class__, self).fromutc(dt)
229
+
230
+ def utcoffset(self, dt):
231
+ return ZERO
232
+
233
+ def tzname(self, dt):
234
+ return "UTC"
235
+
236
+ def dst(self, dt):
237
+ return ZERO
238
+
239
+ def __reduce__(self):
240
+ return _UTC, ()
241
+
242
+ def localize(self, dt, is_dst=False):
243
+ '''Convert naive time to local time'''
244
+ if dt.tzinfo is not None:
245
+ raise ValueError('Not naive datetime (tzinfo is already set)')
246
+ return dt.replace(tzinfo=self)
247
+
248
+ def normalize(self, dt, is_dst=False):
249
+ '''Correct the timezone information on the given datetime'''
250
+ if dt.tzinfo is self:
251
+ return dt
252
+ if dt.tzinfo is None:
253
+ raise ValueError('Naive time - no tzinfo set')
254
+ return dt.astimezone(self)
255
+
256
+ def __repr__(self):
257
+ return "<UTC>"
258
+
259
+ def __str__(self):
260
+ return "UTC"
261
+
262
+
263
+ UTC = utc = UTC() # UTC is a singleton
264
+
265
+
266
+ def _UTC():
267
+ """Factory function for utc unpickling.
268
+
269
+ Makes sure that unpickling a utc instance always returns the same
270
+ module global.
271
+
272
+ These examples belong in the UTC class above, but it is obscured; or in
273
+ the README.rst, but we are not depending on Python 2.4 so integrating
274
+ the README.rst examples with the unit tests is not trivial.
275
+
276
+ >>> import datetime, pickle
277
+ >>> dt = datetime.datetime(2005, 3, 1, 14, 13, 21, tzinfo=utc)
278
+ >>> naive = dt.replace(tzinfo=None)
279
+ >>> p = pickle.dumps(dt, 1)
280
+ >>> naive_p = pickle.dumps(naive, 1)
281
+ >>> len(p) - len(naive_p)
282
+ 17
283
+ >>> new = pickle.loads(p)
284
+ >>> new == dt
285
+ True
286
+ >>> new is dt
287
+ False
288
+ >>> new.tzinfo is dt.tzinfo
289
+ True
290
+ >>> utc is UTC is timezone('UTC')
291
+ True
292
+ >>> utc is timezone('GMT')
293
+ False
294
+ """
295
+ return utc
296
+
297
+
298
+ _UTC.__safe_for_unpickling__ = True
299
+
300
+
301
+ def _p(*args):
302
+ """Factory function for unpickling pytz tzinfo instances.
303
+
304
+ Just a wrapper around tzinfo.unpickler to save a few bytes in each pickle
305
+ by shortening the path.
306
+ """
307
+ return unpickler(*args)
308
+
309
+
310
+ _p.__safe_for_unpickling__ = True
311
+
312
+
313
+ class _CountryTimezoneDict(LazyDict):
314
+ """Map ISO 3166 country code to a list of timezone names commonly used
315
+ in that country.
316
+
317
+ iso3166_code is the two letter code used to identify the country.
318
+
319
+ >>> def print_list(list_of_strings):
320
+ ... 'We use a helper so doctests work under Python 2.3 -> 3.x'
321
+ ... for s in list_of_strings:
322
+ ... print(s)
323
+
324
+ >>> print_list(country_timezones['nz'])
325
+ Pacific/Auckland
326
+ Pacific/Chatham
327
+ >>> print_list(country_timezones['ch'])
328
+ Europe/Zurich
329
+ >>> print_list(country_timezones['CH'])
330
+ Europe/Zurich
331
+ >>> print_list(country_timezones[unicode('ch')])
332
+ Europe/Zurich
333
+ >>> print_list(country_timezones['XXX'])
334
+ Traceback (most recent call last):
335
+ ...
336
+ KeyError: 'XXX'
337
+
338
+ Previously, this information was exposed as a function rather than a
339
+ dictionary. This is still supported::
340
+
341
+ >>> print_list(country_timezones('nz'))
342
+ Pacific/Auckland
343
+ Pacific/Chatham
344
+ """
345
+ def __call__(self, iso3166_code):
346
+ """Backwards compatibility."""
347
+ return self[iso3166_code]
348
+
349
+ def _fill(self):
350
+ data = {}
351
+ zone_tab = open_resource('zone.tab')
352
+ try:
353
+ for line in zone_tab:
354
+ line = line.decode('UTF-8')
355
+ if line.startswith('#'):
356
+ continue
357
+ code, coordinates, zone = line.split(None, 4)[:3]
358
+ if zone not in all_timezones_set: # noqa
359
+ continue
360
+ try:
361
+ data[code].append(zone)
362
+ except KeyError:
363
+ data[code] = [zone]
364
+ self.data = data
365
+ finally:
366
+ zone_tab.close()
367
+
368
+
369
+ country_timezones = _CountryTimezoneDict()
370
+
371
+
372
+ class _CountryNameDict(LazyDict):
373
+ '''Dictionary proving ISO3166 code -> English name.
374
+
375
+ >>> print(country_names['au'])
376
+ Australia
377
+ '''
378
+ def _fill(self):
379
+ data = {}
380
+ zone_tab = open_resource('iso3166.tab')
381
+ try:
382
+ for line in zone_tab.readlines():
383
+ line = line.decode('UTF-8')
384
+ if line.startswith('#'):
385
+ continue
386
+ code, name = line.split(None, 1)
387
+ data[code] = name.strip()
388
+ self.data = data
389
+ finally:
390
+ zone_tab.close()
391
+
392
+
393
+ country_names = _CountryNameDict()
394
+
395
+
396
+ # Time-zone info based solely on fixed offsets
397
+
398
+ class _FixedOffset(datetime.tzinfo):
399
+
400
+ zone = None # to match the standard pytz API
401
+
402
+ def __init__(self, minutes):
403
+ if abs(minutes) >= 1440:
404
+ raise ValueError("absolute offset is too large", minutes)
405
+ self._minutes = minutes
406
+ self._offset = datetime.timedelta(minutes=minutes)
407
+
408
+ def utcoffset(self, dt):
409
+ return self._offset
410
+
411
+ def __reduce__(self):
412
+ return FixedOffset, (self._minutes, )
413
+
414
+ def dst(self, dt):
415
+ return ZERO
416
+
417
+ def tzname(self, dt):
418
+ return None
419
+
420
+ def __repr__(self):
421
+ return 'pytz.FixedOffset(%d)' % self._minutes
422
+
423
+ def localize(self, dt, is_dst=False):
424
+ '''Convert naive time to local time'''
425
+ if dt.tzinfo is not None:
426
+ raise ValueError('Not naive datetime (tzinfo is already set)')
427
+ return dt.replace(tzinfo=self)
428
+
429
+ def normalize(self, dt, is_dst=False):
430
+ '''Correct the timezone information on the given datetime'''
431
+ if dt.tzinfo is self:
432
+ return dt
433
+ if dt.tzinfo is None:
434
+ raise ValueError('Naive time - no tzinfo set')
435
+ return dt.astimezone(self)
436
+
437
+
438
+ def FixedOffset(offset, _tzinfos={}):
439
+ """return a fixed-offset timezone based off a number of minutes.
440
+
441
+ >>> one = FixedOffset(-330)
442
+ >>> one
443
+ pytz.FixedOffset(-330)
444
+ >>> str(one.utcoffset(datetime.datetime.now()))
445
+ '-1 day, 18:30:00'
446
+ >>> str(one.dst(datetime.datetime.now()))
447
+ '0:00:00'
448
+
449
+ >>> two = FixedOffset(1380)
450
+ >>> two
451
+ pytz.FixedOffset(1380)
452
+ >>> str(two.utcoffset(datetime.datetime.now()))
453
+ '23:00:00'
454
+ >>> str(two.dst(datetime.datetime.now()))
455
+ '0:00:00'
456
+
457
+ The datetime.timedelta must be between the range of -1 and 1 day,
458
+ non-inclusive.
459
+
460
+ >>> FixedOffset(1440)
461
+ Traceback (most recent call last):
462
+ ...
463
+ ValueError: ('absolute offset is too large', 1440)
464
+
465
+ >>> FixedOffset(-1440)
466
+ Traceback (most recent call last):
467
+ ...
468
+ ValueError: ('absolute offset is too large', -1440)
469
+
470
+ An offset of 0 is special-cased to return UTC.
471
+
472
+ >>> FixedOffset(0) is UTC
473
+ True
474
+
475
+ There should always be only one instance of a FixedOffset per timedelta.
476
+ This should be true for multiple creation calls.
477
+
478
+ >>> FixedOffset(-330) is one
479
+ True
480
+ >>> FixedOffset(1380) is two
481
+ True
482
+
483
+ It should also be true for pickling.
484
+
485
+ >>> import pickle
486
+ >>> pickle.loads(pickle.dumps(one)) is one
487
+ True
488
+ >>> pickle.loads(pickle.dumps(two)) is two
489
+ True
490
+ """
491
+ if offset == 0:
492
+ return UTC
493
+
494
+ info = _tzinfos.get(offset)
495
+ if info is None:
496
+ # We haven't seen this one before. we need to save it.
497
+
498
+ # Use setdefault to avoid a race condition and make sure we have
499
+ # only one
500
+ info = _tzinfos.setdefault(offset, _FixedOffset(offset))
501
+
502
+ return info
503
+
504
+
505
+ FixedOffset.__safe_for_unpickling__ = True
506
+
507
+
508
+ def _test():
509
+ import doctest
510
+ sys.path.insert(0, os.pardir)
511
+ import pytz
512
+ return doctest.testmod(pytz)
513
+
514
+
515
+ if __name__ == '__main__':
516
+ _test()
517
+ _all_timezones_unchecked = \
518
+ ['Africa/Abidjan',
519
+ 'Africa/Accra',
520
+ 'Africa/Addis_Ababa',
521
+ 'Africa/Algiers',
522
+ 'Africa/Asmara',
523
+ 'Africa/Asmera',
524
+ 'Africa/Bamako',
525
+ 'Africa/Bangui',
526
+ 'Africa/Banjul',
527
+ 'Africa/Bissau',
528
+ 'Africa/Blantyre',
529
+ 'Africa/Brazzaville',
530
+ 'Africa/Bujumbura',
531
+ 'Africa/Cairo',
532
+ 'Africa/Casablanca',
533
+ 'Africa/Ceuta',
534
+ 'Africa/Conakry',
535
+ 'Africa/Dakar',
536
+ 'Africa/Dar_es_Salaam',
537
+ 'Africa/Djibouti',
538
+ 'Africa/Douala',
539
+ 'Africa/El_Aaiun',
540
+ 'Africa/Freetown',
541
+ 'Africa/Gaborone',
542
+ 'Africa/Harare',
543
+ 'Africa/Johannesburg',
544
+ 'Africa/Juba',
545
+ 'Africa/Kampala',
546
+ 'Africa/Khartoum',
547
+ 'Africa/Kigali',
548
+ 'Africa/Kinshasa',
549
+ 'Africa/Lagos',
550
+ 'Africa/Libreville',
551
+ 'Africa/Lome',
552
+ 'Africa/Luanda',
553
+ 'Africa/Lubumbashi',
554
+ 'Africa/Lusaka',
555
+ 'Africa/Malabo',
556
+ 'Africa/Maputo',
557
+ 'Africa/Maseru',
558
+ 'Africa/Mbabane',
559
+ 'Africa/Mogadishu',
560
+ 'Africa/Monrovia',
561
+ 'Africa/Nairobi',
562
+ 'Africa/Ndjamena',
563
+ 'Africa/Niamey',
564
+ 'Africa/Nouakchott',
565
+ 'Africa/Ouagadougou',
566
+ 'Africa/Porto-Novo',
567
+ 'Africa/Sao_Tome',
568
+ 'Africa/Timbuktu',
569
+ 'Africa/Tripoli',
570
+ 'Africa/Tunis',
571
+ 'Africa/Windhoek',
572
+ 'America/Adak',
573
+ 'America/Anchorage',
574
+ 'America/Anguilla',
575
+ 'America/Antigua',
576
+ 'America/Araguaina',
577
+ 'America/Argentina/Buenos_Aires',
578
+ 'America/Argentina/Catamarca',
579
+ 'America/Argentina/ComodRivadavia',
580
+ 'America/Argentina/Cordoba',
581
+ 'America/Argentina/Jujuy',
582
+ 'America/Argentina/La_Rioja',
583
+ 'America/Argentina/Mendoza',
584
+ 'America/Argentina/Rio_Gallegos',
585
+ 'America/Argentina/Salta',
586
+ 'America/Argentina/San_Juan',
587
+ 'America/Argentina/San_Luis',
588
+ 'America/Argentina/Tucuman',
589
+ 'America/Argentina/Ushuaia',
590
+ 'America/Aruba',
591
+ 'America/Asuncion',
592
+ 'America/Atikokan',
593
+ 'America/Atka',
594
+ 'America/Bahia',
595
+ 'America/Bahia_Banderas',
596
+ 'America/Barbados',
597
+ 'America/Belem',
598
+ 'America/Belize',
599
+ 'America/Blanc-Sablon',
600
+ 'America/Boa_Vista',
601
+ 'America/Bogota',
602
+ 'America/Boise',
603
+ 'America/Buenos_Aires',
604
+ 'America/Cambridge_Bay',
605
+ 'America/Campo_Grande',
606
+ 'America/Cancun',
607
+ 'America/Caracas',
608
+ 'America/Catamarca',
609
+ 'America/Cayenne',
610
+ 'America/Cayman',
611
+ 'America/Chicago',
612
+ 'America/Chihuahua',
613
+ 'America/Ciudad_Juarez',
614
+ 'America/Coral_Harbour',
615
+ 'America/Cordoba',
616
+ 'America/Costa_Rica',
617
+ 'America/Coyhaique',
618
+ 'America/Creston',
619
+ 'America/Cuiaba',
620
+ 'America/Curacao',
621
+ 'America/Danmarkshavn',
622
+ 'America/Dawson',
623
+ 'America/Dawson_Creek',
624
+ 'America/Denver',
625
+ 'America/Detroit',
626
+ 'America/Dominica',
627
+ 'America/Edmonton',
628
+ 'America/Eirunepe',
629
+ 'America/El_Salvador',
630
+ 'America/Ensenada',
631
+ 'America/Fort_Nelson',
632
+ 'America/Fort_Wayne',
633
+ 'America/Fortaleza',
634
+ 'America/Glace_Bay',
635
+ 'America/Godthab',
636
+ 'America/Goose_Bay',
637
+ 'America/Grand_Turk',
638
+ 'America/Grenada',
639
+ 'America/Guadeloupe',
640
+ 'America/Guatemala',
641
+ 'America/Guayaquil',
642
+ 'America/Guyana',
643
+ 'America/Halifax',
644
+ 'America/Havana',
645
+ 'America/Hermosillo',
646
+ 'America/Indiana/Indianapolis',
647
+ 'America/Indiana/Knox',
648
+ 'America/Indiana/Marengo',
649
+ 'America/Indiana/Petersburg',
650
+ 'America/Indiana/Tell_City',
651
+ 'America/Indiana/Vevay',
652
+ 'America/Indiana/Vincennes',
653
+ 'America/Indiana/Winamac',
654
+ 'America/Indianapolis',
655
+ 'America/Inuvik',
656
+ 'America/Iqaluit',
657
+ 'America/Jamaica',
658
+ 'America/Jujuy',
659
+ 'America/Juneau',
660
+ 'America/Kentucky/Louisville',
661
+ 'America/Kentucky/Monticello',
662
+ 'America/Knox_IN',
663
+ 'America/Kralendijk',
664
+ 'America/La_Paz',
665
+ 'America/Lima',
666
+ 'America/Los_Angeles',
667
+ 'America/Louisville',
668
+ 'America/Lower_Princes',
669
+ 'America/Maceio',
670
+ 'America/Managua',
671
+ 'America/Manaus',
672
+ 'America/Marigot',
673
+ 'America/Martinique',
674
+ 'America/Matamoros',
675
+ 'America/Mazatlan',
676
+ 'America/Mendoza',
677
+ 'America/Menominee',
678
+ 'America/Merida',
679
+ 'America/Metlakatla',
680
+ 'America/Mexico_City',
681
+ 'America/Miquelon',
682
+ 'America/Moncton',
683
+ 'America/Monterrey',
684
+ 'America/Montevideo',
685
+ 'America/Montreal',
686
+ 'America/Montserrat',
687
+ 'America/Nassau',
688
+ 'America/New_York',
689
+ 'America/Nipigon',
690
+ 'America/Nome',
691
+ 'America/Noronha',
692
+ 'America/North_Dakota/Beulah',
693
+ 'America/North_Dakota/Center',
694
+ 'America/North_Dakota/New_Salem',
695
+ 'America/Nuuk',
696
+ 'America/Ojinaga',
697
+ 'America/Panama',
698
+ 'America/Pangnirtung',
699
+ 'America/Paramaribo',
700
+ 'America/Phoenix',
701
+ 'America/Port-au-Prince',
702
+ 'America/Port_of_Spain',
703
+ 'America/Porto_Acre',
704
+ 'America/Porto_Velho',
705
+ 'America/Puerto_Rico',
706
+ 'America/Punta_Arenas',
707
+ 'America/Rainy_River',
708
+ 'America/Rankin_Inlet',
709
+ 'America/Recife',
710
+ 'America/Regina',
711
+ 'America/Resolute',
712
+ 'America/Rio_Branco',
713
+ 'America/Rosario',
714
+ 'America/Santa_Isabel',
715
+ 'America/Santarem',
716
+ 'America/Santiago',
717
+ 'America/Santo_Domingo',
718
+ 'America/Sao_Paulo',
719
+ 'America/Scoresbysund',
720
+ 'America/Shiprock',
721
+ 'America/Sitka',
722
+ 'America/St_Barthelemy',
723
+ 'America/St_Johns',
724
+ 'America/St_Kitts',
725
+ 'America/St_Lucia',
726
+ 'America/St_Thomas',
727
+ 'America/St_Vincent',
728
+ 'America/Swift_Current',
729
+ 'America/Tegucigalpa',
730
+ 'America/Thule',
731
+ 'America/Thunder_Bay',
732
+ 'America/Tijuana',
733
+ 'America/Toronto',
734
+ 'America/Tortola',
735
+ 'America/Vancouver',
736
+ 'America/Virgin',
737
+ 'America/Whitehorse',
738
+ 'America/Winnipeg',
739
+ 'America/Yakutat',
740
+ 'America/Yellowknife',
741
+ 'Antarctica/Casey',
742
+ 'Antarctica/Davis',
743
+ 'Antarctica/DumontDUrville',
744
+ 'Antarctica/Macquarie',
745
+ 'Antarctica/Mawson',
746
+ 'Antarctica/McMurdo',
747
+ 'Antarctica/Palmer',
748
+ 'Antarctica/Rothera',
749
+ 'Antarctica/South_Pole',
750
+ 'Antarctica/Syowa',
751
+ 'Antarctica/Troll',
752
+ 'Antarctica/Vostok',
753
+ 'Arctic/Longyearbyen',
754
+ 'Asia/Aden',
755
+ 'Asia/Almaty',
756
+ 'Asia/Amman',
757
+ 'Asia/Anadyr',
758
+ 'Asia/Aqtau',
759
+ 'Asia/Aqtobe',
760
+ 'Asia/Ashgabat',
761
+ 'Asia/Ashkhabad',
762
+ 'Asia/Atyrau',
763
+ 'Asia/Baghdad',
764
+ 'Asia/Bahrain',
765
+ 'Asia/Baku',
766
+ 'Asia/Bangkok',
767
+ 'Asia/Barnaul',
768
+ 'Asia/Beirut',
769
+ 'Asia/Bishkek',
770
+ 'Asia/Brunei',
771
+ 'Asia/Calcutta',
772
+ 'Asia/Chita',
773
+ 'Asia/Choibalsan',
774
+ 'Asia/Chongqing',
775
+ 'Asia/Chungking',
776
+ 'Asia/Colombo',
777
+ 'Asia/Dacca',
778
+ 'Asia/Damascus',
779
+ 'Asia/Dhaka',
780
+ 'Asia/Dili',
781
+ 'Asia/Dubai',
782
+ 'Asia/Dushanbe',
783
+ 'Asia/Famagusta',
784
+ 'Asia/Gaza',
785
+ 'Asia/Harbin',
786
+ 'Asia/Hebron',
787
+ 'Asia/Ho_Chi_Minh',
788
+ 'Asia/Hong_Kong',
789
+ 'Asia/Hovd',
790
+ 'Asia/Irkutsk',
791
+ 'Asia/Istanbul',
792
+ 'Asia/Jakarta',
793
+ 'Asia/Jayapura',
794
+ 'Asia/Jerusalem',
795
+ 'Asia/Kabul',
796
+ 'Asia/Kamchatka',
797
+ 'Asia/Karachi',
798
+ 'Asia/Kashgar',
799
+ 'Asia/Kathmandu',
800
+ 'Asia/Katmandu',
801
+ 'Asia/Khandyga',
802
+ 'Asia/Kolkata',
803
+ 'Asia/Krasnoyarsk',
804
+ 'Asia/Kuala_Lumpur',
805
+ 'Asia/Kuching',
806
+ 'Asia/Kuwait',
807
+ 'Asia/Macao',
808
+ 'Asia/Macau',
809
+ 'Asia/Magadan',
810
+ 'Asia/Makassar',
811
+ 'Asia/Manila',
812
+ 'Asia/Muscat',
813
+ 'Asia/Nicosia',
814
+ 'Asia/Novokuznetsk',
815
+ 'Asia/Novosibirsk',
816
+ 'Asia/Omsk',
817
+ 'Asia/Oral',
818
+ 'Asia/Phnom_Penh',
819
+ 'Asia/Pontianak',
820
+ 'Asia/Pyongyang',
821
+ 'Asia/Qatar',
822
+ 'Asia/Qostanay',
823
+ 'Asia/Qyzylorda',
824
+ 'Asia/Rangoon',
825
+ 'Asia/Riyadh',
826
+ 'Asia/Saigon',
827
+ 'Asia/Sakhalin',
828
+ 'Asia/Samarkand',
829
+ 'Asia/Seoul',
830
+ 'Asia/Shanghai',
831
+ 'Asia/Singapore',
832
+ 'Asia/Srednekolymsk',
833
+ 'Asia/Taipei',
834
+ 'Asia/Tashkent',
835
+ 'Asia/Tbilisi',
836
+ 'Asia/Tehran',
837
+ 'Asia/Tel_Aviv',
838
+ 'Asia/Thimbu',
839
+ 'Asia/Thimphu',
840
+ 'Asia/Tokyo',
841
+ 'Asia/Tomsk',
842
+ 'Asia/Ujung_Pandang',
843
+ 'Asia/Ulaanbaatar',
844
+ 'Asia/Ulan_Bator',
845
+ 'Asia/Urumqi',
846
+ 'Asia/Ust-Nera',
847
+ 'Asia/Vientiane',
848
+ 'Asia/Vladivostok',
849
+ 'Asia/Yakutsk',
850
+ 'Asia/Yangon',
851
+ 'Asia/Yekaterinburg',
852
+ 'Asia/Yerevan',
853
+ 'Atlantic/Azores',
854
+ 'Atlantic/Bermuda',
855
+ 'Atlantic/Canary',
856
+ 'Atlantic/Cape_Verde',
857
+ 'Atlantic/Faeroe',
858
+ 'Atlantic/Faroe',
859
+ 'Atlantic/Jan_Mayen',
860
+ 'Atlantic/Madeira',
861
+ 'Atlantic/Reykjavik',
862
+ 'Atlantic/South_Georgia',
863
+ 'Atlantic/St_Helena',
864
+ 'Atlantic/Stanley',
865
+ 'Australia/ACT',
866
+ 'Australia/Adelaide',
867
+ 'Australia/Brisbane',
868
+ 'Australia/Broken_Hill',
869
+ 'Australia/Canberra',
870
+ 'Australia/Currie',
871
+ 'Australia/Darwin',
872
+ 'Australia/Eucla',
873
+ 'Australia/Hobart',
874
+ 'Australia/LHI',
875
+ 'Australia/Lindeman',
876
+ 'Australia/Lord_Howe',
877
+ 'Australia/Melbourne',
878
+ 'Australia/NSW',
879
+ 'Australia/North',
880
+ 'Australia/Perth',
881
+ 'Australia/Queensland',
882
+ 'Australia/South',
883
+ 'Australia/Sydney',
884
+ 'Australia/Tasmania',
885
+ 'Australia/Victoria',
886
+ 'Australia/West',
887
+ 'Australia/Yancowinna',
888
+ 'Brazil/Acre',
889
+ 'Brazil/DeNoronha',
890
+ 'Brazil/East',
891
+ 'Brazil/West',
892
+ 'CET',
893
+ 'CST6CDT',
894
+ 'Canada/Atlantic',
895
+ 'Canada/Central',
896
+ 'Canada/Eastern',
897
+ 'Canada/Mountain',
898
+ 'Canada/Newfoundland',
899
+ 'Canada/Pacific',
900
+ 'Canada/Saskatchewan',
901
+ 'Canada/Yukon',
902
+ 'Chile/Continental',
903
+ 'Chile/EasterIsland',
904
+ 'Cuba',
905
+ 'EET',
906
+ 'EST',
907
+ 'EST5EDT',
908
+ 'Egypt',
909
+ 'Eire',
910
+ 'Etc/GMT',
911
+ 'Etc/GMT+0',
912
+ 'Etc/GMT+1',
913
+ 'Etc/GMT+10',
914
+ 'Etc/GMT+11',
915
+ 'Etc/GMT+12',
916
+ 'Etc/GMT+2',
917
+ 'Etc/GMT+3',
918
+ 'Etc/GMT+4',
919
+ 'Etc/GMT+5',
920
+ 'Etc/GMT+6',
921
+ 'Etc/GMT+7',
922
+ 'Etc/GMT+8',
923
+ 'Etc/GMT+9',
924
+ 'Etc/GMT-0',
925
+ 'Etc/GMT-1',
926
+ 'Etc/GMT-10',
927
+ 'Etc/GMT-11',
928
+ 'Etc/GMT-12',
929
+ 'Etc/GMT-13',
930
+ 'Etc/GMT-14',
931
+ 'Etc/GMT-2',
932
+ 'Etc/GMT-3',
933
+ 'Etc/GMT-4',
934
+ 'Etc/GMT-5',
935
+ 'Etc/GMT-6',
936
+ 'Etc/GMT-7',
937
+ 'Etc/GMT-8',
938
+ 'Etc/GMT-9',
939
+ 'Etc/GMT0',
940
+ 'Etc/Greenwich',
941
+ 'Etc/UCT',
942
+ 'Etc/UTC',
943
+ 'Etc/Universal',
944
+ 'Etc/Zulu',
945
+ 'Europe/Amsterdam',
946
+ 'Europe/Andorra',
947
+ 'Europe/Astrakhan',
948
+ 'Europe/Athens',
949
+ 'Europe/Belfast',
950
+ 'Europe/Belgrade',
951
+ 'Europe/Berlin',
952
+ 'Europe/Bratislava',
953
+ 'Europe/Brussels',
954
+ 'Europe/Bucharest',
955
+ 'Europe/Budapest',
956
+ 'Europe/Busingen',
957
+ 'Europe/Chisinau',
958
+ 'Europe/Copenhagen',
959
+ 'Europe/Dublin',
960
+ 'Europe/Gibraltar',
961
+ 'Europe/Guernsey',
962
+ 'Europe/Helsinki',
963
+ 'Europe/Isle_of_Man',
964
+ 'Europe/Istanbul',
965
+ 'Europe/Jersey',
966
+ 'Europe/Kaliningrad',
967
+ 'Europe/Kiev',
968
+ 'Europe/Kirov',
969
+ 'Europe/Kyiv',
970
+ 'Europe/Lisbon',
971
+ 'Europe/Ljubljana',
972
+ 'Europe/London',
973
+ 'Europe/Luxembourg',
974
+ 'Europe/Madrid',
975
+ 'Europe/Malta',
976
+ 'Europe/Mariehamn',
977
+ 'Europe/Minsk',
978
+ 'Europe/Monaco',
979
+ 'Europe/Moscow',
980
+ 'Europe/Nicosia',
981
+ 'Europe/Oslo',
982
+ 'Europe/Paris',
983
+ 'Europe/Podgorica',
984
+ 'Europe/Prague',
985
+ 'Europe/Riga',
986
+ 'Europe/Rome',
987
+ 'Europe/Samara',
988
+ 'Europe/San_Marino',
989
+ 'Europe/Sarajevo',
990
+ 'Europe/Saratov',
991
+ 'Europe/Simferopol',
992
+ 'Europe/Skopje',
993
+ 'Europe/Sofia',
994
+ 'Europe/Stockholm',
995
+ 'Europe/Tallinn',
996
+ 'Europe/Tirane',
997
+ 'Europe/Tiraspol',
998
+ 'Europe/Ulyanovsk',
999
+ 'Europe/Uzhgorod',
1000
+ 'Europe/Vaduz',
1001
+ 'Europe/Vatican',
1002
+ 'Europe/Vienna',
1003
+ 'Europe/Vilnius',
1004
+ 'Europe/Volgograd',
1005
+ 'Europe/Warsaw',
1006
+ 'Europe/Zagreb',
1007
+ 'Europe/Zaporozhye',
1008
+ 'Europe/Zurich',
1009
+ 'GB',
1010
+ 'GB-Eire',
1011
+ 'GMT',
1012
+ 'GMT+0',
1013
+ 'GMT-0',
1014
+ 'GMT0',
1015
+ 'Greenwich',
1016
+ 'HST',
1017
+ 'Hongkong',
1018
+ 'Iceland',
1019
+ 'Indian/Antananarivo',
1020
+ 'Indian/Chagos',
1021
+ 'Indian/Christmas',
1022
+ 'Indian/Cocos',
1023
+ 'Indian/Comoro',
1024
+ 'Indian/Kerguelen',
1025
+ 'Indian/Mahe',
1026
+ 'Indian/Maldives',
1027
+ 'Indian/Mauritius',
1028
+ 'Indian/Mayotte',
1029
+ 'Indian/Reunion',
1030
+ 'Iran',
1031
+ 'Israel',
1032
+ 'Jamaica',
1033
+ 'Japan',
1034
+ 'Kwajalein',
1035
+ 'Libya',
1036
+ 'MET',
1037
+ 'MST',
1038
+ 'MST7MDT',
1039
+ 'Mexico/BajaNorte',
1040
+ 'Mexico/BajaSur',
1041
+ 'Mexico/General',
1042
+ 'NZ',
1043
+ 'NZ-CHAT',
1044
+ 'Navajo',
1045
+ 'PRC',
1046
+ 'PST8PDT',
1047
+ 'Pacific/Apia',
1048
+ 'Pacific/Auckland',
1049
+ 'Pacific/Bougainville',
1050
+ 'Pacific/Chatham',
1051
+ 'Pacific/Chuuk',
1052
+ 'Pacific/Easter',
1053
+ 'Pacific/Efate',
1054
+ 'Pacific/Enderbury',
1055
+ 'Pacific/Fakaofo',
1056
+ 'Pacific/Fiji',
1057
+ 'Pacific/Funafuti',
1058
+ 'Pacific/Galapagos',
1059
+ 'Pacific/Gambier',
1060
+ 'Pacific/Guadalcanal',
1061
+ 'Pacific/Guam',
1062
+ 'Pacific/Honolulu',
1063
+ 'Pacific/Johnston',
1064
+ 'Pacific/Kanton',
1065
+ 'Pacific/Kiritimati',
1066
+ 'Pacific/Kosrae',
1067
+ 'Pacific/Kwajalein',
1068
+ 'Pacific/Majuro',
1069
+ 'Pacific/Marquesas',
1070
+ 'Pacific/Midway',
1071
+ 'Pacific/Nauru',
1072
+ 'Pacific/Niue',
1073
+ 'Pacific/Norfolk',
1074
+ 'Pacific/Noumea',
1075
+ 'Pacific/Pago_Pago',
1076
+ 'Pacific/Palau',
1077
+ 'Pacific/Pitcairn',
1078
+ 'Pacific/Pohnpei',
1079
+ 'Pacific/Ponape',
1080
+ 'Pacific/Port_Moresby',
1081
+ 'Pacific/Rarotonga',
1082
+ 'Pacific/Saipan',
1083
+ 'Pacific/Samoa',
1084
+ 'Pacific/Tahiti',
1085
+ 'Pacific/Tarawa',
1086
+ 'Pacific/Tongatapu',
1087
+ 'Pacific/Truk',
1088
+ 'Pacific/Wake',
1089
+ 'Pacific/Wallis',
1090
+ 'Pacific/Yap',
1091
+ 'Poland',
1092
+ 'Portugal',
1093
+ 'ROC',
1094
+ 'ROK',
1095
+ 'Singapore',
1096
+ 'Turkey',
1097
+ 'UCT',
1098
+ 'US/Alaska',
1099
+ 'US/Aleutian',
1100
+ 'US/Arizona',
1101
+ 'US/Central',
1102
+ 'US/East-Indiana',
1103
+ 'US/Eastern',
1104
+ 'US/Hawaii',
1105
+ 'US/Indiana-Starke',
1106
+ 'US/Michigan',
1107
+ 'US/Mountain',
1108
+ 'US/Pacific',
1109
+ 'US/Samoa',
1110
+ 'UTC',
1111
+ 'Universal',
1112
+ 'W-SU',
1113
+ 'WET',
1114
+ 'Zulu']
1115
+ all_timezones = LazyList(
1116
+ tz for tz in _all_timezones_unchecked if resource_exists(tz))
1117
+
1118
+ all_timezones_set = LazySet(all_timezones)
1119
+ common_timezones = \
1120
+ ['Africa/Abidjan',
1121
+ 'Africa/Accra',
1122
+ 'Africa/Addis_Ababa',
1123
+ 'Africa/Algiers',
1124
+ 'Africa/Asmara',
1125
+ 'Africa/Bamako',
1126
+ 'Africa/Bangui',
1127
+ 'Africa/Banjul',
1128
+ 'Africa/Bissau',
1129
+ 'Africa/Blantyre',
1130
+ 'Africa/Brazzaville',
1131
+ 'Africa/Bujumbura',
1132
+ 'Africa/Cairo',
1133
+ 'Africa/Casablanca',
1134
+ 'Africa/Ceuta',
1135
+ 'Africa/Conakry',
1136
+ 'Africa/Dakar',
1137
+ 'Africa/Dar_es_Salaam',
1138
+ 'Africa/Djibouti',
1139
+ 'Africa/Douala',
1140
+ 'Africa/El_Aaiun',
1141
+ 'Africa/Freetown',
1142
+ 'Africa/Gaborone',
1143
+ 'Africa/Harare',
1144
+ 'Africa/Johannesburg',
1145
+ 'Africa/Juba',
1146
+ 'Africa/Kampala',
1147
+ 'Africa/Khartoum',
1148
+ 'Africa/Kigali',
1149
+ 'Africa/Kinshasa',
1150
+ 'Africa/Lagos',
1151
+ 'Africa/Libreville',
1152
+ 'Africa/Lome',
1153
+ 'Africa/Luanda',
1154
+ 'Africa/Lubumbashi',
1155
+ 'Africa/Lusaka',
1156
+ 'Africa/Malabo',
1157
+ 'Africa/Maputo',
1158
+ 'Africa/Maseru',
1159
+ 'Africa/Mbabane',
1160
+ 'Africa/Mogadishu',
1161
+ 'Africa/Monrovia',
1162
+ 'Africa/Nairobi',
1163
+ 'Africa/Ndjamena',
1164
+ 'Africa/Niamey',
1165
+ 'Africa/Nouakchott',
1166
+ 'Africa/Ouagadougou',
1167
+ 'Africa/Porto-Novo',
1168
+ 'Africa/Sao_Tome',
1169
+ 'Africa/Tripoli',
1170
+ 'Africa/Tunis',
1171
+ 'Africa/Windhoek',
1172
+ 'America/Adak',
1173
+ 'America/Anchorage',
1174
+ 'America/Anguilla',
1175
+ 'America/Antigua',
1176
+ 'America/Araguaina',
1177
+ 'America/Argentina/Buenos_Aires',
1178
+ 'America/Argentina/Catamarca',
1179
+ 'America/Argentina/Cordoba',
1180
+ 'America/Argentina/Jujuy',
1181
+ 'America/Argentina/La_Rioja',
1182
+ 'America/Argentina/Mendoza',
1183
+ 'America/Argentina/Rio_Gallegos',
1184
+ 'America/Argentina/Salta',
1185
+ 'America/Argentina/San_Juan',
1186
+ 'America/Argentina/San_Luis',
1187
+ 'America/Argentina/Tucuman',
1188
+ 'America/Argentina/Ushuaia',
1189
+ 'America/Aruba',
1190
+ 'America/Asuncion',
1191
+ 'America/Atikokan',
1192
+ 'America/Bahia',
1193
+ 'America/Bahia_Banderas',
1194
+ 'America/Barbados',
1195
+ 'America/Belem',
1196
+ 'America/Belize',
1197
+ 'America/Blanc-Sablon',
1198
+ 'America/Boa_Vista',
1199
+ 'America/Bogota',
1200
+ 'America/Boise',
1201
+ 'America/Cambridge_Bay',
1202
+ 'America/Campo_Grande',
1203
+ 'America/Cancun',
1204
+ 'America/Caracas',
1205
+ 'America/Cayenne',
1206
+ 'America/Cayman',
1207
+ 'America/Chicago',
1208
+ 'America/Chihuahua',
1209
+ 'America/Ciudad_Juarez',
1210
+ 'America/Costa_Rica',
1211
+ 'America/Coyhaique',
1212
+ 'America/Creston',
1213
+ 'America/Cuiaba',
1214
+ 'America/Curacao',
1215
+ 'America/Danmarkshavn',
1216
+ 'America/Dawson',
1217
+ 'America/Dawson_Creek',
1218
+ 'America/Denver',
1219
+ 'America/Detroit',
1220
+ 'America/Dominica',
1221
+ 'America/Edmonton',
1222
+ 'America/Eirunepe',
1223
+ 'America/El_Salvador',
1224
+ 'America/Fort_Nelson',
1225
+ 'America/Fortaleza',
1226
+ 'America/Glace_Bay',
1227
+ 'America/Goose_Bay',
1228
+ 'America/Grand_Turk',
1229
+ 'America/Grenada',
1230
+ 'America/Guadeloupe',
1231
+ 'America/Guatemala',
1232
+ 'America/Guayaquil',
1233
+ 'America/Guyana',
1234
+ 'America/Halifax',
1235
+ 'America/Havana',
1236
+ 'America/Hermosillo',
1237
+ 'America/Indiana/Indianapolis',
1238
+ 'America/Indiana/Knox',
1239
+ 'America/Indiana/Marengo',
1240
+ 'America/Indiana/Petersburg',
1241
+ 'America/Indiana/Tell_City',
1242
+ 'America/Indiana/Vevay',
1243
+ 'America/Indiana/Vincennes',
1244
+ 'America/Indiana/Winamac',
1245
+ 'America/Inuvik',
1246
+ 'America/Iqaluit',
1247
+ 'America/Jamaica',
1248
+ 'America/Juneau',
1249
+ 'America/Kentucky/Louisville',
1250
+ 'America/Kentucky/Monticello',
1251
+ 'America/Kralendijk',
1252
+ 'America/La_Paz',
1253
+ 'America/Lima',
1254
+ 'America/Los_Angeles',
1255
+ 'America/Lower_Princes',
1256
+ 'America/Maceio',
1257
+ 'America/Managua',
1258
+ 'America/Manaus',
1259
+ 'America/Marigot',
1260
+ 'America/Martinique',
1261
+ 'America/Matamoros',
1262
+ 'America/Mazatlan',
1263
+ 'America/Menominee',
1264
+ 'America/Merida',
1265
+ 'America/Metlakatla',
1266
+ 'America/Mexico_City',
1267
+ 'America/Miquelon',
1268
+ 'America/Moncton',
1269
+ 'America/Monterrey',
1270
+ 'America/Montevideo',
1271
+ 'America/Montserrat',
1272
+ 'America/Nassau',
1273
+ 'America/New_York',
1274
+ 'America/Nome',
1275
+ 'America/Noronha',
1276
+ 'America/North_Dakota/Beulah',
1277
+ 'America/North_Dakota/Center',
1278
+ 'America/North_Dakota/New_Salem',
1279
+ 'America/Nuuk',
1280
+ 'America/Ojinaga',
1281
+ 'America/Panama',
1282
+ 'America/Paramaribo',
1283
+ 'America/Phoenix',
1284
+ 'America/Port-au-Prince',
1285
+ 'America/Port_of_Spain',
1286
+ 'America/Porto_Velho',
1287
+ 'America/Puerto_Rico',
1288
+ 'America/Punta_Arenas',
1289
+ 'America/Rankin_Inlet',
1290
+ 'America/Recife',
1291
+ 'America/Regina',
1292
+ 'America/Resolute',
1293
+ 'America/Rio_Branco',
1294
+ 'America/Santarem',
1295
+ 'America/Santiago',
1296
+ 'America/Santo_Domingo',
1297
+ 'America/Sao_Paulo',
1298
+ 'America/Scoresbysund',
1299
+ 'America/Sitka',
1300
+ 'America/St_Barthelemy',
1301
+ 'America/St_Johns',
1302
+ 'America/St_Kitts',
1303
+ 'America/St_Lucia',
1304
+ 'America/St_Thomas',
1305
+ 'America/St_Vincent',
1306
+ 'America/Swift_Current',
1307
+ 'America/Tegucigalpa',
1308
+ 'America/Thule',
1309
+ 'America/Tijuana',
1310
+ 'America/Toronto',
1311
+ 'America/Tortola',
1312
+ 'America/Vancouver',
1313
+ 'America/Whitehorse',
1314
+ 'America/Winnipeg',
1315
+ 'America/Yakutat',
1316
+ 'Antarctica/Casey',
1317
+ 'Antarctica/Davis',
1318
+ 'Antarctica/DumontDUrville',
1319
+ 'Antarctica/Macquarie',
1320
+ 'Antarctica/Mawson',
1321
+ 'Antarctica/McMurdo',
1322
+ 'Antarctica/Palmer',
1323
+ 'Antarctica/Rothera',
1324
+ 'Antarctica/Syowa',
1325
+ 'Antarctica/Troll',
1326
+ 'Antarctica/Vostok',
1327
+ 'Arctic/Longyearbyen',
1328
+ 'Asia/Aden',
1329
+ 'Asia/Almaty',
1330
+ 'Asia/Amman',
1331
+ 'Asia/Anadyr',
1332
+ 'Asia/Aqtau',
1333
+ 'Asia/Aqtobe',
1334
+ 'Asia/Ashgabat',
1335
+ 'Asia/Atyrau',
1336
+ 'Asia/Baghdad',
1337
+ 'Asia/Bahrain',
1338
+ 'Asia/Baku',
1339
+ 'Asia/Bangkok',
1340
+ 'Asia/Barnaul',
1341
+ 'Asia/Beirut',
1342
+ 'Asia/Bishkek',
1343
+ 'Asia/Brunei',
1344
+ 'Asia/Chita',
1345
+ 'Asia/Colombo',
1346
+ 'Asia/Damascus',
1347
+ 'Asia/Dhaka',
1348
+ 'Asia/Dili',
1349
+ 'Asia/Dubai',
1350
+ 'Asia/Dushanbe',
1351
+ 'Asia/Famagusta',
1352
+ 'Asia/Gaza',
1353
+ 'Asia/Hebron',
1354
+ 'Asia/Ho_Chi_Minh',
1355
+ 'Asia/Hong_Kong',
1356
+ 'Asia/Hovd',
1357
+ 'Asia/Irkutsk',
1358
+ 'Asia/Jakarta',
1359
+ 'Asia/Jayapura',
1360
+ 'Asia/Jerusalem',
1361
+ 'Asia/Kabul',
1362
+ 'Asia/Kamchatka',
1363
+ 'Asia/Karachi',
1364
+ 'Asia/Kathmandu',
1365
+ 'Asia/Khandyga',
1366
+ 'Asia/Kolkata',
1367
+ 'Asia/Krasnoyarsk',
1368
+ 'Asia/Kuala_Lumpur',
1369
+ 'Asia/Kuching',
1370
+ 'Asia/Kuwait',
1371
+ 'Asia/Macau',
1372
+ 'Asia/Magadan',
1373
+ 'Asia/Makassar',
1374
+ 'Asia/Manila',
1375
+ 'Asia/Muscat',
1376
+ 'Asia/Nicosia',
1377
+ 'Asia/Novokuznetsk',
1378
+ 'Asia/Novosibirsk',
1379
+ 'Asia/Omsk',
1380
+ 'Asia/Oral',
1381
+ 'Asia/Phnom_Penh',
1382
+ 'Asia/Pontianak',
1383
+ 'Asia/Pyongyang',
1384
+ 'Asia/Qatar',
1385
+ 'Asia/Qostanay',
1386
+ 'Asia/Qyzylorda',
1387
+ 'Asia/Riyadh',
1388
+ 'Asia/Sakhalin',
1389
+ 'Asia/Samarkand',
1390
+ 'Asia/Seoul',
1391
+ 'Asia/Shanghai',
1392
+ 'Asia/Singapore',
1393
+ 'Asia/Srednekolymsk',
1394
+ 'Asia/Taipei',
1395
+ 'Asia/Tashkent',
1396
+ 'Asia/Tbilisi',
1397
+ 'Asia/Tehran',
1398
+ 'Asia/Thimphu',
1399
+ 'Asia/Tokyo',
1400
+ 'Asia/Tomsk',
1401
+ 'Asia/Ulaanbaatar',
1402
+ 'Asia/Urumqi',
1403
+ 'Asia/Ust-Nera',
1404
+ 'Asia/Vientiane',
1405
+ 'Asia/Vladivostok',
1406
+ 'Asia/Yakutsk',
1407
+ 'Asia/Yangon',
1408
+ 'Asia/Yekaterinburg',
1409
+ 'Asia/Yerevan',
1410
+ 'Atlantic/Azores',
1411
+ 'Atlantic/Bermuda',
1412
+ 'Atlantic/Canary',
1413
+ 'Atlantic/Cape_Verde',
1414
+ 'Atlantic/Faroe',
1415
+ 'Atlantic/Madeira',
1416
+ 'Atlantic/Reykjavik',
1417
+ 'Atlantic/South_Georgia',
1418
+ 'Atlantic/St_Helena',
1419
+ 'Atlantic/Stanley',
1420
+ 'Australia/Adelaide',
1421
+ 'Australia/Brisbane',
1422
+ 'Australia/Broken_Hill',
1423
+ 'Australia/Darwin',
1424
+ 'Australia/Eucla',
1425
+ 'Australia/Hobart',
1426
+ 'Australia/Lindeman',
1427
+ 'Australia/Lord_Howe',
1428
+ 'Australia/Melbourne',
1429
+ 'Australia/Perth',
1430
+ 'Australia/Sydney',
1431
+ 'Canada/Atlantic',
1432
+ 'Canada/Central',
1433
+ 'Canada/Eastern',
1434
+ 'Canada/Mountain',
1435
+ 'Canada/Newfoundland',
1436
+ 'Canada/Pacific',
1437
+ 'Europe/Amsterdam',
1438
+ 'Europe/Andorra',
1439
+ 'Europe/Astrakhan',
1440
+ 'Europe/Athens',
1441
+ 'Europe/Belgrade',
1442
+ 'Europe/Berlin',
1443
+ 'Europe/Bratislava',
1444
+ 'Europe/Brussels',
1445
+ 'Europe/Bucharest',
1446
+ 'Europe/Budapest',
1447
+ 'Europe/Busingen',
1448
+ 'Europe/Chisinau',
1449
+ 'Europe/Copenhagen',
1450
+ 'Europe/Dublin',
1451
+ 'Europe/Gibraltar',
1452
+ 'Europe/Guernsey',
1453
+ 'Europe/Helsinki',
1454
+ 'Europe/Isle_of_Man',
1455
+ 'Europe/Istanbul',
1456
+ 'Europe/Jersey',
1457
+ 'Europe/Kaliningrad',
1458
+ 'Europe/Kirov',
1459
+ 'Europe/Kyiv',
1460
+ 'Europe/Lisbon',
1461
+ 'Europe/Ljubljana',
1462
+ 'Europe/London',
1463
+ 'Europe/Luxembourg',
1464
+ 'Europe/Madrid',
1465
+ 'Europe/Malta',
1466
+ 'Europe/Mariehamn',
1467
+ 'Europe/Minsk',
1468
+ 'Europe/Monaco',
1469
+ 'Europe/Moscow',
1470
+ 'Europe/Oslo',
1471
+ 'Europe/Paris',
1472
+ 'Europe/Podgorica',
1473
+ 'Europe/Prague',
1474
+ 'Europe/Riga',
1475
+ 'Europe/Rome',
1476
+ 'Europe/Samara',
1477
+ 'Europe/San_Marino',
1478
+ 'Europe/Sarajevo',
1479
+ 'Europe/Saratov',
1480
+ 'Europe/Simferopol',
1481
+ 'Europe/Skopje',
1482
+ 'Europe/Sofia',
1483
+ 'Europe/Stockholm',
1484
+ 'Europe/Tallinn',
1485
+ 'Europe/Tirane',
1486
+ 'Europe/Ulyanovsk',
1487
+ 'Europe/Vaduz',
1488
+ 'Europe/Vatican',
1489
+ 'Europe/Vienna',
1490
+ 'Europe/Vilnius',
1491
+ 'Europe/Volgograd',
1492
+ 'Europe/Warsaw',
1493
+ 'Europe/Zagreb',
1494
+ 'Europe/Zurich',
1495
+ 'GMT',
1496
+ 'Indian/Antananarivo',
1497
+ 'Indian/Chagos',
1498
+ 'Indian/Christmas',
1499
+ 'Indian/Cocos',
1500
+ 'Indian/Comoro',
1501
+ 'Indian/Kerguelen',
1502
+ 'Indian/Mahe',
1503
+ 'Indian/Maldives',
1504
+ 'Indian/Mauritius',
1505
+ 'Indian/Mayotte',
1506
+ 'Indian/Reunion',
1507
+ 'Pacific/Apia',
1508
+ 'Pacific/Auckland',
1509
+ 'Pacific/Bougainville',
1510
+ 'Pacific/Chatham',
1511
+ 'Pacific/Chuuk',
1512
+ 'Pacific/Easter',
1513
+ 'Pacific/Efate',
1514
+ 'Pacific/Fakaofo',
1515
+ 'Pacific/Fiji',
1516
+ 'Pacific/Funafuti',
1517
+ 'Pacific/Galapagos',
1518
+ 'Pacific/Gambier',
1519
+ 'Pacific/Guadalcanal',
1520
+ 'Pacific/Guam',
1521
+ 'Pacific/Honolulu',
1522
+ 'Pacific/Kanton',
1523
+ 'Pacific/Kiritimati',
1524
+ 'Pacific/Kosrae',
1525
+ 'Pacific/Kwajalein',
1526
+ 'Pacific/Majuro',
1527
+ 'Pacific/Marquesas',
1528
+ 'Pacific/Midway',
1529
+ 'Pacific/Nauru',
1530
+ 'Pacific/Niue',
1531
+ 'Pacific/Norfolk',
1532
+ 'Pacific/Noumea',
1533
+ 'Pacific/Pago_Pago',
1534
+ 'Pacific/Palau',
1535
+ 'Pacific/Pitcairn',
1536
+ 'Pacific/Pohnpei',
1537
+ 'Pacific/Port_Moresby',
1538
+ 'Pacific/Rarotonga',
1539
+ 'Pacific/Saipan',
1540
+ 'Pacific/Tahiti',
1541
+ 'Pacific/Tarawa',
1542
+ 'Pacific/Tongatapu',
1543
+ 'Pacific/Wake',
1544
+ 'Pacific/Wallis',
1545
+ 'US/Alaska',
1546
+ 'US/Arizona',
1547
+ 'US/Central',
1548
+ 'US/Eastern',
1549
+ 'US/Hawaii',
1550
+ 'US/Mountain',
1551
+ 'US/Pacific',
1552
+ 'UTC']
1553
+ common_timezones = LazyList(
1554
+ tz for tz in common_timezones if tz in all_timezones)
1555
+
1556
+ common_timezones_set = LazySet(common_timezones)
python_env/lib/site-packages/pytz/__pycache__/__init__.cpython-310.pyc ADDED
Binary file (26.2 kB). View file
 
python_env/lib/site-packages/pytz/__pycache__/exceptions.cpython-310.pyc ADDED
Binary file (2.1 kB). View file
 
python_env/lib/site-packages/pytz/__pycache__/lazy.cpython-310.pyc ADDED
Binary file (4.71 kB). View file
 
python_env/lib/site-packages/pytz/__pycache__/reference.cpython-310.pyc ADDED
Binary file (3.85 kB). View file
 
python_env/lib/site-packages/pytz/__pycache__/tzfile.cpython-310.pyc ADDED
Binary file (3.13 kB). View file
 
python_env/lib/site-packages/pytz/__pycache__/tzinfo.cpython-310.pyc ADDED
Binary file (14.8 kB). View file
 
python_env/lib/site-packages/pytz/exceptions.py ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ '''
2
+ Custom exceptions raised by pytz.
3
+ '''
4
+
5
+ __all__ = [
6
+ 'UnknownTimeZoneError', 'InvalidTimeError', 'AmbiguousTimeError',
7
+ 'NonExistentTimeError',
8
+ ]
9
+
10
+
11
+ class Error(Exception):
12
+ '''Base class for all exceptions raised by the pytz library'''
13
+
14
+
15
+ class UnknownTimeZoneError(KeyError, Error):
16
+ '''Exception raised when pytz is passed an unknown timezone.
17
+
18
+ >>> isinstance(UnknownTimeZoneError(), LookupError)
19
+ True
20
+
21
+ This class is actually a subclass of KeyError to provide backwards
22
+ compatibility with code relying on the undocumented behavior of earlier
23
+ pytz releases.
24
+
25
+ >>> isinstance(UnknownTimeZoneError(), KeyError)
26
+ True
27
+
28
+ And also a subclass of pytz.exceptions.Error, as are other pytz
29
+ exceptions.
30
+
31
+ >>> isinstance(UnknownTimeZoneError(), Error)
32
+ True
33
+
34
+ '''
35
+ pass
36
+
37
+
38
+ class InvalidTimeError(Error):
39
+ '''Base class for invalid time exceptions.'''
40
+
41
+
42
+ class AmbiguousTimeError(InvalidTimeError):
43
+ '''Exception raised when attempting to create an ambiguous wallclock time.
44
+
45
+ At the end of a DST transition period, a particular wallclock time will
46
+ occur twice (once before the clocks are set back, once after). Both
47
+ possibilities may be correct, unless further information is supplied.
48
+
49
+ See DstTzInfo.normalize() for more info
50
+ '''
51
+
52
+
53
+ class NonExistentTimeError(InvalidTimeError):
54
+ '''Exception raised when attempting to create a wallclock time that
55
+ cannot exist.
56
+
57
+ At the start of a DST transition period, the wallclock time jumps forward.
58
+ The instants jumped over never occur.
59
+ '''
python_env/lib/site-packages/pytz/lazy.py ADDED
@@ -0,0 +1,172 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from threading import RLock
2
+ try:
3
+ from collections.abc import Mapping as DictMixin
4
+ except ImportError: # Python < 3.3
5
+ try:
6
+ from UserDict import DictMixin # Python 2
7
+ except ImportError: # Python 3.0-3.3
8
+ from collections import Mapping as DictMixin
9
+
10
+
11
+ # With lazy loading, we might end up with multiple threads triggering
12
+ # it at the same time. We need a lock.
13
+ _fill_lock = RLock()
14
+
15
+
16
+ class LazyDict(DictMixin):
17
+ """Dictionary populated on first use."""
18
+ data = None
19
+
20
+ def __getitem__(self, key):
21
+ if self.data is None:
22
+ _fill_lock.acquire()
23
+ try:
24
+ if self.data is None:
25
+ self._fill()
26
+ finally:
27
+ _fill_lock.release()
28
+ return self.data[key.upper()]
29
+
30
+ def __contains__(self, key):
31
+ if self.data is None:
32
+ _fill_lock.acquire()
33
+ try:
34
+ if self.data is None:
35
+ self._fill()
36
+ finally:
37
+ _fill_lock.release()
38
+ return key in self.data
39
+
40
+ def __iter__(self):
41
+ if self.data is None:
42
+ _fill_lock.acquire()
43
+ try:
44
+ if self.data is None:
45
+ self._fill()
46
+ finally:
47
+ _fill_lock.release()
48
+ return iter(self.data)
49
+
50
+ def __len__(self):
51
+ if self.data is None:
52
+ _fill_lock.acquire()
53
+ try:
54
+ if self.data is None:
55
+ self._fill()
56
+ finally:
57
+ _fill_lock.release()
58
+ return len(self.data)
59
+
60
+ def keys(self):
61
+ if self.data is None:
62
+ _fill_lock.acquire()
63
+ try:
64
+ if self.data is None:
65
+ self._fill()
66
+ finally:
67
+ _fill_lock.release()
68
+ return self.data.keys()
69
+
70
+
71
+ class LazyList(list):
72
+ """List populated on first use."""
73
+
74
+ _props = [
75
+ '__str__', '__repr__', '__unicode__',
76
+ '__hash__', '__sizeof__', '__cmp__',
77
+ '__lt__', '__le__', '__eq__', '__ne__', '__gt__', '__ge__',
78
+ 'append', 'count', 'index', 'extend', 'insert', 'pop', 'remove',
79
+ 'reverse', 'sort', '__add__', '__radd__', '__iadd__', '__mul__',
80
+ '__rmul__', '__imul__', '__contains__', '__len__', '__nonzero__',
81
+ '__getitem__', '__setitem__', '__delitem__', '__iter__',
82
+ '__reversed__', '__getslice__', '__setslice__', '__delslice__']
83
+
84
+ def __new__(cls, fill_iter=None):
85
+
86
+ if fill_iter is None:
87
+ return list()
88
+
89
+ # We need a new class as we will be dynamically messing with its
90
+ # methods.
91
+ class LazyList(list):
92
+ pass
93
+
94
+ fill_iter = [fill_iter]
95
+
96
+ def lazy(name):
97
+ def _lazy(self, *args, **kw):
98
+ _fill_lock.acquire()
99
+ try:
100
+ if len(fill_iter) > 0:
101
+ list.extend(self, fill_iter.pop())
102
+ for method_name in cls._props:
103
+ delattr(LazyList, method_name)
104
+ finally:
105
+ _fill_lock.release()
106
+ return getattr(list, name)(self, *args, **kw)
107
+ return _lazy
108
+
109
+ for name in cls._props:
110
+ setattr(LazyList, name, lazy(name))
111
+
112
+ new_list = LazyList()
113
+ return new_list
114
+
115
+ # Not all versions of Python declare the same magic methods.
116
+ # Filter out properties that don't exist in this version of Python
117
+ # from the list.
118
+ LazyList._props = [prop for prop in LazyList._props if hasattr(list, prop)]
119
+
120
+
121
+ class LazySet(set):
122
+ """Set populated on first use."""
123
+
124
+ _props = (
125
+ '__str__', '__repr__', '__unicode__',
126
+ '__hash__', '__sizeof__', '__cmp__',
127
+ '__lt__', '__le__', '__eq__', '__ne__', '__gt__', '__ge__',
128
+ '__contains__', '__len__', '__nonzero__',
129
+ '__getitem__', '__setitem__', '__delitem__', '__iter__',
130
+ '__sub__', '__and__', '__xor__', '__or__',
131
+ '__rsub__', '__rand__', '__rxor__', '__ror__',
132
+ '__isub__', '__iand__', '__ixor__', '__ior__',
133
+ 'add', 'clear', 'copy', 'difference', 'difference_update',
134
+ 'discard', 'intersection', 'intersection_update', 'isdisjoint',
135
+ 'issubset', 'issuperset', 'pop', 'remove',
136
+ 'symmetric_difference', 'symmetric_difference_update',
137
+ 'union', 'update')
138
+
139
+ def __new__(cls, fill_iter=None):
140
+
141
+ if fill_iter is None:
142
+ return set()
143
+
144
+ class LazySet(set):
145
+ pass
146
+
147
+ fill_iter = [fill_iter]
148
+
149
+ def lazy(name):
150
+ def _lazy(self, *args, **kw):
151
+ _fill_lock.acquire()
152
+ try:
153
+ if len(fill_iter) > 0:
154
+ for i in fill_iter.pop():
155
+ set.add(self, i)
156
+ for method_name in cls._props:
157
+ delattr(LazySet, method_name)
158
+ finally:
159
+ _fill_lock.release()
160
+ return getattr(set, name)(self, *args, **kw)
161
+ return _lazy
162
+
163
+ for name in cls._props:
164
+ setattr(LazySet, name, lazy(name))
165
+
166
+ new_set = LazySet()
167
+ return new_set
168
+
169
+ # Not all versions of Python declare the same magic methods.
170
+ # Filter out properties that don't exist in this version of Python
171
+ # from the list.
172
+ LazySet._props = [prop for prop in LazySet._props if hasattr(set, prop)]
python_env/lib/site-packages/pytz/reference.py ADDED
@@ -0,0 +1,140 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ '''
2
+ Reference tzinfo implementations from the Python docs.
3
+ Used for testing against as they are only correct for the years
4
+ 1987 to 2006. Do not use these for real code.
5
+ '''
6
+
7
+ from datetime import tzinfo, timedelta, datetime
8
+ from pytz import HOUR, ZERO, UTC
9
+
10
+ __all__ = [
11
+ 'FixedOffset',
12
+ 'LocalTimezone',
13
+ 'USTimeZone',
14
+ 'Eastern',
15
+ 'Central',
16
+ 'Mountain',
17
+ 'Pacific',
18
+ 'UTC'
19
+ ]
20
+
21
+
22
+ # A class building tzinfo objects for fixed-offset time zones.
23
+ # Note that FixedOffset(0, "UTC") is a different way to build a
24
+ # UTC tzinfo object.
25
+ class FixedOffset(tzinfo):
26
+ """Fixed offset in minutes east from UTC."""
27
+
28
+ def __init__(self, offset, name):
29
+ self.__offset = timedelta(minutes=offset)
30
+ self.__name = name
31
+
32
+ def utcoffset(self, dt):
33
+ return self.__offset
34
+
35
+ def tzname(self, dt):
36
+ return self.__name
37
+
38
+ def dst(self, dt):
39
+ return ZERO
40
+
41
+
42
+ import time as _time
43
+
44
+ STDOFFSET = timedelta(seconds=-_time.timezone)
45
+ if _time.daylight:
46
+ DSTOFFSET = timedelta(seconds=-_time.altzone)
47
+ else:
48
+ DSTOFFSET = STDOFFSET
49
+
50
+ DSTDIFF = DSTOFFSET - STDOFFSET
51
+
52
+
53
+ # A class capturing the platform's idea of local time.
54
+ class LocalTimezone(tzinfo):
55
+
56
+ def utcoffset(self, dt):
57
+ if self._isdst(dt):
58
+ return DSTOFFSET
59
+ else:
60
+ return STDOFFSET
61
+
62
+ def dst(self, dt):
63
+ if self._isdst(dt):
64
+ return DSTDIFF
65
+ else:
66
+ return ZERO
67
+
68
+ def tzname(self, dt):
69
+ return _time.tzname[self._isdst(dt)]
70
+
71
+ def _isdst(self, dt):
72
+ tt = (dt.year, dt.month, dt.day,
73
+ dt.hour, dt.minute, dt.second,
74
+ dt.weekday(), 0, -1)
75
+ stamp = _time.mktime(tt)
76
+ tt = _time.localtime(stamp)
77
+ return tt.tm_isdst > 0
78
+
79
+ Local = LocalTimezone()
80
+
81
+
82
+ def first_sunday_on_or_after(dt):
83
+ days_to_go = 6 - dt.weekday()
84
+ if days_to_go:
85
+ dt += timedelta(days_to_go)
86
+ return dt
87
+
88
+
89
+ # In the US, DST starts at 2am (standard time) on the first Sunday in April.
90
+ DSTSTART = datetime(1, 4, 1, 2)
91
+ # and ends at 2am (DST time; 1am standard time) on the last Sunday of Oct.
92
+ # which is the first Sunday on or after Oct 25.
93
+ DSTEND = datetime(1, 10, 25, 1)
94
+
95
+
96
+ # A complete implementation of current DST rules for major US time zones.
97
+ class USTimeZone(tzinfo):
98
+
99
+ def __init__(self, hours, reprname, stdname, dstname):
100
+ self.stdoffset = timedelta(hours=hours)
101
+ self.reprname = reprname
102
+ self.stdname = stdname
103
+ self.dstname = dstname
104
+
105
+ def __repr__(self):
106
+ return self.reprname
107
+
108
+ def tzname(self, dt):
109
+ if self.dst(dt):
110
+ return self.dstname
111
+ else:
112
+ return self.stdname
113
+
114
+ def utcoffset(self, dt):
115
+ return self.stdoffset + self.dst(dt)
116
+
117
+ def dst(self, dt):
118
+ if dt is None or dt.tzinfo is None:
119
+ # An exception may be sensible here, in one or both cases.
120
+ # It depends on how you want to treat them. The default
121
+ # fromutc() implementation (called by the default astimezone()
122
+ # implementation) passes a datetime with dt.tzinfo is self.
123
+ return ZERO
124
+ assert dt.tzinfo is self
125
+
126
+ # Find first Sunday in April & the last in October.
127
+ start = first_sunday_on_or_after(DSTSTART.replace(year=dt.year))
128
+ end = first_sunday_on_or_after(DSTEND.replace(year=dt.year))
129
+
130
+ # Can't compare naive to aware objects, so strip the timezone from
131
+ # dt first.
132
+ if start <= dt.replace(tzinfo=None) < end:
133
+ return HOUR
134
+ else:
135
+ return ZERO
136
+
137
+ Eastern = USTimeZone(-5, "Eastern", "EST", "EDT")
138
+ Central = USTimeZone(-6, "Central", "CST", "CDT")
139
+ Mountain = USTimeZone(-7, "Mountain", "MST", "MDT")
140
+ Pacific = USTimeZone(-8, "Pacific", "PST", "PDT")
python_env/lib/site-packages/pytz/tzfile.py ADDED
@@ -0,0 +1,133 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ '''
2
+ $Id: tzfile.py,v 1.8 2004/06/03 00:15:24 zenzen Exp $
3
+ '''
4
+
5
+ from datetime import datetime
6
+ from struct import unpack, calcsize
7
+
8
+ from pytz.tzinfo import StaticTzInfo, DstTzInfo, memorized_ttinfo
9
+ from pytz.tzinfo import memorized_datetime, memorized_timedelta
10
+
11
+
12
+ def _byte_string(s):
13
+ """Cast a string or byte string to an ASCII byte string."""
14
+ return s.encode('ASCII')
15
+
16
+ _NULL = _byte_string('\0')
17
+
18
+
19
+ def _std_string(s):
20
+ """Cast a string or byte string to an ASCII string."""
21
+ return str(s.decode('ASCII'))
22
+
23
+
24
+ def build_tzinfo(zone, fp):
25
+ head_fmt = '>4s c 15x 6l'
26
+ head_size = calcsize(head_fmt)
27
+ (magic, format, ttisgmtcnt, ttisstdcnt, leapcnt, timecnt,
28
+ typecnt, charcnt) = unpack(head_fmt, fp.read(head_size))
29
+
30
+ # Make sure it is a tzfile(5) file
31
+ assert magic == _byte_string('TZif'), 'Got magic %s' % repr(magic)
32
+
33
+ # Read out the transition times, localtime indices and ttinfo structures.
34
+ data_fmt = '>%(timecnt)dl %(timecnt)dB %(ttinfo)s %(charcnt)ds' % dict(
35
+ timecnt=timecnt, ttinfo='lBB' * typecnt, charcnt=charcnt)
36
+ data_size = calcsize(data_fmt)
37
+ data = unpack(data_fmt, fp.read(data_size))
38
+
39
+ # make sure we unpacked the right number of values
40
+ assert len(data) == 2 * timecnt + 3 * typecnt + 1
41
+ transitions = [memorized_datetime(trans)
42
+ for trans in data[:timecnt]]
43
+ lindexes = list(data[timecnt:2 * timecnt])
44
+ ttinfo_raw = data[2 * timecnt:-1]
45
+ tznames_raw = data[-1]
46
+ del data
47
+
48
+ # Process ttinfo into separate structs
49
+ ttinfo = []
50
+ tznames = {}
51
+ i = 0
52
+ while i < len(ttinfo_raw):
53
+ # have we looked up this timezone name yet?
54
+ tzname_offset = ttinfo_raw[i + 2]
55
+ if tzname_offset not in tznames:
56
+ nul = tznames_raw.find(_NULL, tzname_offset)
57
+ if nul < 0:
58
+ nul = len(tznames_raw)
59
+ tznames[tzname_offset] = _std_string(
60
+ tznames_raw[tzname_offset:nul])
61
+ ttinfo.append((ttinfo_raw[i],
62
+ bool(ttinfo_raw[i + 1]),
63
+ tznames[tzname_offset]))
64
+ i += 3
65
+
66
+ # Now build the timezone object
67
+ if len(ttinfo) == 1 or len(transitions) == 0:
68
+ ttinfo[0][0], ttinfo[0][2]
69
+ cls = type(zone, (StaticTzInfo,), dict(
70
+ zone=zone,
71
+ _utcoffset=memorized_timedelta(ttinfo[0][0]),
72
+ _tzname=ttinfo[0][2]))
73
+ else:
74
+ # Early dates use the first standard time ttinfo
75
+ i = 0
76
+ while ttinfo[i][1]:
77
+ i += 1
78
+ if ttinfo[i] == ttinfo[lindexes[0]]:
79
+ transitions[0] = datetime.min
80
+ else:
81
+ transitions.insert(0, datetime.min)
82
+ lindexes.insert(0, i)
83
+
84
+ # calculate transition info
85
+ transition_info = []
86
+ for i in range(len(transitions)):
87
+ inf = ttinfo[lindexes[i]]
88
+ utcoffset = inf[0]
89
+ if not inf[1]:
90
+ dst = 0
91
+ else:
92
+ for j in range(i - 1, -1, -1):
93
+ prev_inf = ttinfo[lindexes[j]]
94
+ if not prev_inf[1]:
95
+ break
96
+ dst = inf[0] - prev_inf[0] # dst offset
97
+
98
+ # Bad dst? Look further. DST > 24 hours happens when
99
+ # a timzone has moved across the international dateline.
100
+ if dst <= 0 or dst > 3600 * 3:
101
+ for j in range(i + 1, len(transitions)):
102
+ stdinf = ttinfo[lindexes[j]]
103
+ if not stdinf[1]:
104
+ dst = inf[0] - stdinf[0]
105
+ if dst > 0:
106
+ break # Found a useful std time.
107
+
108
+ tzname = inf[2]
109
+
110
+ # Round utcoffset and dst to the nearest minute or the
111
+ # datetime library will complain. Conversions to these timezones
112
+ # might be up to plus or minus 30 seconds out, but it is
113
+ # the best we can do.
114
+ utcoffset = int((utcoffset + 30) // 60) * 60
115
+ dst = int((dst + 30) // 60) * 60
116
+ transition_info.append(memorized_ttinfo(utcoffset, dst, tzname))
117
+
118
+ cls = type(zone, (DstTzInfo,), dict(
119
+ zone=zone,
120
+ _utc_transition_times=transitions,
121
+ _transition_info=transition_info))
122
+
123
+ return cls()
124
+
125
+ if __name__ == '__main__':
126
+ import os.path
127
+ from pprint import pprint
128
+ base = os.path.join(os.path.dirname(__file__), 'zoneinfo')
129
+ tz = build_tzinfo('Australia/Melbourne',
130
+ open(os.path.join(base, 'Australia', 'Melbourne'), 'rb'))
131
+ tz = build_tzinfo('US/Eastern',
132
+ open(os.path.join(base, 'US', 'Eastern'), 'rb'))
133
+ pprint(tz._utc_transition_times)
python_env/lib/site-packages/pytz/tzinfo.py ADDED
@@ -0,0 +1,580 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ '''Base classes and helpers for building zone specific tzinfo classes'''
2
+
3
+ from datetime import datetime, timedelta, tzinfo
4
+ from bisect import bisect_right
5
+ try:
6
+ set
7
+ except NameError:
8
+ from sets import Set as set
9
+
10
+ import pytz
11
+ from pytz.exceptions import AmbiguousTimeError, NonExistentTimeError
12
+
13
+ __all__ = []
14
+
15
+ _timedelta_cache = {}
16
+
17
+
18
+ def memorized_timedelta(seconds):
19
+ '''Create only one instance of each distinct timedelta'''
20
+ try:
21
+ return _timedelta_cache[seconds]
22
+ except KeyError:
23
+ delta = timedelta(seconds=seconds)
24
+ _timedelta_cache[seconds] = delta
25
+ return delta
26
+
27
+
28
+ _epoch = datetime(1970, 1, 1, 0, 0) # datetime.utcfromtimestamp(0)
29
+ _datetime_cache = {0: _epoch}
30
+
31
+
32
+ def memorized_datetime(seconds):
33
+ '''Create only one instance of each distinct datetime'''
34
+ try:
35
+ return _datetime_cache[seconds]
36
+ except KeyError:
37
+ # NB. We can't just do datetime.fromtimestamp(seconds, tz=timezone.utc).replace(tzinfo=None)
38
+ # as this fails with negative values under Windows (Bug #90096)
39
+ dt = _epoch + timedelta(seconds=seconds)
40
+ _datetime_cache[seconds] = dt
41
+ return dt
42
+
43
+
44
+ _ttinfo_cache = {}
45
+
46
+
47
+ def memorized_ttinfo(*args):
48
+ '''Create only one instance of each distinct tuple'''
49
+ try:
50
+ return _ttinfo_cache[args]
51
+ except KeyError:
52
+ ttinfo = (
53
+ memorized_timedelta(args[0]),
54
+ memorized_timedelta(args[1]),
55
+ args[2]
56
+ )
57
+ _ttinfo_cache[args] = ttinfo
58
+ return ttinfo
59
+
60
+
61
+ _notime = memorized_timedelta(0)
62
+
63
+
64
+ def _to_seconds(td):
65
+ '''Convert a timedelta to seconds'''
66
+ return td.seconds + td.days * 24 * 60 * 60
67
+
68
+
69
+ class BaseTzInfo(tzinfo):
70
+ # Overridden in subclass
71
+ _utcoffset = None
72
+ _tzname = None
73
+ zone = None
74
+
75
+ def __str__(self):
76
+ return self.zone
77
+
78
+
79
+ class StaticTzInfo(BaseTzInfo):
80
+ '''A timezone that has a constant offset from UTC
81
+
82
+ These timezones are rare, as most locations have changed their
83
+ offset at some point in their history
84
+ '''
85
+ def fromutc(self, dt):
86
+ '''See datetime.tzinfo.fromutc'''
87
+ if dt.tzinfo is not None and dt.tzinfo is not self:
88
+ raise ValueError('fromutc: dt.tzinfo is not self')
89
+ return (dt + self._utcoffset).replace(tzinfo=self)
90
+
91
+ def utcoffset(self, dt, is_dst=None):
92
+ '''See datetime.tzinfo.utcoffset
93
+
94
+ is_dst is ignored for StaticTzInfo, and exists only to
95
+ retain compatibility with DstTzInfo.
96
+ '''
97
+ return self._utcoffset
98
+
99
+ def dst(self, dt, is_dst=None):
100
+ '''See datetime.tzinfo.dst
101
+
102
+ is_dst is ignored for StaticTzInfo, and exists only to
103
+ retain compatibility with DstTzInfo.
104
+ '''
105
+ return _notime
106
+
107
+ def tzname(self, dt, is_dst=None):
108
+ '''See datetime.tzinfo.tzname
109
+
110
+ is_dst is ignored for StaticTzInfo, and exists only to
111
+ retain compatibility with DstTzInfo.
112
+ '''
113
+ return self._tzname
114
+
115
+ def localize(self, dt, is_dst=False):
116
+ '''Convert naive time to local time'''
117
+ if dt.tzinfo is not None:
118
+ raise ValueError('Not naive datetime (tzinfo is already set)')
119
+ return dt.replace(tzinfo=self)
120
+
121
+ def normalize(self, dt, is_dst=False):
122
+ '''Correct the timezone information on the given datetime.
123
+
124
+ This is normally a no-op, as StaticTzInfo timezones never have
125
+ ambiguous cases to correct:
126
+
127
+ >>> from pytz import timezone
128
+ >>> gmt = timezone('GMT')
129
+ >>> isinstance(gmt, StaticTzInfo)
130
+ True
131
+ >>> dt = datetime(2011, 5, 8, 1, 2, 3, tzinfo=gmt)
132
+ >>> gmt.normalize(dt) is dt
133
+ True
134
+
135
+ The supported method of converting between timezones is to use
136
+ datetime.astimezone(). Currently normalize() also works:
137
+
138
+ >>> la = timezone('America/Los_Angeles')
139
+ >>> dt = la.localize(datetime(2011, 5, 7, 1, 2, 3))
140
+ >>> fmt = '%Y-%m-%d %H:%M:%S %Z (%z)'
141
+ >>> gmt.normalize(dt).strftime(fmt)
142
+ '2011-05-07 08:02:03 GMT (+0000)'
143
+ '''
144
+ if dt.tzinfo is self:
145
+ return dt
146
+ if dt.tzinfo is None:
147
+ raise ValueError('Naive time - no tzinfo set')
148
+ return dt.astimezone(self)
149
+
150
+ def __repr__(self):
151
+ return '<StaticTzInfo %r>' % (self.zone,)
152
+
153
+ def __reduce__(self):
154
+ # Special pickle to zone remains a singleton and to cope with
155
+ # database changes.
156
+ return pytz._p, (self.zone,)
157
+
158
+
159
+ class DstTzInfo(BaseTzInfo):
160
+ '''A timezone that has a variable offset from UTC
161
+
162
+ The offset might change if daylight saving time comes into effect,
163
+ or at a point in history when the region decides to change their
164
+ timezone definition.
165
+ '''
166
+ # Overridden in subclass
167
+
168
+ # Sorted list of DST transition times, UTC
169
+ _utc_transition_times = None
170
+
171
+ # [(utcoffset, dstoffset, tzname)] corresponding to
172
+ # _utc_transition_times entries
173
+ _transition_info = None
174
+
175
+ zone = None
176
+
177
+ # Set in __init__
178
+
179
+ _tzinfos = None
180
+ _dst = None # DST offset
181
+
182
+ def __init__(self, _inf=None, _tzinfos=None):
183
+ if _inf:
184
+ self._tzinfos = _tzinfos
185
+ self._utcoffset, self._dst, self._tzname = _inf
186
+ else:
187
+ _tzinfos = {}
188
+ self._tzinfos = _tzinfos
189
+ self._utcoffset, self._dst, self._tzname = (
190
+ self._transition_info[0])
191
+ _tzinfos[self._transition_info[0]] = self
192
+ for inf in self._transition_info[1:]:
193
+ if inf not in _tzinfos:
194
+ _tzinfos[inf] = self.__class__(inf, _tzinfos)
195
+
196
+ def fromutc(self, dt):
197
+ '''See datetime.tzinfo.fromutc'''
198
+ if (dt.tzinfo is not None and
199
+ getattr(dt.tzinfo, '_tzinfos', None) is not self._tzinfos):
200
+ raise ValueError('fromutc: dt.tzinfo is not self')
201
+ dt = dt.replace(tzinfo=None)
202
+ idx = max(0, bisect_right(self._utc_transition_times, dt) - 1)
203
+ inf = self._transition_info[idx]
204
+ return (dt + inf[0]).replace(tzinfo=self._tzinfos[inf])
205
+
206
+ def normalize(self, dt):
207
+ '''Correct the timezone information on the given datetime
208
+
209
+ If date arithmetic crosses DST boundaries, the tzinfo
210
+ is not magically adjusted. This method normalizes the
211
+ tzinfo to the correct one.
212
+
213
+ To test, first we need to do some setup
214
+
215
+ >>> from pytz import timezone
216
+ >>> utc = timezone('UTC')
217
+ >>> eastern = timezone('US/Eastern')
218
+ >>> fmt = '%Y-%m-%d %H:%M:%S %Z (%z)'
219
+
220
+ We next create a datetime right on an end-of-DST transition point,
221
+ the instant when the wallclocks are wound back one hour.
222
+
223
+ >>> utc_dt = datetime(2002, 10, 27, 6, 0, 0, tzinfo=utc)
224
+ >>> loc_dt = utc_dt.astimezone(eastern)
225
+ >>> loc_dt.strftime(fmt)
226
+ '2002-10-27 01:00:00 EST (-0500)'
227
+
228
+ Now, if we subtract a few minutes from it, note that the timezone
229
+ information has not changed.
230
+
231
+ >>> before = loc_dt - timedelta(minutes=10)
232
+ >>> before.strftime(fmt)
233
+ '2002-10-27 00:50:00 EST (-0500)'
234
+
235
+ But we can fix that by calling the normalize method
236
+
237
+ >>> before = eastern.normalize(before)
238
+ >>> before.strftime(fmt)
239
+ '2002-10-27 01:50:00 EDT (-0400)'
240
+
241
+ The supported method of converting between timezones is to use
242
+ datetime.astimezone(). Currently, normalize() also works:
243
+
244
+ >>> th = timezone('Asia/Bangkok')
245
+ >>> am = timezone('Europe/Amsterdam')
246
+ >>> dt = th.localize(datetime(2011, 5, 7, 1, 2, 3))
247
+ >>> fmt = '%Y-%m-%d %H:%M:%S %Z (%z)'
248
+ >>> am.normalize(dt).strftime(fmt)
249
+ '2011-05-06 20:02:03 CEST (+0200)'
250
+ '''
251
+ if dt.tzinfo is None:
252
+ raise ValueError('Naive time - no tzinfo set')
253
+
254
+ # Convert dt in localtime to UTC
255
+ offset = dt.tzinfo._utcoffset
256
+ dt = dt.replace(tzinfo=None)
257
+ dt = dt - offset
258
+ # convert it back, and return it
259
+ return self.fromutc(dt)
260
+
261
+ def localize(self, dt, is_dst=False):
262
+ '''Convert naive time to local time.
263
+
264
+ This method should be used to construct localtimes, rather
265
+ than passing a tzinfo argument to a datetime constructor.
266
+
267
+ is_dst is used to determine the correct timezone in the ambigous
268
+ period at the end of daylight saving time.
269
+
270
+ >>> from pytz import timezone
271
+ >>> fmt = '%Y-%m-%d %H:%M:%S %Z (%z)'
272
+ >>> amdam = timezone('Europe/Amsterdam')
273
+ >>> dt = datetime(2004, 10, 31, 2, 0, 0)
274
+ >>> loc_dt1 = amdam.localize(dt, is_dst=True)
275
+ >>> loc_dt2 = amdam.localize(dt, is_dst=False)
276
+ >>> loc_dt1.strftime(fmt)
277
+ '2004-10-31 02:00:00 CEST (+0200)'
278
+ >>> loc_dt2.strftime(fmt)
279
+ '2004-10-31 02:00:00 CET (+0100)'
280
+ >>> str(loc_dt2 - loc_dt1)
281
+ '1:00:00'
282
+
283
+ Use is_dst=None to raise an AmbiguousTimeError for ambiguous
284
+ times at the end of daylight saving time
285
+
286
+ >>> try:
287
+ ... loc_dt1 = amdam.localize(dt, is_dst=None)
288
+ ... except AmbiguousTimeError:
289
+ ... print('Ambiguous')
290
+ Ambiguous
291
+
292
+ is_dst defaults to False
293
+
294
+ >>> amdam.localize(dt) == amdam.localize(dt, False)
295
+ True
296
+
297
+ is_dst is also used to determine the correct timezone in the
298
+ wallclock times jumped over at the start of daylight saving time.
299
+
300
+ >>> pacific = timezone('US/Pacific')
301
+ >>> dt = datetime(2008, 3, 9, 2, 0, 0)
302
+ >>> ploc_dt1 = pacific.localize(dt, is_dst=True)
303
+ >>> ploc_dt2 = pacific.localize(dt, is_dst=False)
304
+ >>> ploc_dt1.strftime(fmt)
305
+ '2008-03-09 02:00:00 PDT (-0700)'
306
+ >>> ploc_dt2.strftime(fmt)
307
+ '2008-03-09 02:00:00 PST (-0800)'
308
+ >>> str(ploc_dt2 - ploc_dt1)
309
+ '1:00:00'
310
+
311
+ Use is_dst=None to raise a NonExistentTimeError for these skipped
312
+ times.
313
+
314
+ >>> try:
315
+ ... loc_dt1 = pacific.localize(dt, is_dst=None)
316
+ ... except NonExistentTimeError:
317
+ ... print('Non-existent')
318
+ Non-existent
319
+ '''
320
+ if dt.tzinfo is not None:
321
+ raise ValueError('Not naive datetime (tzinfo is already set)')
322
+
323
+ # Find the two best possibilities.
324
+ possible_loc_dt = set()
325
+ for delta in [timedelta(days=-1), timedelta(days=1)]:
326
+ loc_dt = dt + delta
327
+ idx = max(0, bisect_right(
328
+ self._utc_transition_times, loc_dt) - 1)
329
+ inf = self._transition_info[idx]
330
+ tzinfo = self._tzinfos[inf]
331
+ loc_dt = tzinfo.normalize(dt.replace(tzinfo=tzinfo))
332
+ if loc_dt.replace(tzinfo=None) == dt:
333
+ possible_loc_dt.add(loc_dt)
334
+
335
+ if len(possible_loc_dt) == 1:
336
+ return possible_loc_dt.pop()
337
+
338
+ # If there are no possibly correct timezones, we are attempting
339
+ # to convert a time that never happened - the time period jumped
340
+ # during the start-of-DST transition period.
341
+ if len(possible_loc_dt) == 0:
342
+ # If we refuse to guess, raise an exception.
343
+ if is_dst is None:
344
+ raise NonExistentTimeError(dt)
345
+
346
+ # If we are forcing the pre-DST side of the DST transition, we
347
+ # obtain the correct timezone by winding the clock forward a few
348
+ # hours.
349
+ elif is_dst:
350
+ return self.localize(
351
+ dt + timedelta(hours=6), is_dst=True) - timedelta(hours=6)
352
+
353
+ # If we are forcing the post-DST side of the DST transition, we
354
+ # obtain the correct timezone by winding the clock back.
355
+ else:
356
+ return self.localize(
357
+ dt - timedelta(hours=6),
358
+ is_dst=False) + timedelta(hours=6)
359
+
360
+ # If we get this far, we have multiple possible timezones - this
361
+ # is an ambiguous case occurring during the end-of-DST transition.
362
+
363
+ # If told to be strict, raise an exception since we have an
364
+ # ambiguous case
365
+ if is_dst is None:
366
+ raise AmbiguousTimeError(dt)
367
+
368
+ # Filter out the possiblilities that don't match the requested
369
+ # is_dst
370
+ filtered_possible_loc_dt = [
371
+ p for p in possible_loc_dt if bool(p.tzinfo._dst) == is_dst
372
+ ]
373
+
374
+ # Hopefully we only have one possibility left. Return it.
375
+ if len(filtered_possible_loc_dt) == 1:
376
+ return filtered_possible_loc_dt[0]
377
+
378
+ if len(filtered_possible_loc_dt) == 0:
379
+ filtered_possible_loc_dt = list(possible_loc_dt)
380
+
381
+ # If we get this far, we have in a wierd timezone transition
382
+ # where the clocks have been wound back but is_dst is the same
383
+ # in both (eg. Europe/Warsaw 1915 when they switched to CET).
384
+ # At this point, we just have to guess unless we allow more
385
+ # hints to be passed in (such as the UTC offset or abbreviation),
386
+ # but that is just getting silly.
387
+ #
388
+ # Choose the earliest (by UTC) applicable timezone if is_dst=True
389
+ # Choose the latest (by UTC) applicable timezone if is_dst=False
390
+ # i.e., behave like end-of-DST transition
391
+ dates = {} # utc -> local
392
+ for local_dt in filtered_possible_loc_dt:
393
+ utc_time = (
394
+ local_dt.replace(tzinfo=None) - local_dt.tzinfo._utcoffset)
395
+ assert utc_time not in dates
396
+ dates[utc_time] = local_dt
397
+ return dates[[min, max][not is_dst](dates)]
398
+
399
+ def utcoffset(self, dt, is_dst=None):
400
+ '''See datetime.tzinfo.utcoffset
401
+
402
+ The is_dst parameter may be used to remove ambiguity during DST
403
+ transitions.
404
+
405
+ >>> from pytz import timezone
406
+ >>> tz = timezone('America/St_Johns')
407
+ >>> ambiguous = datetime(2009, 10, 31, 23, 30)
408
+
409
+ >>> str(tz.utcoffset(ambiguous, is_dst=False))
410
+ '-1 day, 20:30:00'
411
+
412
+ >>> str(tz.utcoffset(ambiguous, is_dst=True))
413
+ '-1 day, 21:30:00'
414
+
415
+ >>> try:
416
+ ... tz.utcoffset(ambiguous)
417
+ ... except AmbiguousTimeError:
418
+ ... print('Ambiguous')
419
+ Ambiguous
420
+
421
+ '''
422
+ if dt is None:
423
+ return None
424
+ elif dt.tzinfo is not self:
425
+ dt = self.localize(dt, is_dst)
426
+ return dt.tzinfo._utcoffset
427
+ else:
428
+ return self._utcoffset
429
+
430
+ def dst(self, dt, is_dst=None):
431
+ '''See datetime.tzinfo.dst
432
+
433
+ The is_dst parameter may be used to remove ambiguity during DST
434
+ transitions.
435
+
436
+ >>> from pytz import timezone
437
+ >>> tz = timezone('America/St_Johns')
438
+
439
+ >>> normal = datetime(2009, 9, 1)
440
+
441
+ >>> str(tz.dst(normal))
442
+ '1:00:00'
443
+ >>> str(tz.dst(normal, is_dst=False))
444
+ '1:00:00'
445
+ >>> str(tz.dst(normal, is_dst=True))
446
+ '1:00:00'
447
+
448
+ >>> ambiguous = datetime(2009, 10, 31, 23, 30)
449
+
450
+ >>> str(tz.dst(ambiguous, is_dst=False))
451
+ '0:00:00'
452
+ >>> str(tz.dst(ambiguous, is_dst=True))
453
+ '1:00:00'
454
+ >>> try:
455
+ ... tz.dst(ambiguous)
456
+ ... except AmbiguousTimeError:
457
+ ... print('Ambiguous')
458
+ Ambiguous
459
+
460
+ '''
461
+ if dt is None:
462
+ return None
463
+ elif dt.tzinfo is not self:
464
+ dt = self.localize(dt, is_dst)
465
+ return dt.tzinfo._dst
466
+ else:
467
+ return self._dst
468
+
469
+ def tzname(self, dt, is_dst=None):
470
+ '''See datetime.tzinfo.tzname
471
+
472
+ The is_dst parameter may be used to remove ambiguity during DST
473
+ transitions.
474
+
475
+ >>> from pytz import timezone
476
+ >>> tz = timezone('America/St_Johns')
477
+
478
+ >>> normal = datetime(2009, 9, 1)
479
+
480
+ >>> tz.tzname(normal)
481
+ 'NDT'
482
+ >>> tz.tzname(normal, is_dst=False)
483
+ 'NDT'
484
+ >>> tz.tzname(normal, is_dst=True)
485
+ 'NDT'
486
+
487
+ >>> ambiguous = datetime(2009, 10, 31, 23, 30)
488
+
489
+ >>> tz.tzname(ambiguous, is_dst=False)
490
+ 'NST'
491
+ >>> tz.tzname(ambiguous, is_dst=True)
492
+ 'NDT'
493
+ >>> try:
494
+ ... tz.tzname(ambiguous)
495
+ ... except AmbiguousTimeError:
496
+ ... print('Ambiguous')
497
+ Ambiguous
498
+ '''
499
+ if dt is None:
500
+ return self.zone
501
+ elif dt.tzinfo is not self:
502
+ dt = self.localize(dt, is_dst)
503
+ return dt.tzinfo._tzname
504
+ else:
505
+ return self._tzname
506
+
507
+ def __repr__(self):
508
+ if self._dst:
509
+ dst = 'DST'
510
+ else:
511
+ dst = 'STD'
512
+ if self._utcoffset > _notime:
513
+ return '<DstTzInfo %r %s+%s %s>' % (
514
+ self.zone, self._tzname, self._utcoffset, dst
515
+ )
516
+ else:
517
+ return '<DstTzInfo %r %s%s %s>' % (
518
+ self.zone, self._tzname, self._utcoffset, dst
519
+ )
520
+
521
+ def __reduce__(self):
522
+ # Special pickle to zone remains a singleton and to cope with
523
+ # database changes.
524
+ return pytz._p, (
525
+ self.zone,
526
+ _to_seconds(self._utcoffset),
527
+ _to_seconds(self._dst),
528
+ self._tzname
529
+ )
530
+
531
+
532
+ def unpickler(zone, utcoffset=None, dstoffset=None, tzname=None):
533
+ """Factory function for unpickling pytz tzinfo instances.
534
+
535
+ This is shared for both StaticTzInfo and DstTzInfo instances, because
536
+ database changes could cause a zones implementation to switch between
537
+ these two base classes and we can't break pickles on a pytz version
538
+ upgrade.
539
+ """
540
+ # Raises a KeyError if zone no longer exists, which should never happen
541
+ # and would be a bug.
542
+ tz = pytz.timezone(zone)
543
+
544
+ # A StaticTzInfo - just return it
545
+ if utcoffset is None:
546
+ return tz
547
+
548
+ # This pickle was created from a DstTzInfo. We need to
549
+ # determine which of the list of tzinfo instances for this zone
550
+ # to use in order to restore the state of any datetime instances using
551
+ # it correctly.
552
+ utcoffset = memorized_timedelta(utcoffset)
553
+ dstoffset = memorized_timedelta(dstoffset)
554
+ try:
555
+ return tz._tzinfos[(utcoffset, dstoffset, tzname)]
556
+ except KeyError:
557
+ # The particular state requested in this timezone no longer exists.
558
+ # This indicates a corrupt pickle, or the timezone database has been
559
+ # corrected violently enough to make this particular
560
+ # (utcoffset,dstoffset) no longer exist in the zone, or the
561
+ # abbreviation has been changed.
562
+ pass
563
+
564
+ # See if we can find an entry differing only by tzname. Abbreviations
565
+ # get changed from the initial guess by the database maintainers to
566
+ # match reality when this information is discovered.
567
+ for localized_tz in tz._tzinfos.values():
568
+ if (localized_tz._utcoffset == utcoffset and
569
+ localized_tz._dst == dstoffset):
570
+ return localized_tz
571
+
572
+ # This (utcoffset, dstoffset) information has been removed from the
573
+ # zone. Add it back. This might occur when the database maintainers have
574
+ # corrected incorrect information. datetime instances using this
575
+ # incorrect information will continue to do so, exactly as they were
576
+ # before being pickled. This is purely an overly paranoid safety net - I
577
+ # doubt this will ever been needed in real life.
578
+ inf = (utcoffset, dstoffset, tzname)
579
+ tz._tzinfos[inf] = tz.__class__(inf, tz._tzinfos)
580
+ return tz._tzinfos[inf]
python_env/lib/site-packages/pytz/zoneinfo/Africa/Abidjan ADDED
Binary file (148 Bytes). View file
 
python_env/lib/site-packages/pytz/zoneinfo/Africa/Accra ADDED
Binary file (148 Bytes). View file
 
python_env/lib/site-packages/pytz/zoneinfo/Africa/Addis_Ababa ADDED
Binary file (265 Bytes). View file
 
python_env/lib/site-packages/pytz/zoneinfo/Africa/Algiers ADDED
Binary file (735 Bytes). View file
 
python_env/lib/site-packages/pytz/zoneinfo/Africa/Asmara ADDED
Binary file (265 Bytes). View file
 
python_env/lib/site-packages/pytz/zoneinfo/Africa/Asmera ADDED
Binary file (265 Bytes). View file
 
python_env/lib/site-packages/pytz/zoneinfo/Africa/Bamako ADDED
Binary file (148 Bytes). View file
 
python_env/lib/site-packages/pytz/zoneinfo/Africa/Bangui ADDED
Binary file (235 Bytes). View file
 
python_env/lib/site-packages/pytz/zoneinfo/Africa/Banjul ADDED
Binary file (148 Bytes). View file
 
python_env/lib/site-packages/pytz/zoneinfo/Africa/Bissau ADDED
Binary file (194 Bytes). View file
 
python_env/lib/site-packages/pytz/zoneinfo/Africa/Blantyre ADDED
Binary file (149 Bytes). View file
 
python_env/lib/site-packages/pytz/zoneinfo/Africa/Brazzaville ADDED
Binary file (235 Bytes). View file
 
python_env/lib/site-packages/pytz/zoneinfo/Africa/Bujumbura ADDED
Binary file (149 Bytes). View file
 
python_env/lib/site-packages/pytz/zoneinfo/Africa/Cairo ADDED
Binary file (2.4 kB). View file
 
python_env/lib/site-packages/pytz/zoneinfo/Africa/Casablanca ADDED
Binary file (2.43 kB). View file
 
python_env/lib/site-packages/pytz/zoneinfo/Africa/Ceuta ADDED
Binary file (2.05 kB). View file
 
python_env/lib/site-packages/pytz/zoneinfo/Africa/Conakry ADDED
Binary file (148 Bytes). View file
 
python_env/lib/site-packages/pytz/zoneinfo/Africa/Dakar ADDED
Binary file (148 Bytes). View file
 
python_env/lib/site-packages/pytz/zoneinfo/Africa/Dar_es_Salaam ADDED
Binary file (265 Bytes). View file
 
python_env/lib/site-packages/pytz/zoneinfo/Africa/Djibouti ADDED
Binary file (265 Bytes). View file
 
python_env/lib/site-packages/pytz/zoneinfo/Africa/Douala ADDED
Binary file (235 Bytes). View file
 
python_env/lib/site-packages/pytz/zoneinfo/Africa/El_Aaiun ADDED
Binary file (2.3 kB). View file
 
python_env/lib/site-packages/pytz/zoneinfo/Africa/Freetown ADDED
Binary file (148 Bytes). View file
 
python_env/lib/site-packages/pytz/zoneinfo/Africa/Gaborone ADDED
Binary file (149 Bytes). View file
 
python_env/lib/site-packages/pytz/zoneinfo/Africa/Harare ADDED
Binary file (149 Bytes). View file
 
python_env/lib/site-packages/pytz/zoneinfo/Africa/Johannesburg ADDED
Binary file (246 Bytes). View file
 
python_env/lib/site-packages/pytz/zoneinfo/Africa/Juba ADDED
Binary file (679 Bytes). View file
 
python_env/lib/site-packages/pytz/zoneinfo/Africa/Kampala ADDED
Binary file (265 Bytes). View file
 
python_env/lib/site-packages/pytz/zoneinfo/Africa/Khartoum ADDED
Binary file (679 Bytes). View file
 
python_env/lib/site-packages/pytz/zoneinfo/Africa/Kigali ADDED
Binary file (149 Bytes). View file
 
python_env/lib/site-packages/pytz/zoneinfo/Africa/Kinshasa ADDED
Binary file (235 Bytes). View file