@@ -7,7 +7,6 @@ from collections.abc import (
77)
88from typing import (
99 Any ,
10- final ,
1110 overload ,
1211)
1312
@@ -19,15 +18,18 @@ from typing_extensions import Self
1918from pandas ._typing import (
2019 AnyAll ,
2120 Axes ,
22- DropKeep ,
2321 Dtype ,
2422 HashableT ,
2523 IndexLabel ,
24+ Label ,
2625 Level ,
2726 MaskType ,
2827 NaPosition ,
2928 SequenceNotStr ,
29+ Shape ,
3030 np_1darray_bool ,
31+ np_1darray_int8 ,
32+ np_1darray_intp ,
3133 np_ndarray_anyint ,
3234)
3335
@@ -71,18 +73,47 @@ class MultiIndex(Index):
7173 names : SequenceNotStr [Hashable ] = ...,
7274 ) -> Self : ...
7375 @property
74- def shape (self ): ...
76+ def shape (self ) -> Shape : ...
7577 @property # Should be read-only
7678 def levels (self ) -> list [Index ]: ...
77- def set_levels (self , levels , * , level = ..., verify_integrity : bool = ...): ...
79+ @overload
80+ def set_levels (
81+ self ,
82+ levels : Sequence [SequenceNotStr [Hashable ]],
83+ * ,
84+ level : Sequence [Level ] | None = None ,
85+ verify_integrity : bool = True ,
86+ ) -> MultiIndex : ...
87+ @overload
88+ def set_levels (
89+ self ,
90+ levels : SequenceNotStr [Hashable ],
91+ * ,
92+ level : Level ,
93+ verify_integrity : bool = True ,
94+ ) -> MultiIndex : ...
7895 @property
79- def codes (self ): ...
80- def set_codes (self , codes , * , level = ..., verify_integrity : bool = ...): ...
96+ def codes (self ) -> list [np_1darray_int8 ]: ...
97+ @overload
98+ def set_codes (
99+ self ,
100+ codes : Sequence [Sequence [int ]],
101+ * ,
102+ level : Sequence [Level ] | None = None ,
103+ verify_integrity : bool = True ,
104+ ) -> MultiIndex : ...
105+ @overload
106+ def set_codes (
107+ self ,
108+ codes : Sequence [int ],
109+ * ,
110+ level : Level ,
111+ verify_integrity : bool = True ,
112+ ) -> MultiIndex : ...
81113 def copy ( # type: ignore[override] # pyright: ignore[reportIncompatibleMethodOverride] # pyrefly: ignore
82114 self , names : SequenceNotStr [Hashable ] = ..., deep : bool = False
83115 ) -> Self : ...
84- def view (self , cls = ...): ...
85- def __contains__ (self , key ) -> bool : ...
116+ def view (self , cls : Any = None ) -> MultiIndex : ...
86117 @property
87118 def dtype (self ) -> np .dtype : ...
88119 @property
@@ -92,29 +123,28 @@ class MultiIndex(Index):
92123 def nbytes (self ) -> int : ...
93124 def __len__ (self ) -> int : ...
94125 @property
95- def values (self ): ...
96- @property
97126 def is_monotonic_increasing (self ) -> bool : ...
98127 @property
99128 def is_monotonic_decreasing (self ) -> bool : ...
100- def duplicated (self , keep : DropKeep = "first" ): ...
101129 def dropna (self , how : AnyAll = "any" ) -> Self : ...
102130 def droplevel (self , level : Level | Sequence [Level ] = 0 ) -> MultiIndex | Index : ... # type: ignore[override]
103131 def get_level_values (self , level : str | int ) -> Index : ...
104- def unique (self , level = ...): ...
132+ @overload
133+ def unique (self , level : None = None ) -> MultiIndex : ...
134+ @overload
135+ def unique (self , level : Level ) -> Index : ...
105136 def to_frame ( # type: ignore[override] # pyright: ignore[reportIncompatibleMethodOverride]
106137 self ,
107138 index : bool = True ,
108139 name : list [HashableT ] = ...,
109140 allow_duplicates : bool = False ,
110141 ) -> pd .DataFrame : ...
111142 def to_flat_index (self ) -> Index : ...
112- def remove_unused_levels (self ): ...
143+ def remove_unused_levels (self ) -> MultiIndex : ...
113144 @property
114145 def nlevels (self ) -> int : ...
115146 @property
116- def levshape (self ): ...
117- def __reduce__ (self ): ...
147+ def levshape (self ) -> Shape : ...
118148 @overload # type: ignore[override]
119149 # pyrefly: ignore # bad-override
120150 def __getitem__ (
@@ -125,36 +155,31 @@ class MultiIndex(Index):
125155 def __getitem__ ( # pyright: ignore[reportIncompatibleMethodOverride] # ty: ignore[invalid-method-override]
126156 self , key : int
127157 ) -> tuple [Hashable , ...]: ...
128- def append (self , other ): ...
129- def repeat (self , repeats , axis = ...): ...
130- def drop (self , codes , level : Level | None = None , errors : str = "raise" ) -> Self : ... # type: ignore[override] # pyright: ignore[reportIncompatibleMethodOverride]
158+ @overload
159+ def append (self , other : MultiIndex | Sequence [MultiIndex ]) -> MultiIndex : ...
160+ @overload
161+ def append (self , other : Index | Sequence [Index ]) -> Index : ...
162+ def drop (self , codes : Level | Sequence [Level ], level : Level | None = None , errors : str = "raise" ) -> Self : ... # type: ignore[override] # pyright: ignore[reportIncompatibleMethodOverride]
131163 def swaplevel (self , i : int = - 2 , j : int = - 1 ) -> Self : ...
132- def reorder_levels (self , order ) : ...
164+ def reorder_levels (self , order : Sequence [ Level ]) -> MultiIndex : ...
133165 def sortlevel (
134166 self ,
135167 level : Level | Sequence [Level ] = 0 ,
136168 ascending : bool = True ,
137169 sort_remaining : bool = True ,
138170 na_position : NaPosition = "first" ,
139- ): ...
140- @final
141- def get_indexer (self , target , method = ..., limit = ..., tolerance = ...): ...
142- def get_indexer_non_unique (self , target ): ...
143- def reindex (self , target , method = ..., level = ..., limit = ..., tolerance = ...): ...
144- def get_slice_bound (
145- self , label : Hashable | Sequence [Hashable ], side : str
146- ) -> int : ...
171+ ) -> tuple [MultiIndex , np_1darray_intp ]: ...
147172 def get_loc_level (
148- self , key , level : Level | list [Level ] | None = None , drop_level : bool = True
149- ): ...
150- def get_locs (self , seq ): ...
173+ self ,
174+ key : Label | Sequence [Label ],
175+ level : Level | list [Level ] | None = None ,
176+ drop_level : bool = True ,
177+ ) -> tuple [int | slice | np_1darray_bool , Index ]: ...
178+ def get_locs (self , seq : Level | Sequence [Level ]) -> np_1darray_intp : ...
151179 def truncate (
152180 self , before : IndexLabel | None = None , after : IndexLabel | None = None
153- ): ...
154- def equals (self , other ) -> bool : ...
155- def equal_levels (self , other ): ...
156- def insert (self , loc , item ): ...
157- def delete (self , loc ): ...
181+ ) -> MultiIndex : ...
182+ def equal_levels (self , other : MultiIndex ) -> bool : ...
158183 @overload # type: ignore[override]
159184 def isin ( # pyrefly: ignore[bad-override]
160185 self , values : Iterable [Any ], level : Level
0 commit comments