1
1
from datetime import datetime
2
2
3
- from cpython.object cimport (
4
- PyObject_RichCompareBool,
5
- Py_EQ, Py_NE)
3
+ from cpython.object cimport PyObject_RichCompareBool, Py_EQ, Py_NE
6
4
7
5
from numpy cimport int64_t, import_array, ndarray
8
6
import numpy as np
@@ -14,15 +12,25 @@ from libc.string cimport strlen, memset
14
12
15
13
import cython
16
14
17
- from cpython.datetime cimport (PyDateTime_Check, PyDelta_Check, PyDate_Check,
18
- PyDateTime_IMPORT)
15
+ from cpython.datetime cimport (
16
+ PyDate_Check,
17
+ PyDateTime_Check,
18
+ PyDateTime_IMPORT,
19
+ PyDelta_Check,
20
+ )
19
21
# import datetime C API
20
22
PyDateTime_IMPORT
21
23
22
24
from pandas._libs.tslibs.np_datetime cimport (
23
- npy_datetimestruct, dtstruct_to_dt64, dt64_to_dtstruct,
24
- pandas_datetime_to_datetimestruct, check_dts_bounds,
25
- NPY_DATETIMEUNIT, NPY_FR_D, NPY_FR_us)
25
+ npy_datetimestruct,
26
+ dtstruct_to_dt64,
27
+ dt64_to_dtstruct,
28
+ pandas_datetime_to_datetimestruct,
29
+ check_dts_bounds,
30
+ NPY_DATETIMEUNIT,
31
+ NPY_FR_D,
32
+ NPY_FR_us,
33
+ )
26
34
27
35
cdef extern from " src/datetime/np_datetime.h" :
28
36
int64_t npy_datetimestruct_to_datetime(NPY_DATETIMEUNIT fr,
@@ -37,12 +45,15 @@ from pandas._libs.tslibs.timedeltas import Timedelta
37
45
from pandas._libs.tslibs.timedeltas cimport delta_to_nanoseconds
38
46
39
47
cimport pandas._libs.tslibs.ccalendar as ccalendar
40
- from pandas._libs.tslibs.ccalendar cimport (
41
- dayofweek, get_day_of_year, is_leapyear)
48
+ from pandas._libs.tslibs.ccalendar cimport dayofweek, get_day_of_year, is_leapyear
42
49
from pandas._libs.tslibs.ccalendar import MONTH_NUMBERS
43
50
from pandas._libs.tslibs.frequencies cimport (
44
- get_freq_code, get_base_alias, get_to_timestamp_base, get_freq_str,
45
- get_rule_month)
51
+ get_base_alias,
52
+ get_freq_code,
53
+ get_freq_str,
54
+ get_rule_month,
55
+ get_to_timestamp_base,
56
+ )
46
57
from pandas._libs.tslibs.parsing import parse_time_string
47
58
from pandas._libs.tslibs.resolution import Resolution
48
59
from pandas._libs.tslibs.nattype import nat_strings
@@ -55,7 +66,7 @@ from pandas._libs.tslibs.tzconversion cimport tz_convert_utc_to_tzlocal
55
66
56
67
cdef:
57
68
enum :
58
- INT32_MIN = - 2147483648
69
+ INT32_MIN = - 2 _147_483_648
59
70
60
71
61
72
ctypedef struct asfreq_info:
@@ -179,8 +190,7 @@ cdef freq_conv_func get_asfreq_func(int from_freq, int to_freq) nogil:
179
190
return < freq_conv_func> asfreq_MtoB
180
191
elif from_group == FR_WK:
181
192
return < freq_conv_func> asfreq_WtoB
182
- elif from_group in [FR_DAY, FR_HR, FR_MIN, FR_SEC,
183
- FR_MS, FR_US, FR_NS]:
193
+ elif from_group in [FR_DAY, FR_HR, FR_MIN, FR_SEC, FR_MS, FR_US, FR_NS]:
184
194
return < freq_conv_func> asfreq_DTtoB
185
195
else :
186
196
return < freq_conv_func> nofunc
@@ -289,17 +299,15 @@ cdef int64_t DtoB(npy_datetimestruct *dts, int roll_back,
289
299
return DtoB_weekday(unix_date)
290
300
291
301
292
- cdef inline int64_t upsample_daytime(int64_t ordinal,
293
- asfreq_info * af_info) nogil:
294
- if (af_info.is_end):
302
+ cdef inline int64_t upsample_daytime(int64_t ordinal, asfreq_info * af_info) nogil:
303
+ if af_info.is_end:
295
304
return (ordinal + 1 ) * af_info.intraday_conversion_factor - 1
296
305
else :
297
306
return ordinal * af_info.intraday_conversion_factor
298
307
299
308
300
- cdef inline int64_t downsample_daytime(int64_t ordinal,
301
- asfreq_info * af_info) nogil:
302
- return ordinal // (af_info.intraday_conversion_factor)
309
+ cdef inline int64_t downsample_daytime(int64_t ordinal, asfreq_info * af_info) nogil:
310
+ return ordinal // af_info.intraday_conversion_factor
303
311
304
312
305
313
cdef inline int64_t transform_via_day(int64_t ordinal,
@@ -1464,24 +1472,24 @@ def extract_freq(ndarray[object] values):
1464
1472
1465
1473
cdef:
1466
1474
Py_ssize_t i, n = len (values)
1467
- object p
1475
+ object value
1468
1476
1469
1477
for i in range (n):
1470
- p = values[i]
1478
+ value = values[i]
1471
1479
1472
1480
try :
1473
1481
# now Timestamp / NaT has freq attr
1474
- if is_period_object(p ):
1475
- return p .freq
1482
+ if is_period_object(value ):
1483
+ return value .freq
1476
1484
except AttributeError :
1477
1485
pass
1478
1486
1479
1487
raise ValueError (' freq not specified and cannot be inferred' )
1480
1488
1481
-
1482
1489
# -----------------------------------------------------------------------
1483
1490
# period helpers
1484
1491
1492
+
1485
1493
@ cython.wraparound (False )
1486
1494
@ cython.boundscheck (False )
1487
1495
cdef int64_t[:] localize_dt64arr_to_period(const int64_t[:] stamps,
0 commit comments