Skip to content

Commit 46856c3

Browse files
jbrockmendeljreback
authored andcommitted
Implement _is_utc in timezones (#17419)
1 parent f3b6d1f commit 46856c3

File tree

8 files changed

+24
-10
lines changed

8 files changed

+24
-10
lines changed

pandas/_libs/index.pyx

+1-6
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ cimport tslib
1717

1818
from hashtable cimport HashTable
1919

20+
from tslibs.timezones cimport _is_utc
2021
from pandas._libs import tslib, algos, hashtable as _hash
2122
from pandas._libs.tslib import Timestamp, Timedelta
2223
from datetime import datetime, timedelta
@@ -32,9 +33,6 @@ cdef extern from "datetime.h":
3233

3334
cdef int64_t iNaT = util.get_nat()
3435

35-
from dateutil.tz import tzutc as _du_utc
36-
import pytz
37-
UTC = pytz.utc
3836

3937
PyDateTime_IMPORT
4038

@@ -559,9 +557,6 @@ cdef inline _to_i8(object val):
559557
return ival
560558
return val
561559

562-
cdef inline bint _is_utc(object tz):
563-
return tz is UTC or isinstance(tz, _du_utc)
564-
565560

566561
cdef class MultiIndexObjectEngine(ObjectEngine):
567562
"""

pandas/_libs/period.pyx

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,9 @@ from lib cimport is_null_datetimelike, is_period
3434
from pandas._libs import tslib, lib
3535
from pandas._libs.tslib import (Timedelta, Timestamp, iNaT,
3636
NaT, _get_utcoffset)
37+
from tslibs.timezones cimport _is_utc
3738
from tslib cimport (
3839
maybe_get_tz,
39-
_is_utc,
4040
_is_tzlocal,
4141
_get_dst_info,
4242
_nat_scalar_rules)

pandas/_libs/tslib.pxd

-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ from numpy cimport ndarray, int64_t
33
cdef convert_to_tsobject(object, object, object, bint, bint)
44
cpdef convert_to_timedelta64(object, object)
55
cpdef object maybe_get_tz(object)
6-
cdef bint _is_utc(object)
76
cdef bint _is_tzlocal(object)
87
cdef object _get_dst_info(object)
98
cdef bint _nat_scalar_rules[6]

pandas/_libs/tslib.pyx

+2-2
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,8 @@ cdef int64_t NPY_NAT = util.get_nat()
107107
iNaT = NPY_NAT
108108

109109

110+
from tslibs.timezones cimport _is_utc
111+
110112
cdef inline object create_timestamp_from_ts(
111113
int64_t value, pandas_datetimestruct dts,
112114
object tz, object freq):
@@ -1713,8 +1715,6 @@ def _localize_pydatetime(object dt, object tz):
17131715
def get_timezone(tz):
17141716
return _get_zone(tz)
17151717

1716-
cdef inline bint _is_utc(object tz):
1717-
return tz is UTC or isinstance(tz, _dateutil_tzutc)
17181718

17191719
cdef inline object _get_zone(object tz):
17201720
"""

pandas/_libs/tslibs/__init__.py

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# -*- coding: utf-8 -*-
2+
# cython: profile=False

pandas/_libs/tslibs/timezones.pxd

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# -*- coding: utf-8 -*-
2+
# cython: profile=False
3+
4+
cdef bint _is_utc(object tz)

pandas/_libs/tslibs/timezones.pyx

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# -*- coding: utf-8 -*-
2+
# cython: profile=False
3+
4+
# dateutil compat
5+
from dateutil.tz import tzutc as _dateutil_tzutc
6+
7+
import pytz
8+
UTC = pytz.utc
9+
10+
11+
cdef inline bint _is_utc(object tz):
12+
return tz is UTC or isinstance(tz, _dateutil_tzutc)

setup.py

+2
Original file line numberDiff line numberDiff line change
@@ -341,6 +341,7 @@ class CheckSDist(sdist_class):
341341
'pandas/_libs/window.pyx',
342342
'pandas/_libs/sparse.pyx',
343343
'pandas/_libs/parsers.pyx',
344+
'pandas/_libs/tslibs/timezones.pyx',
344345
'pandas/_libs/tslibs/frequencies.pyx',
345346
'pandas/io/sas/sas.pyx']
346347

@@ -479,6 +480,7 @@ def pxd(name):
479480
'sources': ['pandas/_libs/src/datetime/np_datetime.c',
480481
'pandas/_libs/src/datetime/np_datetime_strings.c',
481482
'pandas/_libs/src/period_helper.c']},
483+
'_libs.tslibs.timezones': {'pyxfile': '_libs/tslibs/timezones'},
482484
'_libs.period': {'pyxfile': '_libs/period',
483485
'depends': tseries_depends,
484486
'sources': ['pandas/_libs/src/datetime/np_datetime.c',

0 commit comments

Comments
 (0)