Skip to content

Commit

Permalink
DEPR: remove itemsize, data, base, flags, strides (pandas-dev#29918)
Browse files Browse the repository at this point in the history
  • Loading branch information
jbrockmendel authored and proost committed Dec 19, 2019
1 parent 8e5be9b commit b239f70
Show file tree
Hide file tree
Showing 12 changed files with 9 additions and 192 deletions.
8 changes: 0 additions & 8 deletions doc/redirects.csv
Original file line number Diff line number Diff line change
Expand Up @@ -622,7 +622,6 @@ generated/pandas.Index.asi8,../reference/api/pandas.Index.asi8
generated/pandas.Index.asof,../reference/api/pandas.Index.asof
generated/pandas.Index.asof_locs,../reference/api/pandas.Index.asof_locs
generated/pandas.Index.astype,../reference/api/pandas.Index.astype
generated/pandas.Index.base,../reference/api/pandas.Index.base
generated/pandas.Index.contains,../reference/api/pandas.Index.contains
generated/pandas.Index.copy,../reference/api/pandas.Index.copy
generated/pandas.Index.data,../reference/api/pandas.Index.data
Expand All @@ -639,7 +638,6 @@ generated/pandas.Index.empty,../reference/api/pandas.Index.empty
generated/pandas.Index.equals,../reference/api/pandas.Index.equals
generated/pandas.Index.factorize,../reference/api/pandas.Index.factorize
generated/pandas.Index.fillna,../reference/api/pandas.Index.fillna
generated/pandas.Index.flags,../reference/api/pandas.Index.flags
generated/pandas.Index.format,../reference/api/pandas.Index.format
generated/pandas.Index.get_duplicates,../reference/api/pandas.Index.get_duplicates
generated/pandas.Index.get_indexer_for,../reference/api/pandas.Index.get_indexer_for
Expand Down Expand Up @@ -679,7 +677,6 @@ generated/pandas.Index.is_object,../reference/api/pandas.Index.is_object
generated/pandas.Index.is_type_compatible,../reference/api/pandas.Index.is_type_compatible
generated/pandas.Index.is_unique,../reference/api/pandas.Index.is_unique
generated/pandas.Index.item,../reference/api/pandas.Index.item
generated/pandas.Index.itemsize,../reference/api/pandas.Index.itemsize
generated/pandas.Index.join,../reference/api/pandas.Index.join
generated/pandas.Index.map,../reference/api/pandas.Index.map
generated/pandas.Index.max,../reference/api/pandas.Index.max
Expand Down Expand Up @@ -711,7 +708,6 @@ generated/pandas.Index.sort,../reference/api/pandas.Index.sort
generated/pandas.Index.sortlevel,../reference/api/pandas.Index.sortlevel
generated/pandas.Index.sort_values,../reference/api/pandas.Index.sort_values
generated/pandas.Index.str,../reference/api/pandas.Index.str
generated/pandas.Index.strides,../reference/api/pandas.Index.strides
generated/pandas.Index.summary,../reference/api/pandas.Index.summary
generated/pandas.Index.symmetric_difference,../reference/api/pandas.Index.symmetric_difference
generated/pandas.Index.take,../reference/api/pandas.Index.take
Expand Down Expand Up @@ -938,7 +934,6 @@ generated/pandas.Series.at,../reference/api/pandas.Series.at
generated/pandas.Series.at_time,../reference/api/pandas.Series.at_time
generated/pandas.Series.autocorr,../reference/api/pandas.Series.autocorr
generated/pandas.Series.axes,../reference/api/pandas.Series.axes
generated/pandas.Series.base,../reference/api/pandas.Series.base
generated/pandas.Series.between,../reference/api/pandas.Series.between
generated/pandas.Series.between_time,../reference/api/pandas.Series.between_time
generated/pandas.Series.bfill,../reference/api/pandas.Series.bfill
Expand Down Expand Up @@ -1047,7 +1042,6 @@ generated/pandas.Series.fillna,../reference/api/pandas.Series.fillna
generated/pandas.Series.filter,../reference/api/pandas.Series.filter
generated/pandas.Series.first,../reference/api/pandas.Series.first
generated/pandas.Series.first_valid_index,../reference/api/pandas.Series.first_valid_index
generated/pandas.Series.flags,../reference/api/pandas.Series.flags
generated/pandas.Series.floordiv,../reference/api/pandas.Series.floordiv
generated/pandas.Series.from_array,../reference/api/pandas.Series.from_array
generated/pandas.Series.from_csv,../reference/api/pandas.Series.from_csv
Expand Down Expand Up @@ -1080,7 +1074,6 @@ generated/pandas.Series.isnull,../reference/api/pandas.Series.isnull
generated/pandas.Series.is_unique,../reference/api/pandas.Series.is_unique
generated/pandas.Series.item,../reference/api/pandas.Series.item
generated/pandas.Series.items,../reference/api/pandas.Series.items
generated/pandas.Series.itemsize,../reference/api/pandas.Series.itemsize
generated/pandas.Series.__iter__,../reference/api/pandas.Series.__iter__
generated/pandas.Series.iteritems,../reference/api/pandas.Series.iteritems
generated/pandas.Series.ix,../reference/api/pandas.Series.ix
Expand Down Expand Up @@ -1193,7 +1186,6 @@ generated/pandas.Series.str.find,../reference/api/pandas.Series.str.find
generated/pandas.Series.str.get_dummies,../reference/api/pandas.Series.str.get_dummies
generated/pandas.Series.str.get,../reference/api/pandas.Series.str.get
generated/pandas.Series.str,../reference/api/pandas.Series.str
generated/pandas.Series.strides,../reference/api/pandas.Series.strides
generated/pandas.Series.str.index,../reference/api/pandas.Series.str.index
generated/pandas.Series.str.isalnum,../reference/api/pandas.Series.str.isalnum
generated/pandas.Series.str.isalpha,../reference/api/pandas.Series.str.isalpha
Expand Down
3 changes: 0 additions & 3 deletions doc/source/reference/indexing.rst
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,6 @@ Properties
Index.ndim
Index.size
Index.empty
Index.strides
Index.itemsize
Index.base
Index.T
Index.memory_usage

Expand Down
5 changes: 0 additions & 5 deletions doc/source/reference/series.rst
Original file line number Diff line number Diff line change
Expand Up @@ -33,16 +33,11 @@ Attributes
Series.nbytes
Series.ndim
Series.size
Series.strides
Series.itemsize
Series.base
Series.T
Series.memory_usage
Series.hasnans
Series.flags
Series.empty
Series.dtypes
Series.data
Series.name
Series.put

Expand Down
1 change: 1 addition & 0 deletions doc/source/whatsnew/v1.0.0.rst
Original file line number Diff line number Diff line change
Expand Up @@ -462,6 +462,7 @@ or ``matplotlib.Axes.plot``. See :ref:`plotting.formatters` for more.
- Changed the default ``fill_value`` in :meth:`Categorical.take` from ``True`` to ``False`` (:issue:`20841`)
- Changed the default value for the `raw` argument in :func:`Series.rolling().apply() <pandas.core.window.Rolling.apply>`, :func:`DataFrame.rolling().apply() <pandas.core.window.Rolling.apply>`,
- :func:`Series.expanding().apply() <pandas.core.window.Expanding.apply>`, and :func:`DataFrame.expanding().apply() <pandas.core.window.Expanding.apply>` to ``False`` (:issue:`20584`)
- Removed the previously deprecated :attr:`Series.base`, :attr:`Index.base`, :attr:`Categorical.base`, :attr:`Series.flags`, :attr:`Index.flags`, :attr:`PeriodArray.flags`, :attr:`Series.strides`, :attr:`Index.strides`, :attr:`Series.itemsize`, :attr:`Index.itemsize`, :attr:`Series.data`, :attr:`Index.data` (:issue:`20721`)
- Changed :meth:`Timedelta.resolution` to match the behavior of the standard library ``datetime.timedelta.resolution``, for the old behavior, use :meth:`Timedelta.resolution_string` (:issue:`26839`)
- Removed previously deprecated :attr:`Timestamp.weekday_name`, :attr:`DatetimeIndex.weekday_name`, and :attr:`Series.dt.weekday_name` (:issue:`18164`)
- Removed previously deprecated ``errors`` argument in :meth:`Timestamp.tz_localize`, :meth:`DatetimeIndex.tz_localize`, and :meth:`Series.tz_localize` (:issue:`22644`)
Expand Down
7 changes: 0 additions & 7 deletions pandas/core/arrays/categorical.py
Original file line number Diff line number Diff line change
Expand Up @@ -527,13 +527,6 @@ def tolist(self) -> list:

to_list = tolist

@property
def base(self) -> None:
"""
compat, we are always our own object
"""
return None

@classmethod
def _from_inferred_categories(
cls, inferred_categories, inferred_codes, dtype, true_values=None
Expand Down
8 changes: 0 additions & 8 deletions pandas/core/arrays/period.py
Original file line number Diff line number Diff line change
Expand Up @@ -618,14 +618,6 @@ def astype(self, dtype, copy=True):
return self.asfreq(dtype.freq)
return super().astype(dtype, copy=copy)

@property
def flags(self):
# TODO: remove
# We need this since reduction.SeriesBinGrouper uses values.flags
# Ideally, we wouldn't be passing objects down there in the first
# place.
return self._data.flags

# ------------------------------------------------------------------
# Arithmetic Methods
_create_comparison_method = classmethod(_period_array_cmp)
Expand Down
85 changes: 1 addition & 84 deletions pandas/core/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -628,15 +628,7 @@ class IndexOpsMixin:
# ndarray compatibility
__array_priority__ = 1000
_deprecations: FrozenSet[str] = frozenset(
[
"tolist", # tolist is not deprecated, just suppressed in the __dir__
"base",
"data",
"item",
"itemsize",
"flags",
"strides",
]
["tolist", "item"] # tolist is not deprecated, just suppressed in the __dir__
)

def transpose(self, *args, **kwargs):
Expand Down Expand Up @@ -707,95 +699,20 @@ def item(self):
)
return self.values.item()

@property
def data(self):
"""
Return the data pointer of the underlying data.
.. deprecated:: 0.23.0
"""
warnings.warn(
"{obj}.data is deprecated and will be removed "
"in a future version".format(obj=type(self).__name__),
FutureWarning,
stacklevel=2,
)
return self.values.data

@property
def itemsize(self):
"""
Return the size of the dtype of the item of the underlying data.
.. deprecated:: 0.23.0
"""
warnings.warn(
"{obj}.itemsize is deprecated and will be removed "
"in a future version".format(obj=type(self).__name__),
FutureWarning,
stacklevel=2,
)
return self._ndarray_values.itemsize

@property
def nbytes(self):
"""
Return the number of bytes in the underlying data.
"""
return self._values.nbytes

@property
def strides(self):
"""
Return the strides of the underlying data.
.. deprecated:: 0.23.0
"""
warnings.warn(
"{obj}.strides is deprecated and will be removed "
"in a future version".format(obj=type(self).__name__),
FutureWarning,
stacklevel=2,
)
return self._ndarray_values.strides

@property
def size(self):
"""
Return the number of elements in the underlying data.
"""
return len(self._values)

@property
def flags(self):
"""
Return the ndarray.flags for the underlying data.
.. deprecated:: 0.23.0
"""
warnings.warn(
"{obj}.flags is deprecated and will be removed "
"in a future version".format(obj=type(self).__name__),
FutureWarning,
stacklevel=2,
)
return self.values.flags

@property
def base(self):
"""
Return the base object if the memory of the underlying data is shared.
.. deprecated:: 0.23.0
"""
warnings.warn(
"{obj}.base is deprecated and will be removed "
"in a future version".format(obj=type(self).__name__),
FutureWarning,
stacklevel=2,
)
return self.values.base

@property
def array(self) -> ExtensionArray:
"""
Expand Down
14 changes: 0 additions & 14 deletions pandas/core/indexes/interval.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
from operator import le, lt
import textwrap
from typing import Any, Optional, Tuple, Union
import warnings

import numpy as np

Expand Down Expand Up @@ -455,19 +454,6 @@ def size(self):
# Avoid materializing ndarray[Interval]
return self._data.size

@property
def itemsize(self):
msg = (
"IntervalIndex.itemsize is deprecated and will be removed in "
"a future version"
)
warnings.warn(msg, FutureWarning, stacklevel=2)

# suppress 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) -> int:
return len(self.left)

Expand Down
37 changes: 1 addition & 36 deletions pandas/core/indexes/period.py
Original file line number Diff line number Diff line change
Expand Up @@ -911,20 +911,9 @@ def __setstate__(self, state):

_unpickle_compat = __setstate__

@property
def flags(self):
""" return the ndarray.flags for the underlying data """
warnings.warn(
"{obj}.flags is deprecated and will be removed "
"in a future version".format(obj=type(self).__name__),
FutureWarning,
stacklevel=2,
)
return self._ndarray_values.flags

def item(self):
"""
return the first element of the underlying data as a python
Return the first element of the underlying data as a python
scalar
.. deprecated:: 0.25.0
Expand All @@ -943,30 +932,6 @@ def item(self):
# copy numpy's message here because Py26 raises an IndexError
raise ValueError("can only convert an array of size 1 to a Python scalar")

@property
def data(self):
""" return the data pointer of the underlying data """
warnings.warn(
"{obj}.data is deprecated and will be removed "
"in a future version".format(obj=type(self).__name__),
FutureWarning,
stacklevel=2,
)
return np.asarray(self._data).data

@property
def base(self):
""" return the base object if the memory of the underlying data is
shared
"""
warnings.warn(
"{obj}.base is deprecated and will be removed "
"in a future version".format(obj=type(self).__name__),
FutureWarning,
stacklevel=2,
)
return np.asarray(self._data)

def memory_usage(self, deep=False):
result = super().memory_usage(deep=deep)
if hasattr(self, "_cache") and "_int64index" in self._cache:
Expand Down
11 changes: 0 additions & 11 deletions pandas/tests/indexes/interval/test_interval.py
Original file line number Diff line number Diff line change
Expand Up @@ -836,17 +836,6 @@ def test_nbytes(self):
expected = 64 # 4 * 8 * 2
assert result == expected

def test_itemsize(self):
# GH 19209
left = np.arange(0, 4, dtype="i8")
right = np.arange(1, 5, dtype="i8")
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", ["left", "right", "both", "neither"])
def test_set_closed(self, name, closed, new_closed):
# GH 21670
Expand Down
6 changes: 4 additions & 2 deletions pandas/tests/indexes/test_category.py
Original file line number Diff line number Diff line change
Expand Up @@ -788,8 +788,10 @@ def test_ensure_copied_data(self, indices):
# Index.__new__ is honored.
#
# Must be tested separately from other indexes because
# self.value is not an ndarray.
_base = lambda ar: ar if ar.base is None else ar.base
# self.values is not an ndarray.
# GH#29918 Index.base has been removed
# FIXME: is this test still meaningful?
_base = lambda ar: ar if getattr(ar, "base", None) is None else ar.base

result = CategoricalIndex(indices.values, copy=True)
tm.assert_index_equal(indices, result)
Expand Down
16 changes: 2 additions & 14 deletions pandas/tests/test_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -333,20 +333,8 @@ def test_ndarray_compat_properties(self):
assert getattr(o, p, None) is not None

# deprecated properties
for p in ["flags", "strides", "itemsize"]:
with tm.assert_produces_warning(FutureWarning):
assert getattr(o, p, None) is not None

with tm.assert_produces_warning(FutureWarning):
assert hasattr(o, "base")

# If we have a datetime-like dtype then needs a view to work
# but the user is responsible for that
try:
with tm.assert_produces_warning(FutureWarning):
assert o.data is not None
except ValueError:
pass
for p in ["flags", "strides", "itemsize", "base", "data"]:
assert not hasattr(o, p)

with pytest.raises(ValueError):
with tm.assert_produces_warning(FutureWarning):
Expand Down

0 comments on commit b239f70

Please sign in to comment.