@@ -13,8 +13,8 @@ from typing import (
13
13
import numpy as np
14
14
import pandas as pd
15
15
from pandas import Index
16
- from pandas .core .indexes .extension import ExtensionIndex
17
16
from pandas .core .series import (
17
+ Series ,
18
18
TimedeltaSeries ,
19
19
TimestampSeries ,
20
20
)
@@ -32,6 +32,7 @@ from pandas._typing import (
32
32
IntervalClosedType ,
33
33
IntervalT ,
34
34
Label ,
35
+ np_ndarray_anyint ,
35
36
np_ndarray_bool ,
36
37
npt ,
37
38
)
@@ -68,7 +69,7 @@ _EdgesTimedelta: TypeAlias = Union[
68
69
_TimestampLike : TypeAlias = Union [pd .Timestamp , np .datetime64 , dt .datetime ]
69
70
_TimedeltaLike : TypeAlias = Union [pd .Timedelta , np .timedelta64 , dt .timedelta ]
70
71
71
- class IntervalIndex (IntervalMixin , ExtensionIndex , Generic [IntervalT ]):
72
+ class IntervalIndex (IntervalMixin , Generic [IntervalT ]):
72
73
def __new__ (
73
74
cls ,
74
75
data : Sequence [IntervalT ],
@@ -78,10 +79,9 @@ class IntervalIndex(IntervalMixin, ExtensionIndex, Generic[IntervalT]):
78
79
name : Hashable = ...,
79
80
verify_integrity : bool = ...,
80
81
) -> IntervalIndex [IntervalT ]: ...
81
- # ignore[misc] here due to overlap, e.g., Sequence[int] and Sequence[float]
82
82
@overload
83
83
@classmethod
84
- def from_breaks ( # type:ignore[misc]
84
+ def from_breaks (
85
85
cls ,
86
86
breaks : _EdgesInt ,
87
87
closed : IntervalClosedType = ...,
@@ -119,10 +119,9 @@ class IntervalIndex(IntervalMixin, ExtensionIndex, Generic[IntervalT]):
119
119
copy : bool = ...,
120
120
dtype : IntervalDtype | None = ...,
121
121
) -> IntervalIndex [Interval [pd .Timedelta ]]: ...
122
- # ignore[misc] here due to overlap, e.g., Sequence[int] and Sequence[float]
123
122
@overload
124
123
@classmethod
125
- def from_arrays ( # type:ignore[misc]
124
+ def from_arrays (
126
125
cls ,
127
126
left : _EdgesInt ,
128
127
right : _EdgesInt ,
@@ -250,41 +249,51 @@ class IntervalIndex(IntervalMixin, ExtensionIndex, Generic[IntervalT]):
250
249
@property
251
250
def length (self ) -> Index : ...
252
251
def get_value (self , series : ABCSeries , key ): ...
252
+ @overload
253
+ def __getitem__ (
254
+ self ,
255
+ idx : slice
256
+ | np_ndarray_anyint
257
+ | Sequence [int ]
258
+ | Index
259
+ | Series [bool ]
260
+ | np_ndarray_bool ,
261
+ ) -> IntervalIndex [IntervalT ]: ...
262
+ @overload
263
+ def __getitem__ (self , idx : int ) -> IntervalT : ...
253
264
@property
254
265
def is_all_dates (self ) -> bool : ...
255
- # override is due to additional types for comparison
256
- # misc is due to overlap with object below
257
- @overload # type: ignore[override]
266
+ @overload
258
267
def __gt__ (
259
268
self , other : IntervalT | IntervalIndex [IntervalT ]
260
269
) -> np_ndarray_bool : ...
261
270
@overload
262
271
def __gt__ (self , other : pd .Series [IntervalT ]) -> pd .Series [bool ]: ...
263
- @overload # type: ignore[override]
272
+ @overload
264
273
def __ge__ (
265
274
self , other : IntervalT | IntervalIndex [IntervalT ]
266
275
) -> np_ndarray_bool : ...
267
276
@overload
268
277
def __ge__ (self , other : pd .Series [IntervalT ]) -> pd .Series [bool ]: ...
269
- @overload # type: ignore[override]
278
+ @overload
270
279
def __le__ (
271
280
self , other : IntervalT | IntervalIndex [IntervalT ]
272
281
) -> np_ndarray_bool : ...
273
282
@overload
274
283
def __le__ (self , other : pd .Series [IntervalT ]) -> pd .Series [bool ]: ...
275
- @overload # type: ignore[override]
284
+ @overload
276
285
def __lt__ (
277
286
self , other : IntervalT | IntervalIndex [IntervalT ]
278
287
) -> np_ndarray_bool : ...
279
288
@overload
280
- def __lt__ (self , other : pd .Series [IntervalT ]) -> bool : ... # type: ignore[misc]
281
- @overload # type: ignore[override]
289
+ def __lt__ (self , other : pd .Series [IntervalT ]) -> bool : ...
290
+ @overload
282
291
def __eq__ (self , other : IntervalT | IntervalIndex [IntervalT ]) -> np_ndarray_bool : ... # type: ignore[misc]
283
292
@overload
284
293
def __eq__ (self , other : pd .Series [IntervalT ]) -> pd .Series [bool ]: ... # type: ignore[misc]
285
294
@overload
286
295
def __eq__ (self , other : object ) -> Literal [False ]: ...
287
- @overload # type: ignore[override]
296
+ @overload
288
297
def __ne__ (self , other : IntervalT | IntervalIndex [IntervalT ]) -> np_ndarray_bool : ... # type: ignore[misc]
289
298
@overload
290
299
def __ne__ (self , other : pd .Series [IntervalT ]) -> pd .Series [bool ]: ... # type: ignore[misc]
0 commit comments