Skip to content

Commit 6a45d36

Browse files
jbrockmendeljowens
authored andcommitted
Remove unnecessary usage of _TSObject (pandas-dev#17297)
1 parent 595e0a4 commit 6a45d36

File tree

3 files changed

+6
-81
lines changed

3 files changed

+6
-81
lines changed

pandas/_libs/period.pyx

-20
Original file line numberDiff line numberDiff line change
@@ -120,26 +120,6 @@ initialize_daytime_conversion_factor_matrix()
120120
# Period logic
121121
#----------------------------------------------------------------------
122122

123-
cdef inline int64_t apply_mult(int64_t period_ord, int64_t mult):
124-
"""
125-
Get freq+multiple ordinal value from corresponding freq-only ordinal value.
126-
For example, 5min ordinal will be 1/5th the 1min ordinal (rounding down to
127-
integer).
128-
"""
129-
if mult == 1:
130-
return period_ord
131-
132-
return (period_ord - 1) // mult
133-
134-
cdef inline int64_t remove_mult(int64_t period_ord_w_mult, int64_t mult):
135-
"""
136-
Get freq-only ordinal value from corresponding freq+multiple ordinal.
137-
"""
138-
if mult == 1:
139-
return period_ord_w_mult
140-
141-
return period_ord_w_mult * mult + 1;
142-
143123

144124
@cython.wraparound(False)
145125
@cython.boundscheck(False)

pandas/_libs/src/datetime.pxd

-32
Original file line numberDiff line numberDiff line change
@@ -88,11 +88,6 @@ cdef extern from "datetime/np_datetime.h":
8888
int cmp_pandas_datetimestruct(pandas_datetimestruct *a,
8989
pandas_datetimestruct *b)
9090

91-
int convert_pydatetime_to_datetimestruct(PyObject *obj,
92-
pandas_datetimestruct *out,
93-
PANDAS_DATETIMEUNIT *out_bestunit,
94-
int apply_tzinfo)
95-
9691
npy_datetime pandas_datetimestruct_to_datetime(PANDAS_DATETIMEUNIT fr,
9792
pandas_datetimestruct *d) nogil
9893
void pandas_datetime_to_datetimestruct(npy_datetime val,
@@ -112,12 +107,6 @@ cdef extern from "datetime/np_datetime_strings.h":
112107
PANDAS_DATETIMEUNIT *out_bestunit,
113108
npy_bool *out_special)
114109

115-
int make_iso_8601_datetime(pandas_datetimestruct *dts, char *outstr, int outlen,
116-
int local, PANDAS_DATETIMEUNIT base, int tzoffset,
117-
NPY_CASTING casting)
118-
119-
int get_datetime_iso_8601_strlen(int local, PANDAS_DATETIMEUNIT base)
120-
121110
# int parse_python_string(object obj, pandas_datetimestruct *out) except -1
122111

123112

@@ -152,16 +141,6 @@ cdef inline int _cstring_to_dts(char *val, int length,
152141
return result
153142

154143

155-
cdef inline object _datetime64_to_datetime(int64_t val):
156-
cdef pandas_datetimestruct dts
157-
pandas_datetime_to_datetimestruct(val, PANDAS_FR_ns, &dts)
158-
return _dts_to_pydatetime(&dts)
159-
160-
cdef inline object _dts_to_pydatetime(pandas_datetimestruct *dts):
161-
return <object> PyDateTime_FromDateAndTime(dts.year, dts.month,
162-
dts.day, dts.hour,
163-
dts.min, dts.sec, dts.us)
164-
165144
cdef inline int64_t _pydatetime_to_dts(object val, pandas_datetimestruct *dts):
166145
dts.year = PyDateTime_GET_YEAR(val)
167146
dts.month = PyDateTime_GET_MONTH(val)
@@ -173,17 +152,6 @@ cdef inline int64_t _pydatetime_to_dts(object val, pandas_datetimestruct *dts):
173152
dts.ps = dts.as = 0
174153
return pandas_datetimestruct_to_datetime(PANDAS_FR_ns, dts)
175154

176-
cdef inline int64_t _dtlike_to_datetime64(object val,
177-
pandas_datetimestruct *dts):
178-
dts.year = val.year
179-
dts.month = val.month
180-
dts.day = val.day
181-
dts.hour = val.hour
182-
dts.min = val.minute
183-
dts.sec = val.second
184-
dts.us = val.microsecond
185-
dts.ps = dts.as = 0
186-
return pandas_datetimestruct_to_datetime(PANDAS_FR_ns, dts)
187155

188156
cdef inline int64_t _date_to_datetime64(object val,
189157
pandas_datetimestruct *dts):

pandas/_libs/tslib.pyx

+6-29
Original file line numberDiff line numberDiff line change
@@ -705,7 +705,6 @@ class Timestamp(_Timestamp):
705705
pandas_datetimestruct dts
706706
int64_t value
707707
object _tzinfo, result, k, v
708-
_TSObject ts
709708

710709
# set to naive if needed
711710
_tzinfo = self.tzinfo
@@ -1009,10 +1008,6 @@ def unique_deltas(ndarray[int64_t] arr):
10091008
return result
10101009

10111010

1012-
cdef inline bint _is_multiple(int64_t us, int64_t mult):
1013-
return us % mult == 0
1014-
1015-
10161011
cdef inline bint _cmp_scalar(int64_t lhs, int64_t rhs, int op) except -1:
10171012
if op == Py_EQ:
10181013
return lhs == rhs
@@ -4694,7 +4689,6 @@ def get_date_field(ndarray[int64_t] dtindex, object field):
46944689
field and return an array of these values.
46954690
"""
46964691
cdef:
4697-
_TSObject ts
46984692
Py_ssize_t i, count = 0
46994693
ndarray[int32_t] out
47004694
ndarray[int32_t, ndim=2] _month_offset
@@ -4876,7 +4870,6 @@ def get_start_end_field(ndarray[int64_t] dtindex, object field,
48764870
(defined by frequency).
48774871
"""
48784872
cdef:
4879-
_TSObject ts
48804873
Py_ssize_t i
48814874
int count = 0
48824875
bint is_business = 0
@@ -4925,9 +4918,8 @@ def get_start_end_field(ndarray[int64_t] dtindex, object field,
49254918

49264919
pandas_datetime_to_datetimestruct(
49274920
dtindex[i], PANDAS_FR_ns, &dts)
4928-
ts = convert_to_tsobject(dtindex[i], None, None, 0, 0)
49294921
dom = dts.day
4930-
dow = ts_dayofweek(ts)
4922+
dow = dayofweek(dts.year, dts.month, dts.day)
49314923

49324924
if (dom == 1 and dow < 5) or (dom <= 3 and dow == 0):
49334925
out[i] = 1
@@ -4951,13 +4943,12 @@ def get_start_end_field(ndarray[int64_t] dtindex, object field,
49514943

49524944
pandas_datetime_to_datetimestruct(
49534945
dtindex[i], PANDAS_FR_ns, &dts)
4954-
ts = convert_to_tsobject(dtindex[i], None, None, 0, 0)
49554946
isleap = is_leapyear(dts.year)
49564947
mo_off = _month_offset[isleap, dts.month - 1]
49574948
dom = dts.day
49584949
doy = mo_off + dom
49594950
ldom = _month_offset[isleap, dts.month]
4960-
dow = ts_dayofweek(ts)
4951+
dow = dayofweek(dts.year, dts.month, dts.day)
49614952

49624953
if (ldom == doy and dow < 5) or (
49634954
dow == 4 and (ldom - doy <= 2)):
@@ -4986,9 +4977,8 @@ def get_start_end_field(ndarray[int64_t] dtindex, object field,
49864977

49874978
pandas_datetime_to_datetimestruct(
49884979
dtindex[i], PANDAS_FR_ns, &dts)
4989-
ts = convert_to_tsobject(dtindex[i], None, None, 0, 0)
49904980
dom = dts.day
4991-
dow = ts_dayofweek(ts)
4981+
dow = dayofweek(dts.year, dts.month, dts.day)
49924982

49934983
if ((dts.month - start_month) % 3 == 0) and (
49944984
(dom == 1 and dow < 5) or (dom <= 3 and dow == 0)):
@@ -5013,13 +5003,12 @@ def get_start_end_field(ndarray[int64_t] dtindex, object field,
50135003

50145004
pandas_datetime_to_datetimestruct(
50155005
dtindex[i], PANDAS_FR_ns, &dts)
5016-
ts = convert_to_tsobject(dtindex[i], None, None, 0, 0)
50175006
isleap = is_leapyear(dts.year)
50185007
mo_off = _month_offset[isleap, dts.month - 1]
50195008
dom = dts.day
50205009
doy = mo_off + dom
50215010
ldom = _month_offset[isleap, dts.month]
5022-
dow = ts_dayofweek(ts)
5011+
dow = dayofweek(dts.year, dts.month, dts.day)
50235012

50245013
if ((dts.month - end_month) % 3 == 0) and (
50255014
(ldom == doy and dow < 5) or (
@@ -5049,9 +5038,8 @@ def get_start_end_field(ndarray[int64_t] dtindex, object field,
50495038

50505039
pandas_datetime_to_datetimestruct(
50515040
dtindex[i], PANDAS_FR_ns, &dts)
5052-
ts = convert_to_tsobject(dtindex[i], None, None, 0, 0)
50535041
dom = dts.day
5054-
dow = ts_dayofweek(ts)
5042+
dow = dayofweek(dts.year, dts.month, dts.day)
50555043

50565044
if (dts.month == start_month) and (
50575045
(dom == 1 and dow < 5) or (dom <= 3 and dow == 0)):
@@ -5076,12 +5064,11 @@ def get_start_end_field(ndarray[int64_t] dtindex, object field,
50765064

50775065
pandas_datetime_to_datetimestruct(
50785066
dtindex[i], PANDAS_FR_ns, &dts)
5079-
ts = convert_to_tsobject(dtindex[i], None, None, 0, 0)
50805067
isleap = is_leapyear(dts.year)
50815068
dom = dts.day
50825069
mo_off = _month_offset[isleap, dts.month - 1]
50835070
doy = mo_off + dom
5084-
dow = ts_dayofweek(ts)
5071+
dow = dayofweek(dts.year, dts.month, dts.day)
50855072
ldom = _month_offset[isleap, dts.month]
50865073

50875074
if (dts.month == end_month) and (
@@ -5095,7 +5082,6 @@ def get_start_end_field(ndarray[int64_t] dtindex, object field,
50955082

50965083
pandas_datetime_to_datetimestruct(
50975084
dtindex[i], PANDAS_FR_ns, &dts)
5098-
ts = convert_to_tsobject(dtindex[i], None, None, 0, 0)
50995085
isleap = is_leapyear(dts.year)
51005086
mo_off = _month_offset[isleap, dts.month - 1]
51015087
dom = dts.day
@@ -5117,7 +5103,6 @@ def get_date_name_field(ndarray[int64_t] dtindex, object field):
51175103
name based on requested field (e.g. weekday_name)
51185104
"""
51195105
cdef:
5120-
_TSObject ts
51215106
Py_ssize_t i, count = 0
51225107
ndarray[object] out
51235108
pandas_datetimestruct dts
@@ -5143,10 +5128,6 @@ def get_date_name_field(ndarray[int64_t] dtindex, object field):
51435128
raise ValueError("Field %s not supported" % field)
51445129

51455130

5146-
cdef inline int m8_weekday(int64_t val):
5147-
ts = convert_to_tsobject(val, None, None, 0, 0)
5148-
return ts_dayofweek(ts)
5149-
51505131
cdef int64_t DAY_NS = 86400000000000LL
51515132

51525133

@@ -5156,11 +5137,9 @@ def date_normalize(ndarray[int64_t] stamps, tz=None):
51565137
cdef:
51575138
Py_ssize_t i, n = len(stamps)
51585139
pandas_datetimestruct dts
5159-
_TSObject tso
51605140
ndarray[int64_t] result = np.empty(n, dtype=np.int64)
51615141

51625142
if tz is not None:
5163-
tso = _TSObject()
51645143
tz = maybe_get_tz(tz)
51655144
result = _normalize_local(stamps, tz)
51665145
else:
@@ -5305,8 +5284,6 @@ def monthrange(int64_t year, int64_t month):
53055284

53065285
return (dayofweek(year, month, 1), days)
53075286

5308-
cdef inline int64_t ts_dayofweek(_TSObject ts):
5309-
return dayofweek(ts.dts.year, ts.dts.month, ts.dts.day)
53105287

53115288
cdef inline int days_in_month(pandas_datetimestruct dts) nogil:
53125289
return days_per_month_table[is_leapyear(dts.year)][dts.month -1]

0 commit comments

Comments
 (0)