From 3e3e5c9281e6ab32fd8f1a50482a8eab5a99f68c Mon Sep 17 00:00:00 2001 From: jschendel Date: Mon, 30 Jul 2018 09:44:45 -0600 Subject: [PATCH] DEPR: deprecate IntervalIndex.itemsize and remove IntervalArray.itemsize --- pandas/core/arrays/interval.py | 4 ---- pandas/core/indexes/interval.py | 10 ++++++++-- pandas/tests/indexes/interval/test_interval.py | 6 ++++-- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/pandas/core/arrays/interval.py b/pandas/core/arrays/interval.py index 60464bcfda1e7..76614454e5a10 100644 --- a/pandas/core/arrays/interval.py +++ b/pandas/core/arrays/interval.py @@ -688,10 +688,6 @@ def size(self): def shape(self): return self.left.shape - @property - def itemsize(self): - return self.left.itemsize + self.right.itemsize - def take(self, indices, allow_fill=False, fill_value=None, axis=None, **kwargs): """ diff --git a/pandas/core/indexes/interval.py b/pandas/core/indexes/interval.py index 0b467760d82d9..838b12468e85e 100644 --- a/pandas/core/indexes/interval.py +++ b/pandas/core/indexes/interval.py @@ -369,8 +369,14 @@ def shape(self): @property def itemsize(self): - # Avoid materializing ndarray[Interval] - return self._data.itemsize + msg = ('IntervalIndex.itemsize is deprecated and will be removed in ' + 'a future version') + warnings.warn(msg, FutureWarning, stacklevel=2) + + # supress the warning from the underlying left/right itemsize + with warnings.catch_warnings(): + warnings.simplefilter('ignore') + return self.left.itemsize + self.right.itemsize def __len__(self): return len(self.left) diff --git a/pandas/tests/indexes/interval/test_interval.py b/pandas/tests/indexes/interval/test_interval.py index e179286e839db..71f56c5bc1164 100644 --- a/pandas/tests/indexes/interval/test_interval.py +++ b/pandas/tests/indexes/interval/test_interval.py @@ -989,9 +989,11 @@ def test_itemsize(self): # GH 19209 left = np.arange(0, 4, dtype='i8') right = np.arange(1, 5, dtype='i8') - - result = IntervalIndex.from_arrays(left, right).itemsize expected = 16 # 8 * 2 + + with tm.assert_produces_warning(FutureWarning, check_stacklevel=False): + result = IntervalIndex.from_arrays(left, right).itemsize + assert result == expected @pytest.mark.parametrize('new_closed', [