Added a patch to respect systemwide tzdata. Ref bug 729786

This commit is contained in:
Jef Spaleta 2011-09-15 09:29:13 -08:00
parent 3764fcb559
commit 44160142b4
2 changed files with 110 additions and 1 deletions

View File

@ -0,0 +1,103 @@
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 = False # 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"):
diff -up python-dateutil-1.5/setup.py\~ python-dateutil-1.5/setup.py
--- python-dateutil-1.5/setup.py~ 2010-01-11 10:43:22.000000000 +0100
+++ python-dateutil-1.5/setup.py 2011-08-17 15:38:13.206304651 +0200
@@ -15,6 +15,16 @@ TOPDIR = os.path.dirname(__file__) or ".
VERSION = re.search('__version__ = "([^"]+)"',
open(TOPDIR + "/dateutil/__init__.py").read()).group(1)
+# XXX We would like to bind this to something like
+# --system-zoneinfo=/path/to/zoneinfo. Any way of doing this short of
+# overriding build and install commands?
+if False:
+ extra_options = dict(
+ package_data={"": ["*.tar.gz"]},
+ )
+else:
+ extra_options = {}
+
setup(name="python-dateutil",
version = VERSION,
@@ -29,7 +39,7 @@ The dateutil module provides powerful ex
datetime module, available in Python 2.3+.
""",
packages = ["dateutil", "dateutil.zoneinfo"],
- package_data={"": ["*.tar.gz"]},
include_package_data=True,
zip_safe=False,
+ **extra_options
)

View File

@ -1,12 +1,13 @@
Name: python-dateutil Name: python-dateutil
Version: 1.5 Version: 1.5
Release: 1%{?dist} Release: 2%{?dist}
Summary: Powerful extensions to the standard datetime module Summary: Powerful extensions to the standard datetime module
Group: Development/Languages Group: Development/Languages
License: Python License: Python
URL: http://labix.org/python-dateutil URL: http://labix.org/python-dateutil
Source0: http://labix.org/download/%{name}/%{name}-%{version}.tar.gz Source0: http://labix.org/download/%{name}/%{name}-%{version}.tar.gz
Patch0: python-dateutil-1.5-system-zoneinfo.patch
BuildArch: noarch BuildArch: noarch
BuildRequires: python-devel,python-setuptools BuildRequires: python-devel,python-setuptools
@ -17,6 +18,7 @@ module available in Python 2.3+.
%prep %prep
%setup -q %setup -q
%patch0 -p1
iconv --from=ISO-8859-1 --to=UTF-8 NEWS > NEWS.new iconv --from=ISO-8859-1 --to=UTF-8 NEWS > NEWS.new
mv NEWS.new NEWS mv NEWS.new NEWS
@ -30,9 +32,13 @@ mv NEWS.new NEWS
%files %files
%doc example.py LICENSE NEWS README %doc example.py LICENSE NEWS README
%{python_sitelib}/dateutil/ %{python_sitelib}/dateutil/
%exclude %{python_sitelib}/dateutil/zoneinfo/zoneinfo-2010g.tar.gz
%{python_sitelib}/*.egg-info %{python_sitelib}/*.egg-info
%changelog %changelog
* Wed Sep 15 2011 Jef Spaleta <jspaleta@fedoraproject.org> - 1.5-2
- Added a patch to respect systemwide tzdata. Ref bug 729786
* Wed Jul 13 2011 Rahul Sundaram <sundaram@fedoraproject.org> - 1.5-1 * Wed Jul 13 2011 Rahul Sundaram <sundaram@fedoraproject.org> - 1.5-1
- New upstream release - New upstream release
- Fix UTF8 encoding correctly - Fix UTF8 encoding correctly