Skip to content

Commit 9f0368d

Browse files
committed
Use tz.gettz() instead of zoneinfo.gettz()
zoneinfo.gettz() seems to have problems (1 & 2) on system which do not install the zoninfo tarball (e.g. Debian, Gentoo and Fedora) but rely on the system zoneinfo files. This results in test failures (3 & 4) tz.gettz() doesn't suffer from this problem. 1 dateutil/dateutil#8 2 dateutil/dateutil#11 3 pandas-dev#9059 4 pandas-dev#8639 Signed-off-by: Justin Lecher <[email protected]>
1 parent 23f9432 commit 9f0368d

File tree

5 files changed

+31
-10
lines changed

5 files changed

+31
-10
lines changed

pandas/tests/test_series.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -5398,7 +5398,10 @@ def test_getitem_setitem_datetime_tz_pytz(self):
53985398
def test_getitem_setitem_datetime_tz_dateutil(self):
53995399
tm._skip_if_no_dateutil();
54005400
from dateutil.tz import tzutc
5401-
from dateutil.tz import gettz
5401+
if sys.platform != 'win32':
5402+
from dateutil.tz import gettz
5403+
else:
5404+
from dateutil.zoneinfo import gettz
54025405
tz = lambda x: tzutc() if x == 'UTC' else gettz(x) # handle special case for utc in dateutil
54035406

54045407
from pandas import date_range

pandas/tseries/tests/test_daterange.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -441,7 +441,10 @@ def test_month_range_union_tz_pytz(self):
441441
def test_month_range_union_tz_dateutil(self):
442442
_skip_if_windows_python_3()
443443
tm._skip_if_no_dateutil()
444-
from dateutil.tz import gettz as timezone
444+
if sys.platform != 'win32':
445+
from dateutil.tz import gettz as timezone
446+
else:
447+
from dateutil.zoneinfo import gettz as timezone
445448
tz = timezone('US/Eastern')
446449

447450
early_start = datetime(2011, 1, 1)

pandas/tseries/tests/test_period.py

+10-4
Original file line numberDiff line numberDiff line change
@@ -101,15 +101,21 @@ def test_timestamp_tz_arg(self):
101101
pytz.timezone('Europe/Brussels').normalize(p).tzinfo)
102102

103103
def test_timestamp_tz_arg_dateutil(self):
104-
import dateutil
104+
if sys.platform != 'win32':
105+
from dateutil.tz import gettz
106+
else
107+
from dateutil.zoneinfo import gettz
105108
from pandas.tslib import maybe_get_tz
106109
p = Period('1/1/2005', freq='M').to_timestamp(tz=maybe_get_tz('dateutil/Europe/Brussels'))
107-
self.assertEqual(p.tz, dateutil.tz.gettz('Europe/Brussels'))
110+
self.assertEqual(p.tz, gettz('Europe/Brussels'))
108111

109112
def test_timestamp_tz_arg_dateutil_from_string(self):
110-
import dateutil
113+
if sys.platform != 'win32':
114+
from dateutil.tz import gettz
115+
else
116+
from dateutil.zoneinfo import gettz
111117
p = Period('1/1/2005', freq='M').to_timestamp(tz='dateutil/Europe/Brussels')
112-
self.assertEqual(p.tz, dateutil.tz.gettz('Europe/Brussels'))
118+
self.assertEqual(p.tz, gettz('Europe/Brussels'))
113119

114120
def test_timestamp_nat_tz(self):
115121
t = Period('NaT', freq='M').to_timestamp()

pandas/tseries/tests/test_timeseries.py

+9-3
Original file line numberDiff line numberDiff line change
@@ -417,9 +417,12 @@ def test_timestamp_to_datetime_explicit_pytz(self):
417417
def test_timestamp_to_datetime_explicit_dateutil(self):
418418
_skip_if_windows_python_3()
419419
tm._skip_if_no_dateutil()
420-
import dateutil
420+
if sys.platform != 'win32':
421+
from dateutil.tz import gettz
422+
else:
423+
from dateutil.zoneinfo import gettz
421424
rng = date_range('20090415', '20090519',
422-
tz=dateutil.tz.gettz('US/Eastern'))
425+
tz=gettz('US/Eastern'))
423426

424427
stamp = rng[0]
425428
dtval = stamp.to_pydatetime()
@@ -1807,7 +1810,10 @@ def test_append_concat_tz_explicit_pytz(self):
18071810
def test_append_concat_tz_dateutil(self):
18081811
# GH 2938
18091812
tm._skip_if_no_dateutil()
1810-
from dateutil.tz import gettz as timezone
1813+
if sys.platform != 'win32':
1814+
from dateutil.tz import gettz as timezone
1815+
else:
1816+
from dateutil.zoneinfo import gettz as timezone
18111817

18121818
rng = date_range('5/8/2012 1:45', periods=10, freq='5T',
18131819
tz='dateutil/US/Eastern')

pandas/tslib.pyx

+4-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,10 @@ from datetime import time as datetime_time
4141
# dateutil compat
4242
from dateutil.tz import (tzoffset, tzlocal as _dateutil_tzlocal, tzfile as _dateutil_tzfile,
4343
tzutc as _dateutil_tzutc)
44-
from dateutil.tz import gettz as _dateutil_gettz
44+
if sys.platform != 'win32':
45+
from dateutil.tz import gettz as _dateutil_gettz
46+
else:
47+
from dateutil.zoneinfo import gettz as _dateutil_gettz
4548

4649
from pytz.tzinfo import BaseTzInfo as _pytz_BaseTzInfo
4750
from pandas.compat import parse_date, string_types, PY3, iteritems

0 commit comments

Comments
 (0)