@@ -34,11 +34,6 @@ cdef extern from "src/datetime/np_datetime.h":
34
34
int cmp_npy_datetimestruct(npy_datetimestruct * a,
35
35
npy_datetimestruct * b)
36
36
37
- void pandas_timedelta_to_timedeltastruct(npy_timedelta val,
38
- NPY_DATETIMEUNIT fr,
39
- pandas_timedeltastruct * result
40
- ) nogil
41
-
42
37
# AS, FS, PS versions exist but are not imported because they are not used.
43
38
npy_datetimestruct _NS_MIN_DTS, _NS_MAX_DTS
44
39
npy_datetimestruct _US_MIN_DTS, _US_MAX_DTS
@@ -100,6 +95,28 @@ def py_get_unit_from_dtype(dtype):
100
95
# Comparison
101
96
102
97
98
+ cdef bint cmp_dtstructs(
99
+ npy_datetimestruct* left, npy_datetimestruct* right, int op
100
+ ):
101
+ cdef:
102
+ int cmp_res
103
+
104
+ cmp_res = cmp_npy_datetimestruct(left, right)
105
+ if op == Py_EQ:
106
+ return cmp_res == 0
107
+ if op == Py_NE:
108
+ return cmp_res != 0
109
+ if op == Py_GT:
110
+ return cmp_res == 1
111
+ if op == Py_LT:
112
+ return cmp_res == - 1
113
+ if op == Py_GE:
114
+ return cmp_res == 1 or cmp_res == 0
115
+ else :
116
+ # i.e. op == Py_LE
117
+ return cmp_res == - 1 or cmp_res == 0
118
+
119
+
103
120
cdef inline bint cmp_scalar(int64_t lhs, int64_t rhs, int op) except - 1 :
104
121
"""
105
122
cmp_scalar is a more performant version of PyObject_RichCompare
@@ -127,6 +144,15 @@ class OutOfBoundsDatetime(ValueError):
127
144
pass
128
145
129
146
147
+ class OutOfBoundsTimedelta (ValueError ):
148
+ """
149
+ Raised when encountering a timedelta value that cannot be represented
150
+ as a timedelta64[ns].
151
+ """
152
+ # Timedelta analogue to OutOfBoundsDatetime
153
+ pass
154
+
155
+
130
156
cdef check_dts_bounds(npy_datetimestruct * dts, NPY_DATETIMEUNIT unit = NPY_FR_ns):
131
157
""" Raises OutOfBoundsDatetime if the given date is outside the range that
132
158
can be represented by nanosecond-resolution 64-bit integers."""
0 commit comments