From 20a51c307715b1ceca9d15c6643f597f2562f100 Mon Sep 17 00:00:00 2001 From: jbrockmendel Date: Sun, 19 Apr 2020 18:12:57 -0700 Subject: [PATCH 1/2] CLN: make DTA/TDA check clearer --- pandas/core/indexes/datetimelike.py | 3 +-- pandas/core/indexes/multi.py | 6 +++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/pandas/core/indexes/datetimelike.py b/pandas/core/indexes/datetimelike.py index 203ea2152886a..067ff32b85862 100644 --- a/pandas/core/indexes/datetimelike.py +++ b/pandas/core/indexes/datetimelike.py @@ -80,8 +80,7 @@ def wrapper(left, right): cache=True, ) @inherit_names( - ["mean", "freq", "freqstr", "asi8", "_box_values", "_box_func"], - DatetimeLikeArrayMixin, + ["mean", "freq", "freqstr", "asi8", "_box_func"], DatetimeLikeArrayMixin, ) class DatetimeIndexOpsMixin(ExtensionIndex): """ diff --git a/pandas/core/indexes/multi.py b/pandas/core/indexes/multi.py index d411867af2ef8..4076b01d2f029 100644 --- a/pandas/core/indexes/multi.py +++ b/pandas/core/indexes/multi.py @@ -36,8 +36,7 @@ is_scalar, pandas_dtype, ) -from pandas.core.dtypes.dtypes import ExtensionDtype -from pandas.core.dtypes.generic import ABCDataFrame +from pandas.core.dtypes.generic import ABCDataFrame, ABCExtensionArray from pandas.core.dtypes.missing import array_equivalent, isna import pandas.core.algorithms as algos @@ -653,7 +652,8 @@ def values(self): vals = self._get_level_values(i) if is_categorical_dtype(vals): vals = vals._internal_get_values() - if isinstance(vals.dtype, ExtensionDtype) or hasattr(vals, "_box_values"): + if isinstance(vals._data, ABCExtensionArray): + # Includes DatetimeArray and TimedeltaArray vals = vals.astype(object) vals = np.array(vals, copy=False) values.append(vals) From 152a6e2685c00e9e7f222396a2cbcc1b47baba8a Mon Sep 17 00:00:00 2001 From: jbrockmendel Date: Sun, 19 Apr 2020 19:18:16 -0700 Subject: [PATCH 2/2] fix check --- pandas/core/indexes/multi.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/pandas/core/indexes/multi.py b/pandas/core/indexes/multi.py index 4076b01d2f029..ce5008630e53d 100644 --- a/pandas/core/indexes/multi.py +++ b/pandas/core/indexes/multi.py @@ -36,7 +36,8 @@ is_scalar, pandas_dtype, ) -from pandas.core.dtypes.generic import ABCDataFrame, ABCExtensionArray +from pandas.core.dtypes.dtypes import ExtensionDtype +from pandas.core.dtypes.generic import ABCDataFrame, ABCDatetimeIndex, ABCTimedeltaIndex from pandas.core.dtypes.missing import array_equivalent, isna import pandas.core.algorithms as algos @@ -652,8 +653,9 @@ def values(self): vals = self._get_level_values(i) if is_categorical_dtype(vals): vals = vals._internal_get_values() - if isinstance(vals._data, ABCExtensionArray): - # Includes DatetimeArray and TimedeltaArray + if isinstance(vals.dtype, ExtensionDtype) or isinstance( + vals, (ABCDatetimeIndex, ABCTimedeltaIndex) + ): vals = vals.astype(object) vals = np.array(vals, copy=False) values.append(vals)