diff --git a/pandas/_libs/index.pyx b/pandas/_libs/index.pyx index 42ba0c1cadaec..bf4d53683c9b7 100644 --- a/pandas/_libs/index.pyx +++ b/pandas/_libs/index.pyx @@ -17,6 +17,7 @@ cimport tslib from hashtable cimport HashTable +from tslibs.timezones cimport _is_utc from pandas._libs import tslib, algos, hashtable as _hash from pandas._libs.tslib import Timestamp, Timedelta from datetime import datetime, timedelta @@ -32,9 +33,6 @@ cdef extern from "datetime.h": cdef int64_t iNaT = util.get_nat() -from dateutil.tz import tzutc as _du_utc -import pytz -UTC = pytz.utc PyDateTime_IMPORT @@ -559,9 +557,6 @@ cdef inline _to_i8(object val): return ival return val -cdef inline bint _is_utc(object tz): - return tz is UTC or isinstance(tz, _du_utc) - cdef class MultiIndexObjectEngine(ObjectEngine): """ diff --git a/pandas/_libs/period.pyx b/pandas/_libs/period.pyx index e2a3baa8d6e8b..08962bca824ca 100644 --- a/pandas/_libs/period.pyx +++ b/pandas/_libs/period.pyx @@ -34,9 +34,9 @@ from lib cimport is_null_datetimelike, is_period from pandas._libs import tslib, lib from pandas._libs.tslib import (Timedelta, Timestamp, iNaT, NaT, _get_utcoffset) +from tslibs.timezones cimport _is_utc from tslib cimport ( maybe_get_tz, - _is_utc, _is_tzlocal, _get_dst_info, _nat_scalar_rules) diff --git a/pandas/_libs/tslib.pxd b/pandas/_libs/tslib.pxd index aa8cbcb2cedc7..1d81c3cc15cd8 100644 --- a/pandas/_libs/tslib.pxd +++ b/pandas/_libs/tslib.pxd @@ -3,7 +3,6 @@ from numpy cimport ndarray, int64_t cdef convert_to_tsobject(object, object, object, bint, bint) cpdef convert_to_timedelta64(object, object) cpdef object maybe_get_tz(object) -cdef bint _is_utc(object) cdef bint _is_tzlocal(object) cdef object _get_dst_info(object) cdef bint _nat_scalar_rules[6] diff --git a/pandas/_libs/tslib.pyx b/pandas/_libs/tslib.pyx index 7e009652f7f0c..b1f794a0030d1 100644 --- a/pandas/_libs/tslib.pyx +++ b/pandas/_libs/tslib.pyx @@ -107,6 +107,8 @@ cdef int64_t NPY_NAT = util.get_nat() iNaT = NPY_NAT +from tslibs.timezones cimport _is_utc + cdef inline object create_timestamp_from_ts( int64_t value, pandas_datetimestruct dts, object tz, object freq): @@ -1713,8 +1715,6 @@ def _localize_pydatetime(object dt, object tz): def get_timezone(tz): return _get_zone(tz) -cdef inline bint _is_utc(object tz): - return tz is UTC or isinstance(tz, _dateutil_tzutc) cdef inline object _get_zone(object tz): """ diff --git a/pandas/_libs/tslibs/__init__.py b/pandas/_libs/tslibs/__init__.py index e69de29bb2d1d..f3aa0424f0376 100644 --- a/pandas/_libs/tslibs/__init__.py +++ b/pandas/_libs/tslibs/__init__.py @@ -0,0 +1,2 @@ +# -*- coding: utf-8 -*- +# cython: profile=False diff --git a/pandas/_libs/tslibs/timezones.pxd b/pandas/_libs/tslibs/timezones.pxd new file mode 100644 index 0000000000000..0708282abe1d0 --- /dev/null +++ b/pandas/_libs/tslibs/timezones.pxd @@ -0,0 +1,4 @@ +# -*- coding: utf-8 -*- +# cython: profile=False + +cdef bint _is_utc(object tz) diff --git a/pandas/_libs/tslibs/timezones.pyx b/pandas/_libs/tslibs/timezones.pyx new file mode 100644 index 0000000000000..43709e77b70d5 --- /dev/null +++ b/pandas/_libs/tslibs/timezones.pyx @@ -0,0 +1,12 @@ +# -*- coding: utf-8 -*- +# cython: profile=False + +# dateutil compat +from dateutil.tz import tzutc as _dateutil_tzutc + +import pytz +UTC = pytz.utc + + +cdef inline bint _is_utc(object tz): + return tz is UTC or isinstance(tz, _dateutil_tzutc) diff --git a/setup.py b/setup.py index d64a78db7500a..434ca64473916 100755 --- a/setup.py +++ b/setup.py @@ -341,6 +341,7 @@ class CheckSDist(sdist_class): 'pandas/_libs/window.pyx', 'pandas/_libs/sparse.pyx', 'pandas/_libs/parsers.pyx', + 'pandas/_libs/tslibs/timezones.pyx', 'pandas/_libs/tslibs/frequencies.pyx', 'pandas/io/sas/sas.pyx'] @@ -479,6 +480,7 @@ def pxd(name): 'sources': ['pandas/_libs/src/datetime/np_datetime.c', 'pandas/_libs/src/datetime/np_datetime_strings.c', 'pandas/_libs/src/period_helper.c']}, + '_libs.tslibs.timezones': {'pyxfile': '_libs/tslibs/timezones'}, '_libs.period': {'pyxfile': '_libs/period', 'depends': tseries_depends, 'sources': ['pandas/_libs/src/datetime/np_datetime.c',