Skip to content

Commit 06514f9

Browse files
committed
fix doctests, typing
1 parent 63f6d46 commit 06514f9

File tree

4 files changed

+35
-38
lines changed

4 files changed

+35
-38
lines changed

pandas/core/indexes/base.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1834,7 +1834,7 @@ def set_names(self, names, *, level=None, inplace: bool = False) -> Self | None:
18341834
('python', 2019),
18351835
( 'cobra', 2018),
18361836
( 'cobra', 2019)],
1837-
names=['species', 'year'])
1837+
names=('species', 'year'))
18381838
18391839
When renaming levels with a dict, levels can not be passed.
18401840
@@ -1843,7 +1843,7 @@ def set_names(self, names, *, level=None, inplace: bool = False) -> Self | None:
18431843
('python', 2019),
18441844
( 'cobra', 2018),
18451845
( 'cobra', 2019)],
1846-
names=['snake', 'year'])
1846+
names=('snake', 'year'))
18471847
"""
18481848
if level is not None and not isinstance(self, ABCMultiIndex):
18491849
raise ValueError("Level must be None for non-MultiIndex")
@@ -1922,13 +1922,13 @@ def rename(self, name, inplace: bool = False):
19221922
('python', 2019),
19231923
( 'cobra', 2018),
19241924
( 'cobra', 2019)],
1925-
names=['kind', 'year'])
1925+
names=('kind', 'year'))
19261926
>>> idx.rename(['species', 'year'])
19271927
MultiIndex([('python', 2018),
19281928
('python', 2019),
19291929
( 'cobra', 2018),
19301930
( 'cobra', 2019)],
1931-
names=['species', 'year'])
1931+
names=('species', 'year'))
19321932
>>> idx.rename('species')
19331933
Traceback (most recent call last):
19341934
TypeError: Must pass list-like as `names`.
@@ -2087,26 +2087,26 @@ def droplevel(self, level: IndexLabel = 0):
20872087
Examples
20882088
--------
20892089
>>> mi = pd.MultiIndex.from_arrays(
2090-
... [[1, 2], [3, 4], [5, 6]], names=['x', 'y', 'z'])
2090+
... [[1, 2], [3, 4], [5, 6]], names=('x', 'y', 'z'))
20912091
>>> mi
20922092
MultiIndex([(1, 3, 5),
20932093
(2, 4, 6)],
2094-
names=['x', 'y', 'z'])
2094+
names=('x', 'y', 'z'))
20952095
20962096
>>> mi.droplevel()
20972097
MultiIndex([(3, 5),
20982098
(4, 6)],
2099-
names=['y', 'z'])
2099+
names=('y', 'z'))
21002100
21012101
>>> mi.droplevel(2)
21022102
MultiIndex([(1, 3),
21032103
(2, 4)],
2104-
names=['x', 'y'])
2104+
names=('x', 'y'))
21052105
21062106
>>> mi.droplevel('z')
21072107
MultiIndex([(1, 3),
21082108
(2, 4)],
2109-
names=['x', 'y'])
2109+
names=('x', 'y'))
21102110
21112111
>>> mi.droplevel(['x', 'y'])
21122112
Index([5, 6], dtype='int64', name='z')
@@ -6496,7 +6496,7 @@ def isin(self, values, level=None) -> npt.NDArray[np.bool_]:
64966496
MultiIndex([(1, 'red'),
64976497
(2, 'blue'),
64986498
(3, 'green')],
6499-
names=['number', 'color'])
6499+
names=('number', 'color'))
65006500
65016501
Check whether the strings in the 'color' level of the MultiIndex
65026502
are in a list of colors.
@@ -7467,7 +7467,7 @@ def ensure_index_from_sequences(sequences, names=None) -> Index:
74677467
>>> ensure_index_from_sequences([["a", "a"], ["a", "b"]], names=["L1", "L2"])
74687468
MultiIndex([('a', 'a'),
74697469
('a', 'b')],
7470-
names=['L1', 'L2'])
7470+
names=('L1', 'L2'))
74717471
74727472
See Also
74737473
--------

pandas/core/indexes/multi.py

Lines changed: 22 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,7 @@ class MultiIndex(Index):
300300
(1, 'blue'),
301301
(2, 'red'),
302302
(2, 'blue')],
303-
names=['number', 'color'])
303+
names=('number', 'color'))
304304
305305
See further examples for how to construct a MultiIndex in the doc strings
306306
of the mentioned helper methods.
@@ -393,16 +393,16 @@ def _validate_codes(self, level: list, code: list):
393393

394394
def _verify_integrity(
395395
self,
396-
codes: list | None = None,
397-
levels: list | None = None,
396+
codes: tuple | None = None,
397+
levels: tuple | None = None,
398398
levels_to_verify: list[int] | range | None = None,
399399
):
400400
"""
401401
Parameters
402402
----------
403-
codes : optional list
403+
codes : optional tuple
404404
Codes to check for validity. Defaults to current codes.
405-
levels : optional list
405+
levels : optional tuple
406406
Levels to check for validity. Defaults to current levels.
407407
levels_to_validate: optional list
408408
Specifies the levels to verify.
@@ -509,7 +509,7 @@ def from_arrays(
509509
(1, 'blue'),
510510
(2, 'red'),
511511
(2, 'blue')],
512-
names=['number', 'color'])
512+
names=('number', 'color'))
513513
"""
514514
error_msg = "Input must be a list / sequence of array-likes."
515515
if not is_list_like(arrays):
@@ -581,7 +581,7 @@ def from_tuples(
581581
(1, 'blue'),
582582
(2, 'red'),
583583
(2, 'blue')],
584-
names=['number', 'color'])
584+
names=('number', 'color'))
585585
"""
586586
if not is_list_like(tuples):
587587
raise TypeError("Input must be a list / sequence of tuple-likes.")
@@ -665,7 +665,7 @@ def from_product(
665665
(1, 'purple'),
666666
(2, 'green'),
667667
(2, 'purple')],
668-
names=['number', 'color'])
668+
names=('number', 'color'))
669669
"""
670670
from pandas.core.reshape.util import cartesian_product
671671

@@ -733,7 +733,7 @@ def from_frame(
733733
('HI', 'Precip'),
734734
('NJ', 'Temp'),
735735
('NJ', 'Precip')],
736-
names=['a', 'b'])
736+
names=('a', 'b'))
737737
738738
Using explicit names, instead of the column names
739739
@@ -742,7 +742,7 @@ def from_frame(
742742
('HI', 'Precip'),
743743
('NJ', 'Temp'),
744744
('NJ', 'Precip')],
745-
names=['state', 'observation'])
745+
names=('state', 'observation'))
746746
"""
747747
if not isinstance(df, ABCDataFrame):
748748
raise TypeError("Input must be a DataFrame")
@@ -934,7 +934,7 @@ def set_levels(
934934
(2, 'two'),
935935
(3, 'one'),
936936
(3, 'two')],
937-
names=['foo', 'bar'])
937+
names=('foo', 'bar'))
938938
939939
>>> idx.set_levels([['a', 'b', 'c'], [1, 2]])
940940
MultiIndex([('a', 1),
@@ -943,23 +943,23 @@ def set_levels(
943943
('b', 2),
944944
('c', 1),
945945
('c', 2)],
946-
names=['foo', 'bar'])
946+
names=('foo', 'bar'))
947947
>>> idx.set_levels(['a', 'b', 'c'], level=0)
948948
MultiIndex([('a', 'one'),
949949
('a', 'two'),
950950
('b', 'one'),
951951
('b', 'two'),
952952
('c', 'one'),
953953
('c', 'two')],
954-
names=['foo', 'bar'])
954+
names=('foo', 'bar'))
955955
>>> idx.set_levels(['a', 'b'], level='bar')
956956
MultiIndex([(1, 'a'),
957957
(1, 'b'),
958958
(2, 'a'),
959959
(2, 'b'),
960960
(3, 'a'),
961961
(3, 'b')],
962-
names=['foo', 'bar'])
962+
names=('foo', 'bar'))
963963
964964
If any of the levels passed to ``set_levels()`` exceeds the
965965
existing length, all of the values from that argument will
@@ -973,7 +973,7 @@ def set_levels(
973973
('b', 2),
974974
('c', 1),
975975
('c', 2)],
976-
names=['foo', 'bar'])
976+
names=('foo', 'bar'))
977977
>>> idx.set_levels([['a', 'b', 'c'], [1, 2, 3, 4]], level=[0, 1]).levels
978978
(['a', 'b', 'c'], [1, 2, 3, 4]])
979979
"""
@@ -1520,7 +1520,7 @@ def _set_names(self, names, *, level=None, validate: bool = True):
15201520
>>> mi
15211521
MultiIndex([(1, 3, 5),
15221522
(2, 4, 6)],
1523-
names=['x', 'y', 'z'])
1523+
names=('x', 'y', 'z'))
15241524
>>> mi.names
15251525
('x', 'y', 'z')
15261526
""",
@@ -1990,7 +1990,7 @@ def remove_unused_levels(self) -> MultiIndex:
19901990
19911991
>>> mi2 = mi[2:].remove_unused_levels()
19921992
>>> mi2.levels
1993-
([1], ['a', 'b']])
1993+
(Index([1], dtype='int64'), Index(['a', 'b'], dtype='object'))
19941994
"""
19951995
new_levels = []
19961996
new_codes = []
@@ -2427,17 +2427,17 @@ def reorder_levels(self, order) -> MultiIndex:
24272427
>>> mi
24282428
MultiIndex([(1, 3),
24292429
(2, 4)],
2430-
names=['x', 'y'])
2430+
names=('x', 'y'))
24312431
24322432
>>> mi.reorder_levels(order=[1, 0])
24332433
MultiIndex([(3, 1),
24342434
(4, 2)],
2435-
names=['y', 'x'])
2435+
names=('y', 'x'))
24362436
24372437
>>> mi.reorder_levels(order=['y', 'x'])
24382438
MultiIndex([(3, 1),
24392439
(4, 2)],
2440-
names=['y', 'x'])
2440+
names=('y', 'x'))
24412441
"""
24422442
order = [self._get_level_number(i) for i in order]
24432443
result = self._reorder_ilevels(order)
@@ -2675,7 +2675,8 @@ def _get_indexer_level_0(self, target) -> npt.NDArray[np.intp]:
26752675
Optimized equivalent to `self.get_level_values(0).get_indexer_for(target)`.
26762676
"""
26772677
lev = self.levels[0]
2678-
codes = self._codes[0]
2678+
# error: Tuple index out of range
2679+
codes = self._codes[0] # type: ignore[misc]
26792680
cat = Categorical.from_codes(codes=codes, categories=lev, validate=False)
26802681
ci = Index(cat)
26812682
return ci.get_indexer_for(target)

pandas/core/reshape/merge.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1792,8 +1792,7 @@ def _convert_to_multiindex(index: Index) -> MultiIndex:
17921792
else:
17931793
restore_codes = algos.take_nd(codes, indexer, fill_value=-1)
17941794

1795-
# error: Cannot determine type of "__add__"
1796-
join_levels = list(join_levels) + [restore_levels] # type: ignore[has-type]
1795+
join_levels = list(join_levels) + [restore_levels]
17971796
join_codes = list(join_codes) + [restore_codes]
17981797
join_names = list(join_names) + [dropped_level_name]
17991798

pandas/core/reshape/reshape.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -336,10 +336,7 @@ def get_new_columns(self, value_columns: Index | None):
336336
new_levels: tuple | list[Index]
337337

338338
if isinstance(value_columns, MultiIndex):
339-
# error: Cannot determine type of "__add__" [has-type]
340-
new_levels = value_columns.levels + ( # type: ignore[has-type]
341-
self.removed_level_full,
342-
)
339+
new_levels = value_columns.levels + (self.removed_level_full,)
343340
new_names = value_columns.names + (self.removed_name,)
344341

345342
new_codes = [lab.take(propagator) for lab in value_columns.codes]

0 commit comments

Comments
 (0)