From 1a3b757650e49ab1d3495dc70d3604ea9e47abf7 Mon Sep 17 00:00:00 2001 From: Brock Date: Sun, 24 Jan 2021 16:38:28 -0800 Subject: [PATCH 1/2] CI: fix PandasArray test --- pandas/tests/extension/test_numpy.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pandas/tests/extension/test_numpy.py b/pandas/tests/extension/test_numpy.py index 4e054a07d8ef1..753ad7bb3728d 100644 --- a/pandas/tests/extension/test_numpy.py +++ b/pandas/tests/extension/test_numpy.py @@ -313,6 +313,10 @@ def test_arith_series_with_scalar(self, data, all_arithmetic_operators): def test_arith_series_with_array(self, data, all_arithmetic_operators): super().test_arith_series_with_array(data, all_arithmetic_operators) + @skip_nested + def test_arith_frame_with_scalar(self, data, all_arithmetic_operators): + super().test_arith_frame_with_scalar(data, all_arithmetic_operators) + class TestPrinting(BaseNumPyTests, base.BasePrintingTests): pass From 8e6e1ce0effada750cf230516748d455b04b8e74 Mon Sep 17 00:00:00 2001 From: Brock Date: Tue, 26 Jan 2021 11:21:00 -0800 Subject: [PATCH 2/2] REF: de-duplicate require_listlike for MultiIndex --- pandas/core/indexes/multi.py | 39 ++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 20 deletions(-) diff --git a/pandas/core/indexes/multi.py b/pandas/core/indexes/multi.py index 064d052806e27..0d30c1665df34 100644 --- a/pandas/core/indexes/multi.py +++ b/pandas/core/indexes/multi.py @@ -881,16 +881,7 @@ def set_levels(self, levels, level=None, inplace=None, verify_integrity=True): if is_list_like(levels) and not isinstance(levels, Index): levels = list(levels) - if level is not None and not is_list_like(level): - if not is_list_like(levels): - raise TypeError("Levels must be list-like") - if is_list_like(levels[0]): - raise TypeError("Levels must be list-like") - level = [level] - levels = [levels] - elif level is None or is_list_like(level): - if not is_list_like(levels) or not is_list_like(levels[0]): - raise TypeError("Levels must be list of lists-like") + level, levels = _require_listlike(level, levels, "Levels") if inplace: idx = self @@ -1050,16 +1041,7 @@ def set_codes(self, codes, level=None, inplace=None, verify_integrity=True): else: inplace = False - if level is not None and not is_list_like(level): - if not is_list_like(codes): - raise TypeError("Codes must be list-like") - if is_list_like(codes[0]): - raise TypeError("Codes must be list-like") - level = [level] - codes = [codes] - elif level is None or is_list_like(level): - if not is_list_like(codes) or not is_list_like(codes[0]): - raise TypeError("Codes must be list of lists-like") + level, codes = _require_listlike(level, codes, "Codes") if inplace: idx = self @@ -3870,3 +3852,20 @@ def _coerce_indexer_frozen(array_like, categories, copy: bool = False) -> np.nda array_like = array_like.copy() array_like.flags.writeable = False return array_like + + +def _require_listlike(level, arr, arrname: str): + """ + Ensure that level is either None or listlike, and arr is list-of-listlike. + """ + if level is not None and not is_list_like(level): + if not is_list_like(arr): + raise TypeError(f"{arrname} must be list-like") + if is_list_like(arr[0]): + raise TypeError(f"{arrname} must be list-like") + level = [level] + arr = [arr] + elif level is None or is_list_like(level): + if not is_list_like(arr) or not is_list_like(arr[0]): + raise TypeError(f"{arrname} must be list of lists-like") + return level, arr