From e1d9a12f94aaa91f63e3352eb4e4e649d9d5b04b Mon Sep 17 00:00:00 2001 From: jbrockmendel Date: Wed, 11 Mar 2020 16:30:28 -0700 Subject: [PATCH] DEPR: Index.ravel behavior --- pandas/core/indexes/base.py | 12 +++++++++++- pandas/tests/indexes/categorical/test_category.py | 5 +++++ pandas/tests/indexes/datetimelike.py | 5 +++++ pandas/tests/indexes/interval/test_interval.py | 5 +++++ 4 files changed, 26 insertions(+), 1 deletion(-) diff --git a/pandas/core/indexes/base.py b/pandas/core/indexes/base.py index 98e3b3ad258ea..c7fbb4aeca493 100644 --- a/pandas/core/indexes/base.py +++ b/pandas/core/indexes/base.py @@ -623,7 +623,17 @@ def ravel(self, order="C"): -------- numpy.ndarray.ravel """ - return self._ndarray_values.ravel(order=order) + values = self._values + if isinstance(values, np.ndarray): + return values.ravel(order=order) + + warnings.warn( + f"The behavior of Index.ravel for {self.dtype} is deprecated; " + "in a future version it will return the underlying ExtensionArray", + FutureWarning, + stacklevel=2, + ) + return values._ndarray_values.ravel(order=order) def view(self, cls=None): diff --git a/pandas/tests/indexes/categorical/test_category.py b/pandas/tests/indexes/categorical/test_category.py index c18cd1f252c83..475d3c1642062 100644 --- a/pandas/tests/indexes/categorical/test_category.py +++ b/pandas/tests/indexes/categorical/test_category.py @@ -645,3 +645,8 @@ def test_reindex_base(self): def test_map_str(self): # See test_map.py pass + + def test_ravel_deprecated(self): + idx = self.create_index() + with tm.assert_produces_warning(FutureWarning): + idx.ravel() diff --git a/pandas/tests/indexes/datetimelike.py b/pandas/tests/indexes/datetimelike.py index ba10976a67e9a..0655424d67f95 100644 --- a/pandas/tests/indexes/datetimelike.py +++ b/pandas/tests/indexes/datetimelike.py @@ -95,3 +95,8 @@ def test_map_dictlike(self, mapper): expected = pd.Index([np.nan] * len(index)) result = index.map(mapper([], [])) tm.assert_index_equal(result, expected) + + def test_ravel_deprecated(self): + idx = self.create_index() + with tm.assert_produces_warning(FutureWarning): + idx.ravel() diff --git a/pandas/tests/indexes/interval/test_interval.py b/pandas/tests/indexes/interval/test_interval.py index c2b209c810af9..cbf3ae556e795 100644 --- a/pandas/tests/indexes/interval/test_interval.py +++ b/pandas/tests/indexes/interval/test_interval.py @@ -857,6 +857,11 @@ def test_is_all_dates(self): year_2017_index = pd.IntervalIndex([year_2017]) assert not year_2017_index.is_all_dates + def test_ravel_deprecated(self): + idx = self.create_index() + with tm.assert_produces_warning(FutureWarning): + idx.ravel() + def test_dir(): # GH#27571 dir(interval_index) should not raise