Skip to content

Commit e9b019b

Browse files
authored
PERF: cdef UTC (pandas-dev#34043)
1 parent a84bfc0 commit e9b019b

File tree

6 files changed

+21
-13
lines changed

6 files changed

+21
-13
lines changed

pandas/_libs/tslibs/c_timestamp.pyx

+3-2
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,9 @@ from pandas._libs.tslibs.np_datetime import OutOfBoundsDatetime
3737
from pandas._libs.tslibs.np_datetime cimport (
3838
reverse_ops, cmp_scalar)
3939
from pandas._libs.tslibs.timezones cimport (
40-
get_timezone, is_utc, tz_compare)
41-
from pandas._libs.tslibs.timezones import UTC
40+
get_timezone, is_utc, tz_compare,
41+
utc_pytz as UTC,
42+
)
4243
from pandas._libs.tslibs.tzconversion cimport tz_convert_single
4344
from pandas._libs.tslibs.offsets cimport is_tick_object
4445

pandas/_libs/tslibs/conversion.pyx

+3-2
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,9 @@ from pandas._libs.tslibs.util cimport (
2828
from pandas._libs.tslibs.timedeltas cimport cast_from_unit
2929
from pandas._libs.tslibs.timezones cimport (
3030
is_utc, is_tzlocal, is_fixed_offset, get_utcoffset, get_dst_info,
31-
get_timezone, maybe_get_tz, tz_compare)
32-
from pandas._libs.tslibs.timezones import UTC
31+
get_timezone, maybe_get_tz, tz_compare,
32+
utc_pytz as UTC,
33+
)
3334
from pandas._libs.tslibs.parsing import parse_datetime_string
3435

3536
from pandas._libs.tslibs.nattype import nat_strings

pandas/_libs/tslibs/offsets.pyx

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ from pandas._libs.tslibs.conversion cimport (
3030
from pandas._libs.tslibs.nattype cimport NPY_NAT
3131
from pandas._libs.tslibs.np_datetime cimport (
3232
npy_datetimestruct, dtstruct_to_dt64, dt64_to_dtstruct)
33-
from pandas._libs.tslibs.timezones import UTC
33+
from pandas._libs.tslibs.timezones cimport utc_pytz as UTC
3434
from pandas._libs.tslibs.tzconversion cimport tz_convert_single
3535
from pandas._libs.tslibs.c_timestamp cimport _Timestamp
3636

pandas/_libs/tslibs/timestamps.pyx

+2-2
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ from pandas._libs.tslibs.np_datetime cimport (
2525
from pandas._libs.tslibs.offsets cimport to_offset
2626
from pandas._libs.tslibs.timedeltas import Timedelta
2727
from pandas._libs.tslibs.timezones cimport (
28-
is_utc, maybe_get_tz, treat_tz_as_pytz)
29-
from pandas._libs.tslibs.timezones import UTC
28+
is_utc, maybe_get_tz, treat_tz_as_pytz, utc_pytz as UTC
29+
)
3030
from pandas._libs.tslibs.tzconversion import (
3131
tz_localize_to_utc, tz_convert_single)
3232

pandas/_libs/tslibs/timezones.pxd

+5-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
from cpython.datetime cimport tzinfo
2+
3+
cdef tzinfo utc_pytz
4+
15
cpdef bint is_utc(object tz)
26
cdef bint is_tzlocal(object tz)
37

@@ -8,7 +12,7 @@ cpdef bint tz_compare(object start, object end)
812
cpdef object get_timezone(object tz)
913
cpdef object maybe_get_tz(object tz)
1014

11-
cdef get_utcoffset(tzinfo, obj)
15+
cdef get_utcoffset(tzinfo tz, obj)
1216
cdef bint is_fixed_offset(object tz)
1317

1418
cdef object get_dst_info(object tz)

pandas/_libs/tslibs/timezones.pyx

+7-5
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from cpython.datetime cimport tzinfo
12
from datetime import timezone
23

34
# dateutil compat
@@ -24,12 +25,13 @@ cnp.import_array()
2425
from pandas._libs.tslibs.util cimport is_integer_object, get_nat
2526

2627
cdef int64_t NPY_NAT = get_nat()
27-
cdef object utc_stdlib = timezone.utc
28+
cdef tzinfo utc_stdlib = timezone.utc
29+
cdef tzinfo utc_pytz = UTC
2830

2931
# ----------------------------------------------------------------------
3032

3133
cpdef inline bint is_utc(object tz):
32-
return tz is UTC or tz is utc_stdlib or isinstance(tz, _dateutil_tzutc)
34+
return tz is utc_pytz or tz is utc_stdlib or isinstance(tz, _dateutil_tzutc)
3335

3436

3537
cdef inline bint is_tzlocal(object tz):
@@ -152,11 +154,11 @@ cdef inline object tz_cache_key(object tz):
152154
# UTC Offsets
153155

154156

155-
cdef get_utcoffset(tzinfo, obj):
157+
cdef get_utcoffset(tzinfo tz, obj):
156158
try:
157-
return tzinfo._utcoffset
159+
return tz._utcoffset
158160
except AttributeError:
159-
return tzinfo.utcoffset(obj)
161+
return tz.utcoffset(obj)
160162

161163

162164
cdef inline bint is_fixed_offset(object tz):

0 commit comments

Comments
 (0)