|
|
ed899e |
diff -up python-dateutil-1.5/dateutil/zoneinfo/__init__.py\~ python-dateutil-1.5/dateutil/zoneinfo/__init__.py
|
|
|
ed899e |
--- python-dateutil-1.5/dateutil/zoneinfo/__init__.py~ 2005-12-22 19:13:50.000000000 +0100
|
|
|
ed899e |
+++ python-dateutil-1.5/dateutil/zoneinfo/__init__.py 2011-08-17 15:24:29.019214748 +0200
|
|
|
ed899e |
@@ -15,6 +15,7 @@ __all__ = ["setcachesize", "gettz", "reb
|
|
|
ed899e |
|
|
|
ed899e |
CACHE = []
|
|
|
ed899e |
CACHESIZE = 10
|
|
|
ed899e |
+USE_SYSTEM_ZONEINFO = True # XXX configure at build time
|
|
|
ed899e |
|
|
|
ed899e |
class tzfile(tzfile):
|
|
|
ed899e |
def __reduce__(self):
|
|
|
ed899e |
@@ -29,7 +30,8 @@ def getzoneinfofile():
|
|
|
ed899e |
return os.path.join(os.path.dirname(__file__), entry)
|
|
|
ed899e |
return None
|
|
|
ed899e |
|
|
|
ed899e |
-ZONEINFOFILE = getzoneinfofile()
|
|
|
ed899e |
+ZONEINFOFILE = getzoneinfofile() if USE_SYSTEM_ZONEINFO else None
|
|
|
ed899e |
+ZONEINFODIR = (os.getenv("TZDIR") or "/usr/share/zoneinfo").rstrip(os.sep)
|
|
|
ed899e |
|
|
|
ed899e |
del getzoneinfofile
|
|
|
ed899e |
|
|
|
ed899e |
@@ -39,22 +40,37 @@ def setcachesize(size):
|
|
|
ed899e |
del CACHE[size:]
|
|
|
ed899e |
|
|
|
ed899e |
def gettz(name):
|
|
|
ed899e |
- tzinfo = None
|
|
|
ed899e |
- if ZONEINFOFILE:
|
|
|
ed899e |
- for cachedname, tzinfo in CACHE:
|
|
|
ed899e |
- if cachedname == name:
|
|
|
ed899e |
- break
|
|
|
ed899e |
+ for cachedname, tzinfo in CACHE:
|
|
|
ed899e |
+ if cachedname == name:
|
|
|
ed899e |
+ return tzinfo
|
|
|
ed899e |
+
|
|
|
ed899e |
+ name_parts = name.lstrip('/').split('/')
|
|
|
ed899e |
+ for part in name_parts:
|
|
|
ed899e |
+ if part == os.path.pardir or os.path.sep in part:
|
|
|
ed899e |
+ raise ValueError('Bad path segment: %r' % part)
|
|
|
ed899e |
+ filename = os.path.join(ZONEINFODIR, *name_parts)
|
|
|
ed899e |
+ try:
|
|
|
ed899e |
+ zonefile = open(filename, "rb")
|
|
|
ed899e |
+ except:
|
|
|
ed899e |
+ tzinfo = None
|
|
|
ed899e |
+ else:
|
|
|
ed899e |
+ tzinfo = tzfile(zonefile)
|
|
|
ed899e |
+ zonefile.close()
|
|
|
ed899e |
+
|
|
|
ed899e |
+ if tzinfo is None and ZONEINFOFILE:
|
|
|
ed899e |
+ tf = TarFile.open(ZONEINFOFILE)
|
|
|
ed899e |
+ try:
|
|
|
ed899e |
+ zonefile = tf.extractfile(name)
|
|
|
ed899e |
+ except KeyError:
|
|
|
ed899e |
+ tzinfo = None
|
|
|
ed899e |
else:
|
|
|
ed899e |
- tf = TarFile.open(ZONEINFOFILE)
|
|
|
ed899e |
- try:
|
|
|
ed899e |
- zonefile = tf.extractfile(name)
|
|
|
ed899e |
- except KeyError:
|
|
|
ed899e |
- tzinfo = None
|
|
|
ed899e |
- else:
|
|
|
ed899e |
- tzinfo = tzfile(zonefile)
|
|
|
ed899e |
- tf.close()
|
|
|
ed899e |
- CACHE.insert(0, (name, tzinfo))
|
|
|
ed899e |
- del CACHE[CACHESIZE:]
|
|
|
ed899e |
+ tzinfo = tzfile(zonefile)
|
|
|
ed899e |
+ tf.close()
|
|
|
ed899e |
+
|
|
|
ed899e |
+ if tzinfo is not None:
|
|
|
ed899e |
+ CACHE.insert(0, (name, tzinfo))
|
|
|
ed899e |
+ del CACHE[CACHESIZE:]
|
|
|
ed899e |
+
|
|
|
ed899e |
return tzinfo
|
|
|
ed899e |
|
|
|
ed899e |
def rebuild(filename, tag=None, format="gz"):
|
|
|
ed899e |
diff -up python-dateutil-1.5/setup.py\~ python-dateutil-1.5/setup.py
|
|
|
ed899e |
--- python-dateutil-1.5/setup.py~ 2010-01-11 10:43:22.000000000 +0100
|
|
|
ed899e |
+++ python-dateutil-1.5/setup.py 2011-08-17 15:38:13.206304651 +0200
|
|
|
ed899e |
@@ -15,6 +15,16 @@ TOPDIR = os.path.dirname(__file__) or ".
|
|
|
ed899e |
VERSION = re.search('__version__ = "([^"]+)"',
|
|
|
ed899e |
open(TOPDIR + "/dateutil/__init__.py").read()).group(1)
|
|
|
ed899e |
|
|
|
ed899e |
+# XXX We would like to bind this to something like
|
|
|
ed899e |
+# --system-zoneinfo=/path/to/zoneinfo. Any way of doing this short of
|
|
|
ed899e |
+# overriding build and install commands?
|
|
|
ed899e |
+if False:
|
|
|
ed899e |
+ extra_options = dict(
|
|
|
ed899e |
+ package_data={"": ["*.tar.gz"]},
|
|
|
ed899e |
+ )
|
|
|
ed899e |
+else:
|
|
|
ed899e |
+ extra_options = {}
|
|
|
ed899e |
+
|
|
|
ed899e |
|
|
|
ed899e |
setup(name="python-dateutil",
|
|
|
ed899e |
version = VERSION,
|
|
|
ed899e |
@@ -29,7 +39,7 @@ The dateutil module provides powerful ex
|
|
|
ed899e |
datetime module, available in Python 2.3+.
|
|
|
ed899e |
""",
|
|
|
ed899e |
packages = ["dateutil", "dateutil.zoneinfo"],
|
|
|
ed899e |
- package_data={"": ["*.tar.gz"]},
|
|
|
ed899e |
include_package_data=True,
|
|
|
ed899e |
zip_safe=False,
|
|
|
ed899e |
+ **extra_options
|
|
|
ed899e |
)
|