Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove unnecessary usage of _TSObject #17297

Merged
merged 5 commits into from
Aug 21, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 0 additions & 20 deletions pandas/_libs/period.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -120,26 +120,6 @@ initialize_daytime_conversion_factor_matrix()
# Period logic
#----------------------------------------------------------------------

cdef inline int64_t apply_mult(int64_t period_ord, int64_t mult):
"""
Get freq+multiple ordinal value from corresponding freq-only ordinal value.
For example, 5min ordinal will be 1/5th the 1min ordinal (rounding down to
integer).
"""
if mult == 1:
return period_ord

return (period_ord - 1) // mult

cdef inline int64_t remove_mult(int64_t period_ord_w_mult, int64_t mult):
"""
Get freq-only ordinal value from corresponding freq+multiple ordinal.
"""
if mult == 1:
return period_ord_w_mult

return period_ord_w_mult * mult + 1;


@cython.wraparound(False)
@cython.boundscheck(False)
Expand Down
32 changes: 0 additions & 32 deletions pandas/_libs/src/datetime.pxd
Original file line number Diff line number Diff line change
Expand Up @@ -88,11 +88,6 @@ cdef extern from "datetime/np_datetime.h":
int cmp_pandas_datetimestruct(pandas_datetimestruct *a,
pandas_datetimestruct *b)

int convert_pydatetime_to_datetimestruct(PyObject *obj,
pandas_datetimestruct *out,
PANDAS_DATETIMEUNIT *out_bestunit,
int apply_tzinfo)

npy_datetime pandas_datetimestruct_to_datetime(PANDAS_DATETIMEUNIT fr,
pandas_datetimestruct *d) nogil
void pandas_datetime_to_datetimestruct(npy_datetime val,
Expand All @@ -112,12 +107,6 @@ cdef extern from "datetime/np_datetime_strings.h":
PANDAS_DATETIMEUNIT *out_bestunit,
npy_bool *out_special)

int make_iso_8601_datetime(pandas_datetimestruct *dts, char *outstr, int outlen,
int local, PANDAS_DATETIMEUNIT base, int tzoffset,
NPY_CASTING casting)

int get_datetime_iso_8601_strlen(int local, PANDAS_DATETIMEUNIT base)

# int parse_python_string(object obj, pandas_datetimestruct *out) except -1


Expand Down Expand Up @@ -152,16 +141,6 @@ cdef inline int _cstring_to_dts(char *val, int length,
return result


cdef inline object _datetime64_to_datetime(int64_t val):
cdef pandas_datetimestruct dts
pandas_datetime_to_datetimestruct(val, PANDAS_FR_ns, &dts)
return _dts_to_pydatetime(&dts)

cdef inline object _dts_to_pydatetime(pandas_datetimestruct *dts):
return <object> PyDateTime_FromDateAndTime(dts.year, dts.month,
dts.day, dts.hour,
dts.min, dts.sec, dts.us)

cdef inline int64_t _pydatetime_to_dts(object val, pandas_datetimestruct *dts):
dts.year = PyDateTime_GET_YEAR(val)
dts.month = PyDateTime_GET_MONTH(val)
Expand All @@ -173,17 +152,6 @@ cdef inline int64_t _pydatetime_to_dts(object val, pandas_datetimestruct *dts):
dts.ps = dts.as = 0
return pandas_datetimestruct_to_datetime(PANDAS_FR_ns, dts)

cdef inline int64_t _dtlike_to_datetime64(object val,
pandas_datetimestruct *dts):
dts.year = val.year
dts.month = val.month
dts.day = val.day
dts.hour = val.hour
dts.min = val.minute
dts.sec = val.second
dts.us = val.microsecond
dts.ps = dts.as = 0
return pandas_datetimestruct_to_datetime(PANDAS_FR_ns, dts)

cdef inline int64_t _date_to_datetime64(object val,
pandas_datetimestruct *dts):
Expand Down
35 changes: 6 additions & 29 deletions pandas/_libs/tslib.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -705,7 +705,6 @@ class Timestamp(_Timestamp):
pandas_datetimestruct dts
int64_t value
object _tzinfo, result, k, v
_TSObject ts

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


cdef inline bint _is_multiple(int64_t us, int64_t mult):
return us % mult == 0


cdef inline bint _cmp_scalar(int64_t lhs, int64_t rhs, int op) except -1:
if op == Py_EQ:
return lhs == rhs
Expand Down Expand Up @@ -4694,7 +4689,6 @@ def get_date_field(ndarray[int64_t] dtindex, object field):
field and return an array of these values.
"""
cdef:
_TSObject ts
Py_ssize_t i, count = 0
ndarray[int32_t] out
ndarray[int32_t, ndim=2] _month_offset
Expand Down Expand Up @@ -4876,7 +4870,6 @@ def get_start_end_field(ndarray[int64_t] dtindex, object field,
(defined by frequency).
"""
cdef:
_TSObject ts
Py_ssize_t i
int count = 0
bint is_business = 0
Expand Down Expand Up @@ -4925,9 +4918,8 @@ def get_start_end_field(ndarray[int64_t] dtindex, object field,

pandas_datetime_to_datetimestruct(
dtindex[i], PANDAS_FR_ns, &dts)
ts = convert_to_tsobject(dtindex[i], None, None, 0, 0)
dom = dts.day
dow = ts_dayofweek(ts)
dow = dayofweek(dts.year, dts.month, dts.day)

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

pandas_datetime_to_datetimestruct(
dtindex[i], PANDAS_FR_ns, &dts)
ts = convert_to_tsobject(dtindex[i], None, None, 0, 0)
isleap = is_leapyear(dts.year)
mo_off = _month_offset[isleap, dts.month - 1]
dom = dts.day
doy = mo_off + dom
ldom = _month_offset[isleap, dts.month]
dow = ts_dayofweek(ts)
dow = dayofweek(dts.year, dts.month, dts.day)

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

pandas_datetime_to_datetimestruct(
dtindex[i], PANDAS_FR_ns, &dts)
ts = convert_to_tsobject(dtindex[i], None, None, 0, 0)
dom = dts.day
dow = ts_dayofweek(ts)
dow = dayofweek(dts.year, dts.month, dts.day)

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

pandas_datetime_to_datetimestruct(
dtindex[i], PANDAS_FR_ns, &dts)
ts = convert_to_tsobject(dtindex[i], None, None, 0, 0)
isleap = is_leapyear(dts.year)
mo_off = _month_offset[isleap, dts.month - 1]
dom = dts.day
doy = mo_off + dom
ldom = _month_offset[isleap, dts.month]
dow = ts_dayofweek(ts)
dow = dayofweek(dts.year, dts.month, dts.day)

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

pandas_datetime_to_datetimestruct(
dtindex[i], PANDAS_FR_ns, &dts)
ts = convert_to_tsobject(dtindex[i], None, None, 0, 0)
dom = dts.day
dow = ts_dayofweek(ts)
dow = dayofweek(dts.year, dts.month, dts.day)

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

pandas_datetime_to_datetimestruct(
dtindex[i], PANDAS_FR_ns, &dts)
ts = convert_to_tsobject(dtindex[i], None, None, 0, 0)
isleap = is_leapyear(dts.year)
dom = dts.day
mo_off = _month_offset[isleap, dts.month - 1]
doy = mo_off + dom
dow = ts_dayofweek(ts)
dow = dayofweek(dts.year, dts.month, dts.day)
ldom = _month_offset[isleap, dts.month]

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

pandas_datetime_to_datetimestruct(
dtindex[i], PANDAS_FR_ns, &dts)
ts = convert_to_tsobject(dtindex[i], None, None, 0, 0)
isleap = is_leapyear(dts.year)
mo_off = _month_offset[isleap, dts.month - 1]
dom = dts.day
Expand All @@ -5117,7 +5103,6 @@ def get_date_name_field(ndarray[int64_t] dtindex, object field):
name based on requested field (e.g. weekday_name)
"""
cdef:
_TSObject ts
Py_ssize_t i, count = 0
ndarray[object] out
pandas_datetimestruct dts
Expand All @@ -5143,10 +5128,6 @@ def get_date_name_field(ndarray[int64_t] dtindex, object field):
raise ValueError("Field %s not supported" % field)


cdef inline int m8_weekday(int64_t val):
ts = convert_to_tsobject(val, None, None, 0, 0)
return ts_dayofweek(ts)

cdef int64_t DAY_NS = 86400000000000LL


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

if tz is not None:
tso = _TSObject()
tz = maybe_get_tz(tz)
result = _normalize_local(stamps, tz)
else:
Expand Down Expand Up @@ -5305,8 +5284,6 @@ def monthrange(int64_t year, int64_t month):

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

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

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