Skip to content

Commit 698a69e

Browse files
authored
CLN: cython imports (#34176)
1 parent 1f1735e commit 698a69e

14 files changed

+35
-35
lines changed

pandas/_libs/groupby.pyx

+1-3
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,9 @@ cimport numpy as cnp
99
from numpy cimport (ndarray,
1010
int8_t, int16_t, int32_t, int64_t, uint8_t, uint16_t,
1111
uint32_t, uint64_t, float32_t, float64_t, complex64_t, complex128_t)
12+
from numpy.math cimport NAN
1213
cnp.import_array()
1314

14-
cdef extern from "numpy/npy_math.h":
15-
float64_t NAN "NPY_NAN"
16-
1715
from pandas._libs.util cimport numeric, get_nat
1816

1917
from pandas._libs.algos cimport (swap, TiebreakEnumType, TIEBREAK_AVERAGE,

pandas/_libs/hashtable.pyx

+2-3
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,9 @@ from libc.stdlib cimport malloc, free
88
import numpy as np
99
cimport numpy as cnp
1010
from numpy cimport ndarray, uint8_t, uint32_t, float64_t
11+
from numpy.math cimport NAN
1112
cnp.import_array()
1213

13-
cdef extern from "numpy/npy_math.h":
14-
float64_t NAN "NPY_NAN"
1514

1615
from pandas._libs.khash cimport (
1716
khiter_t,
@@ -54,7 +53,7 @@ from pandas._libs.khash cimport (
5453
)
5554

5655

57-
cimport pandas._libs.util as util
56+
from pandas._libs cimport util
5857

5958
from pandas._libs.missing cimport checknull
6059

pandas/_libs/index.pyx

+4-5
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,10 @@ from numpy cimport (
1919
cnp.import_array()
2020

2121

22-
cimport pandas._libs.util as util
22+
from pandas._libs cimport util
2323

24-
from pandas._libs.tslibs import Period, Timedelta
2524
from pandas._libs.tslibs.nattype cimport c_NaT as NaT
26-
from pandas._libs.tslibs.base cimport ABCTimestamp
25+
from pandas._libs.tslibs.base cimport ABCTimestamp, ABCTimedelta, ABCPeriod
2726

2827
from pandas._libs.hashtable cimport HashTable
2928

@@ -470,7 +469,7 @@ cdef class TimedeltaEngine(DatetimeEngine):
470469
return 'm8[ns]'
471470

472471
cdef int64_t _unbox_scalar(self, scalar) except? -1:
473-
if not (isinstance(scalar, Timedelta) or scalar is NaT):
472+
if not (isinstance(scalar, ABCTimedelta) or scalar is NaT):
474473
raise TypeError(scalar)
475474
return scalar.value
476475

@@ -480,7 +479,7 @@ cdef class PeriodEngine(Int64Engine):
480479
cdef int64_t _unbox_scalar(self, scalar) except? -1:
481480
if scalar is NaT:
482481
return scalar.value
483-
if isinstance(scalar, Period):
482+
if isinstance(scalar, ABCPeriod):
484483
# NB: we assume that we have the correct freq here.
485484
return scalar.ordinal
486485
raise TypeError(scalar)

pandas/_libs/internals.pyx

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
import cython
21
from collections import defaultdict
2+
3+
import cython
34
from cython import Py_ssize_t
45

56
from cpython.slice cimport PySlice_GetIndicesEx

pandas/_libs/interval.pyx

+5-6
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ from numpy cimport (
3333
cnp.import_array()
3434

3535

36-
cimport pandas._libs.util as util
36+
from pandas._libs cimport util
3737

3838
from pandas._libs.hashtable cimport Int64Vector
3939
from pandas._libs.tslibs.util cimport (
@@ -42,8 +42,7 @@ from pandas._libs.tslibs.util cimport (
4242
is_timedelta64_object,
4343
)
4444

45-
from pandas._libs.tslibs import Timestamp
46-
from pandas._libs.tslibs.timedeltas import Timedelta
45+
from pandas._libs.tslibs.base cimport ABCTimestamp, ABCTimedelta
4746
from pandas._libs.tslibs.timezones cimport tz_compare
4847

4948

@@ -329,7 +328,7 @@ cdef class Interval(IntervalMixin):
329328
raise ValueError(f"invalid option for 'closed': {closed}")
330329
if not left <= right:
331330
raise ValueError("left side of interval must be <= right side")
332-
if (isinstance(left, Timestamp) and
331+
if (isinstance(left, ABCTimestamp) and
333332
not tz_compare(left.tzinfo, right.tzinfo)):
334333
# GH 18538
335334
raise ValueError("left and right must have the same time zone, got "
@@ -341,7 +340,7 @@ cdef class Interval(IntervalMixin):
341340
def _validate_endpoint(self, endpoint):
342341
# GH 23013
343342
if not (is_integer_object(endpoint) or is_float_object(endpoint) or
344-
isinstance(endpoint, (Timestamp, Timedelta))):
343+
isinstance(endpoint, (ABCTimestamp, ABCTimedelta))):
345344
raise ValueError("Only numeric, Timestamp and Timedelta endpoints "
346345
"are allowed when constructing an Interval.")
347346

@@ -371,7 +370,7 @@ cdef class Interval(IntervalMixin):
371370
right = self.right
372371

373372
# TODO: need more general formatting methodology here
374-
if isinstance(left, Timestamp) and isinstance(right, Timestamp):
373+
if isinstance(left, ABCTimestamp) and isinstance(right, ABCTimestamp):
375374
left = left._short_repr
376375
right = right._short_repr
377376

pandas/_libs/lib.pyx

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
from collections import abc
22
from decimal import Decimal
3-
43
import warnings
54

65
import cython
@@ -63,7 +62,7 @@ cdef extern from "numpy/arrayobject.h":
6362
cdef extern from "src/parse_helper.h":
6463
int floatify(object, float64_t *result, int *maybe_int) except -1
6564

66-
cimport pandas._libs.util as util
65+
from pandas._libs cimport util
6766
from pandas._libs.util cimport is_nan, UINT64_MAX, INT64_MAX, INT64_MIN
6867

6968
from pandas._libs.tslib import array_to_datetime

pandas/_libs/missing.pyx

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ cimport numpy as cnp
88
from numpy cimport ndarray, int64_t, uint8_t, float64_t
99
cnp.import_array()
1010

11-
cimport pandas._libs.util as util
11+
from pandas._libs cimport util
1212

1313

1414
from pandas._libs.tslibs.np_datetime cimport get_datetime64_value, get_timedelta64_value

pandas/_libs/parsers.pyx

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ cimport numpy as cnp
3434
from numpy cimport ndarray, uint8_t, uint64_t, int64_t, float64_t
3535
cnp.import_array()
3636

37-
cimport pandas._libs.util as util
37+
from pandas._libs cimport util
3838
from pandas._libs.util cimport UINT64_MAX, INT64_MAX, INT64_MIN
3939
import pandas._libs.lib as lib
4040

pandas/_libs/reduction.pyx

+2-2
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ from numpy cimport (ndarray,
1414
flatiter)
1515
cnp.import_array()
1616

17-
cimport pandas._libs.util as util
17+
from pandas._libs cimport util
1818
from pandas._libs.lib import maybe_convert_objects, is_scalar
1919

2020

@@ -603,7 +603,7 @@ cdef class BlockSlider:
603603
arr.shape[1] = 0
604604

605605

606-
def compute_reduction(arr: np.ndarray, f, axis: int = 0, dummy=None, labels=None):
606+
def compute_reduction(arr: ndarray, f, axis: int = 0, dummy=None, labels=None):
607607
"""
608608
609609
Parameters

pandas/_libs/reshape.pyx

+3-2
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,12 @@ from numpy cimport (
1515
uint64_t,
1616
)
1717

18-
cimport numpy as cnp
1918
import numpy as np
20-
from pandas._libs.lib cimport c_is_list_like
19+
cimport numpy as cnp
2120
cnp.import_array()
2221

22+
from pandas._libs.lib cimport c_is_list_like
23+
2324
ctypedef fused reshape_t:
2425
uint8_t
2526
uint16_t

pandas/_libs/testing.pyx

+6-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
11
import numpy as np
2+
from numpy cimport import_array
3+
import_array()
4+
5+
from pandas._libs.util cimport is_array
26

37
from pandas.core.dtypes.missing import isna, array_equivalent
48
from pandas.core.dtypes.common import is_dtype_equal
@@ -116,8 +120,8 @@ cpdef assert_almost_equal(a, b,
116120
assert a == b, f"{a} != {b}"
117121
return True
118122

119-
a_is_ndarray = isinstance(a, np.ndarray)
120-
b_is_ndarray = isinstance(b, np.ndarray)
123+
a_is_ndarray = is_array(a)
124+
b_is_ndarray = is_array(b)
121125

122126
if obj is None:
123127
if a_is_ndarray or b_is_ndarray:

pandas/_libs/tslibs/offsets.pyx

+2-2
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ cnp.import_array()
1919

2020

2121
from pandas._libs.tslibs cimport util
22-
from pandas._libs.tslibs.util cimport is_integer_object
22+
from pandas._libs.tslibs.util cimport is_integer_object, is_datetime64_object
2323

2424
from pandas._libs.tslibs.base cimport ABCTick, ABCTimestamp, is_tick_object
2525

@@ -161,7 +161,7 @@ def apply_wraps(func):
161161
elif isinstance(other, (timedelta, BaseOffset)):
162162
# timedelta path
163163
return func(self, other)
164-
elif isinstance(other, (np.datetime64, datetime, date)):
164+
elif isinstance(other, (datetime, date)) or is_datetime64_object(other):
165165
other = Timestamp(other)
166166
else:
167167
# This will end up returning NotImplemented back in __add__

pandas/_libs/tslibs/strptime.pyx

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,15 @@ import locale
55
import calendar
66
import re
77

8+
from cpython cimport datetime
9+
810
from _thread import allocate_lock as _thread_allocate_lock
911

1012
import pytz
1113

1214
import numpy as np
1315
from numpy cimport int64_t
1416

15-
cimport cpython.datetime as datetime
16-
1717
from pandas._libs.tslibs.np_datetime cimport (
1818
check_dts_bounds, dtstruct_to_dt64, npy_datetimestruct)
1919

pandas/_libs/tslibs/timestamps.pyx

+3-3
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ from pandas._libs.tslibs.util cimport (
2525
is_timedelta64_object, is_array,
2626
)
2727

28-
from pandas._libs.tslibs.base cimport ABCTimestamp, is_tick_object
28+
from pandas._libs.tslibs.base cimport ABCTimedelta, ABCTimestamp, is_tick_object
2929

3030
from pandas._libs.tslibs cimport ccalendar
3131

@@ -355,10 +355,10 @@ cdef class _Timestamp(ABCTimestamp):
355355

356356
elif PyDelta_Check(other):
357357
# logic copied from delta_to_nanoseconds to prevent circular import
358-
if hasattr(other, 'delta'):
358+
if isinstance(other, ABCTimedelta):
359359
# pd.Timedelta
360360
nanos = other.value
361-
elif PyDelta_Check(other):
361+
else:
362362
nanos = (other.days * 24 * 60 * 60 * 1000000 +
363363
other.seconds * 1000000 +
364364
other.microseconds) * 1000

0 commit comments

Comments
 (0)