Skip to content

Commit 52bcc36

Browse files
authored
CLN: assorted cleanups in cython (#46861)
1 parent 84aefb9 commit 52bcc36

31 files changed

+114
-129
lines changed

pandas/_libs/algos.pyx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
import cython
2-
from cython import Py_ssize_t
3-
1+
cimport cython
2+
from cython cimport Py_ssize_t
43
from libc.math cimport (
54
fabs,
65
sqrt,

pandas/_libs/groupby.pyx

Lines changed: 12 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
import cython
2-
from cython import Py_ssize_t
3-
4-
from cython cimport floating
1+
cimport cython
2+
from cython cimport (
3+
Py_ssize_t,
4+
floating,
5+
)
56
from libc.stdlib cimport (
67
free,
78
malloc,
@@ -268,7 +269,6 @@ def group_cumsum(
268269
out[i, j] = na_val
269270
continue
270271

271-
272272
if isna_entry:
273273
out[i, j] = na_val
274274
if not skipna:
@@ -1220,7 +1220,7 @@ def group_nth(
12201220
if nobs[lab, j] == rank:
12211221
resx[lab, j] = val
12221222

1223-
# TODO: de-dup this whoel block with group_last?
1223+
# TODO: de-dup this whole block with group_last?
12241224
for i in range(ncounts):
12251225
for j in range(K):
12261226
if nobs[i, j] < min_count:
@@ -1232,6 +1232,9 @@ def group_nth(
12321232
# set a placeholder value in out[i, j].
12331233
if uses_mask:
12341234
result_mask[i, j] = True
1235+
# set out[i, j] to 0 to be deterministic, as
1236+
# it was initialized with np.empty. Also ensures
1237+
# we can downcast out if appropriate.
12351238
out[i, j] = 0
12361239
elif numeric_object_t is float32_t or numeric_object_t is float64_t:
12371240
out[i, j] = NAN
@@ -1369,7 +1372,7 @@ cdef group_min_max(
13691372
"""
13701373
cdef:
13711374
Py_ssize_t i, j, N, K, lab, ngroups = len(counts)
1372-
numeric_t val, nan_val
1375+
numeric_t val
13731376
ndarray[numeric_t, ndim=2] group_min_or_max
13741377
int64_t[:, ::1] nobs
13751378
bint uses_mask = mask is not None
@@ -1386,20 +1389,6 @@ cdef group_min_max(
13861389
group_min_or_max = np.empty_like(out)
13871390
group_min_or_max[:] = _get_min_or_max(<numeric_t>0, compute_max, is_datetimelike)
13881391

1389-
# NB: We do not define nan_val because there is no such thing
1390-
# for uint64_t. We carefully avoid having to reference it in this
1391-
# case.
1392-
if numeric_t is int64_t:
1393-
nan_val = NPY_NAT
1394-
elif numeric_t is int32_t:
1395-
nan_val = util.INT32_MIN
1396-
elif numeric_t is int16_t:
1397-
nan_val = util.INT16_MIN
1398-
elif numeric_t is int8_t:
1399-
nan_val = util.INT8_MIN
1400-
elif numeric_t is float64_t or numeric_t is float32_t:
1401-
nan_val = NAN
1402-
14031392
N, K = (<object>values).shape
14041393

14051394
with nogil:
@@ -1442,11 +1431,11 @@ cdef group_min_max(
14421431
# we can downcast out if appropriate.
14431432
out[i, j] = 0
14441433
elif numeric_t is float32_t or numeric_t is float64_t:
1445-
out[i, j] = nan_val
1434+
out[i, j] = NAN
14461435
elif numeric_t is int64_t:
14471436
# Per above, this is a placeholder in
14481437
# non-is_datetimelike cases.
1449-
out[i, j] = nan_val
1438+
out[i, j] = NPY_NAT
14501439
else:
14511440
# placeholder, see above
14521441
out[i, j] = 0

pandas/_libs/hashing.pyx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
# Translated from the reference implementation
22
# at https://github.com/veorq/SipHash
33

4-
import cython
5-
4+
cimport cython
65
from libc.stdlib cimport (
76
free,
87
malloc,

pandas/_libs/internals.pyx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
from collections import defaultdict
22

3-
import cython
4-
from cython import Py_ssize_t
5-
3+
cimport cython
64
from cpython.slice cimport PySlice_GetIndicesEx
5+
from cython cimport Py_ssize_t
76

87

98
cdef extern from "Python.h":

pandas/_libs/interval.pyx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ from cpython.datetime cimport (
1111

1212
import_datetime()
1313

14+
cimport cython
1415
from cpython.object cimport (
1516
Py_EQ,
1617
Py_GE,
@@ -20,9 +21,8 @@ from cpython.object cimport (
2021
Py_NE,
2122
PyObject_RichCompare,
2223
)
24+
from cython cimport Py_ssize_t
2325

24-
import cython
25-
from cython import Py_ssize_t
2626
import numpy as np
2727

2828
cimport numpy as cnp

pandas/_libs/join.pyx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import cython
2-
from cython import Py_ssize_t
1+
cimport cython
2+
from cython cimport Py_ssize_t
33
import numpy as np
44

55
cimport numpy as cnp
@@ -233,6 +233,8 @@ cdef void _get_result_indexer(intp_t[::1] sorter, intp_t[::1] indexer) nogil:
233233
indexer[:] = -1
234234

235235

236+
@cython.wraparound(False)
237+
@cython.boundscheck(False)
236238
def ffill_indexer(const intp_t[:] indexer) -> np.ndarray:
237239
cdef:
238240
Py_ssize_t i, n = len(indexer)

pandas/_libs/lib.pyx

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,7 @@ from decimal import Decimal
33
from enum import Enum
44
import warnings
55

6-
import cython
7-
from cython import Py_ssize_t
8-
6+
cimport cython
97
from cpython.datetime cimport (
108
PyDate_Check,
119
PyDateTime_Check,
@@ -25,7 +23,10 @@ from cpython.tuple cimport (
2523
PyTuple_New,
2624
PyTuple_SET_ITEM,
2725
)
28-
from cython cimport floating
26+
from cython cimport (
27+
Py_ssize_t,
28+
floating,
29+
)
2930

3031
import_datetime()
3132

pandas/_libs/missing.pyx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ from decimal import Decimal
22
import numbers
33
from sys import maxsize
44

5-
import cython
6-
from cython import Py_ssize_t
5+
cimport cython
6+
from cython cimport Py_ssize_t
77
import numpy as np
88

99
cimport numpy as cnp

pandas/_libs/ops.pyx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import operator
22

3+
cimport cython
34
from cpython.object cimport (
45
Py_EQ,
56
Py_GE,
@@ -9,9 +10,8 @@ from cpython.object cimport (
910
Py_NE,
1011
PyObject_RichCompareBool,
1112
)
13+
from cython cimport Py_ssize_t
1214

13-
import cython
14-
from cython import Py_ssize_t
1515
import numpy as np
1616

1717
from numpy cimport (

pandas/_libs/parsers.pyx

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,7 @@ import sys
1212
import time
1313
import warnings
1414

15-
from libc.stdlib cimport free
16-
from libc.string cimport (
17-
strcasecmp,
18-
strlen,
19-
strncpy,
20-
)
21-
22-
import cython
23-
from cython import Py_ssize_t
24-
15+
cimport cython
2516
from cpython.bytes cimport (
2617
PyBytes_AsString,
2718
PyBytes_FromString,
@@ -40,6 +31,13 @@ from cpython.unicode cimport (
4031
PyUnicode_Decode,
4132
PyUnicode_DecodeUTF8,
4233
)
34+
from cython cimport Py_ssize_t
35+
from libc.stdlib cimport free
36+
from libc.string cimport (
37+
strcasecmp,
38+
strlen,
39+
strncpy,
40+
)
4341

4442

4543
cdef extern from "Python.h":

0 commit comments

Comments
 (0)