python-dateutil 2.9.0__py2.py3-none-any.whl → 3.0.0__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- dateutil/__init__.py +7 -5
- dateutil/_tzdata_impl.py +147 -0
- dateutil/_version.py +2 -14
- dateutil/relativedelta.py +0 -3
- dateutil/rrule.py +28 -1
- dateutil/tz/__init__.py +52 -4
- dateutil/tz/_tzfile.py +1428 -0
- dateutil/tz/_tzpath.py +104 -0
- dateutil/tz/tz.py +201 -578
- dateutil/zoneinfo/__init__.py +107 -41
- dateutil/zoneinfo/rebuild.py +31 -64
- {python_dateutil-2.9.0.dist-info → python_dateutil-3.0.0.dist-info}/METADATA +16 -16
- python_dateutil-3.0.0.dist-info/RECORD +27 -0
- {python_dateutil-2.9.0.dist-info → python_dateutil-3.0.0.dist-info}/WHEEL +1 -1
- dateutil/zoneinfo/dateutil-zoneinfo.tar.gz +0 -0
- python_dateutil-2.9.0.dist-info/RECORD +0 -25
- {python_dateutil-2.9.0.dist-info → python_dateutil-3.0.0.dist-info/licenses}/LICENSE +0 -0
- {python_dateutil-2.9.0.dist-info → python_dateutil-3.0.0.dist-info}/top_level.txt +0 -0
- {python_dateutil-2.9.0.dist-info → python_dateutil-3.0.0.dist-info}/zip-safe +0 -0
dateutil/zoneinfo/__init__.py
CHANGED
|
@@ -1,55 +1,124 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
"""
|
|
3
|
+
The ``dateutil.zoneinfo`` module was originally designed to work with a tarball
|
|
4
|
+
shipped with ``dateutil``. Since ``dateutil`` now uses data from the same
|
|
5
|
+
sources as :py:mod:`zoneinfo`, this module is no longer necessary.
|
|
6
|
+
|
|
7
|
+
.. caution::
|
|
8
|
+
This module is deprecated, and its functionality has been dramatically
|
|
9
|
+
curtailed. It is recommended that you adopt the standard library module
|
|
10
|
+
:py:mod:`zoneinfo` or :func:`dateutil.tz.gettz` instead.
|
|
11
|
+
|
|
12
|
+
"""
|
|
4
13
|
|
|
14
|
+
import json
|
|
15
|
+
import sys
|
|
16
|
+
import warnings
|
|
5
17
|
from tarfile import TarFile
|
|
6
|
-
from pkgutil import get_data
|
|
7
|
-
from io import BytesIO
|
|
8
18
|
|
|
19
|
+
import six
|
|
20
|
+
|
|
21
|
+
from dateutil import _tzdata_impl
|
|
9
22
|
from dateutil.tz import tzfile as _tzfile
|
|
10
23
|
|
|
11
24
|
__all__ = ["get_zonefile_instance", "gettz", "gettz_db_metadata"]
|
|
12
25
|
|
|
13
|
-
ZONEFILENAME =
|
|
26
|
+
ZONEFILENAME = None
|
|
14
27
|
METADATA_FN = 'METADATA'
|
|
15
28
|
|
|
16
29
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
return (gettz, (self._filename,))
|
|
30
|
+
def _importer_stacklevel():
|
|
31
|
+
"""The ``stacklevel`` that attributes a warning to the importing code.
|
|
20
32
|
|
|
33
|
+
This module can be imported through ``dateutil.__getattr__`` (e.g. by
|
|
34
|
+
``from dateutil import zoneinfo``), which calls
|
|
35
|
+
``importlib.import_module``; the warnings machinery skips the import
|
|
36
|
+
system's own frames, but not those two, so skip them here.
|
|
37
|
+
"""
|
|
38
|
+
level = 1
|
|
39
|
+
frame = sys._getframe(1) # The body of this module
|
|
40
|
+
while frame.f_back is not None:
|
|
41
|
+
frame = frame.f_back
|
|
42
|
+
filename = frame.f_code.co_filename
|
|
43
|
+
if "importlib" in filename and "_bootstrap" in filename:
|
|
44
|
+
# Since Python 3.5, the warnings machinery skips these frames
|
|
45
|
+
# without counting them; before that they count like any other.
|
|
46
|
+
if sys.version_info < (3, 5):
|
|
47
|
+
level += 1
|
|
48
|
+
continue
|
|
49
|
+
|
|
50
|
+
level += 1
|
|
51
|
+
if frame.f_globals.get("__name__") not in ("importlib", "dateutil"):
|
|
52
|
+
return level
|
|
53
|
+
|
|
54
|
+
return 2
|
|
21
55
|
|
|
22
|
-
def getzoneinfofile_stream():
|
|
23
|
-
try:
|
|
24
|
-
return BytesIO(get_data(__name__, ZONEFILENAME))
|
|
25
|
-
except IOError as e: # TODO switch to FileNotFoundError?
|
|
26
|
-
warnings.warn("I/O error({0}): {1}".format(e.errno, e.strerror))
|
|
27
|
-
return None
|
|
28
56
|
|
|
57
|
+
warnings.warn(
|
|
58
|
+
"The `dateutil.zoneinfo` module has been replaced with a wrapper around "
|
|
59
|
+
"the tzdata package, and its use is deprecated, to be removed in a future "
|
|
60
|
+
"version. Use the standard library module `zoneinfo` or `dateutil.tz` "
|
|
61
|
+
"instead.",
|
|
62
|
+
DeprecationWarning,
|
|
63
|
+
stacklevel=_importer_stacklevel(),
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
tzfile = _tzfile
|
|
29
68
|
|
|
30
69
|
class ZoneInfoFile(object):
|
|
31
70
|
def __init__(self, zonefile_stream=None):
|
|
32
71
|
if zonefile_stream is not None:
|
|
33
|
-
|
|
34
|
-
self.zones = {zf.name: tzfile(tf.extractfile(zf), filename=zf.name)
|
|
35
|
-
for zf in tf.getmembers()
|
|
36
|
-
if zf.isfile() and zf.name != METADATA_FN}
|
|
37
|
-
# deal with links: They'll point to their parent object. Less
|
|
38
|
-
# waste of memory
|
|
39
|
-
links = {zl.name: self.zones[zl.linkname]
|
|
40
|
-
for zl in tf.getmembers() if
|
|
41
|
-
zl.islnk() or zl.issym()}
|
|
42
|
-
self.zones.update(links)
|
|
43
|
-
try:
|
|
44
|
-
metadata_json = tf.extractfile(tf.getmember(METADATA_FN))
|
|
45
|
-
metadata_str = metadata_json.read().decode('UTF-8')
|
|
46
|
-
self.metadata = json.loads(metadata_str)
|
|
47
|
-
except KeyError:
|
|
48
|
-
# no metadata in tar file
|
|
49
|
-
self.metadata = None
|
|
72
|
+
self._load_legacy_zonefile_stream(zonefile_stream)
|
|
50
73
|
else:
|
|
51
|
-
self.
|
|
52
|
-
|
|
74
|
+
self._eager_load_tzdata()
|
|
75
|
+
|
|
76
|
+
def _eager_load_tzdata(self):
|
|
77
|
+
try:
|
|
78
|
+
import tzdata
|
|
79
|
+
except ImportError as e:
|
|
80
|
+
six.raise_from(
|
|
81
|
+
ImportError(
|
|
82
|
+
"The tzdata module is required to use ZoneInfoFile; either add "
|
|
83
|
+
"a dependency on tzdata or migrate away from dateutil.zoneinfo."
|
|
84
|
+
),
|
|
85
|
+
e,
|
|
86
|
+
)
|
|
87
|
+
|
|
88
|
+
zone_dict = {}
|
|
89
|
+
|
|
90
|
+
for key in _tzdata_impl._load_tzdata_keys():
|
|
91
|
+
with _tzdata_impl._load_tzdata(key) as f:
|
|
92
|
+
zone_dict[key] = tzfile(f, key=key)
|
|
93
|
+
|
|
94
|
+
self.zones = zone_dict
|
|
95
|
+
self.metadata = {
|
|
96
|
+
"metadata_version": "3.0",
|
|
97
|
+
"tzversion": tzdata.IANA_VERSION,
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
def _load_legacy_zonefile_stream(self, zonefile_stream):
|
|
101
|
+
with TarFile.open(fileobj=zonefile_stream) as tf:
|
|
102
|
+
self.zones = {
|
|
103
|
+
zf.name: tzfile(tf.extractfile(zf), filename=zf.name)
|
|
104
|
+
for zf in tf.getmembers()
|
|
105
|
+
if zf.isfile() and zf.name != METADATA_FN
|
|
106
|
+
}
|
|
107
|
+
# deal with links: They'll point to their parent object. Less
|
|
108
|
+
# waste of memory
|
|
109
|
+
links = {
|
|
110
|
+
zl.name: self.zones[zl.linkname]
|
|
111
|
+
for zl in tf.getmembers()
|
|
112
|
+
if zl.islnk() or zl.issym()
|
|
113
|
+
}
|
|
114
|
+
self.zones.update(links)
|
|
115
|
+
try:
|
|
116
|
+
metadata_json = tf.extractfile(tf.getmember(METADATA_FN))
|
|
117
|
+
metadata_str = metadata_json.read().decode("UTF-8")
|
|
118
|
+
self.metadata = json.loads(metadata_str)
|
|
119
|
+
except KeyError:
|
|
120
|
+
# no metadata in tar file
|
|
121
|
+
self.metadata = None
|
|
53
122
|
|
|
54
123
|
def get(self, name, default=None):
|
|
55
124
|
"""
|
|
@@ -99,7 +168,7 @@ def get_zonefile_instance(new_instance=False):
|
|
|
99
168
|
zif = getattr(get_zonefile_instance, '_cached_instance', None)
|
|
100
169
|
|
|
101
170
|
if zif is None:
|
|
102
|
-
zif = ZoneInfoFile(
|
|
171
|
+
zif = ZoneInfoFile()
|
|
103
172
|
|
|
104
173
|
get_zonefile_instance._cached_instance = zif
|
|
105
174
|
|
|
@@ -108,8 +177,7 @@ def get_zonefile_instance(new_instance=False):
|
|
|
108
177
|
|
|
109
178
|
def gettz(name):
|
|
110
179
|
"""
|
|
111
|
-
This retrieves a time zone from the
|
|
112
|
-
with dateutil.
|
|
180
|
+
This retrieves a time zone from the ``tzdata`` package.
|
|
113
181
|
|
|
114
182
|
:param name:
|
|
115
183
|
An IANA-style time zone name, as found in the zoneinfo file.
|
|
@@ -140,14 +208,12 @@ def gettz(name):
|
|
|
140
208
|
DeprecationWarning)
|
|
141
209
|
|
|
142
210
|
if len(_CLASS_ZONE_INSTANCE) == 0:
|
|
143
|
-
_CLASS_ZONE_INSTANCE.append(ZoneInfoFile(
|
|
211
|
+
_CLASS_ZONE_INSTANCE.append(ZoneInfoFile())
|
|
144
212
|
return _CLASS_ZONE_INSTANCE[0].zones.get(name)
|
|
145
213
|
|
|
146
214
|
|
|
147
215
|
def gettz_db_metadata():
|
|
148
|
-
"""
|
|
149
|
-
|
|
150
|
-
See `zonefile_metadata`_
|
|
216
|
+
"""Get the zonefile metadata
|
|
151
217
|
|
|
152
218
|
:returns:
|
|
153
219
|
A dictionary with the database metadata
|
|
@@ -163,5 +229,5 @@ def gettz_db_metadata():
|
|
|
163
229
|
DeprecationWarning)
|
|
164
230
|
|
|
165
231
|
if len(_CLASS_ZONE_INSTANCE) == 0:
|
|
166
|
-
_CLASS_ZONE_INSTANCE.append(ZoneInfoFile(
|
|
232
|
+
_CLASS_ZONE_INSTANCE.append(ZoneInfoFile())
|
|
167
233
|
return _CLASS_ZONE_INSTANCE[0].metadata
|
dateutil/zoneinfo/rebuild.py
CHANGED
|
@@ -1,75 +1,42 @@
|
|
|
1
|
-
import
|
|
2
|
-
import os
|
|
3
|
-
import tempfile
|
|
4
|
-
import shutil
|
|
5
|
-
import json
|
|
6
|
-
from subprocess import check_call, check_output
|
|
7
|
-
from tarfile import TarFile
|
|
1
|
+
import warnings
|
|
8
2
|
|
|
9
|
-
|
|
3
|
+
__all__ = ["rebuild", "RebuildDeprecationWarning"]
|
|
10
4
|
|
|
11
5
|
|
|
12
|
-
|
|
13
|
-
"""
|
|
6
|
+
class RebuildDeprecationWarning(FutureWarning):
|
|
7
|
+
"""Warning raised by :func:`rebuild`, which no longer does anything.
|
|
14
8
|
|
|
15
|
-
|
|
9
|
+
A warnings filter turns this into an error by default. To keep calling
|
|
10
|
+
:func:`rebuild` as a no-op, filter it out, e.g.::
|
|
16
11
|
|
|
12
|
+
warnings.filterwarnings(
|
|
13
|
+
"ignore", category=dateutil.zoneinfo.rebuild.RebuildDeprecationWarning
|
|
14
|
+
)
|
|
17
15
|
"""
|
|
18
|
-
tmpdir = tempfile.mkdtemp()
|
|
19
|
-
zonedir = os.path.join(tmpdir, "zoneinfo")
|
|
20
|
-
moduledir = os.path.dirname(__file__)
|
|
21
|
-
try:
|
|
22
|
-
with TarFile.open(filename) as tf:
|
|
23
|
-
for name in zonegroups:
|
|
24
|
-
tf.extract(name, tmpdir)
|
|
25
|
-
filepaths = [os.path.join(tmpdir, n) for n in zonegroups]
|
|
26
|
-
|
|
27
|
-
_run_zic(zonedir, filepaths)
|
|
28
|
-
|
|
29
|
-
# write metadata file
|
|
30
|
-
with open(os.path.join(zonedir, METADATA_FN), 'w') as f:
|
|
31
|
-
json.dump(metadata, f, indent=4, sort_keys=True)
|
|
32
|
-
target = os.path.join(moduledir, ZONEFILENAME)
|
|
33
|
-
with TarFile.open(target, "w:%s" % format) as tf:
|
|
34
|
-
for entry in os.listdir(zonedir):
|
|
35
|
-
entrypath = os.path.join(zonedir, entry)
|
|
36
|
-
tf.add(entrypath, entry)
|
|
37
|
-
finally:
|
|
38
|
-
shutil.rmtree(tmpdir)
|
|
39
16
|
|
|
40
17
|
|
|
41
|
-
def
|
|
42
|
-
"""
|
|
43
|
-
|
|
44
|
-
Recent versions of ``zic`` default to ``-b slim``, while older versions
|
|
45
|
-
don't even have the ``-b`` option (but default to "fat" binaries). The
|
|
46
|
-
current version of dateutil does not support Version 2+ TZif files, which
|
|
47
|
-
causes problems when used in conjunction with "slim" binaries, so this
|
|
48
|
-
function is used to ensure that we always get a "fat" binary.
|
|
49
|
-
"""
|
|
50
|
-
|
|
51
|
-
try:
|
|
52
|
-
help_text = check_output(["zic", "--help"])
|
|
53
|
-
except OSError as e:
|
|
54
|
-
_print_on_nosuchfile(e)
|
|
55
|
-
raise
|
|
56
|
-
|
|
57
|
-
if b"-b " in help_text:
|
|
58
|
-
bloat_args = ["-b", "fat"]
|
|
59
|
-
else:
|
|
60
|
-
bloat_args = []
|
|
61
|
-
|
|
62
|
-
check_call(["zic"] + bloat_args + ["-d", zonedir] + filepaths)
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
def _print_on_nosuchfile(e):
|
|
66
|
-
"""Print helpful troubleshooting message
|
|
18
|
+
def rebuild(filename, tag=None, format="gz", zonegroups=[], metadata=None):
|
|
19
|
+
"""Formerly rebuilt the zoneinfo tarball bundled with ``dateutil``.
|
|
67
20
|
|
|
68
|
-
|
|
21
|
+
``dateutil`` no longer ships a zoneinfo tarball; it reads time zone data
|
|
22
|
+
from the system and from the `tzdata <https://pypi.org/project/tzdata/>`_
|
|
23
|
+
package instead. This function now does nothing except raise
|
|
24
|
+
:class:`RebuildDeprecationWarning`, which is an error unless a warnings
|
|
25
|
+
filter says otherwise.
|
|
69
26
|
|
|
27
|
+
.. deprecated:: 3.0.0
|
|
70
28
|
"""
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
29
|
+
# The filter is added at call time rather than at import time, so that it
|
|
30
|
+
# is still in place if the module was first imported inside a
|
|
31
|
+
# warnings.catch_warnings() block. It is appended, so any filter the user
|
|
32
|
+
# has installed for this category takes precedence.
|
|
33
|
+
warnings.filterwarnings(
|
|
34
|
+
"error", category=RebuildDeprecationWarning, append=True
|
|
35
|
+
)
|
|
36
|
+
warnings.warn(
|
|
37
|
+
"dateutil.zoneinfo.rebuild() no longer does anything, because dateutil "
|
|
38
|
+
"no longer ships a zoneinfo tarball. Use the tzdata package or the "
|
|
39
|
+
"system time zone data instead.",
|
|
40
|
+
RebuildDeprecationWarning,
|
|
41
|
+
stacklevel=2,
|
|
42
|
+
)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: python-dateutil
|
|
3
|
-
Version:
|
|
3
|
+
Version: 3.0.0
|
|
4
4
|
Summary: Extensions to the standard Python datetime module
|
|
5
5
|
Home-page: https://github.com/dateutil/dateutil
|
|
6
6
|
Author: Gustavo Niemeyer
|
|
@@ -28,11 +28,20 @@ Classifier: Programming Language :: Python :: 3.9
|
|
|
28
28
|
Classifier: Programming Language :: Python :: 3.10
|
|
29
29
|
Classifier: Programming Language :: Python :: 3.11
|
|
30
30
|
Classifier: Programming Language :: Python :: 3.12
|
|
31
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
32
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
33
|
+
Classifier: Programming Language :: Python :: 3.15
|
|
34
|
+
Classifier: Programming Language :: Python :: Free Threading :: 2 - Beta
|
|
35
|
+
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
36
|
+
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
|
31
37
|
Classifier: Topic :: Software Development :: Libraries
|
|
32
38
|
Requires-Python: !=3.0.*,!=3.1.*,!=3.2.*,>=2.7
|
|
33
39
|
Description-Content-Type: text/x-rst
|
|
34
40
|
License-File: LICENSE
|
|
35
|
-
Requires-Dist: six
|
|
41
|
+
Requires-Dist: six>=1.6
|
|
42
|
+
Requires-Dist: tzdata
|
|
43
|
+
Dynamic: description
|
|
44
|
+
Dynamic: license-file
|
|
36
45
|
|
|
37
46
|
dateutil - powerful extensions to datetime
|
|
38
47
|
==========================================
|
|
@@ -41,7 +50,7 @@ dateutil - powerful extensions to datetime
|
|
|
41
50
|
|
|
42
51
|
|gitter| |readthedocs|
|
|
43
52
|
|
|
44
|
-
|
|
|
53
|
+
|appveyor| |gha| |coverage|
|
|
45
54
|
|
|
46
55
|
.. |pypi| image:: https://img.shields.io/pypi/v/python-dateutil.svg?style=flat-square
|
|
47
56
|
:target: https://pypi.org/project/python-dateutil/
|
|
@@ -51,17 +60,13 @@ dateutil - powerful extensions to datetime
|
|
|
51
60
|
:target: https://pypi.org/project/python-dateutil/
|
|
52
61
|
:alt: supported Python version
|
|
53
62
|
|
|
54
|
-
.. |travis| image:: https://img.shields.io/travis/dateutil/dateutil/master.svg?style=flat-square&label=Travis%20Build
|
|
55
|
-
:target: https://travis-ci.org/dateutil/dateutil
|
|
56
|
-
:alt: travis build status
|
|
57
|
-
|
|
58
63
|
.. |appveyor| image:: https://img.shields.io/appveyor/ci/dateutil/dateutil/master.svg?style=flat-square&logo=appveyor
|
|
59
64
|
:target: https://ci.appveyor.com/project/dateutil/dateutil
|
|
60
65
|
:alt: appveyor build status
|
|
61
66
|
|
|
62
|
-
.. |
|
|
63
|
-
:target: https://
|
|
64
|
-
:alt:
|
|
67
|
+
.. |gha| image:: https://github.com/dateutil/dateutil/actions/workflows/validate.yml/badge.svg
|
|
68
|
+
:target: https://github.com/dateutil/dateutil/actions
|
|
69
|
+
:alt: github actions build status
|
|
65
70
|
|
|
66
71
|
.. |coverage| image:: https://codecov.io/gh/dateutil/dateutil/branch/master/graphs/badge.svg?branch=master
|
|
67
72
|
:target: https://codecov.io/gh/dateutil/dateutil?branch=master
|
|
@@ -189,11 +194,6 @@ Releases Signing key fingerprint
|
|
|
189
194
|
New releases *may* have signed tags, but binary and source distributions
|
|
190
195
|
uploaded to PyPI will no longer have GPG signatures attached.
|
|
191
196
|
|
|
192
|
-
Contact
|
|
193
|
-
=======
|
|
194
|
-
Our mailing list is available at `dateutil@python.org <https://mail.python.org/mailman/listinfo/dateutil>`_. As it is hosted by the PSF, it is subject to the `PSF code of
|
|
195
|
-
conduct <https://www.python.org/psf/conduct/>`_.
|
|
196
|
-
|
|
197
197
|
License
|
|
198
198
|
=======
|
|
199
199
|
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
dateutil/__init__.py,sha256=Rlncv13heMaerX26_chS__gaCqk8o0BPH5zljim_Z_M,650
|
|
2
|
+
dateutil/_common.py,sha256=77w0yytkrxlYbSn--lDVPUMabUXRR9I3lBv_vQRUqUY,932
|
|
3
|
+
dateutil/_tzdata_impl.py,sha256=F4Cj7D4gowRHi6D0649YUtlnB-1ynzOOmVEUCozGw6c,4835
|
|
4
|
+
dateutil/_version.py,sha256=-Oe07VK7JZRuZhf_WAyReYEKe8tlyWlu6k6HEynNyfY,160
|
|
5
|
+
dateutil/easter.py,sha256=dyBi-lKvimH1u_k6p7Z0JJK72QhqVtVBsqByvpEPKvc,2678
|
|
6
|
+
dateutil/relativedelta.py,sha256=NB5lZwcsKtft2nj7Bfaevh7iU8IDFYku_uQg8dCNiOs,24835
|
|
7
|
+
dateutil/rrule.py,sha256=2T1idORGtozykXoZlCr4GFlTkpGEDwSD_FKghaDlfjY,67585
|
|
8
|
+
dateutil/tzwin.py,sha256=7Ar4vdQCnnM0mKR3MUjbIKsZrBVfHgdwsJZc_mGYRew,59
|
|
9
|
+
dateutil/utils.py,sha256=dKCchEw8eObi0loGTx91unBxm_7UGlU3v_FjFMdqwYM,1965
|
|
10
|
+
dateutil/parser/__init__.py,sha256=wWk6GFuxTpjoggCGtgkceJoti4pVjl4_fHQXpNOaSYg,1766
|
|
11
|
+
dateutil/parser/_parser.py,sha256=7klDdyicksQB_Xgl-3UAmBwzCYor1AIZqklIcT6dH_8,58796
|
|
12
|
+
dateutil/parser/isoparser.py,sha256=8Fy999bnCd1frSdOYuOraWfJTtd5W7qQ51NwNuH_hXM,13233
|
|
13
|
+
dateutil/tz/__init__.py,sha256=TtmK228efAGvqU9D2f3MFPPWjdjCS2W5afUoC6WlLb4,1350
|
|
14
|
+
dateutil/tz/_common.py,sha256=cgzDTANsOXvEc86cYF77EsliuSab8Puwpsl5-bX3_S4,12977
|
|
15
|
+
dateutil/tz/_factories.py,sha256=unb6XQNXrPMveksTCU-Ag8jmVZs4SojoPUcAHpWnrvU,2569
|
|
16
|
+
dateutil/tz/_tzfile.py,sha256=Qh5WxE8qDy-P2BQ1grI_qNn2nrazjn54cEZBvuPd0Lg,49242
|
|
17
|
+
dateutil/tz/_tzpath.py,sha256=b83zAaiflC200NjHWa7RRQt6idBnlp5nEQngvol1f90,3288
|
|
18
|
+
dateutil/tz/tz.py,sha256=5AeTP7njYdzWP9nLBFpXUWatk9GDZPk6YIlzkAoRdHY,50272
|
|
19
|
+
dateutil/tz/win.py,sha256=xJszWgSwE1xPx_HJj4ZkepyukC_hNy016WMcXhbRaB8,12935
|
|
20
|
+
dateutil/zoneinfo/__init__.py,sha256=k1tAG2ct92qpNQ7hcHVFkOYz572l_cmVgOpqJFvV434,7972
|
|
21
|
+
dateutil/zoneinfo/rebuild.py,sha256=iCA6CfiNLy_A_zgR0xlb88XTner38nd8CpLmDtq6YCw,1625
|
|
22
|
+
python_dateutil-3.0.0.dist-info/licenses/LICENSE,sha256=ugD1Gg2SgjtaHN4n2LW50jIeZ-2NqbwWPv-W1eF-V34,2889
|
|
23
|
+
python_dateutil-3.0.0.dist-info/METADATA,sha256=4Q6tk1mK7VG9soqjDvZO5dbMyHHoh0HSIOUE6XmvRpU,8237
|
|
24
|
+
python_dateutil-3.0.0.dist-info/WHEEL,sha256=Uvlg2aNlEKdilsyFSJt1QX5me0eEbCjQzR3nZeFkvy4,109
|
|
25
|
+
python_dateutil-3.0.0.dist-info/top_level.txt,sha256=4tjdWkhRZvF7LA_BYe_L9gB2w_p2a-z5y6ArjaRkot8,9
|
|
26
|
+
python_dateutil-3.0.0.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
27
|
+
python_dateutil-3.0.0.dist-info/RECORD,,
|
|
Binary file
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
dateutil/__init__.py,sha256=Mqam67WO9IkTmUFyI66vS6IoSXTp9G388DadH2LCMLY,620
|
|
2
|
-
dateutil/_common.py,sha256=77w0yytkrxlYbSn--lDVPUMabUXRR9I3lBv_vQRUqUY,932
|
|
3
|
-
dateutil/_version.py,sha256=Vb5T-8FcBzgHCb1RYqez20zYqm5tplcF41kZi7B8cik,411
|
|
4
|
-
dateutil/easter.py,sha256=dyBi-lKvimH1u_k6p7Z0JJK72QhqVtVBsqByvpEPKvc,2678
|
|
5
|
-
dateutil/relativedelta.py,sha256=IY_mglMjoZbYfrvloTY2ce02aiVjPIkiZfqgNTZRfuA,24903
|
|
6
|
-
dateutil/rrule.py,sha256=KJzKlaCd1jEbu4A38ZltslaoAUh9nSbdbOFdjp70Kew,66557
|
|
7
|
-
dateutil/tzwin.py,sha256=7Ar4vdQCnnM0mKR3MUjbIKsZrBVfHgdwsJZc_mGYRew,59
|
|
8
|
-
dateutil/utils.py,sha256=dKCchEw8eObi0loGTx91unBxm_7UGlU3v_FjFMdqwYM,1965
|
|
9
|
-
dateutil/parser/__init__.py,sha256=wWk6GFuxTpjoggCGtgkceJoti4pVjl4_fHQXpNOaSYg,1766
|
|
10
|
-
dateutil/parser/_parser.py,sha256=7klDdyicksQB_Xgl-3UAmBwzCYor1AIZqklIcT6dH_8,58796
|
|
11
|
-
dateutil/parser/isoparser.py,sha256=8Fy999bnCd1frSdOYuOraWfJTtd5W7qQ51NwNuH_hXM,13233
|
|
12
|
-
dateutil/tz/__init__.py,sha256=F-Mz13v6jYseklQf9Te9J6nzcLDmq47gORa61K35_FA,444
|
|
13
|
-
dateutil/tz/_common.py,sha256=cgzDTANsOXvEc86cYF77EsliuSab8Puwpsl5-bX3_S4,12977
|
|
14
|
-
dateutil/tz/_factories.py,sha256=unb6XQNXrPMveksTCU-Ag8jmVZs4SojoPUcAHpWnrvU,2569
|
|
15
|
-
dateutil/tz/tz.py,sha256=EUnEdMfeThXiY6l4sh9yBabZ63_POzy01zSsh9thn1o,62855
|
|
16
|
-
dateutil/tz/win.py,sha256=xJszWgSwE1xPx_HJj4ZkepyukC_hNy016WMcXhbRaB8,12935
|
|
17
|
-
dateutil/zoneinfo/__init__.py,sha256=KYg0pthCMjcp5MXSEiBJn3nMjZeNZav7rlJw5-tz1S4,5889
|
|
18
|
-
dateutil/zoneinfo/dateutil-zoneinfo.tar.gz,sha256=Y25Djz4f3ZwC5TcTaM4UJMhWRNZSciMe0zOF9XsDv4I,156385
|
|
19
|
-
dateutil/zoneinfo/rebuild.py,sha256=MiqYzCIHvNbMH-LdRYLv-4T0EIA7hDKt5GLR0IRTLdI,2392
|
|
20
|
-
python_dateutil-2.9.0.dist-info/LICENSE,sha256=ugD1Gg2SgjtaHN4n2LW50jIeZ-2NqbwWPv-W1eF-V34,2889
|
|
21
|
-
python_dateutil-2.9.0.dist-info/METADATA,sha256=K-Gq16MVMeVLv55QoQuFM3r-Ofdvp5ACKJZ3t4wr4oU,8348
|
|
22
|
-
python_dateutil-2.9.0.dist-info/WHEEL,sha256=-G_t0oGuE7UD0DrSpVZnq1hHMBV9DD2XkS5v7XpmTnk,110
|
|
23
|
-
python_dateutil-2.9.0.dist-info/top_level.txt,sha256=4tjdWkhRZvF7LA_BYe_L9gB2w_p2a-z5y6ArjaRkot8,9
|
|
24
|
-
python_dateutil-2.9.0.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
25
|
-
python_dateutil-2.9.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|