This commit is contained in:
Norbert
2024-11-18 08:59:34 +01:00
parent 47707d4302
commit d6e9cb72ed
1278 changed files with 200343 additions and 0 deletions

View File

@@ -0,0 +1,589 @@
pytz - World Timezone Definitions for Python
============================================
:Author: Stuart Bishop <stuart@stuartbishop.net>
Introduction
~~~~~~~~~~~~
pytz brings the Olson tz database into Python. This library allows
accurate and cross platform timezone calculations using Python 2.4
or higher. It also solves the issue of ambiguous times at the end
of daylight saving time, which you can read more about in the Python
Library Reference (``datetime.tzinfo``).
Almost all of the Olson timezones are supported.
.. note::
This library differs from the documented Python API for
tzinfo implementations; if you want to create local wallclock
times you need to use the ``localize()`` method documented in this
document. In addition, if you perform date arithmetic on local
times that cross DST boundaries, the result may be in an incorrect
timezone (ie. subtract 1 minute from 2002-10-27 1:00 EST and you get
2002-10-27 0:59 EST instead of the correct 2002-10-27 1:59 EDT). A
``normalize()`` method is provided to correct this. Unfortunately these
issues cannot be resolved without modifying the Python datetime
implementation (see PEP-431).
Installation
~~~~~~~~~~~~
This package can either be installed from a .egg file using setuptools,
or from the tarball using the standard Python distutils.
If you are installing from a tarball, run the following command as an
administrative user::
python setup.py install
If you are installing using setuptools, you don't even need to download
anything as the latest version will be downloaded for you
from the Python package index::
easy_install --upgrade pytz
If you already have the .egg file, you can use that too::
easy_install pytz-2008g-py2.6.egg
Example & Usage
~~~~~~~~~~~~~~~
Localized times and date arithmetic
-----------------------------------
>>> from datetime import datetime, timedelta
>>> from pytz import timezone
>>> import pytz
>>> utc = pytz.utc
>>> utc.zone
'UTC'
>>> eastern = timezone('US/Eastern')
>>> eastern.zone
'US/Eastern'
>>> amsterdam = timezone('Europe/Amsterdam')
>>> fmt = '%Y-%m-%d %H:%M:%S %Z%z'
This library only supports two ways of building a localized time. The
first is to use the ``localize()`` method provided by the pytz library.
This is used to localize a naive datetime (datetime with no timezone
information):
>>> loc_dt = eastern.localize(datetime(2002, 10, 27, 6, 0, 0))
>>> print(loc_dt.strftime(fmt))
2002-10-27 06:00:00 EST-0500
The second way of building a localized time is by converting an existing
localized time using the standard ``astimezone()`` method:
>>> ams_dt = loc_dt.astimezone(amsterdam)
>>> ams_dt.strftime(fmt)
'2002-10-27 12:00:00 CET+0100'
Unfortunately using the tzinfo argument of the standard datetime
constructors ''does not work'' with pytz for many timezones.
>>> datetime(2002, 10, 27, 12, 0, 0, tzinfo=amsterdam).strftime(fmt)
'2002-10-27 12:00:00 LMT+0020'
It is safe for timezones without daylight saving transitions though, such
as UTC:
>>> datetime(2002, 10, 27, 12, 0, 0, tzinfo=pytz.utc).strftime(fmt)
'2002-10-27 12:00:00 UTC+0000'
The preferred way of dealing with times is to always work in UTC,
converting to localtime only when generating output to be read
by humans.
>>> utc_dt = datetime(2002, 10, 27, 6, 0, 0, tzinfo=utc)
>>> loc_dt = utc_dt.astimezone(eastern)
>>> loc_dt.strftime(fmt)
'2002-10-27 01:00:00 EST-0500'
This library also allows you to do date arithmetic using local
times, although it is more complicated than working in UTC as you
need to use the ``normalize()`` method to handle daylight saving time
and other timezone transitions. In this example, ``loc_dt`` is set
to the instant when daylight saving time ends in the US/Eastern
timezone.
>>> before = loc_dt - timedelta(minutes=10)
>>> before.strftime(fmt)
'2002-10-27 00:50:00 EST-0500'
>>> eastern.normalize(before).strftime(fmt)
'2002-10-27 01:50:00 EDT-0400'
>>> after = eastern.normalize(before + timedelta(minutes=20))
>>> after.strftime(fmt)
'2002-10-27 01:10:00 EST-0500'
Creating local times is also tricky, and the reason why working with
local times is not recommended. Unfortunately, you cannot just pass
a ``tzinfo`` argument when constructing a datetime (see the next
section for more details)
>>> dt = datetime(2002, 10, 27, 1, 30, 0)
>>> dt1 = eastern.localize(dt, is_dst=True)
>>> dt1.strftime(fmt)
'2002-10-27 01:30:00 EDT-0400'
>>> dt2 = eastern.localize(dt, is_dst=False)
>>> dt2.strftime(fmt)
'2002-10-27 01:30:00 EST-0500'
Converting between timezones is more easily done, using the
standard astimezone method.
>>> utc_dt = utc.localize(datetime.utcfromtimestamp(1143408899))
>>> utc_dt.strftime(fmt)
'2006-03-26 21:34:59 UTC+0000'
>>> au_tz = timezone('Australia/Sydney')
>>> au_dt = utc_dt.astimezone(au_tz)
>>> au_dt.strftime(fmt)
'2006-03-27 08:34:59 AEDT+1100'
>>> utc_dt2 = au_dt.astimezone(utc)
>>> utc_dt2.strftime(fmt)
'2006-03-26 21:34:59 UTC+0000'
>>> utc_dt == utc_dt2
True
You can take shortcuts when dealing with the UTC side of timezone
conversions. ``normalize()`` and ``localize()`` are not really
necessary when there are no daylight saving time transitions to
deal with.
>>> utc_dt = datetime.utcfromtimestamp(1143408899).replace(tzinfo=utc)
>>> utc_dt.strftime(fmt)
'2006-03-26 21:34:59 UTC+0000'
>>> au_tz = timezone('Australia/Sydney')
>>> au_dt = au_tz.normalize(utc_dt.astimezone(au_tz))
>>> au_dt.strftime(fmt)
'2006-03-27 08:34:59 AEDT+1100'
>>> utc_dt2 = au_dt.astimezone(utc)
>>> utc_dt2.strftime(fmt)
'2006-03-26 21:34:59 UTC+0000'
``tzinfo`` API
--------------
The ``tzinfo`` instances returned by the ``timezone()`` function have
been extended to cope with ambiguous times by adding an ``is_dst``
parameter to the ``utcoffset()``, ``dst()`` && ``tzname()`` methods.
>>> tz = timezone('America/St_Johns')
>>> normal = datetime(2009, 9, 1)
>>> ambiguous = datetime(2009, 10, 31, 23, 30)
The ``is_dst`` parameter is ignored for most timestamps. It is only used
during DST transition ambiguous periods to resolve that ambiguity.
>>> tz.utcoffset(normal, is_dst=True)
datetime.timedelta(-1, 77400)
>>> tz.dst(normal, is_dst=True)
datetime.timedelta(0, 3600)
>>> tz.tzname(normal, is_dst=True)
'NDT'
>>> tz.utcoffset(ambiguous, is_dst=True)
datetime.timedelta(-1, 77400)
>>> tz.dst(ambiguous, is_dst=True)
datetime.timedelta(0, 3600)
>>> tz.tzname(ambiguous, is_dst=True)
'NDT'
>>> tz.utcoffset(normal, is_dst=False)
datetime.timedelta(-1, 77400)
>>> tz.dst(normal, is_dst=False)
datetime.timedelta(0, 3600)
>>> tz.tzname(normal, is_dst=False)
'NDT'
>>> tz.utcoffset(ambiguous, is_dst=False)
datetime.timedelta(-1, 73800)
>>> tz.dst(ambiguous, is_dst=False)
datetime.timedelta(0)
>>> tz.tzname(ambiguous, is_dst=False)
'NST'
If ``is_dst`` is not specified, ambiguous timestamps will raise
an ``pytz.exceptions.AmbiguousTimeError`` exception.
>>> tz.utcoffset(normal)
datetime.timedelta(-1, 77400)
>>> tz.dst(normal)
datetime.timedelta(0, 3600)
>>> tz.tzname(normal)
'NDT'
>>> import pytz.exceptions
>>> try:
... tz.utcoffset(ambiguous)
... except pytz.exceptions.AmbiguousTimeError:
... print('pytz.exceptions.AmbiguousTimeError: %s' % ambiguous)
pytz.exceptions.AmbiguousTimeError: 2009-10-31 23:30:00
>>> try:
... tz.dst(ambiguous)
... except pytz.exceptions.AmbiguousTimeError:
... print('pytz.exceptions.AmbiguousTimeError: %s' % ambiguous)
pytz.exceptions.AmbiguousTimeError: 2009-10-31 23:30:00
>>> try:
... tz.tzname(ambiguous)
... except pytz.exceptions.AmbiguousTimeError:
... print('pytz.exceptions.AmbiguousTimeError: %s' % ambiguous)
pytz.exceptions.AmbiguousTimeError: 2009-10-31 23:30:00
Problems with Localtime
~~~~~~~~~~~~~~~~~~~~~~~
The major problem we have to deal with is that certain datetimes
may occur twice in a year. For example, in the US/Eastern timezone
on the last Sunday morning in October, the following sequence
happens:
- 01:00 EDT occurs
- 1 hour later, instead of 2:00am the clock is turned back 1 hour
and 01:00 happens again (this time 01:00 EST)
In fact, every instant between 01:00 and 02:00 occurs twice. This means
that if you try and create a time in the 'US/Eastern' timezone
the standard datetime syntax, there is no way to specify if you meant
before of after the end-of-daylight-saving-time transition. Using the
pytz custom syntax, the best you can do is make an educated guess:
>>> loc_dt = eastern.localize(datetime(2002, 10, 27, 1, 30, 00))
>>> loc_dt.strftime(fmt)
'2002-10-27 01:30:00 EST-0500'
As you can see, the system has chosen one for you and there is a 50%
chance of it being out by one hour. For some applications, this does
not matter. However, if you are trying to schedule meetings with people
in different timezones or analyze log files it is not acceptable.
The best and simplest solution is to stick with using UTC. The pytz
package encourages using UTC for internal timezone representation by
including a special UTC implementation based on the standard Python
reference implementation in the Python documentation.
The UTC timezone unpickles to be the same instance, and pickles to a
smaller size than other pytz tzinfo instances. The UTC implementation
can be obtained as pytz.utc, pytz.UTC, or pytz.timezone('UTC').
>>> import pickle, pytz
>>> dt = datetime(2005, 3, 1, 14, 13, 21, tzinfo=utc)
>>> naive = dt.replace(tzinfo=None)
>>> p = pickle.dumps(dt, 1)
>>> naive_p = pickle.dumps(naive, 1)
>>> len(p) - len(naive_p)
17
>>> new = pickle.loads(p)
>>> new == dt
True
>>> new is dt
False
>>> new.tzinfo is dt.tzinfo
True
>>> pytz.utc is pytz.UTC is pytz.timezone('UTC')
True
Note that some other timezones are commonly thought of as the same (GMT,
Greenwich, Universal, etc.). The definition of UTC is distinct from these
other timezones, and they are not equivalent. For this reason, they will
not compare the same in Python.
>>> utc == pytz.timezone('GMT')
False
See the section `What is UTC`_, below.
If you insist on working with local times, this library provides a
facility for constructing them unambiguously:
>>> loc_dt = datetime(2002, 10, 27, 1, 30, 00)
>>> est_dt = eastern.localize(loc_dt, is_dst=True)
>>> edt_dt = eastern.localize(loc_dt, is_dst=False)
>>> print(est_dt.strftime(fmt) + ' / ' + edt_dt.strftime(fmt))
2002-10-27 01:30:00 EDT-0400 / 2002-10-27 01:30:00 EST-0500
If you pass None as the is_dst flag to localize(), pytz will refuse to
guess and raise exceptions if you try to build ambiguous or non-existent
times.
For example, 1:30am on 27th Oct 2002 happened twice in the US/Eastern
timezone when the clocks where put back at the end of Daylight Saving
Time:
>>> dt = datetime(2002, 10, 27, 1, 30, 00)
>>> try:
... eastern.localize(dt, is_dst=None)
... except pytz.exceptions.AmbiguousTimeError:
... print('pytz.exceptions.AmbiguousTimeError: %s' % dt)
pytz.exceptions.AmbiguousTimeError: 2002-10-27 01:30:00
Similarly, 2:30am on 7th April 2002 never happened at all in the
US/Eastern timezone, as the clocks where put forward at 2:00am skipping
the entire hour:
>>> dt = datetime(2002, 4, 7, 2, 30, 00)
>>> try:
... eastern.localize(dt, is_dst=None)
... except pytz.exceptions.NonExistentTimeError:
... print('pytz.exceptions.NonExistentTimeError: %s' % dt)
pytz.exceptions.NonExistentTimeError: 2002-04-07 02:30:00
Both of these exceptions share a common base class to make error handling
easier:
>>> isinstance(pytz.AmbiguousTimeError(), pytz.InvalidTimeError)
True
>>> isinstance(pytz.NonExistentTimeError(), pytz.InvalidTimeError)
True
A special case is where countries change their timezone definitions
with no daylight savings time switch. For example, in 1915 Warsaw
switched from Warsaw time to Central European time with no daylight savings
transition. So at the stroke of midnight on August 5th 1915 the clocks
were wound back 24 minutes creating an ambiguous time period that cannot
be specified without referring to the timezone abbreviation or the
actual UTC offset. In this case midnight happened twice, neither time
during a daylight saving time period. pytz handles this transition by
treating the ambiguous period before the switch as daylight savings
time, and the ambiguous period after as standard time.
>>> warsaw = pytz.timezone('Europe/Warsaw')
>>> amb_dt1 = warsaw.localize(datetime(1915, 8, 4, 23, 59, 59), is_dst=True)
>>> amb_dt1.strftime(fmt)
'1915-08-04 23:59:59 WMT+0124'
>>> amb_dt2 = warsaw.localize(datetime(1915, 8, 4, 23, 59, 59), is_dst=False)
>>> amb_dt2.strftime(fmt)
'1915-08-04 23:59:59 CET+0100'
>>> switch_dt = warsaw.localize(datetime(1915, 8, 5, 00, 00, 00), is_dst=False)
>>> switch_dt.strftime(fmt)
'1915-08-05 00:00:00 CET+0100'
>>> str(switch_dt - amb_dt1)
'0:24:01'
>>> str(switch_dt - amb_dt2)
'0:00:01'
The best way of creating a time during an ambiguous time period is
by converting from another timezone such as UTC:
>>> utc_dt = datetime(1915, 8, 4, 22, 36, tzinfo=pytz.utc)
>>> utc_dt.astimezone(warsaw).strftime(fmt)
'1915-08-04 23:36:00 CET+0100'
The standard Python way of handling all these ambiguities is not to
handle them, such as demonstrated in this example using the US/Eastern
timezone definition from the Python documentation (Note that this
implementation only works for dates between 1987 and 2006 - it is
included for tests only!):
>>> from pytz.reference import Eastern # pytz.reference only for tests
>>> dt = datetime(2002, 10, 27, 0, 30, tzinfo=Eastern)
>>> str(dt)
'2002-10-27 00:30:00-04:00'
>>> str(dt + timedelta(hours=1))
'2002-10-27 01:30:00-05:00'
>>> str(dt + timedelta(hours=2))
'2002-10-27 02:30:00-05:00'
>>> str(dt + timedelta(hours=3))
'2002-10-27 03:30:00-05:00'
Notice the first two results? At first glance you might think they are
correct, but taking the UTC offset into account you find that they are
actually two hours appart instead of the 1 hour we asked for.
>>> from pytz.reference import UTC # pytz.reference only for tests
>>> str(dt.astimezone(UTC))
'2002-10-27 04:30:00+00:00'
>>> str((dt + timedelta(hours=1)).astimezone(UTC))
'2002-10-27 06:30:00+00:00'
Country Information
~~~~~~~~~~~~~~~~~~~
A mechanism is provided to access the timezones commonly in use
for a particular country, looked up using the ISO 3166 country code.
It returns a list of strings that can be used to retrieve the relevant
tzinfo instance using ``pytz.timezone()``:
>>> print(' '.join(pytz.country_timezones['nz']))
Pacific/Auckland Pacific/Chatham
The Olson database comes with a ISO 3166 country code to English country
name mapping that pytz exposes as a dictionary:
>>> print(pytz.country_names['nz'])
New Zealand
What is UTC
~~~~~~~~~~~
'UTC' is `Coordinated Universal Time`_. It is a successor to, but distinct
from, Greenwich Mean Time (GMT) and the various definitions of Universal
Time. UTC is now the worldwide standard for regulating clocks and time
measurement.
All other timezones are defined relative to UTC, and include offsets like
UTC+0800 - hours to add or subtract from UTC to derive the local time. No
daylight saving time occurs in UTC, making it a useful timezone to perform
date arithmetic without worrying about the confusion and ambiguities caused
by daylight saving time transitions, your country changing its timezone, or
mobile computers that roam through multiple timezones.
.. _Coordinated Universal Time: https://en.wikipedia.org/wiki/Coordinated_Universal_Time
Helpers
~~~~~~~
There are two lists of timezones provided.
``all_timezones`` is the exhaustive list of the timezone names that can
be used.
>>> from pytz import all_timezones
>>> len(all_timezones) >= 500
True
>>> 'Etc/Greenwich' in all_timezones
True
``common_timezones`` is a list of useful, current timezones. It doesn't
contain deprecated zones or historical zones, except for a few I've
deemed in common usage, such as US/Eastern (open a bug report if you
think other timezones are deserving of being included here). It is also
a sequence of strings.
>>> from pytz import common_timezones
>>> len(common_timezones) < len(all_timezones)
True
>>> 'Etc/Greenwich' in common_timezones
False
>>> 'Australia/Melbourne' in common_timezones
True
>>> 'US/Eastern' in common_timezones
True
>>> 'Canada/Eastern' in common_timezones
True
>>> 'Australia/Yancowinna' in all_timezones
True
>>> 'Australia/Yancowinna' in common_timezones
False
Both ``common_timezones`` and ``all_timezones`` are alphabetically
sorted:
>>> common_timezones_dupe = common_timezones[:]
>>> common_timezones_dupe.sort()
>>> common_timezones == common_timezones_dupe
True
>>> all_timezones_dupe = all_timezones[:]
>>> all_timezones_dupe.sort()
>>> all_timezones == all_timezones_dupe
True
``all_timezones`` and ``common_timezones`` are also available as sets.
>>> from pytz import all_timezones_set, common_timezones_set
>>> 'US/Eastern' in all_timezones_set
True
>>> 'US/Eastern' in common_timezones_set
True
>>> 'Australia/Victoria' in common_timezones_set
False
You can also retrieve lists of timezones used by particular countries
using the ``country_timezones()`` function. It requires an ISO-3166
two letter country code.
>>> from pytz import country_timezones
>>> print(' '.join(country_timezones('ch')))
Europe/Zurich
>>> print(' '.join(country_timezones('CH')))
Europe/Zurich
Internationalization - i18n/l10n
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Pytz is an interface to the IANA database, which uses ASCII names. The `Unicode Consortium's Unicode Locales (CLDR) <http://cldr.unicode.org>`_
project provides translations. Thomas Khyn's
`l18n <https://pypi.org/project/l18n/>`_ package can be used to access
these translations from Python.
License
~~~~~~~
MIT license.
This code is also available as part of Zope 3 under the Zope Public
License, Version 2.1 (ZPL).
I'm happy to relicense this code if necessary for inclusion in other
open source projects.
Latest Versions
~~~~~~~~~~~~~~~
This package will be updated after releases of the Olson timezone
database. The latest version can be downloaded from the `Python Package
Index <https://pypi.org/project/pytz/>`_. The code that is used
to generate this distribution is hosted on launchpad.net and available
using git::
git clone https://git.launchpad.net/pytz
A mirror on github is also available at https://github.com/stub42/pytz
Announcements of new releases are made on
`Launchpad <https://launchpad.net/pytz>`_, and the
`Atom feed <http://feeds.launchpad.net/pytz/announcements.atom>`_
hosted there.
Bugs, Feature Requests & Patches
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Bugs can be reported using `Launchpad <https://bugs.launchpad.net/pytz>`__.
Issues & Limitations
~~~~~~~~~~~~~~~~~~~~
- Offsets from UTC are rounded to the nearest whole minute, so timezones
such as Europe/Amsterdam pre 1937 will be up to 30 seconds out. This
is a limitation of the Python datetime library.
- If you think a timezone definition is incorrect, I probably can't fix
it. pytz is a direct translation of the Olson timezone database, and
changes to the timezone definitions need to be made to this source.
If you find errors they should be reported to the time zone mailing
list, linked from http://www.iana.org/time-zones.
Further Reading
~~~~~~~~~~~~~~~
More info than you want to know about timezones:
http://www.twinsun.com/tz/tz-link.htm
Contact
~~~~~~~
Stuart Bishop <stuart@stuartbishop.net>

View File

@@ -0,0 +1 @@
pip

View File

@@ -0,0 +1,19 @@
Copyright (c) 2003-2018 Stuart Bishop <stuart@stuartbishop.net>
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.

View File

@@ -0,0 +1,623 @@
Metadata-Version: 2.0
Name: pytz
Version: 2018.5
Summary: World timezone definitions, modern and historical
Home-page: http://pythonhosted.org/pytz
Author: Stuart Bishop
Author-email: stuart@stuartbishop.net
Maintainer: Stuart Bishop
Maintainer-email: stuart@stuartbishop.net
License: MIT
Download-URL: https://pypi.org/project/pytz/
Keywords: timezone,tzinfo,datetime,olson,time
Platform: Independent
Classifier: Development Status :: 6 - Mature
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Natural Language :: English
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.4
Classifier: Programming Language :: Python :: 2.5
Classifier: Programming Language :: Python :: 2.6
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.0
Classifier: Programming Language :: Python :: 3.1
Classifier: Programming Language :: Python :: 3.2
Classifier: Programming Language :: Python :: 3.3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Topic :: Software Development :: Libraries :: Python Modules
pytz - World Timezone Definitions for Python
============================================
:Author: Stuart Bishop <stuart@stuartbishop.net>
Introduction
~~~~~~~~~~~~
pytz brings the Olson tz database into Python. This library allows
accurate and cross platform timezone calculations using Python 2.4
or higher. It also solves the issue of ambiguous times at the end
of daylight saving time, which you can read more about in the Python
Library Reference (``datetime.tzinfo``).
Almost all of the Olson timezones are supported.
.. note::
This library differs from the documented Python API for
tzinfo implementations; if you want to create local wallclock
times you need to use the ``localize()`` method documented in this
document. In addition, if you perform date arithmetic on local
times that cross DST boundaries, the result may be in an incorrect
timezone (ie. subtract 1 minute from 2002-10-27 1:00 EST and you get
2002-10-27 0:59 EST instead of the correct 2002-10-27 1:59 EDT). A
``normalize()`` method is provided to correct this. Unfortunately these
issues cannot be resolved without modifying the Python datetime
implementation (see PEP-431).
Installation
~~~~~~~~~~~~
This package can either be installed from a .egg file using setuptools,
or from the tarball using the standard Python distutils.
If you are installing from a tarball, run the following command as an
administrative user::
python setup.py install
If you are installing using setuptools, you don't even need to download
anything as the latest version will be downloaded for you
from the Python package index::
easy_install --upgrade pytz
If you already have the .egg file, you can use that too::
easy_install pytz-2008g-py2.6.egg
Example & Usage
~~~~~~~~~~~~~~~
Localized times and date arithmetic
-----------------------------------
>>> from datetime import datetime, timedelta
>>> from pytz import timezone
>>> import pytz
>>> utc = pytz.utc
>>> utc.zone
'UTC'
>>> eastern = timezone('US/Eastern')
>>> eastern.zone
'US/Eastern'
>>> amsterdam = timezone('Europe/Amsterdam')
>>> fmt = '%Y-%m-%d %H:%M:%S %Z%z'
This library only supports two ways of building a localized time. The
first is to use the ``localize()`` method provided by the pytz library.
This is used to localize a naive datetime (datetime with no timezone
information):
>>> loc_dt = eastern.localize(datetime(2002, 10, 27, 6, 0, 0))
>>> print(loc_dt.strftime(fmt))
2002-10-27 06:00:00 EST-0500
The second way of building a localized time is by converting an existing
localized time using the standard ``astimezone()`` method:
>>> ams_dt = loc_dt.astimezone(amsterdam)
>>> ams_dt.strftime(fmt)
'2002-10-27 12:00:00 CET+0100'
Unfortunately using the tzinfo argument of the standard datetime
constructors ''does not work'' with pytz for many timezones.
>>> datetime(2002, 10, 27, 12, 0, 0, tzinfo=amsterdam).strftime(fmt)
'2002-10-27 12:00:00 LMT+0020'
It is safe for timezones without daylight saving transitions though, such
as UTC:
>>> datetime(2002, 10, 27, 12, 0, 0, tzinfo=pytz.utc).strftime(fmt)
'2002-10-27 12:00:00 UTC+0000'
The preferred way of dealing with times is to always work in UTC,
converting to localtime only when generating output to be read
by humans.
>>> utc_dt = datetime(2002, 10, 27, 6, 0, 0, tzinfo=utc)
>>> loc_dt = utc_dt.astimezone(eastern)
>>> loc_dt.strftime(fmt)
'2002-10-27 01:00:00 EST-0500'
This library also allows you to do date arithmetic using local
times, although it is more complicated than working in UTC as you
need to use the ``normalize()`` method to handle daylight saving time
and other timezone transitions. In this example, ``loc_dt`` is set
to the instant when daylight saving time ends in the US/Eastern
timezone.
>>> before = loc_dt - timedelta(minutes=10)
>>> before.strftime(fmt)
'2002-10-27 00:50:00 EST-0500'
>>> eastern.normalize(before).strftime(fmt)
'2002-10-27 01:50:00 EDT-0400'
>>> after = eastern.normalize(before + timedelta(minutes=20))
>>> after.strftime(fmt)
'2002-10-27 01:10:00 EST-0500'
Creating local times is also tricky, and the reason why working with
local times is not recommended. Unfortunately, you cannot just pass
a ``tzinfo`` argument when constructing a datetime (see the next
section for more details)
>>> dt = datetime(2002, 10, 27, 1, 30, 0)
>>> dt1 = eastern.localize(dt, is_dst=True)
>>> dt1.strftime(fmt)
'2002-10-27 01:30:00 EDT-0400'
>>> dt2 = eastern.localize(dt, is_dst=False)
>>> dt2.strftime(fmt)
'2002-10-27 01:30:00 EST-0500'
Converting between timezones is more easily done, using the
standard astimezone method.
>>> utc_dt = utc.localize(datetime.utcfromtimestamp(1143408899))
>>> utc_dt.strftime(fmt)
'2006-03-26 21:34:59 UTC+0000'
>>> au_tz = timezone('Australia/Sydney')
>>> au_dt = utc_dt.astimezone(au_tz)
>>> au_dt.strftime(fmt)
'2006-03-27 08:34:59 AEDT+1100'
>>> utc_dt2 = au_dt.astimezone(utc)
>>> utc_dt2.strftime(fmt)
'2006-03-26 21:34:59 UTC+0000'
>>> utc_dt == utc_dt2
True
You can take shortcuts when dealing with the UTC side of timezone
conversions. ``normalize()`` and ``localize()`` are not really
necessary when there are no daylight saving time transitions to
deal with.
>>> utc_dt = datetime.utcfromtimestamp(1143408899).replace(tzinfo=utc)
>>> utc_dt.strftime(fmt)
'2006-03-26 21:34:59 UTC+0000'
>>> au_tz = timezone('Australia/Sydney')
>>> au_dt = au_tz.normalize(utc_dt.astimezone(au_tz))
>>> au_dt.strftime(fmt)
'2006-03-27 08:34:59 AEDT+1100'
>>> utc_dt2 = au_dt.astimezone(utc)
>>> utc_dt2.strftime(fmt)
'2006-03-26 21:34:59 UTC+0000'
``tzinfo`` API
--------------
The ``tzinfo`` instances returned by the ``timezone()`` function have
been extended to cope with ambiguous times by adding an ``is_dst``
parameter to the ``utcoffset()``, ``dst()`` && ``tzname()`` methods.
>>> tz = timezone('America/St_Johns')
>>> normal = datetime(2009, 9, 1)
>>> ambiguous = datetime(2009, 10, 31, 23, 30)
The ``is_dst`` parameter is ignored for most timestamps. It is only used
during DST transition ambiguous periods to resolve that ambiguity.
>>> tz.utcoffset(normal, is_dst=True)
datetime.timedelta(-1, 77400)
>>> tz.dst(normal, is_dst=True)
datetime.timedelta(0, 3600)
>>> tz.tzname(normal, is_dst=True)
'NDT'
>>> tz.utcoffset(ambiguous, is_dst=True)
datetime.timedelta(-1, 77400)
>>> tz.dst(ambiguous, is_dst=True)
datetime.timedelta(0, 3600)
>>> tz.tzname(ambiguous, is_dst=True)
'NDT'
>>> tz.utcoffset(normal, is_dst=False)
datetime.timedelta(-1, 77400)
>>> tz.dst(normal, is_dst=False)
datetime.timedelta(0, 3600)
>>> tz.tzname(normal, is_dst=False)
'NDT'
>>> tz.utcoffset(ambiguous, is_dst=False)
datetime.timedelta(-1, 73800)
>>> tz.dst(ambiguous, is_dst=False)
datetime.timedelta(0)
>>> tz.tzname(ambiguous, is_dst=False)
'NST'
If ``is_dst`` is not specified, ambiguous timestamps will raise
an ``pytz.exceptions.AmbiguousTimeError`` exception.
>>> tz.utcoffset(normal)
datetime.timedelta(-1, 77400)
>>> tz.dst(normal)
datetime.timedelta(0, 3600)
>>> tz.tzname(normal)
'NDT'
>>> import pytz.exceptions
>>> try:
... tz.utcoffset(ambiguous)
... except pytz.exceptions.AmbiguousTimeError:
... print('pytz.exceptions.AmbiguousTimeError: %s' % ambiguous)
pytz.exceptions.AmbiguousTimeError: 2009-10-31 23:30:00
>>> try:
... tz.dst(ambiguous)
... except pytz.exceptions.AmbiguousTimeError:
... print('pytz.exceptions.AmbiguousTimeError: %s' % ambiguous)
pytz.exceptions.AmbiguousTimeError: 2009-10-31 23:30:00
>>> try:
... tz.tzname(ambiguous)
... except pytz.exceptions.AmbiguousTimeError:
... print('pytz.exceptions.AmbiguousTimeError: %s' % ambiguous)
pytz.exceptions.AmbiguousTimeError: 2009-10-31 23:30:00
Problems with Localtime
~~~~~~~~~~~~~~~~~~~~~~~
The major problem we have to deal with is that certain datetimes
may occur twice in a year. For example, in the US/Eastern timezone
on the last Sunday morning in October, the following sequence
happens:
- 01:00 EDT occurs
- 1 hour later, instead of 2:00am the clock is turned back 1 hour
and 01:00 happens again (this time 01:00 EST)
In fact, every instant between 01:00 and 02:00 occurs twice. This means
that if you try and create a time in the 'US/Eastern' timezone
the standard datetime syntax, there is no way to specify if you meant
before of after the end-of-daylight-saving-time transition. Using the
pytz custom syntax, the best you can do is make an educated guess:
>>> loc_dt = eastern.localize(datetime(2002, 10, 27, 1, 30, 00))
>>> loc_dt.strftime(fmt)
'2002-10-27 01:30:00 EST-0500'
As you can see, the system has chosen one for you and there is a 50%
chance of it being out by one hour. For some applications, this does
not matter. However, if you are trying to schedule meetings with people
in different timezones or analyze log files it is not acceptable.
The best and simplest solution is to stick with using UTC. The pytz
package encourages using UTC for internal timezone representation by
including a special UTC implementation based on the standard Python
reference implementation in the Python documentation.
The UTC timezone unpickles to be the same instance, and pickles to a
smaller size than other pytz tzinfo instances. The UTC implementation
can be obtained as pytz.utc, pytz.UTC, or pytz.timezone('UTC').
>>> import pickle, pytz
>>> dt = datetime(2005, 3, 1, 14, 13, 21, tzinfo=utc)
>>> naive = dt.replace(tzinfo=None)
>>> p = pickle.dumps(dt, 1)
>>> naive_p = pickle.dumps(naive, 1)
>>> len(p) - len(naive_p)
17
>>> new = pickle.loads(p)
>>> new == dt
True
>>> new is dt
False
>>> new.tzinfo is dt.tzinfo
True
>>> pytz.utc is pytz.UTC is pytz.timezone('UTC')
True
Note that some other timezones are commonly thought of as the same (GMT,
Greenwich, Universal, etc.). The definition of UTC is distinct from these
other timezones, and they are not equivalent. For this reason, they will
not compare the same in Python.
>>> utc == pytz.timezone('GMT')
False
See the section `What is UTC`_, below.
If you insist on working with local times, this library provides a
facility for constructing them unambiguously:
>>> loc_dt = datetime(2002, 10, 27, 1, 30, 00)
>>> est_dt = eastern.localize(loc_dt, is_dst=True)
>>> edt_dt = eastern.localize(loc_dt, is_dst=False)
>>> print(est_dt.strftime(fmt) + ' / ' + edt_dt.strftime(fmt))
2002-10-27 01:30:00 EDT-0400 / 2002-10-27 01:30:00 EST-0500
If you pass None as the is_dst flag to localize(), pytz will refuse to
guess and raise exceptions if you try to build ambiguous or non-existent
times.
For example, 1:30am on 27th Oct 2002 happened twice in the US/Eastern
timezone when the clocks where put back at the end of Daylight Saving
Time:
>>> dt = datetime(2002, 10, 27, 1, 30, 00)
>>> try:
... eastern.localize(dt, is_dst=None)
... except pytz.exceptions.AmbiguousTimeError:
... print('pytz.exceptions.AmbiguousTimeError: %s' % dt)
pytz.exceptions.AmbiguousTimeError: 2002-10-27 01:30:00
Similarly, 2:30am on 7th April 2002 never happened at all in the
US/Eastern timezone, as the clocks where put forward at 2:00am skipping
the entire hour:
>>> dt = datetime(2002, 4, 7, 2, 30, 00)
>>> try:
... eastern.localize(dt, is_dst=None)
... except pytz.exceptions.NonExistentTimeError:
... print('pytz.exceptions.NonExistentTimeError: %s' % dt)
pytz.exceptions.NonExistentTimeError: 2002-04-07 02:30:00
Both of these exceptions share a common base class to make error handling
easier:
>>> isinstance(pytz.AmbiguousTimeError(), pytz.InvalidTimeError)
True
>>> isinstance(pytz.NonExistentTimeError(), pytz.InvalidTimeError)
True
A special case is where countries change their timezone definitions
with no daylight savings time switch. For example, in 1915 Warsaw
switched from Warsaw time to Central European time with no daylight savings
transition. So at the stroke of midnight on August 5th 1915 the clocks
were wound back 24 minutes creating an ambiguous time period that cannot
be specified without referring to the timezone abbreviation or the
actual UTC offset. In this case midnight happened twice, neither time
during a daylight saving time period. pytz handles this transition by
treating the ambiguous period before the switch as daylight savings
time, and the ambiguous period after as standard time.
>>> warsaw = pytz.timezone('Europe/Warsaw')
>>> amb_dt1 = warsaw.localize(datetime(1915, 8, 4, 23, 59, 59), is_dst=True)
>>> amb_dt1.strftime(fmt)
'1915-08-04 23:59:59 WMT+0124'
>>> amb_dt2 = warsaw.localize(datetime(1915, 8, 4, 23, 59, 59), is_dst=False)
>>> amb_dt2.strftime(fmt)
'1915-08-04 23:59:59 CET+0100'
>>> switch_dt = warsaw.localize(datetime(1915, 8, 5, 00, 00, 00), is_dst=False)
>>> switch_dt.strftime(fmt)
'1915-08-05 00:00:00 CET+0100'
>>> str(switch_dt - amb_dt1)
'0:24:01'
>>> str(switch_dt - amb_dt2)
'0:00:01'
The best way of creating a time during an ambiguous time period is
by converting from another timezone such as UTC:
>>> utc_dt = datetime(1915, 8, 4, 22, 36, tzinfo=pytz.utc)
>>> utc_dt.astimezone(warsaw).strftime(fmt)
'1915-08-04 23:36:00 CET+0100'
The standard Python way of handling all these ambiguities is not to
handle them, such as demonstrated in this example using the US/Eastern
timezone definition from the Python documentation (Note that this
implementation only works for dates between 1987 and 2006 - it is
included for tests only!):
>>> from pytz.reference import Eastern # pytz.reference only for tests
>>> dt = datetime(2002, 10, 27, 0, 30, tzinfo=Eastern)
>>> str(dt)
'2002-10-27 00:30:00-04:00'
>>> str(dt + timedelta(hours=1))
'2002-10-27 01:30:00-05:00'
>>> str(dt + timedelta(hours=2))
'2002-10-27 02:30:00-05:00'
>>> str(dt + timedelta(hours=3))
'2002-10-27 03:30:00-05:00'
Notice the first two results? At first glance you might think they are
correct, but taking the UTC offset into account you find that they are
actually two hours appart instead of the 1 hour we asked for.
>>> from pytz.reference import UTC # pytz.reference only for tests
>>> str(dt.astimezone(UTC))
'2002-10-27 04:30:00+00:00'
>>> str((dt + timedelta(hours=1)).astimezone(UTC))
'2002-10-27 06:30:00+00:00'
Country Information
~~~~~~~~~~~~~~~~~~~
A mechanism is provided to access the timezones commonly in use
for a particular country, looked up using the ISO 3166 country code.
It returns a list of strings that can be used to retrieve the relevant
tzinfo instance using ``pytz.timezone()``:
>>> print(' '.join(pytz.country_timezones['nz']))
Pacific/Auckland Pacific/Chatham
The Olson database comes with a ISO 3166 country code to English country
name mapping that pytz exposes as a dictionary:
>>> print(pytz.country_names['nz'])
New Zealand
What is UTC
~~~~~~~~~~~
'UTC' is `Coordinated Universal Time`_. It is a successor to, but distinct
from, Greenwich Mean Time (GMT) and the various definitions of Universal
Time. UTC is now the worldwide standard for regulating clocks and time
measurement.
All other timezones are defined relative to UTC, and include offsets like
UTC+0800 - hours to add or subtract from UTC to derive the local time. No
daylight saving time occurs in UTC, making it a useful timezone to perform
date arithmetic without worrying about the confusion and ambiguities caused
by daylight saving time transitions, your country changing its timezone, or
mobile computers that roam through multiple timezones.
.. _Coordinated Universal Time: https://en.wikipedia.org/wiki/Coordinated_Universal_Time
Helpers
~~~~~~~
There are two lists of timezones provided.
``all_timezones`` is the exhaustive list of the timezone names that can
be used.
>>> from pytz import all_timezones
>>> len(all_timezones) >= 500
True
>>> 'Etc/Greenwich' in all_timezones
True
``common_timezones`` is a list of useful, current timezones. It doesn't
contain deprecated zones or historical zones, except for a few I've
deemed in common usage, such as US/Eastern (open a bug report if you
think other timezones are deserving of being included here). It is also
a sequence of strings.
>>> from pytz import common_timezones
>>> len(common_timezones) < len(all_timezones)
True
>>> 'Etc/Greenwich' in common_timezones
False
>>> 'Australia/Melbourne' in common_timezones
True
>>> 'US/Eastern' in common_timezones
True
>>> 'Canada/Eastern' in common_timezones
True
>>> 'Australia/Yancowinna' in all_timezones
True
>>> 'Australia/Yancowinna' in common_timezones
False
Both ``common_timezones`` and ``all_timezones`` are alphabetically
sorted:
>>> common_timezones_dupe = common_timezones[:]
>>> common_timezones_dupe.sort()
>>> common_timezones == common_timezones_dupe
True
>>> all_timezones_dupe = all_timezones[:]
>>> all_timezones_dupe.sort()
>>> all_timezones == all_timezones_dupe
True
``all_timezones`` and ``common_timezones`` are also available as sets.
>>> from pytz import all_timezones_set, common_timezones_set
>>> 'US/Eastern' in all_timezones_set
True
>>> 'US/Eastern' in common_timezones_set
True
>>> 'Australia/Victoria' in common_timezones_set
False
You can also retrieve lists of timezones used by particular countries
using the ``country_timezones()`` function. It requires an ISO-3166
two letter country code.
>>> from pytz import country_timezones
>>> print(' '.join(country_timezones('ch')))
Europe/Zurich
>>> print(' '.join(country_timezones('CH')))
Europe/Zurich
Internationalization - i18n/l10n
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Pytz is an interface to the IANA database, which uses ASCII names. The `Unicode Consortium's Unicode Locales (CLDR) <http://cldr.unicode.org>`_
project provides translations. Thomas Khyn's
`l18n <https://pypi.org/project/l18n/>`_ package can be used to access
these translations from Python.
License
~~~~~~~
MIT license.
This code is also available as part of Zope 3 under the Zope Public
License, Version 2.1 (ZPL).
I'm happy to relicense this code if necessary for inclusion in other
open source projects.
Latest Versions
~~~~~~~~~~~~~~~
This package will be updated after releases of the Olson timezone
database. The latest version can be downloaded from the `Python Package
Index <https://pypi.org/project/pytz/>`_. The code that is used
to generate this distribution is hosted on launchpad.net and available
using git::
git clone https://git.launchpad.net/pytz
A mirror on github is also available at https://github.com/stub42/pytz
Announcements of new releases are made on
`Launchpad <https://launchpad.net/pytz>`_, and the
`Atom feed <http://feeds.launchpad.net/pytz/announcements.atom>`_
hosted there.
Bugs, Feature Requests & Patches
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Bugs can be reported using `Launchpad <https://bugs.launchpad.net/pytz>`__.
Issues & Limitations
~~~~~~~~~~~~~~~~~~~~
- Offsets from UTC are rounded to the nearest whole minute, so timezones
such as Europe/Amsterdam pre 1937 will be up to 30 seconds out. This
is a limitation of the Python datetime library.
- If you think a timezone definition is incorrect, I probably can't fix
it. pytz is a direct translation of the Olson timezone database, and
changes to the timezone definitions need to be made to this source.
If you find errors they should be reported to the time zone mailing
list, linked from http://www.iana.org/time-zones.
Further Reading
~~~~~~~~~~~~~~~
More info than you want to know about timezones:
http://www.twinsun.com/tz/tz-link.htm
Contact
~~~~~~~
Stuart Bishop <stuart@stuartbishop.net>

View File

@@ -0,0 +1,619 @@
pytz/__init__.py,sha256=SWf8oUKu_S2NiDDN7Xxf7TUlMIahDDvv_HiC61e0__E,34156
pytz/exceptions.py,sha256=_GCDPHpBk2r-CQIg3Kcyw8RCsLm2teJdnzT85bl5VsM,1329
pytz/lazy.py,sha256=toeR5uDWKBj6ezsUZ4elNP6CEMtK7CO2jS9A30nsFbo,5404
pytz/reference.py,sha256=zUtCki7JFEmrzrjNsfMD7YL0lWDxynKc1Ubo4iXSs74,3778
pytz/tzfile.py,sha256=g2CMhXZ1PX2slgg5_Kk9TvmIkVKeOjbuONHEfZP6jMk,4745
pytz/tzinfo.py,sha256=-5UjW-yqHbtO5NtSaWope7EbSdf2oTES26Kdlxjqdk0,19272
pytz/zoneinfo/CET,sha256=PAApBF9vgLxahPG7jtNiMEVHWcVFeOuajBldFPRCITw,2102
pytz/zoneinfo/CST6CDT,sha256=ROi1aeYAJ2R_mAGjPQtDvgEGptP2zQWWd-DtZcm4uDE,2294
pytz/zoneinfo/Cuba,sha256=eHH4daiBn0FcKSUZ2xWQVWoNwabOaRv0969V5nFvuJQ,2437
pytz/zoneinfo/EET,sha256=C_bSZpq0XBOhyb5Hw1GXL-tnF3C5CmHZ0xP8YLchsrQ,1876
pytz/zoneinfo/EST,sha256=yedfESpJj_ADRFUcPFxKYr0V1cIY7pUfQ2OrIYxdiOs,127
pytz/zoneinfo/EST5EDT,sha256=ec4n4DonUgkeiknMfnzMmsIC1sUt1dIkVx_oImL77sg,2294
pytz/zoneinfo/Egypt,sha256=J5u-H6YtpnOHxjWTtgu2VSUu9cjxic9DRpCHdArytPw,1972
pytz/zoneinfo/Eire,sha256=RL3F1j5bFmOGdJHMDTC4GCD8hpStD9XvUAuorGt_ul8,3531
pytz/zoneinfo/Factory,sha256=RsnkmUKmJyK5vxc3_LgTDdFgk4-qfANYYu8CY3w3qh0,148
pytz/zoneinfo/GB,sha256=sUxIYBnjyyWc-CNaDWpLw_9s-nJqFl8eot9APIrjG4Y,3687
pytz/zoneinfo/GB-Eire,sha256=sUxIYBnjyyWc-CNaDWpLw_9s-nJqFl8eot9APIrjG4Y,3687
pytz/zoneinfo/GMT,sha256=17OYeQlBNdE-_SgpN2kLQ_SLtTWXzj54aX9I3M6us-w,127
pytz/zoneinfo/GMT+0,sha256=17OYeQlBNdE-_SgpN2kLQ_SLtTWXzj54aX9I3M6us-w,127
pytz/zoneinfo/GMT-0,sha256=17OYeQlBNdE-_SgpN2kLQ_SLtTWXzj54aX9I3M6us-w,127
pytz/zoneinfo/GMT0,sha256=17OYeQlBNdE-_SgpN2kLQ_SLtTWXzj54aX9I3M6us-w,127
pytz/zoneinfo/Greenwich,sha256=17OYeQlBNdE-_SgpN2kLQ_SLtTWXzj54aX9I3M6us-w,127
pytz/zoneinfo/HST,sha256=RASL999hvc9FlywTQmsDnw002AlH1gomAxg7O2vkAn8,128
pytz/zoneinfo/Hongkong,sha256=l4b75K2bgg9hpWZLO4XdYBqm6RUsk_9OFL1U7_348dU,1189
pytz/zoneinfo/Iceland,sha256=nNzqaqHu2CdtP2Yg4MD_rpz8w3IsRD6mujkUeXXq-qM,1188
pytz/zoneinfo/Iran,sha256=53RfdtZdlFhrpyM-e_9UkRiHSA-l4j8cU_5eV0P0seM,1718
pytz/zoneinfo/Israel,sha256=YAGe4NHetuaZShpclRhh4dufmSpcAn-8TjYX-ULAIc8,2265
pytz/zoneinfo/Jamaica,sha256=rduYyvNFm7ddbhTtdqpm5kK-rS0Gfn_oGBSk8CzxNQM,507
pytz/zoneinfo/Japan,sha256=TVmM6j_lW0SvvZxvYD90iWDkqYBuHqHof8Lyu5ghQ3c,318
pytz/zoneinfo/Kwajalein,sha256=CQLqlpOXlUrsuxL6X5HToAlr1EO7rqNqlu5Lk9lXuiU,259
pytz/zoneinfo/Libya,sha256=j_U_cHKGP7VvHnEzk5K23n5QZ176QzO54DK2d8nJpSc,655
pytz/zoneinfo/MET,sha256=H_8zGkQU6YCX0zvsGpu_KhVdmRtXrNG7TBH4VZ-05RQ,2102
pytz/zoneinfo/MST,sha256=-PthAFYIe7PKjs9c3LUwXBZStkn95RL2BrnuGzVW-54,127
pytz/zoneinfo/MST7MDT,sha256=hUUtAxUmYhF46bJMka9pt-zDDfRwNmaTeJVhNcTnNdA,2294
pytz/zoneinfo/NZ,sha256=17UXU4eseOKfe5Ah5BFRJ1a-KD7T0YGZQu9dRezzOOQ,2460
pytz/zoneinfo/NZ-CHAT,sha256=WAGfL6op3H23CBKTIwpyh2kFTdfA0PqelujEKZ5xMU0,2087
pytz/zoneinfo/Navajo,sha256=9N88x0x50HCiWnkndE06QioF2GKpojShIQXFyWTvsi0,2453
pytz/zoneinfo/PRC,sha256=lTYiu9frnrqMO56M1dXsmM6moIWp3rHEPknoiaFU00Q,414
pytz/zoneinfo/PST8PDT,sha256=TY5pvUPo1x8PWOEVWTgU1owaaqRBJVsXs-mpKp1u_EY,2294
pytz/zoneinfo/Poland,sha256=aOdJPBygUOQTQGKnSqSk_DIVnAQrTJ2NQMi_ydJzxfo,2705
pytz/zoneinfo/Portugal,sha256=S75l1P8zlP-htK5v4iluMz9VutCuScpnF7YHblNJDqI,3469
pytz/zoneinfo/ROC,sha256=Jc_QK8hHvcsR5YZEW6iGp2MV8fm-hvfnSUSm6OhkRUM,790
pytz/zoneinfo/ROK,sha256=It6UZCqXimr0Y9sXXp-ToykuioGnSouSmJvCF0N57dY,531
pytz/zoneinfo/Singapore,sha256=5pKf3kP_xIu6xAgbMbv3_UJkOzwm-t8yK96t6yPPx0g,424
pytz/zoneinfo/Turkey,sha256=ldOJ2-YltB_ZTylyeN94QXWsuqtz3jhrzcJAcT43kVI,2166
pytz/zoneinfo/UCT,sha256=s7dihjysJWmqM_faGSWEr9mWXO63Jj_tSth8GzXkx9g,127
pytz/zoneinfo/UTC,sha256=PHGzWL6B4TscJOGZoRn9AB2825Dtx9RMLHrhdTIaAhU,127
pytz/zoneinfo/Universal,sha256=PHGzWL6B4TscJOGZoRn9AB2825Dtx9RMLHrhdTIaAhU,127
pytz/zoneinfo/W-SU,sha256=AtVVFtD51JeZgmC08Smu5Zhnt3qSC6LKDFixXshYjno,1544
pytz/zoneinfo/WET,sha256=5efEYxKV5_FwheNTD5n8KYTMfkvbmgfbdwLejBjCqrE,1873
pytz/zoneinfo/Zulu,sha256=PHGzWL6B4TscJOGZoRn9AB2825Dtx9RMLHrhdTIaAhU,127
pytz/zoneinfo/iso3166.tab,sha256=_ovReSwOfsa0JQfFijukM-vdrb9MMDHqym2pxB3vN9I,4445
pytz/zoneinfo/leapseconds,sha256=_UTC3ZyD4sru4wvZDMAfpTjmvCbbdW4W14aSxDcLAgU,2196
pytz/zoneinfo/posixrules,sha256=X6bczDAzUuEZXENIsYnzCFAU2KVqGXbI6KMr1P7baf0,3545
pytz/zoneinfo/tzdata.zi,sha256=1rIZCxXS5MTRUIbA4KN5HTjPrfUvtdXFlSgS4RjUj7c,106910
pytz/zoneinfo/zone.tab,sha256=FM37LF4_cgHYLDaNOsIEo8-55Q2J3RBtQU4wLbV8FB4,19165
pytz/zoneinfo/zone1970.tab,sha256=MSS5l7kYP3ApWFaQrjyzGv4eJxpLvb8F7wAtI9A3YLI,17781
pytz/zoneinfo/Africa/Abidjan,sha256=1d7RJt-PaTzh_4PoWqTUQYXCve99ofkVshT1Pe_97kc,170
pytz/zoneinfo/Africa/Accra,sha256=6gqJ7DwlM5D3RhB8PqaTkicNjfDcLSrtbyP0z_hSv5E,842
pytz/zoneinfo/Africa/Addis_Ababa,sha256=8UO8uDuAvBrQu7itc2yFLmK762sxNEEr-ndoRmPtIio,285
pytz/zoneinfo/Africa/Algiers,sha256=13fo7sueviaWkjSdqmtFskY-SjwtEHzNE5tiBsT6c8w,760
pytz/zoneinfo/Africa/Asmara,sha256=8UO8uDuAvBrQu7itc2yFLmK762sxNEEr-ndoRmPtIio,285
pytz/zoneinfo/Africa/Asmera,sha256=8UO8uDuAvBrQu7itc2yFLmK762sxNEEr-ndoRmPtIio,285
pytz/zoneinfo/Africa/Bamako,sha256=1d7RJt-PaTzh_4PoWqTUQYXCve99ofkVshT1Pe_97kc,170
pytz/zoneinfo/Africa/Bangui,sha256=5AwzhvOlzYigPIEfow7Kw08xNo-WCueeSpDeKVxbGTg,171
pytz/zoneinfo/Africa/Banjul,sha256=1d7RJt-PaTzh_4PoWqTUQYXCve99ofkVshT1Pe_97kc,170
pytz/zoneinfo/Africa/Bissau,sha256=jdrROtwzze6Or1XPox78r9eTBa6N_MO-Bv94KZ8p8dg,208
pytz/zoneinfo/Africa/Blantyre,sha256=PX5tF8q9qhgUpW3d7AJofhCHvDM0_pIK0miokr8IBRE,171
pytz/zoneinfo/Africa/Brazzaville,sha256=5AwzhvOlzYigPIEfow7Kw08xNo-WCueeSpDeKVxbGTg,171
pytz/zoneinfo/Africa/Bujumbura,sha256=PX5tF8q9qhgUpW3d7AJofhCHvDM0_pIK0miokr8IBRE,171
pytz/zoneinfo/Africa/Cairo,sha256=J5u-H6YtpnOHxjWTtgu2VSUu9cjxic9DRpCHdArytPw,1972
pytz/zoneinfo/Africa/Casablanca,sha256=es_hVvjPnP-Xq4-b5rgHkFiY0nZMtd9nFDRCDRfobWM,1643
pytz/zoneinfo/Africa/Ceuta,sha256=OH0sNUEX_ioi9vO0KeQZOjMdPpPXAHpVxQs7nu3uY94,2059
pytz/zoneinfo/Africa/Conakry,sha256=1d7RJt-PaTzh_4PoWqTUQYXCve99ofkVshT1Pe_97kc,170
pytz/zoneinfo/Africa/Dakar,sha256=1d7RJt-PaTzh_4PoWqTUQYXCve99ofkVshT1Pe_97kc,170
pytz/zoneinfo/Africa/Dar_es_Salaam,sha256=8UO8uDuAvBrQu7itc2yFLmK762sxNEEr-ndoRmPtIio,285
pytz/zoneinfo/Africa/Djibouti,sha256=8UO8uDuAvBrQu7itc2yFLmK762sxNEEr-ndoRmPtIio,285
pytz/zoneinfo/Africa/Douala,sha256=5AwzhvOlzYigPIEfow7Kw08xNo-WCueeSpDeKVxbGTg,171
pytz/zoneinfo/Africa/El_Aaiun,sha256=y9Km_PfK3OXHdW4-AawIfk2KoAJcgxWbLwId-cAHdxI,1473
pytz/zoneinfo/Africa/Freetown,sha256=1d7RJt-PaTzh_4PoWqTUQYXCve99ofkVshT1Pe_97kc,170
pytz/zoneinfo/Africa/Gaborone,sha256=PX5tF8q9qhgUpW3d7AJofhCHvDM0_pIK0miokr8IBRE,171
pytz/zoneinfo/Africa/Harare,sha256=PX5tF8q9qhgUpW3d7AJofhCHvDM0_pIK0miokr8IBRE,171
pytz/zoneinfo/Africa/Johannesburg,sha256=_OxCRwkZBdiKC4aejlx-5rz7p9tsMQFluqlQeLC-Ma8,271
pytz/zoneinfo/Africa/Juba,sha256=c9mGxwFzx2PpsmLb82cSC8Kk9j8AbB1BLqmtq3fgnaM,683
pytz/zoneinfo/Africa/Kampala,sha256=8UO8uDuAvBrQu7itc2yFLmK762sxNEEr-ndoRmPtIio,285
pytz/zoneinfo/Africa/Khartoum,sha256=Ulapb3g4LoLbgK2FkSQMOIb8WPmoP-lFBuOhkvvPL04,713
pytz/zoneinfo/Africa/Kigali,sha256=PX5tF8q9qhgUpW3d7AJofhCHvDM0_pIK0miokr8IBRE,171
pytz/zoneinfo/Africa/Kinshasa,sha256=5AwzhvOlzYigPIEfow7Kw08xNo-WCueeSpDeKVxbGTg,171
pytz/zoneinfo/Africa/Lagos,sha256=5AwzhvOlzYigPIEfow7Kw08xNo-WCueeSpDeKVxbGTg,171
pytz/zoneinfo/Africa/Libreville,sha256=5AwzhvOlzYigPIEfow7Kw08xNo-WCueeSpDeKVxbGTg,171
pytz/zoneinfo/Africa/Lome,sha256=1d7RJt-PaTzh_4PoWqTUQYXCve99ofkVshT1Pe_97kc,170
pytz/zoneinfo/Africa/Luanda,sha256=5AwzhvOlzYigPIEfow7Kw08xNo-WCueeSpDeKVxbGTg,171
pytz/zoneinfo/Africa/Lubumbashi,sha256=PX5tF8q9qhgUpW3d7AJofhCHvDM0_pIK0miokr8IBRE,171
pytz/zoneinfo/Africa/Lusaka,sha256=PX5tF8q9qhgUpW3d7AJofhCHvDM0_pIK0miokr8IBRE,171
pytz/zoneinfo/Africa/Malabo,sha256=5AwzhvOlzYigPIEfow7Kw08xNo-WCueeSpDeKVxbGTg,171
pytz/zoneinfo/Africa/Maputo,sha256=PX5tF8q9qhgUpW3d7AJofhCHvDM0_pIK0miokr8IBRE,171
pytz/zoneinfo/Africa/Maseru,sha256=_OxCRwkZBdiKC4aejlx-5rz7p9tsMQFluqlQeLC-Ma8,271
pytz/zoneinfo/Africa/Mbabane,sha256=_OxCRwkZBdiKC4aejlx-5rz7p9tsMQFluqlQeLC-Ma8,271
pytz/zoneinfo/Africa/Mogadishu,sha256=8UO8uDuAvBrQu7itc2yFLmK762sxNEEr-ndoRmPtIio,285
pytz/zoneinfo/Africa/Monrovia,sha256=P5ZyyYmDr1lbPGJ0z4E1coyIFaT5yY_7oENwdgnl0SI,233
pytz/zoneinfo/Africa/Nairobi,sha256=8UO8uDuAvBrQu7itc2yFLmK762sxNEEr-ndoRmPtIio,285
pytz/zoneinfo/Africa/Ndjamena,sha256=sTkcjt0js_c-C_rPi4eIAcWCBspCNJwwsi_Lfo0T3jo,225
pytz/zoneinfo/Africa/Niamey,sha256=5AwzhvOlzYigPIEfow7Kw08xNo-WCueeSpDeKVxbGTg,171
pytz/zoneinfo/Africa/Nouakchott,sha256=1d7RJt-PaTzh_4PoWqTUQYXCve99ofkVshT1Pe_97kc,170
pytz/zoneinfo/Africa/Ouagadougou,sha256=1d7RJt-PaTzh_4PoWqTUQYXCve99ofkVshT1Pe_97kc,170
pytz/zoneinfo/Africa/Porto-Novo,sha256=5AwzhvOlzYigPIEfow7Kw08xNo-WCueeSpDeKVxbGTg,171
pytz/zoneinfo/Africa/Sao_Tome,sha256=jZzEQajLff678jUQ26hRC6i3osrHZhsMzKs2hVXYZb8,234
pytz/zoneinfo/Africa/Timbuktu,sha256=1d7RJt-PaTzh_4PoWqTUQYXCve99ofkVshT1Pe_97kc,170
pytz/zoneinfo/Africa/Tripoli,sha256=j_U_cHKGP7VvHnEzk5K23n5QZ176QzO54DK2d8nJpSc,655
pytz/zoneinfo/Africa/Tunis,sha256=7sw0Q20d2WxJ1rZx7WG8WUVI0oCpZ1N6llOEG1N6mpI,710
pytz/zoneinfo/Africa/Windhoek,sha256=9tNzU8PPArsblQzcHMAk6YSaN0UyqPfk7guwC91LarE,988
pytz/zoneinfo/America/Adak,sha256=xFyU0xZBPI9mav9l7R-Den4tOSJi3jHOWfrC6Woe3IE,2365
pytz/zoneinfo/America/Anchorage,sha256=9d8Kb3-dQ8u9PnTTOiP-aGCA61WWX12SRrboWbPbnRg,2380
pytz/zoneinfo/America/Anguilla,sha256=smWcJn91VcBkBQVmAjTL4Nf-6tOl4p9BJy4oodfRiWI,170
pytz/zoneinfo/America/Antigua,sha256=smWcJn91VcBkBQVmAjTL4Nf-6tOl4p9BJy4oodfRiWI,170
pytz/zoneinfo/America/Araguaina,sha256=-3_i0G6O5cXZqKVoyMs377sAhoJPONG8TYUF-WO1lw0,910
pytz/zoneinfo/America/Aruba,sha256=Aj2HeTLzXYiXcvVh954mbIVBuYTgzivSV3I6r8fYg8E,212
pytz/zoneinfo/America/Asuncion,sha256=Hin3zcUwQZrTHkr8j8Kt9A2Vd_VeIXSjqCNYoCd4DKI,2077
pytz/zoneinfo/America/Atikokan,sha256=wwImtHK1B7WjC2lVfVbyT8yOlGcRDk0-wVwsUd5dJFw,345
pytz/zoneinfo/America/Atka,sha256=xFyU0xZBPI9mav9l7R-Den4tOSJi3jHOWfrC6Woe3IE,2365
pytz/zoneinfo/America/Bahia,sha256=LhwbXiV54VpiO_03dNtwOkm5N3kOaLRKa5mjCMbsumY,1050
pytz/zoneinfo/America/Bahia_Banderas,sha256=nQ4Nn2FoY1pfmFUKFw1COFT_W2Ys4Nh0w8uncZm_HL0,1588
pytz/zoneinfo/America/Barbados,sha256=mxp4V6Aa4qOumlHgtAz77ZG6xGhXntPAi1RGYna7sfo,344
pytz/zoneinfo/America/Belem,sha256=hHSfYHXeWdxivWk0MZSAbP1VJkG5Eqb46WyDyZkUoYc,602
pytz/zoneinfo/America/Belize,sha256=605XqMZX0MJT704KWvEYySjm5YdVZAgacUVjrd_Usxo,978
pytz/zoneinfo/America/Blanc-Sablon,sha256=x9ODv7foUzEDD4CRqQVaX0JONnRAfKDHbM4GtaAxb9s,307
pytz/zoneinfo/America/Boa_Vista,sha256=xXpj8iKAwsRlh0FJVu_I_KrcNu1CJYm0iSncx6tPZoA,658
pytz/zoneinfo/America/Bogota,sha256=NhHeNPdl8tZewFk-ecZ43jYJJUmJhoDcRjm4xo9xN7o,271
pytz/zoneinfo/America/Boise,sha256=MzU-8FzN2n3r51fPhl7nvXgDHzjGeXuPv8EfkBD1WhA,2403
pytz/zoneinfo/America/Buenos_Aires,sha256=hBubypR_Ks2a3Gy1wQFxIE7s7B5G5gQmVPNVyJ3rxD8,1109
pytz/zoneinfo/America/Cambridge_Bay,sha256=CurtWxBO6ZqxOp9bWnqvf2yaf1m979FdPJlRVRx7X28,2098
pytz/zoneinfo/America/Campo_Grande,sha256=72crPAY39eZ3MH2idZvCYa-k8H5S_kUZf4WyEfi7k2Q,2016
pytz/zoneinfo/America/Cancun,sha256=0iMWhz8wl5nG-X_vuKCoiX0N9Os3b4S7C3FgLsJA0E8,816
pytz/zoneinfo/America/Caracas,sha256=lOjvrojgltbdCr2iZh2CbABPDFh_l3gssvkR7XyULxo,289
pytz/zoneinfo/America/Catamarca,sha256=6ESo80xxwtBL_axrEekTtfIOqf3bXRRUM9CDEIfxxdY,1109
pytz/zoneinfo/America/Cayenne,sha256=r43odEf3CTdZpZXMPUA-X6e1H8NSCVnE2lSVb_ushWo,224
pytz/zoneinfo/America/Cayman,sha256=_E-7oUZToxhvPFtxn3ub99ilgkQBBkz21QggVZLlWp8,203
pytz/zoneinfo/America/Chicago,sha256=FD8puVcXOkYAgYcjCjgSW9OgOz28ug3B0bhmEzH3FpM,3585
pytz/zoneinfo/America/Chihuahua,sha256=p9FQ5xbbWxyWuw5QJSuAMG4dnovMK_kKOucHGQbnFRM,1522
pytz/zoneinfo/America/Coral_Harbour,sha256=wwImtHK1B7WjC2lVfVbyT8yOlGcRDk0-wVwsUd5dJFw,345
pytz/zoneinfo/America/Cordoba,sha256=JUow-bmwBVg1DQwfQKHZyHOARbt_6I5WyBu7n70WECY,1109
pytz/zoneinfo/America/Costa_Rica,sha256=Tm_ymnduBTImv1kOvnNIlvkVDWkHTyKhahxxmaFITsU,341
pytz/zoneinfo/America/Creston,sha256=l7dL7sNxS-UYIZ8kUzzCHt-bU9AfSreSpv4PiJc0Ses,233
pytz/zoneinfo/America/Cuiaba,sha256=HfZRqJDrg60x5QP6EGl1Vfc1l0rkUBtIc11nzd9fSis,1988
pytz/zoneinfo/America/Curacao,sha256=Aj2HeTLzXYiXcvVh954mbIVBuYTgzivSV3I6r8fYg8E,212
pytz/zoneinfo/America/Danmarkshavn,sha256=CH45zW8QtpRLaLHeVXKJ7zN2lGfxspgGuWoWz45Djm4,712
pytz/zoneinfo/America/Dawson,sha256=LQG0thFN-LDtiqZGVPd3hC8gcpgY8VZqXzQdc-9wk9w,2093
pytz/zoneinfo/America/Dawson_Creek,sha256=KdAkW8BNrcuxlqO2qBus4WlkURZqdBfVuyqGEPN-xbo,1059
pytz/zoneinfo/America/Denver,sha256=9N88x0x50HCiWnkndE06QioF2GKpojShIQXFyWTvsi0,2453
pytz/zoneinfo/America/Detroit,sha256=2QN63tOQ0w4uMPIwIGKtYEJlGyYTkocu93LK1a-u2So,2188
pytz/zoneinfo/America/Dominica,sha256=smWcJn91VcBkBQVmAjTL4Nf-6tOl4p9BJy4oodfRiWI,170
pytz/zoneinfo/America/Edmonton,sha256=ZnjCP4ZXO2yV5sdIoxeqjOkPaGNrza0Y2wgecJhvtU4,2402
pytz/zoneinfo/America/Eirunepe,sha256=B3YSePXFiGfGRWJcm4GeoJ5HA9dlZOIxl55I1tLgiBo,690
pytz/zoneinfo/America/El_Salvador,sha256=YyFbIToxUFv9VF_VKxEhTLYU8T8PVZEfQU7bRChuf4o,250
pytz/zoneinfo/America/Ensenada,sha256=2Ce5W0-ha4xW2aFjY0HJESZX5WeuhLN6m_yhM64xurs,2356
pytz/zoneinfo/America/Fort_Nelson,sha256=586aAc3TE9IDUhEkMDQcJi4bkBgt5JD8lcEy2qwRjOc,2249
pytz/zoneinfo/America/Fort_Wayne,sha256=VcLz_rJB-IQ16YduduLGnd_Q39NqJztVH_SA4s-tmf4,1675
pytz/zoneinfo/America/Fortaleza,sha256=yjzWzdTsX5RXQs1yqR5Tl1bgrS6sPfpir8ITlwYe6pk,742
pytz/zoneinfo/America/Glace_Bay,sha256=5q8k47nxJAq7hhj6wybuOh7MzSXS-kk2sqKLCwiA5VA,2206
pytz/zoneinfo/America/Godthab,sha256=NWzS1OdMlYYit3OFrgUJteqH5pHyEgcjD2_h-mfiIK8,1892
pytz/zoneinfo/America/Goose_Bay,sha256=8MBsahhBzcN7-zEcEcq6HJdNDWwnclwEtpZX58oRKkk,3219
pytz/zoneinfo/America/Grand_Turk,sha256=kISPq7i8_btOZvWmJMTn-oiWLxb4tgBfUnzYSr6_pXQ,1881
pytz/zoneinfo/America/Grenada,sha256=smWcJn91VcBkBQVmAjTL4Nf-6tOl4p9BJy4oodfRiWI,170
pytz/zoneinfo/America/Guadeloupe,sha256=smWcJn91VcBkBQVmAjTL4Nf-6tOl4p9BJy4oodfRiWI,170
pytz/zoneinfo/America/Guatemala,sha256=eVzCXl_-glqLPYbu2YrV-bufbRUt8rYk8OKmOxfw7kM,306
pytz/zoneinfo/America/Guayaquil,sha256=b1LAz_MhANeX5kAyxM4Z-lqUt1t2ePG-s8DLVJzcAPc,271
pytz/zoneinfo/America/Guyana,sha256=_6TbnvnIopAjVd5Zs2k6o9q9IeegYFR3K_zXVJAuk0I,266
pytz/zoneinfo/America/Halifax,sha256=Yn4YIYxvPD9EbElwq-gWRnLip7qUvPhBseBq9QiblOo,3438
pytz/zoneinfo/America/Havana,sha256=eHH4daiBn0FcKSUZ2xWQVWoNwabOaRv0969V5nFvuJQ,2437
pytz/zoneinfo/America/Hermosillo,sha256=7G6yHQaPHKjoCp6CUgatG1oEseirst2YHGyQt2hriCA,454
pytz/zoneinfo/America/Indianapolis,sha256=VcLz_rJB-IQ16YduduLGnd_Q39NqJztVH_SA4s-tmf4,1675
pytz/zoneinfo/America/Inuvik,sha256=6mTLwL-Sz4jIkXIi8R24g49C4tQTYM2Bu5P2aaK8aFs,1928
pytz/zoneinfo/America/Iqaluit,sha256=64eXJQuL2MPQmJO08mH_sb7dZohpoFHI4sgPbA1jQIw,2046
pytz/zoneinfo/America/Jamaica,sha256=rduYyvNFm7ddbhTtdqpm5kK-rS0Gfn_oGBSk8CzxNQM,507
pytz/zoneinfo/America/Jujuy,sha256=Iz9D-JWwjyHNKJGPvbnCKJJRHAmWrGIS4BnD6GaspFU,1081
pytz/zoneinfo/America/Juneau,sha256=gYWRPuaPfscs2Y787mjRtr0MME4wOi3GE7Bs2X5jM8g,2362
pytz/zoneinfo/America/Knox_IN,sha256=nnXdbFLFM5yOKxlf-KxqchLixehLK-MCPMNVlywg2FY,2437
pytz/zoneinfo/America/Kralendijk,sha256=Aj2HeTLzXYiXcvVh954mbIVBuYTgzivSV3I6r8fYg8E,212
pytz/zoneinfo/America/La_Paz,sha256=HxCwE66oWtVcOz9l1o-gm7pKvn-1MRAYaYgj8KuQmog,257
pytz/zoneinfo/America/Lima,sha256=X1FNUkWrud58Nfq-1MTMhvbAJ1SM0b4EzISxIoeOGtM,431
pytz/zoneinfo/America/Los_Angeles,sha256=_qnWb_ZSLmnSIHPcToQXm3ysLjcrOY3C-v39thqesuE,2845
pytz/zoneinfo/America/Louisville,sha256=d5xqbFZndPlPdU2tiTbqf39q-wKO2cdrdNjzdTVUOe4,2781
pytz/zoneinfo/America/Lower_Princes,sha256=Aj2HeTLzXYiXcvVh954mbIVBuYTgzivSV3I6r8fYg8E,212
pytz/zoneinfo/America/Maceio,sha256=MkHOjfAASgy12y6zgAo9_ncMwdJNFE_uJ4YsTddACEA,770
pytz/zoneinfo/America/Managua,sha256=o8HwC8h57oTmI9JSUvH7j_2M9DzZyLi_Era17agEVoM,463
pytz/zoneinfo/America/Manaus,sha256=4SE-e5fPpYC0-ccow0_6ZKarJ3sGtViJOymcINNSjmw,630
pytz/zoneinfo/America/Marigot,sha256=smWcJn91VcBkBQVmAjTL4Nf-6tOl4p9BJy4oodfRiWI,170
pytz/zoneinfo/America/Martinique,sha256=4IfD5K4gI0oIZnrc9qtM0Dqzru5-A1J48nHdsLZc__I,257
pytz/zoneinfo/America/Matamoros,sha256=Q5jYMd9L_P2br6Iqw1zVXbt9_V8lwThFLorfJ16hFzU,1416
pytz/zoneinfo/America/Mazatlan,sha256=k0C3GbJQdzJizsYudx0SEQWu0WiDZyPfwwXjC7BM-7E,1564
pytz/zoneinfo/America/Mendoza,sha256=1Q8kXPHus2UNu91Fcg3caxxeIq7eeYHyC57-LHrGjE0,1109
pytz/zoneinfo/America/Menominee,sha256=Rs7VgOdINNLGioCmCuBaC3FQFLsrTa1nz5lKwgzirCI,2283
pytz/zoneinfo/America/Merida,sha256=7Nz0sp97Q5FSuem1WfBNfUunWd2ULC_WhaTuNnmPyNE,1456
pytz/zoneinfo/America/Metlakatla,sha256=Sa1eT8VJ0NsuLMbc0pNuyxK4WR28OoBv_PhD34JA9qA,1418
pytz/zoneinfo/America/Mexico_City,sha256=iLw_yxqS7wU-CvSvkFPsvxKFX98Y-FmypU2Cbb-stlU,1618
pytz/zoneinfo/America/Miquelon,sha256=Ifq8nCyv2O70avkSYEDM7W7yfWSNc9SJUReBQ-a7AGs,1696
pytz/zoneinfo/America/Moncton,sha256=EwDVqTuzdsvyOokKI-oF-isilIbn631ZWceDQmD7t7c,3163
pytz/zoneinfo/America/Monterrey,sha256=idrcqFLr9S5EBclYEyJVwl-xlWBNffm4RL9QtIoIZdg,1416
pytz/zoneinfo/America/Montevideo,sha256=VQ78OdPhyeaQmqgKnQZ_k1XEeodPyvT1kwJAfvb5aOE,1564
pytz/zoneinfo/America/Montreal,sha256=hC96ED36ycDCwzycw5KhE9JmrAZMXHSXiDq0G3l84ZQ,3503
pytz/zoneinfo/America/Montserrat,sha256=smWcJn91VcBkBQVmAjTL4Nf-6tOl4p9BJy4oodfRiWI,170
pytz/zoneinfo/America/Nassau,sha256=TJmdvMbGBFrL7fb9SPW3CyDrjYsL2WEtK-qI3AOqn00,2284
pytz/zoneinfo/America/New_York,sha256=X6bczDAzUuEZXENIsYnzCFAU2KVqGXbI6KMr1P7baf0,3545
pytz/zoneinfo/America/Nipigon,sha256=cQDKS_MEQhH_jncNreILaDiA85ZfFG673XLGRKrsfDc,2131
pytz/zoneinfo/America/Nome,sha256=0xK8eX6xs4TM-6DECCLVCy4KvzfV2qQ90-JV_cdXOwA,2376
pytz/zoneinfo/America/Noronha,sha256=y06Wj0Fe1T52kQjJ1flxDomHFq90U205twd7BCbzlg0,742
pytz/zoneinfo/America/Ojinaga,sha256=oH_4_j7jUx-Gavyg95N9hqzsGCb7PqplXVQwDsItxxM,1522
pytz/zoneinfo/America/Panama,sha256=_E-7oUZToxhvPFtxn3ub99ilgkQBBkz21QggVZLlWp8,203
pytz/zoneinfo/America/Pangnirtung,sha256=G2pJdlPfkiDDCgIth-wqoTIK-eUbs83Eh1bnLXcKZzg,2108
pytz/zoneinfo/America/Paramaribo,sha256=VwObMaaLMLoHMZFs_6e5obu1K_dlD3qmIFLomo_J7fY,296
pytz/zoneinfo/America/Phoenix,sha256=nAE-z4K27R3eI1tfyYP-nSPI1W1hAyP3yUxro817RWQ,353
pytz/zoneinfo/America/Port-au-Prince,sha256=sLYK0cVXxBWW4PzH_IubOURMeClbFHzuSV4pmFoiXaY,1455
pytz/zoneinfo/America/Port_of_Spain,sha256=smWcJn91VcBkBQVmAjTL4Nf-6tOl4p9BJy4oodfRiWI,170
pytz/zoneinfo/America/Porto_Acre,sha256=FshszMk8fr_v-uiA5DnOhIBV5CFXiYLVyr74quwV-AI,662
pytz/zoneinfo/America/Porto_Velho,sha256=Kfjaqo_coJDfcUXmns3JNs0_7azqC3I_XJPaKoyA-XY,602
pytz/zoneinfo/America/Puerto_Rico,sha256=fu5E4ct6yIX91QQoFcVIvLbKhM_43gB-UrU8C5rVPxk,255
pytz/zoneinfo/America/Punta_Arenas,sha256=M-JrPIvz3XEAFR08GEKumqjvabFflhqi7uLh3DUIxuU,1911
pytz/zoneinfo/America/Rainy_River,sha256=mnuN1Mlo3jH-Nf2f4HX62K_BWJIGcRn2OLWu8NIojYM,2131
pytz/zoneinfo/America/Rankin_Inlet,sha256=s644zPowkevYA3_V4f0nFacgCJMvlFJqFfsap_rnItw,1930
pytz/zoneinfo/America/Recife,sha256=zrttMMILALxDfU4KjGoMkdsSCjrvLCi8VpYPaCs_www,742
pytz/zoneinfo/America/Regina,sha256=kp0HRXQHUpY3Ym0J9cqXW08FgB810L-sTjsAJ-_uZ3Y,994
pytz/zoneinfo/America/Resolute,sha256=xSkUGAdwRyWwWRh7n0WAgPkRtt1DE-dBOdLH2sKHyQE,1930
pytz/zoneinfo/America/Rio_Branco,sha256=FshszMk8fr_v-uiA5DnOhIBV5CFXiYLVyr74quwV-AI,662
pytz/zoneinfo/America/Rosario,sha256=JUow-bmwBVg1DQwfQKHZyHOARbt_6I5WyBu7n70WECY,1109
pytz/zoneinfo/America/Santa_Isabel,sha256=2Ce5W0-ha4xW2aFjY0HJESZX5WeuhLN6m_yhM64xurs,2356
pytz/zoneinfo/America/Santarem,sha256=eEQNAfTFt8E9Hb5lALpxGI79z5AGmXnICiJNgxyL2Xs,632
pytz/zoneinfo/America/Santiago,sha256=A0WTAf1TQ-LArMtXwKvnGlyZBA3v4mSkPTK0MENXMe4,2538
pytz/zoneinfo/America/Santo_Domingo,sha256=rfNJ5McxSqppnEiTxYmwd_bfp9mlTqnq5Fllj5r0Hcc,491
pytz/zoneinfo/America/Sao_Paulo,sha256=5U8tGHsI7_0tGsnE9m1rwKMTZwSIeShVelx_dMI69Ag,2016
pytz/zoneinfo/America/Scoresbysund,sha256=xmh3LUkybN43mNFYCJ0vnO1DeI-QQ2Cm3GelOGiyj5Y,1930
pytz/zoneinfo/America/Shiprock,sha256=9N88x0x50HCiWnkndE06QioF2GKpojShIQXFyWTvsi0,2453
pytz/zoneinfo/America/Sitka,sha256=unm4ns2OZNukEZ8sWvI3MWdVfEvHG3sTSrJS4LdIX9s,2350
pytz/zoneinfo/America/St_Barthelemy,sha256=smWcJn91VcBkBQVmAjTL4Nf-6tOl4p9BJy4oodfRiWI,170
pytz/zoneinfo/America/St_Johns,sha256=K5YKWNbT9qJycH-UH1WxW4uj_Q_VX4aA6oSvax6YuuA,3664
pytz/zoneinfo/America/St_Kitts,sha256=smWcJn91VcBkBQVmAjTL4Nf-6tOl4p9BJy4oodfRiWI,170
pytz/zoneinfo/America/St_Lucia,sha256=smWcJn91VcBkBQVmAjTL4Nf-6tOl4p9BJy4oodfRiWI,170
pytz/zoneinfo/America/St_Thomas,sha256=smWcJn91VcBkBQVmAjTL4Nf-6tOl4p9BJy4oodfRiWI,170
pytz/zoneinfo/America/St_Vincent,sha256=smWcJn91VcBkBQVmAjTL4Nf-6tOl4p9BJy4oodfRiWI,170
pytz/zoneinfo/America/Swift_Current,sha256=a2Ap8ErAfDguINMV2npy2SBNgT74NYXwQlYuf2eIp48,574
pytz/zoneinfo/America/Tegucigalpa,sha256=_SlanMaJqWZ4a24OydDxAXlqyLTwSm9SmxkpN986IRU,278
pytz/zoneinfo/America/Thule,sha256=mkdKH8dkNDRw0xA2nNv21wB-phERbiW-po9g3fWmzWg,1528
pytz/zoneinfo/America/Thunder_Bay,sha256=rvReFHQ2n1Lhr7HNfzEunwNcoTaGCSzyNRo1MTPhzuY,2211
pytz/zoneinfo/America/Tijuana,sha256=2Ce5W0-ha4xW2aFjY0HJESZX5WeuhLN6m_yhM64xurs,2356
pytz/zoneinfo/America/Toronto,sha256=hC96ED36ycDCwzycw5KhE9JmrAZMXHSXiDq0G3l84ZQ,3503
pytz/zoneinfo/America/Tortola,sha256=smWcJn91VcBkBQVmAjTL4Nf-6tOl4p9BJy4oodfRiWI,170
pytz/zoneinfo/America/Vancouver,sha256=i0FLmiC-Ca1hIU3ustv_O7G9Hp01Gnms6udX-g--kd0,2901
pytz/zoneinfo/America/Virgin,sha256=smWcJn91VcBkBQVmAjTL4Nf-6tOl4p9BJy4oodfRiWI,170
pytz/zoneinfo/America/Whitehorse,sha256=GGT-M9UeWHgKXIQApH58QubmZVq-SagswRpGEFkFgxM,2093
pytz/zoneinfo/America/Winnipeg,sha256=d75cCPb46-UzD7hqYMREfqJUliBgn072p6emjRoS2dY,2891
pytz/zoneinfo/America/Yakutat,sha256=B_GJ9JhzsTkpiey94Z0Z0zzWwWlTv35rknyi8QQPcQY,2314
pytz/zoneinfo/America/Yellowknife,sha256=MUDef-QTb7SSDou47Y1wclbnjGcu384WV64iZy3mh2g,1980
pytz/zoneinfo/America/Argentina/Buenos_Aires,sha256=hBubypR_Ks2a3Gy1wQFxIE7s7B5G5gQmVPNVyJ3rxD8,1109
pytz/zoneinfo/America/Argentina/Catamarca,sha256=6ESo80xxwtBL_axrEekTtfIOqf3bXRRUM9CDEIfxxdY,1109
pytz/zoneinfo/America/Argentina/ComodRivadavia,sha256=6ESo80xxwtBL_axrEekTtfIOqf3bXRRUM9CDEIfxxdY,1109
pytz/zoneinfo/America/Argentina/Cordoba,sha256=JUow-bmwBVg1DQwfQKHZyHOARbt_6I5WyBu7n70WECY,1109
pytz/zoneinfo/America/Argentina/Jujuy,sha256=Iz9D-JWwjyHNKJGPvbnCKJJRHAmWrGIS4BnD6GaspFU,1081
pytz/zoneinfo/America/Argentina/La_Rioja,sha256=7cgtkiW4rjypEeqxT4IBqJFpKM-rIz4YL4B-cVzxhDU,1123
pytz/zoneinfo/America/Argentina/Mendoza,sha256=1Q8kXPHus2UNu91Fcg3caxxeIq7eeYHyC57-LHrGjE0,1109
pytz/zoneinfo/America/Argentina/Rio_Gallegos,sha256=92IGeyXMfmFBsGpurnd2TKzMy_6HFvE3DDPhaewuFyM,1109
pytz/zoneinfo/America/Argentina/Salta,sha256=He7enBTtC03G5aQBEMcFYIPI_tVXuEqtwPoqBFQR5WA,1081
pytz/zoneinfo/America/Argentina/San_Juan,sha256=EAwACwO5oOGcd42ega2OXCw020t9okxV1nwK2AUKZ8U,1123
pytz/zoneinfo/America/Argentina/San_Luis,sha256=qxWxFBuHsTgeXK04b8N0tamiypIlBNpbhIB0-rkemrw,1139
pytz/zoneinfo/America/Argentina/Tucuman,sha256=amI7vNIUTx5DiSd3CEveTiYTrm8iv5Le324dxuaCSLM,1137
pytz/zoneinfo/America/Argentina/Ushuaia,sha256=AvmpZCaCPHvyX_FaHyQQaeLLFZadSNDGzDGq0Tp9D0k,1109
pytz/zoneinfo/America/Indiana/Indianapolis,sha256=VcLz_rJB-IQ16YduduLGnd_Q39NqJztVH_SA4s-tmf4,1675
pytz/zoneinfo/America/Indiana/Knox,sha256=nnXdbFLFM5yOKxlf-KxqchLixehLK-MCPMNVlywg2FY,2437
pytz/zoneinfo/America/Indiana/Marengo,sha256=ZLuHZpp8FhRUsoPlhV4o3nZVRQaAzEA-6gVy5YDrJiU,1731
pytz/zoneinfo/America/Indiana/Petersburg,sha256=PrXdUQ1nf5EY7EvKeJLbTtGBci-6-U75yxpEFxhAAyE,1913
pytz/zoneinfo/America/Indiana/Tell_City,sha256=JoxThon0gV-Grh0QC0sHKnhdXmiwPecbdPQ3E1vFKEM,1735
pytz/zoneinfo/America/Indiana/Vevay,sha256=XPcorCZ8zlG93xh1IZvw6ADVqqF3lNwsdAgpN3P1FuU,1423
pytz/zoneinfo/America/Indiana/Vincennes,sha256=ip2zj3V1-eKmJMlGYSiSfK7w7qfpo4QWec1usSmwGdM,1703
pytz/zoneinfo/America/Indiana/Winamac,sha256=0tyRkge425W9gq_2i4pJim077CwzIgulOB68oXHcwJU,1787
pytz/zoneinfo/America/Kentucky/Louisville,sha256=d5xqbFZndPlPdU2tiTbqf39q-wKO2cdrdNjzdTVUOe4,2781
pytz/zoneinfo/America/Kentucky/Monticello,sha256=uHCB5Gu-aIgWp-A8_cW07-EL1rkstaeA32sMhq9MGjc,2361
pytz/zoneinfo/America/North_Dakota/Beulah,sha256=9gTrQvAZf17e_NbUMFGgtk5uEyfb0tPPqU0DSLI-H6g,2389
pytz/zoneinfo/America/North_Dakota/Center,sha256=CO_qSvmitqWrJehhFs_PS5PBa6m3si92LZyzSB7POsg,2389
pytz/zoneinfo/America/North_Dakota/New_Salem,sha256=xaQ-tndsMmsSUPkU8A6eAOEhubUfY2ZfkPJFN22iAXo,2389
pytz/zoneinfo/Antarctica/Casey,sha256=AIMlsO0bh5BHz9AwzNJMsv2q7s3q7cJz93qqiIreMTY,311
pytz/zoneinfo/Antarctica/Davis,sha256=jex3sqIzidMMaApvsCQcrjLxwMcb8o_eFnm9sDWik5s,311
pytz/zoneinfo/Antarctica/DumontDUrville,sha256=htHnKnytHZgX9X1FbjkYS3SUNqAng6Jy8hCZlK3fvVU,216
pytz/zoneinfo/Antarctica/Macquarie,sha256=7cyqtCrc_H-khy_yK2P9wSijNU-n1EP4lbj3BozteI8,1543
pytz/zoneinfo/Antarctica/Mawson,sha256=r6Suw22f-RmSlwtMZF4DiBDyXY5YEYpWVo28kiZwRUM,225
pytz/zoneinfo/Antarctica/McMurdo,sha256=17UXU4eseOKfe5Ah5BFRJ1a-KD7T0YGZQu9dRezzOOQ,2460
pytz/zoneinfo/Antarctica/Palmer,sha256=qj_H3RsfFZm_ce0yiuXbqB4JrD46kUaJ5-pf863CgYM,1432
pytz/zoneinfo/Antarctica/Rothera,sha256=5n2et4tT06QVhlQCdY7KSVxpw0ftDKfVoCOMX3rAHYs,186
pytz/zoneinfo/Antarctica/South_Pole,sha256=17UXU4eseOKfe5Ah5BFRJ1a-KD7T0YGZQu9dRezzOOQ,2460
pytz/zoneinfo/Antarctica/Syowa,sha256=rvdl7Js_riztu68rUlUFAIqiTy9OBquuP3cKlnc4eHk,187
pytz/zoneinfo/Antarctica/Troll,sha256=HYvf52cpJymYGZOmT9ii90WyQFjIvLzyG_OwttUHXC0,1176
pytz/zoneinfo/Antarctica/Vostok,sha256=kD0gENiga-IM1XAA6J2S5vgwfco4EClCFaWM18fIY-I,187
pytz/zoneinfo/Arctic/Longyearbyen,sha256=D6TmNdorF4-j6hP_OCnHAoRM-L1p4WvKjh0029kknQE,2251
pytz/zoneinfo/Asia/Aden,sha256=MQLBdV2aZLLis2M4G79S1qAeuGak0s39DPfggyUXCU0,187
pytz/zoneinfo/Asia/Almaty,sha256=RAFijG0qNkMO_d3sPZrrn_CR6F2qIdB4MpjN3-cMOMQ,1031
pytz/zoneinfo/Asia/Amman,sha256=uhih-CP3fkeOcDDuuC3dcaXz-ubv31YyW3d2MEkS2gg,1877
pytz/zoneinfo/Asia/Anadyr,sha256=tLiARdZiTiHLIzx8Yibt7oivtj4MqNTj31gNdKbIo0w,1222
pytz/zoneinfo/Asia/Aqtau,sha256=4ueceTcbDIYBzI2p3GExRbYHIenFdDEO1Lf6mum6ows,1017
pytz/zoneinfo/Asia/Aqtobe,sha256=zNKrBxj8imN7tEV25Mo_8mcVHMQIHcaX5p69Qm2-TB0,1047
pytz/zoneinfo/Asia/Ashgabat,sha256=RihKzwD87pkYhu6Hn1B_lwvvQQWgXV4zBzagKzKdM3U,651
pytz/zoneinfo/Asia/Ashkhabad,sha256=RihKzwD87pkYhu6Hn1B_lwvvQQWgXV4zBzagKzKdM3U,651
pytz/zoneinfo/Asia/Atyrau,sha256=RIEq2hzMSatC3QTjxevo-fWSaCdlsOQAlyZiw0726TE,1025
pytz/zoneinfo/Asia/Baghdad,sha256=lCupYy1WTx4p9g51p-31mNOwAVFezdfUA7FH5b9wPLE,1004
pytz/zoneinfo/Asia/Bahrain,sha256=8V1FW1A6HZuZqbwV8n4Nh9m_PKyBAHCfajFA5jurVr0,225
pytz/zoneinfo/Asia/Baku,sha256=jv_6GX9u4HR9YPSzfbiCPS9xLz33NQv7QEYWQdnnyjE,1269
pytz/zoneinfo/Asia/Bangkok,sha256=z4ZnA6BbBnBp2wX4dYTVyKNIm8qtPkG7ASYJkEkVwRs,220
pytz/zoneinfo/Asia/Barnaul,sha256=tVZVLYgcdynyGk-xDF5144ha_AjlOUYdQNbk41nc3X8,1255
pytz/zoneinfo/Asia/Beirut,sha256=q9-lCe2YJFWHPBA1li2GQq6LiKt19_GppM9-6lzhIO8,2175
pytz/zoneinfo/Asia/Bishkek,sha256=i0Sc9krX1GuuQZZ4f0cBK_0Imar9fKx3-HlN13MLQe4,1045
pytz/zoneinfo/Asia/Brunei,sha256=zRTIn0Dq7Of4f5Z569b9wjNWwe4x2gMUAMWYBgRMpNE,229
pytz/zoneinfo/Asia/Calcutta,sha256=xx17wQ1Sxk9Z6ujqxwHBsVa77D_Z_nUJcL7RXptAj6U,312
pytz/zoneinfo/Asia/Chita,sha256=O8U3tsP2L7zRNM5MjljDUaV3C5IW8kg_HjbY7JA1s7w,1257
pytz/zoneinfo/Asia/Choibalsan,sha256=bqCCcv547xUFi1gh0FPpB-qTfbm7bKj3HLmZekTGQxU,991
pytz/zoneinfo/Asia/Chongqing,sha256=lTYiu9frnrqMO56M1dXsmM6moIWp3rHEPknoiaFU00Q,414
pytz/zoneinfo/Asia/Chungking,sha256=lTYiu9frnrqMO56M1dXsmM6moIWp3rHEPknoiaFU00Q,414
pytz/zoneinfo/Asia/Colombo,sha256=YBCKWuwII2tekTLTPecmSc3wH4VMhtAai9YJ2CC1abo,413
pytz/zoneinfo/Asia/Dacca,sha256=sXYxwfswM__eFTkdL77E49KbhG_Sz7CJiYxrYTCOt7I,370
pytz/zoneinfo/Asia/Damascus,sha256=D0LVcC7lKUTd5DBxVp3mRaXWaKOFxKLgzYqkPTnS6iE,2320
pytz/zoneinfo/Asia/Dhaka,sha256=sXYxwfswM__eFTkdL77E49KbhG_Sz7CJiYxrYTCOt7I,370
pytz/zoneinfo/Asia/Dili,sha256=H2kd8kTXNhPedYl1rcpUVO6akYIbP0OC6pt5PvBLH8Q,253
pytz/zoneinfo/Asia/Dubai,sha256=UsGWhPtJQ3c9hsQ_eMete0audVeorp7RZQg0K9MZZ4o,187
pytz/zoneinfo/Asia/Dushanbe,sha256=6DJSSg0CCjQBXkIxgr7AWSDB5ztBSaqxuzG3R5oKj0w,621
pytz/zoneinfo/Asia/Famagusta,sha256=Sj5mdZwGD_XZ4zgWl4FngWHfW5rNmuxhRvHU08_ZAws,2042
pytz/zoneinfo/Asia/Gaza,sha256=Op34-3ClEwpyToQiHmO7GMyEz1xsh4h3i-4HDrczDqI,2295
pytz/zoneinfo/Asia/Harbin,sha256=lTYiu9frnrqMO56M1dXsmM6moIWp3rHEPknoiaFU00Q,414
pytz/zoneinfo/Asia/Hebron,sha256=k-HJa_9dJlIXpok5rhYOhrvuFtljlNfCuZWJBjQ17qQ,2323
pytz/zoneinfo/Asia/Ho_Chi_Minh,sha256=AT_8zxoFqee1CbVfa5SVad2eZ2v8zhDIhv_-WXRUQOU,389
pytz/zoneinfo/Asia/Hong_Kong,sha256=l4b75K2bgg9hpWZLO4XdYBqm6RUsk_9OFL1U7_348dU,1189
pytz/zoneinfo/Asia/Hovd,sha256=zcZfkT8rZ80dIyhpRFRsQvq7ZHILeKrzL4hgWhlDaJo,921
pytz/zoneinfo/Asia/Irkutsk,sha256=d-2KOKnz5KZaXe1qhGCJxMimDrJFxHb37iDWJ4AwPu8,1276
pytz/zoneinfo/Asia/Istanbul,sha256=ldOJ2-YltB_ZTylyeN94QXWsuqtz3jhrzcJAcT43kVI,2166
pytz/zoneinfo/Asia/Jakarta,sha256=fqHD5ToNP0DLbXck8brLT8oc8K6W2atC8A8tMNwN7jo,392
pytz/zoneinfo/Asia/Jayapura,sha256=xvok3i6D9HGHi44Q7NaIKOs6uh9JzkYtrHchZhOG6ww,251
pytz/zoneinfo/Asia/Jerusalem,sha256=YAGe4NHetuaZShpclRhh4dufmSpcAn-8TjYX-ULAIc8,2265
pytz/zoneinfo/Asia/Kabul,sha256=OGuYuVsZu-xSxtjzNOBKF49PmfK4oc6jPBQjdWaNcic,229
pytz/zoneinfo/Asia/Kamchatka,sha256=pF1YfHE0YHy2_q3mr5oEIDw4se1IH3x86OsQ582XLKw,1198
pytz/zoneinfo/Asia/Karachi,sha256=_EsqaK15763s9S8zP6GcuqXdCEzcm_lquLZadcVZo3A,417
pytz/zoneinfo/Asia/Kashgar,sha256=muiGjfVEHOSsM6rtd39epog-uVBQt9ZtHl7FZIyeP8w,187
pytz/zoneinfo/Asia/Kathmandu,sha256=XFV7hsXw_dGdEFr704vZ2qrRzQdenv2-gFR93Kha5a4,238
pytz/zoneinfo/Asia/Katmandu,sha256=XFV7hsXw_dGdEFr704vZ2qrRzQdenv2-gFR93Kha5a4,238
pytz/zoneinfo/Asia/Khandyga,sha256=AWnyrYKDL2RmmEytnMZz-0CY7hXhSyFSHOVPN6P6beM,1311
pytz/zoneinfo/Asia/Kolkata,sha256=xx17wQ1Sxk9Z6ujqxwHBsVa77D_Z_nUJcL7RXptAj6U,312
pytz/zoneinfo/Asia/Krasnoyarsk,sha256=kSLsPfnS8eF2ft-8nM5J58_5VJHLneI0xFiPmF6zYcg,1243
pytz/zoneinfo/Asia/Kuala_Lumpur,sha256=Jo08wp2umFT-obkQnaKHNgLEiAaZTT898LnKmGP89Zs,424
pytz/zoneinfo/Asia/Kuching,sha256=DQxo0s3c-UMQVrJ7iEyJlR3kVqSE_flqKxDHj68ZW9g,521
pytz/zoneinfo/Asia/Kuwait,sha256=MQLBdV2aZLLis2M4G79S1qAeuGak0s39DPfggyUXCU0,187
pytz/zoneinfo/Asia/Macao,sha256=wrjNyhVaeMeuNMpcMBhXE8YLJJawHP0x-Zi7a9oW884,771
pytz/zoneinfo/Asia/Macau,sha256=wrjNyhVaeMeuNMpcMBhXE8YLJJawHP0x-Zi7a9oW884,771
pytz/zoneinfo/Asia/Magadan,sha256=oy8CKyqps3D0GGYEfCi22WAHvsfn8F5P0aLwYREFfos,1258
pytz/zoneinfo/Asia/Makassar,sha256=JPrJAWle9Dtz-os82eS_iTzrdXxSALZiiuag_HDwGVY,288
pytz/zoneinfo/Asia/Manila,sha256=plPqwY61QQ1OaJIemnJqwyE9R4UjojT2rL1SZiHJjtc,367
pytz/zoneinfo/Asia/Muscat,sha256=UsGWhPtJQ3c9hsQ_eMete0audVeorp7RZQg0K9MZZ4o,187
pytz/zoneinfo/Asia/Nicosia,sha256=8qoqP3ekO3VYp1CKbNbFD999mR-dZNpZSP2QA5I7HXI,2016
pytz/zoneinfo/Asia/Novokuznetsk,sha256=Rd8ggmbOQdzNrmpHtreCNaLnDE7rabKOMBJeA-e54NM,1197
pytz/zoneinfo/Asia/Novosibirsk,sha256=U_VVwHg3jXJtttIDyWvufvybE4wQz9Y091CyjLYhK6U,1255
pytz/zoneinfo/Asia/Omsk,sha256=4yv7l2J0ZXqJL1kYs_QuVsg42sBA4GrGDC02MYyA_Uk,1243
pytz/zoneinfo/Asia/Oral,sha256=Td1mX4H5_-f6PHVA9QZd2tcidNoikTiF7v6GlRqFeZg,1039
pytz/zoneinfo/Asia/Phnom_Penh,sha256=z4ZnA6BbBnBp2wX4dYTVyKNIm8qtPkG7ASYJkEkVwRs,220
pytz/zoneinfo/Asia/Pontianak,sha256=JRasK8hP5kmKULyIZewA40mbOPL0hUA81QKFeKmNH9g,395
pytz/zoneinfo/Asia/Pyongyang,sha256=QENKzB3BrAWp_z07sSRIYpykX3pBXwPrSxP1QWBh0pk,267
pytz/zoneinfo/Asia/Qatar,sha256=8V1FW1A6HZuZqbwV8n4Nh9m_PKyBAHCfajFA5jurVr0,225
pytz/zoneinfo/Asia/Qyzylorda,sha256=oUuEgD145jbzuaoGGUumf9IA16ejyospS_jWblF6mB4,1047
pytz/zoneinfo/Asia/Rangoon,sha256=G0YFglrbrjxxNvPwVdfLrHb6rWJwNRbq-U_I0Q4d860,297
pytz/zoneinfo/Asia/Riyadh,sha256=MQLBdV2aZLLis2M4G79S1qAeuGak0s39DPfggyUXCU0,187
pytz/zoneinfo/Asia/Saigon,sha256=AT_8zxoFqee1CbVfa5SVad2eZ2v8zhDIhv_-WXRUQOU,389
pytz/zoneinfo/Asia/Sakhalin,sha256=1q9n3YU-og7JKqOf3WR7cOwylgbnVlU2Aw291w8GIUg,1234
pytz/zoneinfo/Asia/Samarkand,sha256=_ZKLVv8rb98eKMGY2Iceh5eUcxCd_DlaUdiq7Q77WSQ,619
pytz/zoneinfo/Asia/Seoul,sha256=It6UZCqXimr0Y9sXXp-ToykuioGnSouSmJvCF0N57dY,531
pytz/zoneinfo/Asia/Shanghai,sha256=lTYiu9frnrqMO56M1dXsmM6moIWp3rHEPknoiaFU00Q,414
pytz/zoneinfo/Asia/Singapore,sha256=5pKf3kP_xIu6xAgbMbv3_UJkOzwm-t8yK96t6yPPx0g,424
pytz/zoneinfo/Asia/Srednekolymsk,sha256=NcVF4k1hox9f1PpxLYtswJ7L393uEOW4WdaynlfZiAY,1244
pytz/zoneinfo/Asia/Taipei,sha256=Jc_QK8hHvcsR5YZEW6iGp2MV8fm-hvfnSUSm6OhkRUM,790
pytz/zoneinfo/Asia/Tashkent,sha256=hnTrUBzSXFQCWOlABs4VH5H2U4SegAqpeYZVG4nq1og,635
pytz/zoneinfo/Asia/Tbilisi,sha256=vIjv31faZqqnHBXY-8NthyQq3Kd24QPd1VMapFyiEXc,1080
pytz/zoneinfo/Asia/Tehran,sha256=53RfdtZdlFhrpyM-e_9UkRiHSA-l4j8cU_5eV0P0seM,1718
pytz/zoneinfo/Asia/Tel_Aviv,sha256=YAGe4NHetuaZShpclRhh4dufmSpcAn-8TjYX-ULAIc8,2265
pytz/zoneinfo/Asia/Thimbu,sha256=5UxNVlpL5fNCCbo1HHqt0QcdzPigOA1p4G6TakJSA6I,229
pytz/zoneinfo/Asia/Thimphu,sha256=5UxNVlpL5fNCCbo1HHqt0QcdzPigOA1p4G6TakJSA6I,229
pytz/zoneinfo/Asia/Tokyo,sha256=TVmM6j_lW0SvvZxvYD90iWDkqYBuHqHof8Lyu5ghQ3c,318
pytz/zoneinfo/Asia/Tomsk,sha256=EULbQLkWeLSrPCk1NG9vC85qhDUzkqGrl9vroO4VgtU,1255
pytz/zoneinfo/Asia/Ujung_Pandang,sha256=JPrJAWle9Dtz-os82eS_iTzrdXxSALZiiuag_HDwGVY,288
pytz/zoneinfo/Asia/Ulaanbaatar,sha256=F6MdDqjq8NFIS1TlPWgD6uqoMnQNUho0Dh1cBz3pfiI,921
pytz/zoneinfo/Asia/Ulan_Bator,sha256=F6MdDqjq8NFIS1TlPWgD6uqoMnQNUho0Dh1cBz3pfiI,921
pytz/zoneinfo/Asia/Urumqi,sha256=muiGjfVEHOSsM6rtd39epog-uVBQt9ZtHl7FZIyeP8w,187
pytz/zoneinfo/Asia/Ust-Nera,sha256=qw7b6IcYE-EVSNNGQVIYeKyhJjSkRoOUXSTvhQFr0Ko,1290
pytz/zoneinfo/Asia/Vientiane,sha256=z4ZnA6BbBnBp2wX4dYTVyKNIm8qtPkG7ASYJkEkVwRs,220
pytz/zoneinfo/Asia/Vladivostok,sha256=MutuFAWqBI5sujOW1LCa0E7QXCOdvLBU-C5Nu9LbvTE,1244
pytz/zoneinfo/Asia/Yakutsk,sha256=VFA2qMtIBo1fb5i9KOuQu2wl0xNrWPAUhrh1eAUZII4,1243
pytz/zoneinfo/Asia/Yangon,sha256=G0YFglrbrjxxNvPwVdfLrHb6rWJwNRbq-U_I0Q4d860,297
pytz/zoneinfo/Asia/Yekaterinburg,sha256=iBnv8pqQrSwNNYj1bW6XTZlBnoAQS_yTEydPCjPgtZA,1281
pytz/zoneinfo/Asia/Yerevan,sha256=LkVgEeng2MGVjBe_NBFv6JoyOQKAEOfbYa5GASyPIwQ,1213
pytz/zoneinfo/Atlantic/Azores,sha256=09_NnHfR4qSeFch6_55D8NUoOlMrS8bHr6IvoU-gw3c,3493
pytz/zoneinfo/Atlantic/Bermuda,sha256=Ri0gWQTzLct5MX-D3bTeoVSNUYSSF9w-QroXw8x_zwg,2004
pytz/zoneinfo/Atlantic/Canary,sha256=RhfLGqdVFAA_GBkI6cz8HT0GLvIrsBloZ9vlMOwuFBY,1911
pytz/zoneinfo/Atlantic/Cape_Verde,sha256=96gTQu1YhPNP3Afm6_jw8yLkG6Pi05nX9Ra00odxNQs,284
pytz/zoneinfo/Atlantic/Faeroe,sha256=axpXafj_ouwpvymN_9f7Mk5iXjb8UnwUu2a2Ug5vdqc,1829
pytz/zoneinfo/Atlantic/Faroe,sha256=axpXafj_ouwpvymN_9f7Mk5iXjb8UnwUu2a2Ug5vdqc,1829
pytz/zoneinfo/Atlantic/Jan_Mayen,sha256=D6TmNdorF4-j6hP_OCnHAoRM-L1p4WvKjh0029kknQE,2251
pytz/zoneinfo/Atlantic/Madeira,sha256=JMYWeAWJ-2p-IpE-NAJSJRe6SnRgc4zNOPGjoOSiH0A,3484
pytz/zoneinfo/Atlantic/Reykjavik,sha256=nNzqaqHu2CdtP2Yg4MD_rpz8w3IsRD6mujkUeXXq-qM,1188
pytz/zoneinfo/Atlantic/South_Georgia,sha256=90Xco5ZMauPouIFm4Ntt9Ifuj25q1_saw61OarLgo2E,181
pytz/zoneinfo/Atlantic/St_Helena,sha256=1d7RJt-PaTzh_4PoWqTUQYXCve99ofkVshT1Pe_97kc,170
pytz/zoneinfo/Atlantic/Stanley,sha256=V-4n-sfXK6LDRyVwLlh2qidGKgmsS4QbQBIq_hA6TEE,1251
pytz/zoneinfo/Australia/ACT,sha256=tUD44h7WprJiM24OsCDBirQ_KD6XdGE92YZCOVI-QjM,2223
pytz/zoneinfo/Australia/Adelaide,sha256=c1R27vgWUtcYlXT4t6EclCqYaroktt3GRPvr0etJJFw,2238
pytz/zoneinfo/Australia/Brisbane,sha256=dKyfXR0V7w9r2eacaHuQR_sfdJxZJ5R1aFch9XS0J8w,452
pytz/zoneinfo/Australia/Broken_Hill,sha256=1kUWddO1r7hXLiy7TTgXMNoj2qO_y1dgH-b4FZhSN9s,2274
pytz/zoneinfo/Australia/Canberra,sha256=tUD44h7WprJiM24OsCDBirQ_KD6XdGE92YZCOVI-QjM,2223
pytz/zoneinfo/Australia/Currie,sha256=VDx6-uv92Qf41jfvzki_QcQH2nJli46cEvcgilTR2Eo,2223
pytz/zoneinfo/Australia/Darwin,sha256=YXLYaHp4YI2ISwSQPTYFO9-1ZDNUGTCypCtAXLti3As,323
pytz/zoneinfo/Australia/Eucla,sha256=Qsf5xEz42_1WSnU5uGJ42YKFR2V4vvS_wBzD_GHrsro,503
pytz/zoneinfo/Australia/Hobart,sha256=3hu16C-Gd05wCCuQZGLgKgYiOOXE12FJVm4hscsxsjo,2335
pytz/zoneinfo/Australia/LHI,sha256=CWJpde6GI4_V-FvCder62DvGlnCdeBRMwL1M7XWsry0,1889
pytz/zoneinfo/Australia/Lindeman,sha256=Zj3zXwRKFcdDuXFuGDWVFH0MGDjpkUipRzYjrIIHa_k,522
pytz/zoneinfo/Australia/Lord_Howe,sha256=CWJpde6GI4_V-FvCder62DvGlnCdeBRMwL1M7XWsry0,1889
pytz/zoneinfo/Australia/Melbourne,sha256=JywfE9AeNealiFXLtTh4eVRRkorb8MjKKYK3nbH0UKc,2223
pytz/zoneinfo/Australia/NSW,sha256=tUD44h7WprJiM24OsCDBirQ_KD6XdGE92YZCOVI-QjM,2223
pytz/zoneinfo/Australia/North,sha256=YXLYaHp4YI2ISwSQPTYFO9-1ZDNUGTCypCtAXLti3As,323
pytz/zoneinfo/Australia/Perth,sha256=Ts1KCFyp7Ft5AwFsLU4xEnYCSivNDDXUAoFljkhCH5M,479
pytz/zoneinfo/Australia/Queensland,sha256=dKyfXR0V7w9r2eacaHuQR_sfdJxZJ5R1aFch9XS0J8w,452
pytz/zoneinfo/Australia/South,sha256=c1R27vgWUtcYlXT4t6EclCqYaroktt3GRPvr0etJJFw,2238
pytz/zoneinfo/Australia/Sydney,sha256=tUD44h7WprJiM24OsCDBirQ_KD6XdGE92YZCOVI-QjM,2223
pytz/zoneinfo/Australia/Tasmania,sha256=3hu16C-Gd05wCCuQZGLgKgYiOOXE12FJVm4hscsxsjo,2335
pytz/zoneinfo/Australia/Victoria,sha256=JywfE9AeNealiFXLtTh4eVRRkorb8MjKKYK3nbH0UKc,2223
pytz/zoneinfo/Australia/West,sha256=Ts1KCFyp7Ft5AwFsLU4xEnYCSivNDDXUAoFljkhCH5M,479
pytz/zoneinfo/Australia/Yancowinna,sha256=1kUWddO1r7hXLiy7TTgXMNoj2qO_y1dgH-b4FZhSN9s,2274
pytz/zoneinfo/Brazil/Acre,sha256=FshszMk8fr_v-uiA5DnOhIBV5CFXiYLVyr74quwV-AI,662
pytz/zoneinfo/Brazil/DeNoronha,sha256=y06Wj0Fe1T52kQjJ1flxDomHFq90U205twd7BCbzlg0,742
pytz/zoneinfo/Brazil/East,sha256=5U8tGHsI7_0tGsnE9m1rwKMTZwSIeShVelx_dMI69Ag,2016
pytz/zoneinfo/Brazil/West,sha256=4SE-e5fPpYC0-ccow0_6ZKarJ3sGtViJOymcINNSjmw,630
pytz/zoneinfo/Canada/Atlantic,sha256=Yn4YIYxvPD9EbElwq-gWRnLip7qUvPhBseBq9QiblOo,3438
pytz/zoneinfo/Canada/Central,sha256=d75cCPb46-UzD7hqYMREfqJUliBgn072p6emjRoS2dY,2891
pytz/zoneinfo/Canada/Eastern,sha256=hC96ED36ycDCwzycw5KhE9JmrAZMXHSXiDq0G3l84ZQ,3503
pytz/zoneinfo/Canada/Mountain,sha256=ZnjCP4ZXO2yV5sdIoxeqjOkPaGNrza0Y2wgecJhvtU4,2402
pytz/zoneinfo/Canada/Newfoundland,sha256=K5YKWNbT9qJycH-UH1WxW4uj_Q_VX4aA6oSvax6YuuA,3664
pytz/zoneinfo/Canada/Pacific,sha256=i0FLmiC-Ca1hIU3ustv_O7G9Hp01Gnms6udX-g--kd0,2901
pytz/zoneinfo/Canada/Saskatchewan,sha256=kp0HRXQHUpY3Ym0J9cqXW08FgB810L-sTjsAJ-_uZ3Y,994
pytz/zoneinfo/Canada/Yukon,sha256=GGT-M9UeWHgKXIQApH58QubmZVq-SagswRpGEFkFgxM,2093
pytz/zoneinfo/Chile/Continental,sha256=A0WTAf1TQ-LArMtXwKvnGlyZBA3v4mSkPTK0MENXMe4,2538
pytz/zoneinfo/Chile/EasterIsland,sha256=CdfM__TGTQVJnXqxIiruUWk4Rtzk4kprAWWzGKRkPG8,2242
pytz/zoneinfo/Etc/GMT,sha256=17OYeQlBNdE-_SgpN2kLQ_SLtTWXzj54aX9I3M6us-w,127
pytz/zoneinfo/Etc/GMT+0,sha256=17OYeQlBNdE-_SgpN2kLQ_SLtTWXzj54aX9I3M6us-w,127
pytz/zoneinfo/Etc/GMT+1,sha256=NdAE7bKgsRN64eo2We-OladTMw8HE_yUkp0PedgCGwc,148
pytz/zoneinfo/Etc/GMT+10,sha256=R2JgPz9RwNUGPqVJ-aV4t-vybkf9cQmm40SVrD4Jsu0,149
pytz/zoneinfo/Etc/GMT+11,sha256=iiNSHW6TMmKR29rPKFf4p4lwvvPdk6U1V9pMwuecNro,149
pytz/zoneinfo/Etc/GMT+12,sha256=7HBG9-QSUvg5lQzgTj8g5BuiKOZ4quKkW1sFC6mQ5iY,149
pytz/zoneinfo/Etc/GMT+2,sha256=ITGbjCY0qDSehMO-9CKZj23U95utkfefo4FFwfa2lN0,148
pytz/zoneinfo/Etc/GMT+3,sha256=54Yd76CovF4O5Y2Kepk6wilQ4_7WCMlTLGgLdO9sxn8,148
pytz/zoneinfo/Etc/GMT+4,sha256=Dwq3fFvspoIxSECQw47MHOIRsTVRHVQx3BmU-KJYDIk,148
pytz/zoneinfo/Etc/GMT+5,sha256=vnzvMs8AlFILNE_EYbwodH5hfWBDuL4LCHHociXuhWg,148
pytz/zoneinfo/Etc/GMT+6,sha256=0oXuyHOpGyZg_ymBYwRpMFbuYawem9NIXibEvMBn4EE,148
pytz/zoneinfo/Etc/GMT+7,sha256=YxvlZZroNznhBW4Igom2Qsr00HvliH90xsyVTisOnlw,148
pytz/zoneinfo/Etc/GMT+8,sha256=8O3l2BHg2LKDsYuArr5s5hcmdmTsMT_FvwHiiAqMQik,148
pytz/zoneinfo/Etc/GMT+9,sha256=aqtVL5R5hrALLUP_KKMlere4iWcyK5zgZ-RcXqlswBQ,148
pytz/zoneinfo/Etc/GMT-0,sha256=17OYeQlBNdE-_SgpN2kLQ_SLtTWXzj54aX9I3M6us-w,127
pytz/zoneinfo/Etc/GMT-1,sha256=1ffwaC5xAA3jQ_zify6M_5435QywZL8PYSRdx_9oBu0,149
pytz/zoneinfo/Etc/GMT-10,sha256=L9z9AMG-RjKYkdqStG9JJYs1wJ654RA-N4mj1YM463g,150
pytz/zoneinfo/Etc/GMT-11,sha256=RDnIp9WoyHxHt6gb0ulTTIxnb2ENQDj987OVEIml25E,150
pytz/zoneinfo/Etc/GMT-12,sha256=XwwsIc7EAg7DEWwDjKn_Xlqehj3bf8C-unE2wyGwWFE,150
pytz/zoneinfo/Etc/GMT-13,sha256=DE5r_2NUQGN48r2xZfrgJfoQD-jH12xs-qu3Fvbwlso,150
pytz/zoneinfo/Etc/GMT-14,sha256=RoX5LvpbvbYl3Y1kVKNAr4rAUQMItrZoR61fe8PE_IQ,150
pytz/zoneinfo/Etc/GMT-2,sha256=UwM1smrAMG7cjwaDqDC8Hn9REa0ijfS3TBl9LLnDE4c,149
pytz/zoneinfo/Etc/GMT-3,sha256=pZ4eSnByIqwi_vs6bcSVzvJmhyqU1R5cqGL_3nTvDEw,149
pytz/zoneinfo/Etc/GMT-4,sha256=fWRx-INdpeeQb4Ig3ZZ0tmRXP-5lDwootatRqlSkUk4,149
pytz/zoneinfo/Etc/GMT-5,sha256=M6Q5EwBIyLZACtCCsuQBHHuF-v6RceExEKqG8ma-36Q,149
pytz/zoneinfo/Etc/GMT-6,sha256=8q4WvZo6mnV4jKE6KBvMOVZ8k6r1rVQC_L_rrEc7bPc,149
pytz/zoneinfo/Etc/GMT-7,sha256=sON9m_SW83W3wCToG2rllDzLrOD_vstoTYvRhHxcuTo,149
pytz/zoneinfo/Etc/GMT-8,sha256=XsZ4EfvOE-4jEj7uYHkb6MtfnIRFGuDYKXc4r5t_DMo,149
pytz/zoneinfo/Etc/GMT-9,sha256=Fu1XzXw1d_3CLVdoOEHpIrIIpTXmEl5oa-T4cCp19IU,149
pytz/zoneinfo/Etc/GMT0,sha256=17OYeQlBNdE-_SgpN2kLQ_SLtTWXzj54aX9I3M6us-w,127
pytz/zoneinfo/Etc/Greenwich,sha256=17OYeQlBNdE-_SgpN2kLQ_SLtTWXzj54aX9I3M6us-w,127
pytz/zoneinfo/Etc/UCT,sha256=s7dihjysJWmqM_faGSWEr9mWXO63Jj_tSth8GzXkx9g,127
pytz/zoneinfo/Etc/UTC,sha256=PHGzWL6B4TscJOGZoRn9AB2825Dtx9RMLHrhdTIaAhU,127
pytz/zoneinfo/Etc/Universal,sha256=PHGzWL6B4TscJOGZoRn9AB2825Dtx9RMLHrhdTIaAhU,127
pytz/zoneinfo/Etc/Zulu,sha256=PHGzWL6B4TscJOGZoRn9AB2825Dtx9RMLHrhdTIaAhU,127
pytz/zoneinfo/Europe/Amsterdam,sha256=ioE6xrjRtop5YCQsrlMloiaf0ceRsgP40i8t-jthuoc,2949
pytz/zoneinfo/Europe/Andorra,sha256=rdVQXEcyJeM6iEoCEFYQqblQA_QpGVYkuVPBj3cTF68,1751
pytz/zoneinfo/Europe/Astrakhan,sha256=oCdWH0k8AqBNaZkDoI6eeKx26zpxnEdJ2a6UgEGLqtg,1197
pytz/zoneinfo/Europe/Athens,sha256=eZCQVRICwLhBf4NvrPdQSVc90cJ7XmretYT8xBQFETk,2271
pytz/zoneinfo/Europe/Belfast,sha256=sUxIYBnjyyWc-CNaDWpLw_9s-nJqFl8eot9APIrjG4Y,3687
pytz/zoneinfo/Europe/Belgrade,sha256=6VdUNiO6q6hJmbQBiOfglIRxt1qP9PiKuyZ-dz_rjlw,1957
pytz/zoneinfo/Europe/Berlin,sha256=frk9y6YD1Sj99TYWDvaRHBb4NK_PiM4jo4K5f_KDGdQ,2335
pytz/zoneinfo/Europe/Bratislava,sha256=pQvkcKIt6d7z5P7HvNldXX4k5bEe30SKgrBNGdo9PlI,2338
pytz/zoneinfo/Europe/Brussels,sha256=83KpA6alfaQ6b1ANas7M_HToANff6Ip-r1bKJWRVfmY,2970
pytz/zoneinfo/Europe/Bucharest,sha256=OzoAFzM7L0ZuWcisPcDPeqTwpGCAQKMYD3UrGdapNSY,2221
pytz/zoneinfo/Europe/Budapest,sha256=tn8sRpCofylOpdNa45Z8iqi94ieus2w4dyheTpShdBg,2405
pytz/zoneinfo/Europe/Busingen,sha256=vEX4xsgZBHfNquRvdwWfq3T96SoC_Fe3M_B8uaVemKM,1918
pytz/zoneinfo/Europe/Chisinau,sha256=V0nwHHjQwv1Q0NwigMGVfOBBntv8fEBzxn5tp4FT2Mg,2445
pytz/zoneinfo/Europe/Copenhagen,sha256=0tmjWe8C0q_ik_QpxP1g_AT7-NHYNDybIk3PwRbAEag,2160
pytz/zoneinfo/Europe/Dublin,sha256=RL3F1j5bFmOGdJHMDTC4GCD8hpStD9XvUAuorGt_ul8,3531
pytz/zoneinfo/Europe/Gibraltar,sha256=x5CI9nul0_qa2Ym9Vzv97w6GyJ4xDqcLw-AeFNyhB14,3061
pytz/zoneinfo/Europe/Guernsey,sha256=sUxIYBnjyyWc-CNaDWpLw_9s-nJqFl8eot9APIrjG4Y,3687
pytz/zoneinfo/Europe/Helsinki,sha256=7X2J-uH7QKlYLt1-A-0C1_6BukVrnB7Y1u5fC5MarUU,1909
pytz/zoneinfo/Europe/Isle_of_Man,sha256=sUxIYBnjyyWc-CNaDWpLw_9s-nJqFl8eot9APIrjG4Y,3687
pytz/zoneinfo/Europe/Istanbul,sha256=ldOJ2-YltB_ZTylyeN94QXWsuqtz3jhrzcJAcT43kVI,2166
pytz/zoneinfo/Europe/Jersey,sha256=sUxIYBnjyyWc-CNaDWpLw_9s-nJqFl8eot9APIrjG4Y,3687
pytz/zoneinfo/Europe/Kaliningrad,sha256=RQosb_adJitcXY71hEZOnIJ0s4mhw5t6vFqnBgjSlCU,1518
pytz/zoneinfo/Europe/Kiev,sha256=JCkS3zIS4HJd7UqrJf2GnFLxPDzmGXZKiDrcu9k3r8U,2097
pytz/zoneinfo/Europe/Kirov,sha256=pEJnMTy6Q_tnFiKvWxfNooXe8YT2Eh6OxgBxZGQ-PCU,1167
pytz/zoneinfo/Europe/Lisbon,sha256=S75l1P8zlP-htK5v4iluMz9VutCuScpnF7YHblNJDqI,3469
pytz/zoneinfo/Europe/Ljubljana,sha256=6VdUNiO6q6hJmbQBiOfglIRxt1qP9PiKuyZ-dz_rjlw,1957
pytz/zoneinfo/Europe/London,sha256=sUxIYBnjyyWc-CNaDWpLw_9s-nJqFl8eot9APIrjG4Y,3687
pytz/zoneinfo/Europe/Luxembourg,sha256=kLdiWSdMeKQPNKpbWFRbVAnt-7ov0I76GzAIlstAYu4,2974
pytz/zoneinfo/Europe/Madrid,sha256=dBA60eSPcfTNm20cA9zZe1jYe7iv-wKx1pZ7IEA269Y,2637
pytz/zoneinfo/Europe/Malta,sha256=fEE0yNN70VnjH9c56LG4IDqfMCN4i9nIO4EJ42Hu5dU,2629
pytz/zoneinfo/Europe/Mariehamn,sha256=7X2J-uH7QKlYLt1-A-0C1_6BukVrnB7Y1u5fC5MarUU,1909
pytz/zoneinfo/Europe/Minsk,sha256=yCqoMaaP7ByRjSM5PXlf752_TQlIeRvLproJ9Fs4JsQ,1370
pytz/zoneinfo/Europe/Monaco,sha256=fHIzWYiEF7hqZqYJ_90L7PgWc8uz6LARExCItNJva80,2953
pytz/zoneinfo/Europe/Moscow,sha256=AtVVFtD51JeZgmC08Smu5Zhnt3qSC6LKDFixXshYjno,1544
pytz/zoneinfo/Europe/Nicosia,sha256=8qoqP3ekO3VYp1CKbNbFD999mR-dZNpZSP2QA5I7HXI,2016
pytz/zoneinfo/Europe/Oslo,sha256=D6TmNdorF4-j6hP_OCnHAoRM-L1p4WvKjh0029kknQE,2251
pytz/zoneinfo/Europe/Paris,sha256=c1sI4nN94rR-efWW81dLWp6QGeVtLq0M3BfAsp6EpYU,2971
pytz/zoneinfo/Europe/Podgorica,sha256=6VdUNiO6q6hJmbQBiOfglIRxt1qP9PiKuyZ-dz_rjlw,1957
pytz/zoneinfo/Europe/Prague,sha256=pQvkcKIt6d7z5P7HvNldXX4k5bEe30SKgrBNGdo9PlI,2338
pytz/zoneinfo/Europe/Riga,sha256=edEN67qidDRY0N7B-3HTxXbOqA0kX4SBnagqJdk8FAE,2235
pytz/zoneinfo/Europe/Rome,sha256=Pv8u8s3Gfi9c_USGbNtNRIlWuJ6uiw439jEm8gaO6Ik,2692
pytz/zoneinfo/Europe/Samara,sha256=UieObyK_kA-u2kJmB4z6f-0lzB1WU700XPMJD95ukRQ,1253
pytz/zoneinfo/Europe/San_Marino,sha256=Pv8u8s3Gfi9c_USGbNtNRIlWuJ6uiw439jEm8gaO6Ik,2692
pytz/zoneinfo/Europe/Sarajevo,sha256=6VdUNiO6q6hJmbQBiOfglIRxt1qP9PiKuyZ-dz_rjlw,1957
pytz/zoneinfo/Europe/Saratov,sha256=KasqBfY0EmVqFDUV_lchio4ZuckW39Bd4VqHr8wNmEk,1197
pytz/zoneinfo/Europe/Simferopol,sha256=se5vcU_Yj9Yf7231T5WrrLgN0wNsJemhBwj-ybEcNM8,1490
pytz/zoneinfo/Europe/Skopje,sha256=6VdUNiO6q6hJmbQBiOfglIRxt1qP9PiKuyZ-dz_rjlw,1957
pytz/zoneinfo/Europe/Sofia,sha256=FoE_sw8uu3gqgGzgZkAU3fv5IYkNMuw9E5i9GCv5JFw,2130
pytz/zoneinfo/Europe/Stockholm,sha256=B7JC-ePYFQZjv69Bf-fSCZJ_wpn6xId4m3CEGVbDUzU,1918
pytz/zoneinfo/Europe/Tallinn,sha256=48S6kWwlUAxwnFY5XAQKutYqg0-vr1FjqJl0t_ZrAZo,2187
pytz/zoneinfo/Europe/Tirane,sha256=YtvGBqMqX1DOyobG-W0IjqaJvO1goWI8mG8EXN6ccwo,2098
pytz/zoneinfo/Europe/Tiraspol,sha256=V0nwHHjQwv1Q0NwigMGVfOBBntv8fEBzxn5tp4FT2Mg,2445
pytz/zoneinfo/Europe/Ulyanovsk,sha256=nP6H4QhGU2nxTb9fju2ShQKPZQDAnQbMPnh76UxVy5E,1281
pytz/zoneinfo/Europe/Uzhgorod,sha256=CYV1tOxlmXWMhbytjdIdibyiE6n4kMDq1t79FIeHBfM,2103
pytz/zoneinfo/Europe/Vaduz,sha256=vEX4xsgZBHfNquRvdwWfq3T96SoC_Fe3M_B8uaVemKM,1918
pytz/zoneinfo/Europe/Vatican,sha256=Pv8u8s3Gfi9c_USGbNtNRIlWuJ6uiw439jEm8gaO6Ik,2692
pytz/zoneinfo/Europe/Vienna,sha256=vkLDKtfFTxXc9d2UJeKJ_SC-vphuXowkChHf7sRlUPc,2237
pytz/zoneinfo/Europe/Vilnius,sha256=da3AqQaznig_XlAgmEo280tPWO8dMJnvvImf8H8DX34,2199
pytz/zoneinfo/Europe/Volgograd,sha256=DYtZim_d5NJa9aBEmZbqFZnl0RsmfAOZZzM60iLpobY,1167
pytz/zoneinfo/Europe/Warsaw,sha256=aOdJPBygUOQTQGKnSqSk_DIVnAQrTJ2NQMi_ydJzxfo,2705
pytz/zoneinfo/Europe/Zagreb,sha256=6VdUNiO6q6hJmbQBiOfglIRxt1qP9PiKuyZ-dz_rjlw,1957
pytz/zoneinfo/Europe/Zaporozhye,sha256=tsUSe1JRiBjjtCEeieXh6aR5zKZfd2Ogr7FF1RLDjjQ,2115
pytz/zoneinfo/Europe/Zurich,sha256=vEX4xsgZBHfNquRvdwWfq3T96SoC_Fe3M_B8uaVemKM,1918
pytz/zoneinfo/Indian/Antananarivo,sha256=8UO8uDuAvBrQu7itc2yFLmK762sxNEEr-ndoRmPtIio,285
pytz/zoneinfo/Indian/Chagos,sha256=-dL8AQ0RKF2EMCSOepyhbF_meUnnaIZvALO-cKoOqHE,225
pytz/zoneinfo/Indian/Christmas,sha256=bQlKPZsCLtBPxT5KZlWIvXP07q7pwjZntGlEusXbvgU,182
pytz/zoneinfo/Indian/Cocos,sha256=OlfERtZzSgdGWbhU7VbOxTxAgxozwQUs5u9LXw9rAAk,191
pytz/zoneinfo/Indian/Comoro,sha256=8UO8uDuAvBrQu7itc2yFLmK762sxNEEr-ndoRmPtIio,285
pytz/zoneinfo/Indian/Kerguelen,sha256=Tcqj3AwmKAl0mdLP03qyrXABHuMb6ffkU5HqL67mOwc,187
pytz/zoneinfo/Indian/Mahe,sha256=gqbjMTmwOU6xpcuf-xUKQt9db8LFatJkIoXx1eVT_Rc,187
pytz/zoneinfo/Indian/Maldives,sha256=tbkzs_xVSRRYfGr5VwKkwNk5QUGHN6iJU3LqUUqn1HU,220
pytz/zoneinfo/Indian/Mauritius,sha256=8ldGbe0M4aMkxj5uvDo5NU5s3gUE8dqjUTbGhVJ47w8,267
pytz/zoneinfo/Indian/Mayotte,sha256=8UO8uDuAvBrQu7itc2yFLmK762sxNEEr-ndoRmPtIio,285
pytz/zoneinfo/Indian/Reunion,sha256=w9lerOsoBqgrHywJPz1zygz6ADStBEau--jEkE9qlV4,187
pytz/zoneinfo/Mexico/BajaNorte,sha256=2Ce5W0-ha4xW2aFjY0HJESZX5WeuhLN6m_yhM64xurs,2356
pytz/zoneinfo/Mexico/BajaSur,sha256=k0C3GbJQdzJizsYudx0SEQWu0WiDZyPfwwXjC7BM-7E,1564
pytz/zoneinfo/Mexico/General,sha256=iLw_yxqS7wU-CvSvkFPsvxKFX98Y-FmypU2Cbb-stlU,1618
pytz/zoneinfo/Pacific/Apia,sha256=-ySjHlON060LIs9HiNgMsX15E0YiUQ4qpnyHEtCXIcs,1134
pytz/zoneinfo/Pacific/Auckland,sha256=17UXU4eseOKfe5Ah5BFRJ1a-KD7T0YGZQu9dRezzOOQ,2460
pytz/zoneinfo/Pacific/Bougainville,sha256=wbZw1DSqbATL9ztkegflvn3PL_MGY-EMJODwz6vlWzY,296
pytz/zoneinfo/Pacific/Chatham,sha256=WAGfL6op3H23CBKTIwpyh2kFTdfA0PqelujEKZ5xMU0,2087
pytz/zoneinfo/Pacific/Chuuk,sha256=xS5vy1vR7giv8GVpgU-WEFwMGLf3n1C5AaC9fa95Kv0,183
pytz/zoneinfo/Pacific/Easter,sha256=CdfM__TGTQVJnXqxIiruUWk4Rtzk4kprAWWzGKRkPG8,2242
pytz/zoneinfo/Pacific/Efate,sha256=hdeSr_wnXfGhvc-QZ8tZ9rGri7k8RQzuEpOoFXpDxq0,492
pytz/zoneinfo/Pacific/Enderbury,sha256=W_Lhk3ldSo7Ii83PM4CX36ccJUMy7TI159MnDqcFHPc,259
pytz/zoneinfo/Pacific/Fakaofo,sha256=6827uX2Pp8miDs9ilk0gfx7YHnOjy-p33IvlFElQr20,221
pytz/zoneinfo/Pacific/Fiji,sha256=QB9V_GcrmcI6UyDH4vqxWJkyMxOKuz9_kXHvsyMh3u8,1104
pytz/zoneinfo/Pacific/Funafuti,sha256=gS8nZXbK5rvQE11AcA_eT85k-DD3X-qSjKvnfFHc5Xk,183
pytz/zoneinfo/Pacific/Galapagos,sha256=NyfsZvcdhillY3fB86AExc-t4PbFK42ot8O6LTaZhgM,268
pytz/zoneinfo/Pacific/Gambier,sha256=q9T35Rcx0lnjDsSzPCvLiZ4UfuEC6yeKGpsruAAcZNs,186
pytz/zoneinfo/Pacific/Guadalcanal,sha256=pps6s6bmVBkzgxYJq4u8PtW_D_Z45Rkia435ZrSXPyA,188
pytz/zoneinfo/Pacific/Guam,sha256=ZhNXbr302da-XrhJU50_dKT7E3rPa8-M2iDSjlxhLnc,225
pytz/zoneinfo/Pacific/Honolulu,sha256=iIhYJL-RWppvOacDB5jagl40vnnRs1wkRGlqgcFZ8ug,276
pytz/zoneinfo/Pacific/Johnston,sha256=iIhYJL-RWppvOacDB5jagl40vnnRs1wkRGlqgcFZ8ug,276
pytz/zoneinfo/Pacific/Kiritimati,sha256=t480Gz9wPF3FCIBZI8keOITZGui9Hi-C2bKLIwjNju8,263
pytz/zoneinfo/Pacific/Kosrae,sha256=sv8zf7bWQERLCFeLaUqG3WnGBYg0CU3pxqD0JxU1BwY,251
pytz/zoneinfo/Pacific/Kwajalein,sha256=CQLqlpOXlUrsuxL6X5HToAlr1EO7rqNqlu5Lk9lXuiU,259
pytz/zoneinfo/Pacific/Majuro,sha256=AUaIy2JAAQ9YuWZzUVzowgW99tikAznhN4zrKy_IrB0,221
pytz/zoneinfo/Pacific/Marquesas,sha256=WmPeaBtT17_HKMXUkbKYarRzR6ny_RWm87b_l40vgm0,195
pytz/zoneinfo/Pacific/Midway,sha256=chiirjhs1eiYGpQPa1b2-bYKZfPjvS7B_mydQ7rE2xo,196
pytz/zoneinfo/Pacific/Nauru,sha256=ycOpbPxH12SVRZr8X8UDPknxXoTqD6bBNgzPY5nQPD0,282
pytz/zoneinfo/Pacific/Niue,sha256=wWxzYx8oxBNR__kNMQi8V1HL1AAQ_fhy2hEqEOlzmlM,266
pytz/zoneinfo/Pacific/Norfolk,sha256=MlnCrsJnd9hekhlCy_br-PUsIvJoqIfZ3aw9mJcqUYA,323
pytz/zoneinfo/Pacific/Noumea,sha256=E-GLS7Qmw3ObNON9bNwA1IhyGgWGXN7KlK92JG9VpN4,328
pytz/zoneinfo/Pacific/Pago_Pago,sha256=chiirjhs1eiYGpQPa1b2-bYKZfPjvS7B_mydQ7rE2xo,196
pytz/zoneinfo/Pacific/Palau,sha256=Oa-WwW4Z_WAm0WzmQpH1kwQgp99T03Clri3oKmFnU4U,182
pytz/zoneinfo/Pacific/Pitcairn,sha256=sK1MvocrTSCNRbxtMmKQzSQMGIYVDw7kJjg4YnaosLA,223
pytz/zoneinfo/Pacific/Pohnpei,sha256=K_gUCmShapwdLwLACqVi80lhcli5YQOB6Ba6gAxZIVg,183
pytz/zoneinfo/Pacific/Ponape,sha256=K_gUCmShapwdLwLACqVi80lhcli5YQOB6Ba6gAxZIVg,183
pytz/zoneinfo/Pacific/Port_Moresby,sha256=H7RhP7S_JG9TfiZeRB_l9icTA330AzjP2Ay312joyl8,206
pytz/zoneinfo/Pacific/Rarotonga,sha256=lpWohSiWZFEetl-TGGD1hOfFRD1vBbELUZeseDTUfN4,602
pytz/zoneinfo/Pacific/Saipan,sha256=ZhNXbr302da-XrhJU50_dKT7E3rPa8-M2iDSjlxhLnc,225
pytz/zoneinfo/Pacific/Samoa,sha256=chiirjhs1eiYGpQPa1b2-bYKZfPjvS7B_mydQ7rE2xo,196
pytz/zoneinfo/Pacific/Tahiti,sha256=yaImId23N7XWNCaR3C2U4mXIGw50MBC2cTmG2xIvyFU,187
pytz/zoneinfo/Pacific/Tarawa,sha256=KP6jhSgTWlT9ZC_j0ru0Gqjaa3yJLDmRqyYSqBFE55k,183
pytz/zoneinfo/Pacific/Tongatapu,sha256=FNW_On_qIetsnmOXDR2tW5--3F9bD9P1Bp7nT3oPTY0,393
pytz/zoneinfo/Pacific/Truk,sha256=xS5vy1vR7giv8GVpgU-WEFwMGLf3n1C5AaC9fa95Kv0,183
pytz/zoneinfo/Pacific/Wake,sha256=A0anjPYQvEPq6HwKMy0wrFz5yVABpCZHMVY8zPPDgzE,183
pytz/zoneinfo/Pacific/Wallis,sha256=g3aZvQetpj1jL8IwOmh-XvnhlOBjuseGBViFJYIG7lw,183
pytz/zoneinfo/Pacific/Yap,sha256=xS5vy1vR7giv8GVpgU-WEFwMGLf3n1C5AaC9fa95Kv0,183
pytz/zoneinfo/US/Alaska,sha256=9d8Kb3-dQ8u9PnTTOiP-aGCA61WWX12SRrboWbPbnRg,2380
pytz/zoneinfo/US/Aleutian,sha256=xFyU0xZBPI9mav9l7R-Den4tOSJi3jHOWfrC6Woe3IE,2365
pytz/zoneinfo/US/Arizona,sha256=nAE-z4K27R3eI1tfyYP-nSPI1W1hAyP3yUxro817RWQ,353
pytz/zoneinfo/US/Central,sha256=FD8puVcXOkYAgYcjCjgSW9OgOz28ug3B0bhmEzH3FpM,3585
pytz/zoneinfo/US/East-Indiana,sha256=VcLz_rJB-IQ16YduduLGnd_Q39NqJztVH_SA4s-tmf4,1675
pytz/zoneinfo/US/Eastern,sha256=X6bczDAzUuEZXENIsYnzCFAU2KVqGXbI6KMr1P7baf0,3545
pytz/zoneinfo/US/Hawaii,sha256=iIhYJL-RWppvOacDB5jagl40vnnRs1wkRGlqgcFZ8ug,276
pytz/zoneinfo/US/Indiana-Starke,sha256=nnXdbFLFM5yOKxlf-KxqchLixehLK-MCPMNVlywg2FY,2437
pytz/zoneinfo/US/Michigan,sha256=2QN63tOQ0w4uMPIwIGKtYEJlGyYTkocu93LK1a-u2So,2188
pytz/zoneinfo/US/Mountain,sha256=9N88x0x50HCiWnkndE06QioF2GKpojShIQXFyWTvsi0,2453
pytz/zoneinfo/US/Pacific,sha256=_qnWb_ZSLmnSIHPcToQXm3ysLjcrOY3C-v39thqesuE,2845
pytz/zoneinfo/US/Samoa,sha256=chiirjhs1eiYGpQPa1b2-bYKZfPjvS7B_mydQ7rE2xo,196
pytz-2018.5.dist-info/DESCRIPTION.rst,sha256=qigr7c8XIWZGXKXaH_1bM5ycnjR9t5TmRhlqePtHJ9E,19403
pytz-2018.5.dist-info/LICENSE.txt,sha256=OfB8cqG_2jScvSe6ybyx5vjFtOXMP631aQBAbozAt5I,1088
pytz-2018.5.dist-info/METADATA,sha256=HDsrBDoBISPtyedbLng0B1vyCuwlqfQEGJRFqioZfyQ,20795
pytz-2018.5.dist-info/RECORD,,
pytz-2018.5.dist-info/WHEEL,sha256=kdsN-5OJAZIiHN-iO4Rhl82KyS0bDWf4uBwMbkNafr8,110
pytz-2018.5.dist-info/metadata.json,sha256=omslXNiOJw_TkDNyYMu16QcLXjN-NUtIG924dGnzlZM,1505
pytz-2018.5.dist-info/top_level.txt,sha256=6xRYlt934v1yHb1JIrXgHyGxn3cqACvd-yE8ski_kcc,5
pytz-2018.5.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
pytz-2018.5.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
pytz/__pycache__/exceptions.cpython-36.pyc,,
pytz/__pycache__/tzinfo.cpython-36.pyc,,
pytz/__pycache__/reference.cpython-36.pyc,,
pytz/__pycache__/lazy.cpython-36.pyc,,
pytz/__pycache__/tzfile.cpython-36.pyc,,
pytz/__pycache__/__init__.cpython-36.pyc,,

View File

@@ -0,0 +1,6 @@
Wheel-Version: 1.0
Generator: bdist_wheel (0.30.0)
Root-Is-Purelib: true
Tag: py2-none-any
Tag: py3-none-any

View File

@@ -0,0 +1 @@
{"classifiers": ["Development Status :: 6 - Mature", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.4", "Programming Language :: Python :: 2.5", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.0", "Programming Language :: Python :: 3.1", "Programming Language :: Python :: 3.2", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Software Development :: Libraries :: Python Modules"], "download_url": "https://pypi.org/project/pytz/", "extensions": {"python.details": {"contacts": [{"email": "stuart@stuartbishop.net", "name": "Stuart Bishop", "role": "author"}, {"email": "stuart@stuartbishop.net", "name": "Stuart Bishop", "role": "maintainer"}], "document_names": {"description": "DESCRIPTION.rst", "license": "LICENSE.txt"}, "project_urls": {"Home": "http://pythonhosted.org/pytz"}}}, "generator": "bdist_wheel (0.30.0)", "keywords": ["timezone", "tzinfo", "datetime", "olson", "time"], "license": "MIT", "metadata_version": "2.0", "name": "pytz", "platform": "Independent", "summary": "World timezone definitions, modern and historical", "version": "2018.5"}

View File

@@ -0,0 +1 @@
pytz

View File

@@ -0,0 +1 @@