Skip to content

Commit 47d20ee

Browse files
authored
CLN: assorted (#43845)
1 parent 54ceeff commit 47d20ee

File tree

12 files changed

+37
-48
lines changed

12 files changed

+37
-48
lines changed

pandas/_libs/index.pyx

+5-4
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ cdef class IndexEngine:
174174
cdef inline _get_loc_duplicates(self, object val):
175175
# -> Py_ssize_t | slice | ndarray[bool]
176176
cdef:
177-
Py_ssize_t diff
177+
Py_ssize_t diff, left, right
178178

179179
if self.is_monotonic_increasing:
180180
values = self.values
@@ -318,8 +318,8 @@ cdef class IndexEngine:
318318
set stargets, remaining_stargets
319319
dict d = {}
320320
object val
321-
int count = 0, count_missing = 0
322-
Py_ssize_t i, j, n, n_t, n_alloc
321+
Py_ssize_t count = 0, count_missing = 0
322+
Py_ssize_t i, j, n, n_t, n_alloc, start, end
323323
bint d_has_nan = False, stargets_has_nan = False, need_nan_check = True
324324

325325
values = self.values
@@ -481,7 +481,8 @@ cdef class DatetimeEngine(Int64Engine):
481481
# with either a Timestamp or NaT (Timedelta or NaT for TimedeltaEngine)
482482

483483
cdef:
484-
int64_t loc
484+
Py_ssize_t loc
485+
485486
if is_definitely_invalid_key(val):
486487
raise TypeError(f"'{val}' is an invalid key")
487488

pandas/_libs/lib.pyx

+4-2
Original file line numberDiff line numberDiff line change
@@ -1423,7 +1423,8 @@ def infer_dtype(value: object, skipna: bool = True) -> str:
14231423
# this will handle ndarray-like
14241424
# e.g. categoricals
14251425
dtype = value.dtype
1426-
if not isinstance(dtype, np.dtype):
1426+
if not cnp.PyArray_DescrCheck(dtype):
1427+
# i.e. not isinstance(dtype, np.dtype)
14271428
inferred = _try_infer_map(value.dtype)
14281429
if inferred is not None:
14291430
return inferred
@@ -2723,7 +2724,8 @@ cdef _infer_all_nats(dtype, ndarray datetimes, ndarray timedeltas):
27232724
"""
27242725
If we have all-NaT values, cast these to the given dtype.
27252726
"""
2726-
if isinstance(dtype, np.dtype):
2727+
if cnp.PyArray_DescrCheck(dtype):
2728+
# i.e. isinstance(dtype, np.dtype):
27272729
if dtype == "M8[ns]":
27282730
result = datetimes
27292731
elif dtype == "m8[ns]":

pandas/core/internals/blocks.py

+5-2
Original file line numberDiff line numberDiff line change
@@ -959,6 +959,8 @@ def setitem(self, indexer, value):
959959
# GH#32395 if we're going to replace the values entirely, just
960960
# substitute in the new array
961961
if not self.is_object and isinstance(value, (IntegerArray, FloatingArray)):
962+
# _can_hold_element will only allow us to get here if value
963+
# has no NA entries.
962964
values[indexer] = value.to_numpy(value.dtype.numpy_dtype)
963965
else:
964966
values[indexer] = np.asarray(value)
@@ -982,7 +984,7 @@ def setitem(self, indexer, value):
982984

983985
if transpose:
984986
values = values.T
985-
block = self.make_block(values)
987+
block = type(self)(values, placement=self._mgr_locs, ndim=self.ndim)
986988
return block
987989

988990
def putmask(self, mask, new) -> list[Block]:
@@ -1469,7 +1471,8 @@ def putmask(self, mask, new) -> list[Block]:
14691471
mask = mask.reshape(new_values.shape)
14701472

14711473
new_values[mask] = new
1472-
return [self.make_block(values=new_values)]
1474+
nb = type(self)(new_values, placement=self._mgr_locs, ndim=self.ndim)
1475+
return [nb]
14731476

14741477
@property
14751478
def is_view(self) -> bool:

pandas/core/series.py

+5-7
Original file line numberDiff line numberDiff line change
@@ -3670,16 +3670,14 @@ def argsort(self, axis=0, kind="quicksort", order=None) -> Series:
36703670
mask = isna(values)
36713671

36723672
if mask.any():
3673-
result = Series(-1, index=self.index, name=self.name, dtype="int64")
3673+
result = np.full(len(self), -1, dtype=np.intp)
36743674
notmask = ~mask
36753675
result[notmask] = np.argsort(values[notmask], kind=kind)
3676-
return self._constructor(result, index=self.index).__finalize__(
3677-
self, method="argsort"
3678-
)
36793676
else:
3680-
return self._constructor(
3681-
np.argsort(values, kind=kind), index=self.index, dtype="int64"
3682-
).__finalize__(self, method="argsort")
3677+
result = np.argsort(values, kind=kind)
3678+
3679+
res = self._constructor(result, index=self.index, name=self.name, dtype=np.intp)
3680+
return res.__finalize__(self, method="argsort")
36833681

36843682
def nlargest(self, n=5, keep="first") -> Series:
36853683
"""

pandas/tests/apply/test_invalid_arg.py

+5-1
Original file line numberDiff line numberDiff line change
@@ -335,8 +335,12 @@ def test_transform_wont_agg_series(string_series, func):
335335
# GH 35964
336336
# we are trying to transform with an aggregator
337337
msg = "Function did not transform"
338+
339+
warn = RuntimeWarning if func[0] == "sqrt" else None
340+
warn_msg = "invalid value encountered in sqrt"
338341
with pytest.raises(ValueError, match=msg):
339-
string_series.transform(func)
342+
with tm.assert_produces_warning(warn, match=warn_msg):
343+
string_series.transform(func)
340344

341345

342346
@pytest.mark.parametrize(

pandas/tests/arithmetic/test_numeric.py

+2-6
Original file line numberDiff line numberDiff line change
@@ -1399,20 +1399,16 @@ def test_integer_array_add_list_like(
13991399
right = box_1d_array(data) + container
14001400

14011401
if Series == box_pandas_1d_array:
1402-
assert_function = tm.assert_series_equal
14031402
expected = Series(expected_data, dtype="Int64")
14041403
elif Series == box_1d_array:
1405-
assert_function = tm.assert_series_equal
14061404
expected = Series(expected_data, dtype="object")
14071405
elif Index in (box_pandas_1d_array, box_1d_array):
1408-
assert_function = tm.assert_index_equal
14091406
expected = Int64Index(expected_data)
14101407
else:
1411-
assert_function = tm.assert_numpy_array_equal
14121408
expected = np.array(expected_data, dtype="object")
14131409

1414-
assert_function(left, expected)
1415-
assert_function(right, expected)
1410+
tm.assert_equal(left, expected)
1411+
tm.assert_equal(right, expected)
14161412

14171413

14181414
def test_sub_multiindex_swapped_levels():

pandas/tests/extension/base/dim2.py

+2-7
Original file line numberDiff line numberDiff line change
@@ -183,16 +183,11 @@ def test_reductions_2d_axis0(self, data, method, request):
183183
if method in ["sum", "prod"] and data.dtype.kind in ["i", "u"]:
184184
# FIXME: kludge
185185
if data.dtype.kind == "i":
186-
dtype = pd.Int64Dtype
186+
dtype = pd.Int64Dtype()
187187
else:
188-
dtype = pd.UInt64Dtype
188+
dtype = pd.UInt64Dtype()
189189

190190
expected = data.astype(dtype)
191-
if type(expected) != type(data):
192-
mark = pytest.mark.xfail(
193-
reason="IntegerArray.astype is broken GH#38983"
194-
)
195-
request.node.add_marker(mark)
196191
assert type(expected) == type(data), type(expected)
197192
assert dtype == expected.dtype
198193

pandas/tests/extension/base/methods.py

+5-6
Original file line numberDiff line numberDiff line change
@@ -71,20 +71,19 @@ def test_apply_simple_series(self, data):
7171

7272
def test_argsort(self, data_for_sorting):
7373
result = pd.Series(data_for_sorting).argsort()
74-
expected = pd.Series(np.array([2, 0, 1], dtype=np.int64))
74+
# argsort result gets passed to take, so should be np.intp
75+
expected = pd.Series(np.array([2, 0, 1], dtype=np.intp))
7576
self.assert_series_equal(result, expected)
7677

7778
def test_argsort_missing_array(self, data_missing_for_sorting):
7879
result = data_missing_for_sorting.argsort()
79-
expected = np.array([2, 0, 1], dtype=np.dtype("int"))
80-
# we don't care whether it's int32 or int64
81-
result = result.astype("int64", casting="safe")
82-
expected = expected.astype("int64", casting="safe")
80+
# argsort result gets passed to take, so should be np.intp
81+
expected = np.array([2, 0, 1], dtype=np.intp)
8382
tm.assert_numpy_array_equal(result, expected)
8483

8584
def test_argsort_missing(self, data_missing_for_sorting):
8685
result = pd.Series(data_missing_for_sorting).argsort()
87-
expected = pd.Series(np.array([1, -1, 0], dtype=np.int64))
86+
expected = pd.Series(np.array([1, -1, 0], dtype=np.intp))
8887
self.assert_series_equal(result, expected)
8988

9089
def test_argmin_argmax(self, data_for_sorting, data_missing_for_sorting, na_value):

pandas/tests/extension/json/test_json.py

-6
Original file line numberDiff line numberDiff line change
@@ -227,12 +227,6 @@ def test_sort_values_frame(self):
227227
# TODO (EA.factorize): see if _values_for_factorize allows this.
228228
pass
229229

230-
def test_argsort(self, data_for_sorting):
231-
super().test_argsort(data_for_sorting)
232-
233-
def test_argsort_missing(self, data_missing_for_sorting):
234-
super().test_argsort_missing(data_missing_for_sorting)
235-
236230
@pytest.mark.parametrize("ascending", [True, False])
237231
def test_sort_values(self, data_for_sorting, ascending, sort_by_key):
238232
super().test_sort_values(data_for_sorting, ascending, sort_by_key)

pandas/tests/indexes/test_engines.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ class TestTimedeltaEngine:
6969
pd.Timedelta(days=42).to_timedelta64(),
7070
],
7171
)
72-
def test_not_contains_requires_timestamp(self, scalar):
72+
def test_not_contains_requires_timedelta(self, scalar):
7373
tdi1 = pd.timedelta_range("42 days", freq="9h", periods=1234)
7474
tdi2 = tdi1.insert(1, pd.NaT) # non-monotonic
7575
tdi3 = tdi1.insert(3, tdi1[0]) # non-unique

pandas/tests/series/methods/test_argsort.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,11 @@ def test_argsort(self, datetime_series):
3838
assert isna(shifted[4])
3939

4040
result = s.argsort()
41-
expected = Series(range(5), dtype="int64")
41+
expected = Series(range(5), dtype=np.intp)
4242
tm.assert_series_equal(result, expected)
4343

4444
result = shifted.argsort()
45-
expected = Series(list(range(4)) + [-1], dtype="int64")
45+
expected = Series(list(range(4)) + [-1], dtype=np.intp)
4646
tm.assert_series_equal(result, expected)
4747

4848
def test_argsort_stable(self):

pandas/tests/strings/test_find_replace.py

+1-4
Original file line numberDiff line numberDiff line change
@@ -878,10 +878,7 @@ def test_translate(index_or_series, any_string_dtype):
878878
expected = index_or_series(
879879
["cdedefg", "cdee", "edddfg", "edefggg"], dtype=any_string_dtype
880880
)
881-
if index_or_series is Series:
882-
tm.assert_series_equal(result, expected)
883-
else:
884-
tm.assert_index_equal(result, expected)
881+
tm.assert_equal(result, expected)
885882

886883

887884
def test_translate_mixed_object():

0 commit comments

Comments
 (0)