@@ -13,8 +13,8 @@ from typing import (
1313import numpy as np
1414import pandas as pd
1515from pandas import Index
16- from pandas .core .indexes .extension import ExtensionIndex
1716from pandas .core .series import (
17+ Series ,
1818 TimedeltaSeries ,
1919 TimestampSeries ,
2020)
@@ -32,6 +32,7 @@ from pandas._typing import (
3232 IntervalClosedType ,
3333 IntervalT ,
3434 Label ,
35+ np_ndarray_anyint ,
3536 np_ndarray_bool ,
3637 npt ,
3738)
@@ -68,7 +69,7 @@ _EdgesTimedelta: TypeAlias = Union[
6869_TimestampLike : TypeAlias = Union [pd .Timestamp , np .datetime64 , dt .datetime ]
6970_TimedeltaLike : TypeAlias = Union [pd .Timedelta , np .timedelta64 , dt .timedelta ]
7071
71- class IntervalIndex (IntervalMixin , ExtensionIndex , Generic [IntervalT ]):
72+ class IntervalIndex (IntervalMixin , Generic [IntervalT ]):
7273 def __new__ (
7374 cls ,
7475 data : Sequence [IntervalT ],
@@ -78,10 +79,9 @@ class IntervalIndex(IntervalMixin, ExtensionIndex, Generic[IntervalT]):
7879 name : Hashable = ...,
7980 verify_integrity : bool = ...,
8081 ) -> IntervalIndex [IntervalT ]: ...
81- # ignore[misc] here due to overlap, e.g., Sequence[int] and Sequence[float]
8282 @overload
8383 @classmethod
84- def from_breaks ( # type:ignore[misc]
84+ def from_breaks (
8585 cls ,
8686 breaks : _EdgesInt ,
8787 closed : IntervalClosedType = ...,
@@ -119,10 +119,9 @@ class IntervalIndex(IntervalMixin, ExtensionIndex, Generic[IntervalT]):
119119 copy : bool = ...,
120120 dtype : IntervalDtype | None = ...,
121121 ) -> IntervalIndex [Interval [pd .Timedelta ]]: ...
122- # ignore[misc] here due to overlap, e.g., Sequence[int] and Sequence[float]
123122 @overload
124123 @classmethod
125- def from_arrays ( # type:ignore[misc]
124+ def from_arrays (
126125 cls ,
127126 left : _EdgesInt ,
128127 right : _EdgesInt ,
@@ -250,41 +249,51 @@ class IntervalIndex(IntervalMixin, ExtensionIndex, Generic[IntervalT]):
250249 @property
251250 def length (self ) -> Index : ...
252251 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 : ...
253264 @property
254265 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
258267 def __gt__ (
259268 self , other : IntervalT | IntervalIndex [IntervalT ]
260269 ) -> np_ndarray_bool : ...
261270 @overload
262271 def __gt__ (self , other : pd .Series [IntervalT ]) -> pd .Series [bool ]: ...
263- @overload # type: ignore[override]
272+ @overload
264273 def __ge__ (
265274 self , other : IntervalT | IntervalIndex [IntervalT ]
266275 ) -> np_ndarray_bool : ...
267276 @overload
268277 def __ge__ (self , other : pd .Series [IntervalT ]) -> pd .Series [bool ]: ...
269- @overload # type: ignore[override]
278+ @overload
270279 def __le__ (
271280 self , other : IntervalT | IntervalIndex [IntervalT ]
272281 ) -> np_ndarray_bool : ...
273282 @overload
274283 def __le__ (self , other : pd .Series [IntervalT ]) -> pd .Series [bool ]: ...
275- @overload # type: ignore[override]
284+ @overload
276285 def __lt__ (
277286 self , other : IntervalT | IntervalIndex [IntervalT ]
278287 ) -> np_ndarray_bool : ...
279288 @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
282291 def __eq__ (self , other : IntervalT | IntervalIndex [IntervalT ]) -> np_ndarray_bool : ... # type: ignore[misc]
283292 @overload
284293 def __eq__ (self , other : pd .Series [IntervalT ]) -> pd .Series [bool ]: ... # type: ignore[misc]
285294 @overload
286295 def __eq__ (self , other : object ) -> Literal [False ]: ...
287- @overload # type: ignore[override]
296+ @overload
288297 def __ne__ (self , other : IntervalT | IntervalIndex [IntervalT ]) -> np_ndarray_bool : ... # type: ignore[misc]
289298 @overload
290299 def __ne__ (self , other : pd .Series [IntervalT ]) -> pd .Series [bool ]: ... # type: ignore[misc]
0 commit comments