[python-dateutil/f21] Add patch.

Jon Ciesla limb at fedoraproject.org
Mon Aug 4 17:13:56 UTC 2014


commit fda43b2554272a53d019c82b65badc294d28a250
Author: Jon Ciesla <limburgher at gmail.com>
Date:   Mon Aug 4 12:09:52 2014 -0500

    Add patch.

 python-dateutil-2.0-system-zoneinfo.patch |   74 +++++++++++++++++++++++++++++
 1 files changed, 74 insertions(+), 0 deletions(-)
---
diff --git a/python-dateutil-2.0-system-zoneinfo.patch b/python-dateutil-2.0-system-zoneinfo.patch
new file mode 100644
index 0000000..04277e0
--- /dev/null
+++ b/python-dateutil-2.0-system-zoneinfo.patch
@@ -0,0 +1,74 @@
+diff -up python-dateutil-1.5/dateutil/zoneinfo/__init__.py\~ python-dateutil-1.5/dateutil/zoneinfo/__init__.py
+--- python-dateutil-1.5/dateutil/zoneinfo/__init__.py~	2005-12-22 19:13:50.000000000 +0100
++++ python-dateutil-1.5/dateutil/zoneinfo/__init__.py	2011-08-17 15:24:29.019214748 +0200
+@@ -15,6 +15,7 @@ __all__ = ["setcachesize", "gettz", "reb
+ 
+ CACHE = []
+ CACHESIZE = 10
++USE_SYSTEM_ZONEINFO = True # XXX configure at build time
+ 
+ class tzfile(tzfile):
+     def __reduce__(self):
+@@ -29,7 +30,8 @@ def getzoneinfofile():
+             return os.path.join(os.path.dirname(__file__), entry)
+     return None
+ 
+-ZONEINFOFILE = getzoneinfofile()
++ZONEINFOFILE = getzoneinfofile() if USE_SYSTEM_ZONEINFO else None
++ZONEINFODIR = (os.getenv("TZDIR") or "/usr/share/zoneinfo").rstrip(os.sep)
+ 
+ del getzoneinfofile
+ 
+@@ -39,22 +40,37 @@ def setcachesize(size):
+     del CACHE[size:]
+ 
+ def gettz(name):
+-    tzinfo = None
+-    if ZONEINFOFILE:
+-        for cachedname, tzinfo in CACHE:
+-            if cachedname == name:
+-                break
++    for cachedname, tzinfo in CACHE:
++        if cachedname == name:
++            return tzinfo
++
++    name_parts = name.lstrip('/').split('/')
++    for part in name_parts:
++        if part == os.path.pardir or os.path.sep in part:
++            raise ValueError('Bad path segment: %r' % part)
++    filename = os.path.join(ZONEINFODIR, *name_parts)
++    try:
++        zonefile = open(filename, "rb")
++    except:
++        tzinfo = None
++    else:
++        tzinfo = tzfile(zonefile)
++        zonefile.close()
++
++    if tzinfo is None and ZONEINFOFILE:
++        tf = TarFile.open(ZONEINFOFILE)
++        try:
++            zonefile = tf.extractfile(name)
++        except KeyError:
++            tzinfo = None
+         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:]
++            tzinfo = tzfile(zonefile)
++        tf.close()
++
++    if tzinfo is not None:
++        CACHE.insert(0, (name, tzinfo))
++        del CACHE[CACHESIZE:]
++
+     return tzinfo
+ 
+ def rebuild(filename, tag=None, format="gz"):


More information about the scm-commits mailing list