| Index: third_party/recipe_engine/third_party/dateutil/zoneinfo/__init__.py
|
| diff --git a/third_party/recipe_engine/third_party/dateutil/zoneinfo/__init__.py b/third_party/recipe_engine/third_party/dateutil/zoneinfo/__init__.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..9bed6264c8b97230e787e31d56a2b7318d9f63f9
|
| --- /dev/null
|
| +++ b/third_party/recipe_engine/third_party/dateutil/zoneinfo/__init__.py
|
| @@ -0,0 +1,87 @@
|
| +"""
|
| +Copyright (c) 2003-2005 Gustavo Niemeyer <gustavo@niemeyer.net>
|
| +
|
| +This module offers extensions to the standard python 2.3+
|
| +datetime module.
|
| +"""
|
| +from dateutil.tz import tzfile
|
| +from tarfile import TarFile
|
| +import os
|
| +
|
| +__author__ = "Gustavo Niemeyer <gustavo@niemeyer.net>"
|
| +__license__ = "PSF License"
|
| +
|
| +__all__ = ["setcachesize", "gettz", "rebuild"]
|
| +
|
| +CACHE = []
|
| +CACHESIZE = 10
|
| +
|
| +class tzfile(tzfile):
|
| + def __reduce__(self):
|
| + return (gettz, (self._filename,))
|
| +
|
| +def getzoneinfofile():
|
| + filenames = os.listdir(os.path.join(os.path.dirname(__file__)))
|
| + filenames.sort()
|
| + filenames.reverse()
|
| + for entry in filenames:
|
| + if entry.startswith("zoneinfo") and ".tar." in entry:
|
| + return os.path.join(os.path.dirname(__file__), entry)
|
| + return None
|
| +
|
| +ZONEINFOFILE = getzoneinfofile()
|
| +
|
| +del getzoneinfofile
|
| +
|
| +def setcachesize(size):
|
| + global CACHESIZE, CACHE
|
| + CACHESIZE = size
|
| + del CACHE[size:]
|
| +
|
| +def gettz(name):
|
| + tzinfo = None
|
| + if ZONEINFOFILE:
|
| + for cachedname, tzinfo in CACHE:
|
| + if cachedname == name:
|
| + break
|
| + else:
|
| + tf = TarFile.open(ZONEINFOFILE)
|
| + try:
|
| + zonefile = tf.extractfile(name)
|
| + except KeyError:
|
| + tzinfo = None
|
| + else:
|
| + tzinfo = tzfile(zonefile)
|
| + tf.close()
|
| + CACHE.insert(0, (name, tzinfo))
|
| + del CACHE[CACHESIZE:]
|
| + return tzinfo
|
| +
|
| +def rebuild(filename, tag=None, format="gz"):
|
| + import tempfile, shutil
|
| + tmpdir = tempfile.mkdtemp()
|
| + zonedir = os.path.join(tmpdir, "zoneinfo")
|
| + moduledir = os.path.dirname(__file__)
|
| + if tag: tag = "-"+tag
|
| + targetname = "zoneinfo%s.tar.%s" % (tag, format)
|
| + try:
|
| + tf = TarFile.open(filename)
|
| + for name in tf.getnames():
|
| + if not (name.endswith(".sh") or
|
| + name.endswith(".tab") or
|
| + name == "leapseconds"):
|
| + tf.extract(name, tmpdir)
|
| + filepath = os.path.join(tmpdir, name)
|
| + os.system("zic -d %s %s" % (zonedir, filepath))
|
| + tf.close()
|
| + target = os.path.join(moduledir, targetname)
|
| + for entry in os.listdir(moduledir):
|
| + if entry.startswith("zoneinfo") and ".tar." in entry:
|
| + os.unlink(os.path.join(moduledir, entry))
|
| + tf = TarFile.open(target, "w:%s" % format)
|
| + for entry in os.listdir(zonedir):
|
| + entrypath = os.path.join(zonedir, entry)
|
| + tf.add(entrypath, entry)
|
| + tf.close()
|
| + finally:
|
| + shutil.rmtree(tmpdir)
|
|
|