8000 create types for split of getitem arguments · pandas-dev/pandas@9a8550d · GitHub
[go: up one dir, main page]

Skip to content

Commit 9a8550d

Browse files
committed
create types for split of getitem arguments
1 parent 9557cac commit 9a8550d

File tree

10 files changed

+41
-34
lines changed

10 files changed

+41
-34
lines changed

pandas/_typing.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,8 @@
205205
# https://github.com/python/typing/issues/684#issuecomment-548203158
206206
# https://bugs.python.org/issue41810
207207
# Using List[int] here rather than Sequence[int] to disallow tuples.
208-
PositionalIndexer = Union[int, np.integer, slice, List[int], np.ndarray]
208+
ScalarIndexer = Union[int, np.integer]
209+
SequenceIndexer = Union[slice, List[int], np.ndarray]
210+
PositionalIndexer = Union[ScalarIndexer, SequenceIndexer]
209211
PositionalIndexerTuple = Tuple[PositionalIndexer, PositionalIndexer]
210212
PositionalIndexer2D = Union[PositionalIndexer, PositionalIndexerTuple]

pandas/core/arrays/_mixins.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
F,
1818
PositionalIndexer2D,
1919
PositionalIndexerTuple,
20+
ScalarIndexer,
21+
SequenceIndexer,
2022
Shape,
2123
type_t,
2224
)
@@ -188,13 +190,13 @@ def _validate_setitem_value(self, value):
188190
return value
189191

190192
@overload
191-
def __getitem__(self, key: int | np.integer) -> Any:
193+
def __getitem__(self, key: ScalarIndexer) -> Any:
192194
...
193195

194196
@overload
195197
def __getitem__(
196198
self: NDArrayBackedExtensionArrayT,
197-
key: slice | np.ndarray | list[int] | PositionalIndexerTuple,
199+
key: SequenceIndexer | PositionalIndexerTuple,
198200
) -> NDArrayBackedExtensionArrayT:
199201
...
200202

pandas/core/arrays/base.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@
2929
Dtype,
3030
FillnaOptions,
3131
PositionalIndexer,
32+
ScalarIndexer,
33+
SequenceIndexer,
3234
Shape,
3335
)
3436
from pandas.compat import set_function_name
@@ -292,13 +294,11 @@ def _from_factorized(cls, values, original):
292294
# Must be a Sequence
293295
# ------------------------------------------------------------------------
294296
@overload
295-
def __getitem__(self, item: int | np.integer) -> Any:
297+
def __getitem__(self, item: ScalarIndexer) -> Any:
296298
...
297299

298300
@overload
299-
def __getitem__(
300-
self: ExtensionArrayT, item: slice | np.ndarray | list[int]
301-
) -> ExtensionArrayT:
301+
def __getitem__(self: ExtensionArrayT, item: SequenceIndexer) -> ExtensionArrayT:
302302
...
303303

304304
def __getitem__(

pandas/core/arrays/categorical.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@
4040
PositionalIndexer2D,
4141
PositionalIndexerTuple,
4242
Scalar,
43+
ScalarIndexer,
44+
SequenceIndexer,
4345
Shape,
4446
npt,
4547
type_t,
@@ -2008,13 +2010,13 @@ def __repr__(self) -> str:
20082010
# ------------------------------------------------------------------
20092011

20102012
@overload
2011-
def __getitem__(self, key: int | np.integer) -> Any:
2013+
def __getitem__(self, key: ScalarIndexer) -> Any:
20122014
...
20132015

20142016
@overload
20152017
def __getitem__(
20162018
self: CategoricalT,
2017-
key: slice | np.ndarray | list[int] | PositionalIndexerTuple,
2019+
key: SequenceIndexer | PositionalIndexerTuple,
20182020
) -> CategoricalT:
20192021
...
20202022

pandas/core/arrays/datetimelike.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@
5050
NpDtype,
5151
PositionalIndexer2D,
5252
PositionalIndexerTuple,
53+
ScalarIndexer,
54+
SequenceIndexer,
5355
npt,
5456
)
5557
from pandas.compat.numpy import function as nv
@@ -315,13 +317,13 @@ def __array__(self, dtype: NpDtype | None = None) -> np.ndarray:
315317
return self._ndarray
316318

317319
@overload
318-
def __getitem__(self, item: int | np.integer) -> DTScalarOrNaT:
320+
def __getitem__(self, item: ScalarIndexer) -> DTScalarOrNaT:
319321
...
320322

321323
@overload
322324
def __getitem__(
323325
self: DatetimeLikeArrayT,
324-
item: slice | np.ndarray | list[int] | PositionalIndexerTuple,
326+
item: SequenceIndexer | PositionalIndexerTuple,
325327
) -> DatetimeLikeArrayT:
326328
...
327329

pandas/core/arrays/interval.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@
3434
Dtype,
3535
NpDtype,
3636
PositionalIndexer,
37+
ScalarIndexer,
38+
SequenceIndexer,
3739
)
3840
from pandas.compat.numpy import function as nv
3941
from pandas.util._decorators import Appender
@@ -640,13 +642,11 @@ def __len__(self) -> int:
640642
return len(self._left)
641643

642644
@overload
643-
def __getitem__(self, key: int | np.integer) -> IntervalOrNA:
645+
def __getitem__(self, key: ScalarIndexer) -> IntervalOrNA:
644646
...
645647

646648
@overload
647-
def __getitem__(
648-
self: IntervalArrayT, key: slice | np.ndarray | list[int]
649-
) -> IntervalArrayT:
649+
def __getitem__(self: IntervalArrayT, key: SequenceIndexer) -> IntervalArrayT:
650650
...
651651

652652
def __getitem__(

pandas/core/arrays/masked.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
NpDtype,
2121
PositionalIndexer,
2222
Scalar,
23+
ScalarIndexer,
24+
SequenceIndexer,
2325
type_t,
2426
)
2527
from pandas.errors import AbstractMethodError
@@ -139,13 +141,11 @@ def dtype(self) -> BaseMaskedDtype:
139141
raise AbstractMethodError(self)
140142

141143
@overload
142-
def __getitem__(self, item: int | np.integer) -> Any:
144+
def __getitem__(self, item: ScalarIndexer) -> Any:
143145
...
144146

145147
@overload
146-
def __getitem__(
147-
self: BaseMaskedArrayT, item: slice | np.ndarray | list[int]
148-
) -> BaseMaskedArrayT:
148+
def __getitem__(self: BaseMaskedArrayT, item: SequenceIndexer) -> BaseMaskedArrayT:
149149
...
150150

151151
def __getitem__(

pandas/core/arrays/sparse/array.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@
3232
NpDtype,
3333
PositionalIndexer,
3434
Scalar,
35+
ScalarIndexer,
36+
SequenceIndexer,
3537
)
3638
from pandas.compat.numpy import function as nv
3739
from pandas.errors import PerformanceWarning
@@ -822,13 +824,13 @@ def value_counts(self, dropna: bool = True):
822824
# Indexing
823825
# --------
824826
@overload
825-
def __getitem__(self, key: int | np.integer) -> Any:
827+
def __getitem__(self, key: ScalarIndexer) -> Any:
826828
...
827829

828830
@overload
829831
def __getitem__(
830832
self: SparseArrayT,
831-
key: slice | np.ndarray | list[int] | tuple[int | ellipsis, ...],
833+
key: SequenceIndexer | tuple[int | ellipsis, ...],
832834
) -> SparseArrayT:
833835
...
834836

pandas/core/arrays/string_arrow.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
NpDtype,
2323
PositionalIndexer,
2424
Scalar,
25+
ScalarIndexer,
26+
SequenceIndexer,
2527
)
2628
from pandas.compat import (
2729
pa_version_under1p0,
@@ -268,13 +270,11 @@ def _concat_same_type(cls, to_concat) -> ArrowStringArray:
268270
)
269271

270272
@overload
271-
def __getitem__(self, item: int | np.integer) -> ArrowStringScalarOrNAT:
273+
def __getitem__(self, item: ScalarIndexer) -> ArrowStringScalarOrNAT:
272274
...
273275

274276
@overload
275-
def __getitem__(
276-
self: ArrowStringArray, item: slice | np.ndarray | list[int]
277-
) -> ArrowStringArray:
277+
def __getitem__(self: ArrowStringArray, item: SequenceIndexer) -> ArrowStringArray:
278278
...
279279

280280
def __getitem__(

pandas/core/groupby/groupby.py

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2984,10 +2984,9 @@ def blk_func(values: ArrayLike) -> ArrayLike:
29842984

29852985
if real_2d and values.ndim == 1:
29862986
assert result.shape[1] == 1, result.shape
2987-
# error: Invalid index type "Tuple[slice, int]" for
2988-
# "Union[ExtensionArray, ndarray[Any, Any]]"; expected type
2989-
# "Union[int, integer[Any], slice, Sequence[int], ndarray[Any, Any]]"
2990-
result = result[:, 0] # type: ignore[index]
2987+
# error: No overload variant of "__getitem__" of "ExtensionArray"
2988+
# matches argument type "Tuple[slice, int]"
2989+
result = result[:, 0] # type: ignore[call-overload]
29912990
if needs_mask:
29922991
mask = mask[:, 0]
29932992

@@ -3001,11 +3000,9 @@ def blk_func(values: ArrayLike) -> ArrayLike:
30013000
if needs_2d and not real_2d:
30023001
if result.ndim == 2:
30033002
assert result.shape[1] == 1
3004-
# error: Invalid index type "Tuple[slice, int]" for
3005-
# "Union[ExtensionArray, Any, ndarray[Any, Any]]"; expected
3006-
# type "Union[int, integer[Any], slice, Sequence[int],
3007-
# ndarray[Any, Any]]"
3008-
result = result[:, 0] # type: ignore[index]
3003+
# error: No overload variant of "__getitem__" of "ExtensionArray"
3004+
# matches argument type "Tuple[slice, int]"
3005+
result = result[:, 0] # type: ignore[call-overload]
30093006

30103007
return result.T
30113008

0 commit comments

Comments
 (0)
0