Skip to content

Commit 4ffcdf8

Browse files
ShaharNavehroberthdevries
authored andcommitted
CLN: some code cleanups in pandas/_libs/ (pandas-dev#31808)
* CLN: some code cleanups in pandas/_libs/ * Reverted "bint" REF: https://github.com/pandas-dev/pandas/pull/31808/files#r376721172 * Added trailing comma to imports REF: https://github.com/pandas-dev/pandas/pull/31808/files#r378523656 * Reverted bad code * Lint issues * Reverted wrong code REF: pandas-dev#31808 (comment) * Removed parens REF: pandas-dev#31808 (comment) * "in fmt" in prev line REF: pandas-dev#31808 (comment)
1 parent 1b2cb6a commit 4ffcdf8

File tree

8 files changed

+129
-63
lines changed

8 files changed

+129
-63
lines changed

pandas/_libs/algos.pyx

+24-7
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,30 @@ from libc.math cimport fabs, sqrt
77

88
import numpy as np
99
cimport numpy as cnp
10-
from numpy cimport (ndarray,
11-
NPY_INT64, NPY_INT32, NPY_INT16, NPY_INT8,
12-
NPY_UINT64, NPY_UINT32, NPY_UINT16, NPY_UINT8,
13-
NPY_FLOAT32, NPY_FLOAT64,
14-
NPY_OBJECT,
15-
int8_t, int16_t, int32_t, int64_t, uint8_t, uint16_t,
16-
uint32_t, uint64_t, float32_t, float64_t)
10+
from numpy cimport (
11+
NPY_FLOAT32,
12+
NPY_FLOAT64,
13+
NPY_INT8,
14+
NPY_INT16,
15+
NPY_INT32,
16+
NPY_INT64,
17+
NPY_OBJECT,
18+
NPY_UINT8,
19+
NPY_UINT16,
20+
NPY_UINT32,
21+
NPY_UINT64,
22+
float32_t,
23+
float64_t,
24+
int8_t,
25+
int16_t,
26+
int32_t,
27+
int64_t,
28+
ndarray,
29+
uint8_t,
30+
uint16_t,
31+
uint32_t,
32+
uint64_t,
33+
)
1734
cnp.import_array()
1835

1936

pandas/_libs/join.pyx

+16-4
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,25 @@ from cython import Py_ssize_t
33

44
import numpy as np
55
cimport numpy as cnp
6-
from numpy cimport (ndarray,
7-
int8_t, int16_t, int32_t, int64_t, uint8_t, uint16_t,
8-
uint32_t, uint64_t, float32_t, float64_t)
6+
from numpy cimport (
7+
float32_t,
8+
float64_t,
9+
int8_t,
10+
int16_t,
11+
int32_t,
12+
int64_t,
13+
ndarray,
14+
uint8_t,
15+
uint16_t,
16+
uint32_t,
17+
uint64_t,
18+
)
919
cnp.import_array()
1020

1121
from pandas._libs.algos import (
12-
groupsort_indexer, ensure_platform_int, take_1d_int64_int64
22+
ensure_platform_int,
23+
groupsort_indexer,
24+
take_1d_int64_int64,
1325
)
1426

1527

pandas/_libs/lib.pyx

+32-11
Original file line numberDiff line numberDiff line change
@@ -15,18 +15,33 @@ from cpython.iterator cimport PyIter_Check
1515
from cpython.sequence cimport PySequence_Check
1616
from cpython.number cimport PyNumber_Check
1717

18-
from cpython.datetime cimport (PyDateTime_Check, PyDate_Check,
19-
PyTime_Check, PyDelta_Check,
20-
PyDateTime_IMPORT)
18+
from cpython.datetime cimport (
19+
PyDateTime_Check,
20+
PyDate_Check,
21+
PyTime_Check,
22+
PyDelta_Check,
23+
PyDateTime_IMPORT,
24+
)
2125
PyDateTime_IMPORT
2226

2327
import numpy as np
2428
cimport numpy as cnp
25-
from numpy cimport (ndarray, PyArray_Check, PyArray_GETITEM,
26-
PyArray_ITER_DATA, PyArray_ITER_NEXT, PyArray_IterNew,
27-
flatiter, NPY_OBJECT,
28-
int64_t, float32_t, float64_t,
29-
uint8_t, uint64_t, complex128_t)
29+
from numpy cimport (
30+
NPY_OBJECT,
31+
PyArray_Check,
32+
PyArray_GETITEM,
33+
PyArray_ITER_DATA,
34+
PyArray_ITER_NEXT,
35+
PyArray_IterNew,
36+
complex128_t,
37+
flatiter,
38+
float32_t,
39+
float64_t,
40+
int64_t,
41+
ndarray,
42+
uint8_t,
43+
uint64_t,
44+
)
3045
cnp.import_array()
3146

3247
cdef extern from "numpy/arrayobject.h":
@@ -60,7 +75,12 @@ from pandas._libs.tslibs.timedeltas cimport convert_to_timedelta64
6075
from pandas._libs.tslibs.timezones cimport get_timezone, tz_compare
6176

6277
from pandas._libs.missing cimport (
63-
checknull, isnaobj, is_null_datetime64, is_null_timedelta64, is_null_period, C_NA
78+
checknull,
79+
isnaobj,
80+
is_null_datetime64,
81+
is_null_timedelta64,
82+
is_null_period,
83+
C_NA,
6484
)
6585

6686

@@ -246,7 +266,7 @@ def item_from_zerodim(val: object) -> object:
246266

247267
@cython.wraparound(False)
248268
@cython.boundscheck(False)
249-
def fast_unique_multiple(list arrays, sort: bool=True):
269+
def fast_unique_multiple(list arrays, sort: bool = True):
250270
"""
251271
Generate a list of unique values from a list of arrays.
252272
@@ -277,6 +297,7 @@ def fast_unique_multiple(list arrays, sort: bool=True):
277297
if val not in table:
278298
table[val] = stub
279299
uniques.append(val)
300+
280301
if sort is None:
281302
try:
282303
uniques.sort()
@@ -289,7 +310,7 @@ def fast_unique_multiple(list arrays, sort: bool=True):
289310

290311
@cython.wraparound(False)
291312
@cython.boundscheck(False)
292-
def fast_unique_multiple_list(lists: list, sort: bool=True) -> list:
313+
def fast_unique_multiple_list(lists: list, sort: bool = True) -> list:
293314
cdef:
294315
list buf
295316
Py_ssize_t k = len(lists)

pandas/_libs/reshape.pyx

+14-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,20 @@
11
import cython
22
from cython import Py_ssize_t
33

4-
from numpy cimport (int8_t, int16_t, int32_t, int64_t, uint8_t, uint16_t,
5-
uint32_t, uint64_t, float32_t, float64_t, ndarray)
4+
from numpy cimport (
5+
float32_t,
6+
float64_t,
7+
int8_t,
8+
int16_t,
9+
int32_t,
10+
int64_t,
11+
ndarray,
12+
uint8_t,
13+
uint16_t,
14+
uint32_t,
15+
uint64_t,
16+
)
17+
618
cimport numpy as cnp
719
import numpy as np
820
from pandas._libs.lib cimport c_is_list_like

pandas/_libs/sparse.pyx

+2-2
Original file line numberDiff line numberDiff line change
@@ -448,7 +448,7 @@ cdef class BlockIndex(SparseIndex):
448448
ylen = y.blengths
449449

450450
# block may be split, but can't exceed original len / 2 + 1
451-
max_len = int(min(self.length, y.length) / 2) + 1
451+
max_len = min(self.length, y.length) // 2 + 1
452452
out_bloc = np.empty(max_len, dtype=np.int32)
453453
out_blen = np.empty(max_len, dtype=np.int32)
454454

@@ -672,7 +672,7 @@ cdef class BlockUnion(BlockMerge):
672672
ystart = self.ystart
673673
yend = self.yend
674674

675-
max_len = int(min(self.x.length, self.y.length) / 2) + 1
675+
max_len = min(self.x.length, self.y.length) // 2 + 1
676676
out_bloc = np.empty(max_len, dtype=np.int32)
677677
out_blen = np.empty(max_len, dtype=np.int32)
678678

pandas/_libs/tslibs/period.pyx

+34-26
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
from datetime import datetime
22

3-
from cpython.object cimport (
4-
PyObject_RichCompareBool,
5-
Py_EQ, Py_NE)
3+
from cpython.object cimport PyObject_RichCompareBool, Py_EQ, Py_NE
64

75
from numpy cimport int64_t, import_array, ndarray
86
import numpy as np
@@ -14,15 +12,25 @@ from libc.string cimport strlen, memset
1412

1513
import cython
1614

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+
)
1921
# import datetime C API
2022
PyDateTime_IMPORT
2123

2224
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+
)
2634

2735
cdef extern from "src/datetime/np_datetime.h":
2836
int64_t npy_datetimestruct_to_datetime(NPY_DATETIMEUNIT fr,
@@ -37,12 +45,15 @@ from pandas._libs.tslibs.timedeltas import Timedelta
3745
from pandas._libs.tslibs.timedeltas cimport delta_to_nanoseconds
3846

3947
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
4249
from pandas._libs.tslibs.ccalendar import MONTH_NUMBERS
4350
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+
)
4657
from pandas._libs.tslibs.parsing import parse_time_string
4758
from pandas._libs.tslibs.resolution import Resolution
4859
from pandas._libs.tslibs.nattype import nat_strings
@@ -55,7 +66,7 @@ from pandas._libs.tslibs.tzconversion cimport tz_convert_utc_to_tzlocal
5566

5667
cdef:
5768
enum:
58-
INT32_MIN = -2147483648
69+
INT32_MIN = -2_147_483_648
5970

6071

6172
ctypedef struct asfreq_info:
@@ -179,8 +190,7 @@ cdef freq_conv_func get_asfreq_func(int from_freq, int to_freq) nogil:
179190
return <freq_conv_func>asfreq_MtoB
180191
elif from_group == FR_WK:
181192
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]:
184194
return <freq_conv_func>asfreq_DTtoB
185195
else:
186196
return <freq_conv_func>nofunc
@@ -289,17 +299,15 @@ cdef int64_t DtoB(npy_datetimestruct *dts, int roll_back,
289299
return DtoB_weekday(unix_date)
290300

291301

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:
295304
return (ordinal + 1) * af_info.intraday_conversion_factor - 1
296305
else:
297306
return ordinal * af_info.intraday_conversion_factor
298307

299308

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
303311

304312

305313
cdef inline int64_t transform_via_day(int64_t ordinal,
@@ -1464,24 +1472,24 @@ def extract_freq(ndarray[object] values):
14641472

14651473
cdef:
14661474
Py_ssize_t i, n = len(values)
1467-
object p
1475+
object value
14681476

14691477
for i in range(n):
1470-
p = values[i]
1478+
value = values[i]
14711479

14721480
try:
14731481
# 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
14761484
except AttributeError:
14771485
pass
14781486

14791487
raise ValueError('freq not specified and cannot be inferred')
14801488

1481-
14821489
# -----------------------------------------------------------------------
14831490
# period helpers
14841491

1492+
14851493
@cython.wraparound(False)
14861494
@cython.boundscheck(False)
14871495
cdef int64_t[:] localize_dt64arr_to_period(const int64_t[:] stamps,

pandas/_libs/tslibs/strptime.pyx

+5-9
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,7 @@ cdef dict _parse_code_table = {'y': 0,
4545
'u': 22}
4646

4747

48-
def array_strptime(object[:] values, object fmt,
49-
bint exact=True, errors='raise'):
48+
def array_strptime(object[:] values, object fmt, bint exact=True, errors='raise'):
5049
"""
5150
Calculates the datetime structs represented by the passed array of strings
5251
@@ -78,12 +77,9 @@ def array_strptime(object[:] values, object fmt,
7877
if fmt is not None:
7978
if '%W' in fmt or '%U' in fmt:
8079
if '%Y' not in fmt and '%y' not in fmt:
81-
raise ValueError("Cannot use '%W' or '%U' without "
82-
"day and year")
83-
if ('%A' not in fmt and '%a' not in fmt and '%w' not
84-
in fmt):
85-
raise ValueError("Cannot use '%W' or '%U' without "
86-
"day and year")
80+
raise ValueError("Cannot use '%W' or '%U' without day and year")
81+
if '%A' not in fmt and '%a' not in fmt and '%w' not in fmt:
82+
raise ValueError("Cannot use '%W' or '%U' without day and year")
8783
elif '%Z' in fmt and '%z' in fmt:
8884
raise ValueError("Cannot parse both %Z and %z")
8985

@@ -749,6 +745,6 @@ cdef parse_timezone_directive(str z):
749745
microseconds = int(gmtoff_remainder + gmtoff_remainder_padding)
750746

751747
total_minutes = ((hours * 60) + minutes + (seconds // 60) +
752-
(microseconds // 60000000))
748+
(microseconds // 60_000_000))
753749
total_minutes = -total_minutes if z.startswith("-") else total_minutes
754750
return pytz.FixedOffset(total_minutes)

pandas/_libs/tslibs/timezones.pyx

+2-2
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ cdef int64_t[:] unbox_utcoffsets(object transinfo):
196196
arr = np.empty(sz, dtype='i8')
197197

198198
for i in range(sz):
199-
arr[i] = int(transinfo[i][0].total_seconds()) * 1000000000
199+
arr[i] = int(transinfo[i][0].total_seconds()) * 1_000_000_000
200200

201201
return arr
202202

@@ -217,7 +217,7 @@ cdef object get_dst_info(object tz):
217217
if cache_key is None:
218218
# e.g. pytz.FixedOffset, matplotlib.dates._UTC,
219219
# psycopg2.tz.FixedOffsetTimezone
220-
num = int(get_utcoffset(tz, None).total_seconds()) * 1000000000
220+
num = int(get_utcoffset(tz, None).total_seconds()) * 1_000_000_000
221221
return (np.array([NPY_NAT + 1], dtype=np.int64),
222222
np.array([num], dtype=np.int64),
223223
None)

0 commit comments

Comments
 (0)