Skip to content

Commit eab7226

Browse files
authored
CLN: using C-API of datetime (#33174)
* CLN: cimporting time instead of going to python space pandas/_libs/tslibs/conversion.pyx * cimporting time instead of going to python space pandas/_libs/tslibs/timestamps.pyx * cimporting time instead of going to python space pandas/_libs/tslibs/period.pyx Co-authored-by: MomIsBestFriend <>
1 parent 927dedb commit eab7226

File tree

3 files changed

+6
-10
lines changed

3 files changed

+6
-10
lines changed

pandas/_libs/tslibs/conversion.pyx

+2-3
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,7 @@ cnp.import_array()
88
import pytz
99

1010
# stdlib datetime imports
11-
from datetime import time as datetime_time
12-
from cpython.datetime cimport (datetime, tzinfo,
11+
from cpython.datetime cimport (datetime, time, tzinfo,
1312
PyDateTime_Check, PyDate_Check,
1413
PyDateTime_IMPORT)
1514
PyDateTime_IMPORT
@@ -284,7 +283,7 @@ cdef convert_to_tsobject(object ts, object tz, object unit,
284283
return convert_datetime_to_tsobject(ts, tz, nanos)
285284
elif PyDate_Check(ts):
286285
# Keep the converter same as PyDateTime's
287-
ts = datetime.combine(ts, datetime_time())
286+
ts = datetime.combine(ts, time())
288287
return convert_datetime_to_tsobject(ts, tz)
289288
elif getattr(ts, '_typ', None) == 'period':
290289
raise ValueError("Cannot convert Period to Timestamp "

pandas/_libs/tslibs/period.pyx

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
from datetime import datetime
2-
31
from cpython.object cimport PyObject_RichCompareBool, Py_EQ, Py_NE
42

53
from numpy cimport int64_t, import_array, ndarray
@@ -13,6 +11,7 @@ from libc.string cimport strlen, memset
1311
import cython
1412

1513
from cpython.datetime cimport (
14+
datetime,
1615
PyDate_Check,
1716
PyDateTime_Check,
1817
PyDateTime_IMPORT,

pandas/_libs/tslibs/timestamps.pyx

+3-5
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,7 @@ cimport numpy as cnp
55
from numpy cimport int64_t
66
cnp.import_array()
77

8-
from datetime import time as datetime_time, timedelta
9-
from cpython.datetime cimport (datetime, PyDateTime_Check,
8+
from cpython.datetime cimport (datetime, time, PyDateTime_Check, PyDelta_Check,
109
PyTZInfo_Check, PyDateTime_IMPORT)
1110
PyDateTime_IMPORT
1211

@@ -33,7 +32,7 @@ from pandas._libs.tslibs.tzconversion import (
3332

3433
# ----------------------------------------------------------------------
3534
# Constants
36-
_zero_time = datetime_time(0, 0)
35+
_zero_time = time(0, 0)
3736
_no_input = object()
3837

3938
# ----------------------------------------------------------------------
@@ -879,8 +878,7 @@ default 'raise'
879878
raise ValueError('Cannot infer offset with only one time.')
880879

881880
nonexistent_options = ('raise', 'NaT', 'shift_forward', 'shift_backward')
882-
if nonexistent not in nonexistent_options and not isinstance(
883-
nonexistent, timedelta):
881+
if nonexistent not in nonexistent_options and not PyDelta_Check(nonexistent):
884882
raise ValueError(
885883
"The nonexistent argument must be one of 'raise', "
886884
"'NaT', 'shift_forward', 'shift_backward' or a timedelta object"

0 commit comments

Comments
 (0)