From 4ab72e927869915368bf8bf32babc9f653c6ba3b Mon Sep 17 00:00:00 2001 From: Brock Date: Fri, 25 Sep 2020 18:59:41 -0700 Subject: [PATCH 1/2] REF: de-duplicate IntervalArray validators --- pandas/core/arrays/interval.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pandas/core/arrays/interval.py b/pandas/core/arrays/interval.py index 1011381f235ca..0f65cea998727 100644 --- a/pandas/core/arrays/interval.py +++ b/pandas/core/arrays/interval.py @@ -852,15 +852,15 @@ def _validate_fill_value(self, value): return self._validate_scalar(value) def _validate_fillna_value(self, value): - if not isinstance(value, Interval): + # This mirrors Datetimelike._validate_fill_value + try: + return self._validate_scalar(value) + except ValueError as err: msg = ( "'IntervalArray.fillna' only supports filling with a " f"scalar 'pandas.Interval'. Got a '{type(value).__name__}' instead." ) - raise TypeError(msg) - - self._check_closed_matches(value, name="value") - return value.left, value.right + raise TypeError(msg) from err def _validate_insert_value(self, value): return self._validate_scalar(value) From d7b79d6c26b5602d6cfbc07ca849d41e9e72101d Mon Sep 17 00:00:00 2001 From: Brock Date: Fri, 25 Sep 2020 19:23:10 -0700 Subject: [PATCH 2/2] REF: re-use validate-listlike --- pandas/core/arrays/interval.py | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/pandas/core/arrays/interval.py b/pandas/core/arrays/interval.py index 0f65cea998727..5105b5b9cc57b 100644 --- a/pandas/core/arrays/interval.py +++ b/pandas/core/arrays/interval.py @@ -887,14 +887,7 @@ def _validate_setitem_value(self, value): value_left, value_right = value.left, value.right else: - try: - # list-like of intervals - array = IntervalArray(value) - value_left, value_right = array.left, array.right - except TypeError as err: - # wrong type: not interval or NA - msg = f"'value' should be an interval type, got {type(value)} instead." - raise TypeError(msg) from err + return self._validate_listlike(value) if needs_float_conversion: raise ValueError("Cannot set float NaN to integer-backed IntervalArray")