@@ -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
@@ -70,19 +72,46 @@ class MultiIndex(Index):
7072 sortorder : int | None = ...,
7173 names : SequenceNotStr [Hashable ] = ...,
7274 ) -> Self : ...
73- @property
74- def shape (self ): ...
7575 @property # Should be read-only
7676 def levels (self ) -> list [Index ]: ...
77- def set_levels (self , levels , * , level = ..., verify_integrity : bool = ...): ...
77+ @overload
78+ def set_levels (
79+ self ,
80+ levels : Sequence [SequenceNotStr [Hashable ]],
81+ * ,
82+ level : Sequence [Level ] | None = None ,
83+ verify_integrity : bool = True ,
84+ ) -> MultiIndex : ...
85+ @overload
86+ def set_levels (
87+ self ,
88+ levels : SequenceNotStr [Hashable ],
89+ * ,
90+ level : Level ,
91+ verify_integrity : bool = True ,
92+ ) -> MultiIndex : ...
7893 @property
79- def codes (self ): ...
80- def set_codes (self , codes , * , level = ..., verify_integrity : bool = ...): ...
94+ def codes (self ) -> list [np_1darray_int8 ]: ...
95+ @overload
96+ def set_codes (
97+ self ,
98+ codes : Sequence [Sequence [int ]],
99+ * ,
100+ level : Sequence [Level ] | None = None ,
101+ verify_integrity : bool = True ,
102+ ) -> MultiIndex : ...
103+ @overload
104+ def set_codes (
105+ self ,
106+ codes : Sequence [int ],
107+ * ,
108+ level : Level ,
109+ verify_integrity : bool = True ,
110+ ) -> MultiIndex : ...
81111 def copy ( # type: ignore[override] # pyright: ignore[reportIncompatibleMethodOverride] # pyrefly: ignore
82112 self , names : SequenceNotStr [Hashable ] = ..., deep : bool = False
83113 ) -> Self : ...
84- def view (self , cls = ...): ...
85- def __contains__ (self , key ) -> bool : ...
114+ def view (self , cls : Any = None ) -> MultiIndex : ... # type: ignore[override] # pyrefly: ignore[bad-override] # pyright: ignore[reportIncompatibleMethodOverride]
86115 @property
87116 def dtype (self ) -> np .dtype : ...
88117 @property
@@ -92,29 +121,34 @@ class MultiIndex(Index):
92121 def nbytes (self ) -> int : ...
93122 def __len__ (self ) -> int : ...
94123 @property
95- def values (self ): ...
96- @property
97124 def is_monotonic_increasing (self ) -> bool : ...
98125 @property
99126 def is_monotonic_decreasing (self ) -> bool : ...
100- def duplicated (self , keep : DropKeep = "first" ): ...
101127 def dropna (self , how : AnyAll = "any" ) -> Self : ...
102128 def droplevel (self , level : Level | Sequence [Level ] = 0 ) -> MultiIndex | Index : ... # type: ignore[override]
103129 def get_level_values (self , level : str | int ) -> Index : ...
104- def unique (self , level = ...): ...
130+ @overload # type: ignore[override]
131+ def unique ( # pyrefly: ignore[bad-override]
132+ self , level : None = None
133+ ) -> MultiIndex : ...
134+ @overload
135+ def unique ( # ty: ignore[invalid-method-override] # pyright: ignore[reportIncompatibleMethodOverride]
136+ self , level : Level
137+ ) -> (
138+ Index
139+ ): ... # ty: ignore[invalid-method-override] # pyrefly: ignore[bad-override]
105140 def to_frame ( # type: ignore[override] # pyright: ignore[reportIncompatibleMethodOverride]
106141 self ,
107142 index : bool = True ,
108143 name : list [HashableT ] = ...,
109144 allow_duplicates : bool = False ,
110145 ) -> pd .DataFrame : ...
111146 def to_flat_index (self ) -> Index : ...
112- def remove_unused_levels (self ): ...
147+ def remove_unused_levels (self ) -> MultiIndex : ...
113148 @property
114149 def nlevels (self ) -> int : ...
115150 @property
116- def levshape (self ): ...
117- def __reduce__ (self ): ...
151+ def levshape (self ) -> Shape : ...
118152 @overload # type: ignore[override]
119153 # pyrefly: ignore # bad-override
120154 def __getitem__ (
@@ -125,36 +159,33 @@ class MultiIndex(Index):
125159 def __getitem__ ( # pyright: ignore[reportIncompatibleMethodOverride] # ty: ignore[invalid-method-override]
126160 self , key : int
127161 ) -> 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]
162+ @overload # type: ignore[override]
163+ def append (self , other : MultiIndex | Sequence [MultiIndex ]) -> MultiIndex : ...
164+ @overload
165+ def append ( # pyright: ignore[reportIncompatibleMethodOverride]
166+ self , other : Index | Sequence [Index ]
167+ ) -> Index : ... # pyrefly: ignore[bad-override]
168+ def drop (self , codes : Level | Sequence [Level ], level : Level | None = None , errors : str = "raise" ) -> MultiIndex : ... # type: ignore[override] # pyright: ignore[reportIncompatibleMethodOverride]
131169 def swaplevel (self , i : int = - 2 , j : int = - 1 ) -> Self : ...
132- def reorder_levels (self , order ) : ...
170+ def reorder_levels (self , order : Sequence [ Level ]) -> MultiIndex : ...
133171 def sortlevel (
134172 self ,
135173 level : Level | Sequence [Level ] = 0 ,
136174 ascending : bool = True ,
137175 sort_remaining : bool = True ,
138176 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 : ...
177+ ) -> tuple [MultiIndex , np_1darray_intp ]: ...
147178 def get_loc_level (
148- self , key , level : Level | list [Level ] | None = None , drop_level : bool = True
149- ): ...
150- def get_locs (self , seq ): ...
179+ self ,
180+ key : Label | Sequence [Label ],
181+ level : Level | Sequence [Level ] | None = None ,
182+ drop_level : bool = True ,
183+ ) -> tuple [int | slice | np_1darray_bool , Index ]: ...
184+ def get_locs (self , seq : Level | Sequence [Level ]) -> np_1darray_intp : ...
151185 def truncate (
152186 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 ): ...
187+ ) -> MultiIndex : ...
188+ def equal_levels (self , other : MultiIndex ) -> bool : ...
158189 @overload # type: ignore[override]
159190 def isin ( # pyrefly: ignore[bad-override]
160191 self , values : Iterable [Any ], level : Level
0 commit comments