Skip to content

Commit 8dd5983

Browse files
simonjayhawkinsKevin D Smith
authored and
Kevin D Smith
committed
TYP: misc typing cleanup in core/indexes/multi.py (pandas-dev#36007)
* TYP: misc typing cleanup in core/indexes/multi.py * update per comments
1 parent ad32f71 commit 8dd5983

File tree

1 file changed

+32
-14
lines changed

1 file changed

+32
-14
lines changed

pandas/core/indexes/multi.py

+32-14
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919

2020
from pandas._libs import algos as libalgos, index as libindex, lib
2121
from pandas._libs.hashtable import duplicated_int64
22-
from pandas._typing import AnyArrayLike, Scalar
22+
from pandas._typing import AnyArrayLike, Label, Scalar
2323
from pandas.compat.numpy import function as nv
2424
from pandas.errors import InvalidIndexError, PerformanceWarning, UnsortedIndexError
2525
from pandas.util._decorators import Appender, cache_readonly, doc
@@ -449,7 +449,12 @@ def from_arrays(cls, arrays, sortorder=None, names=lib.no_default) -> "MultiInde
449449
)
450450

451451
@classmethod
452-
def from_tuples(cls, tuples, sortorder=None, names=None):
452+
def from_tuples(
453+
cls,
454+
tuples,
455+
sortorder: Optional[int] = None,
456+
names: Optional[Sequence[Label]] = None,
457+
):
453458
"""
454459
Convert list of tuples to MultiIndex.
455460
@@ -490,6 +495,7 @@ def from_tuples(cls, tuples, sortorder=None, names=None):
490495
elif is_iterator(tuples):
491496
tuples = list(tuples)
492497

498+
arrays: List[Sequence[Label]]
493499
if len(tuples) == 0:
494500
if names is None:
495501
raise TypeError("Cannot infer number of levels from empty list")
@@ -700,8 +706,13 @@ def levels(self):
700706
return FrozenList(result)
701707

702708
def _set_levels(
703-
self, levels, level=None, copy=False, validate=True, verify_integrity=False
704-
):
709+
self,
710+
levels,
711+
level=None,
712+
copy: bool = False,
713+
validate: bool = True,
714+
verify_integrity: bool = False,
715+
) -> None:
705716
# This is NOT part of the levels property because it should be
706717
# externally not allowed to set levels. User beware if you change
707718
# _levels directly
@@ -719,10 +730,10 @@ def _set_levels(
719730
)
720731
else:
721732
level_numbers = [self._get_level_number(lev) for lev in level]
722-
new_levels = list(self._levels)
733+
new_levels_list = list(self._levels)
723734
for lev_num, lev in zip(level_numbers, levels):
724-
new_levels[lev_num] = ensure_index(lev, copy=copy)._shallow_copy()
725-
new_levels = FrozenList(new_levels)
735+
new_levels_list[lev_num] = ensure_index(lev, copy=copy)._shallow_copy()
736+
new_levels = FrozenList(new_levels_list)
726737

727738
if verify_integrity:
728739
new_codes = self._verify_integrity(levels=new_levels)
@@ -875,8 +886,13 @@ def codes(self):
875886
return self._codes
876887

877888
def _set_codes(
878-
self, codes, level=None, copy=False, validate=True, verify_integrity=False
879-
):
889+
self,
890+
codes,
891+
level=None,
892+
copy: bool = False,
893+
validate: bool = True,
894+
verify_integrity: bool = False,
895+
) -> None:
880896
if validate:
881897
if level is None and len(codes) != self.nlevels:
882898
raise ValueError("Length of codes must match number of levels")
@@ -890,11 +906,13 @@ def _set_codes(
890906
)
891907
else:
892908
level_numbers = [self._get_level_number(lev) for lev in level]
893-
new_codes = list(self._codes)
909+
new_codes_list = list(self._codes)
894910
for lev_num, level_codes in zip(level_numbers, codes):
895911
lev = self.levels[lev_num]
896-
new_codes[lev_num] = _coerce_indexer_frozen(level_codes, lev, copy=copy)
897-
new_codes = FrozenList(new_codes)
912+
new_codes_list[lev_num] = _coerce_indexer_frozen(
913+
level_codes, lev, copy=copy
914+
)
915+
new_codes = FrozenList(new_codes_list)
898916

899917
if verify_integrity:
900918
new_codes = self._verify_integrity(codes=new_codes)
@@ -2435,7 +2453,7 @@ def _get_partial_string_timestamp_match_key(self, key):
24352453
if isinstance(key, str) and self.levels[0]._supports_partial_string_indexing:
24362454
# Convert key '2016-01-01' to
24372455
# ('2016-01-01'[, slice(None, None, None)]+)
2438-
key = tuple([key] + [slice(None)] * (len(self.levels) - 1))
2456+
key = (key,) + (slice(None),) * (len(self.levels) - 1)
24392457

24402458
if isinstance(key, tuple):
24412459
# Convert (..., '2016-01-01', ...) in tuple to
@@ -3086,7 +3104,7 @@ def _update_indexer(idxr, indexer=indexer):
30863104
elif is_list_like(k):
30873105
# a collection of labels to include from this level (these
30883106
# are or'd)
3089-
indexers = None
3107+
indexers: Optional[Int64Index] = None
30903108
for x in k:
30913109
try:
30923110
idxrs = _convert_to_indexer(

0 commit comments

Comments
 (0)