Skip to content

Commit b239f70

Browse files
jbrockmendelproost
authored andcommitted
DEPR: remove itemsize, data, base, flags, strides (pandas-dev#29918)
1 parent 8e5be9b commit b239f70

File tree

12 files changed

+9
-192
lines changed

12 files changed

+9
-192
lines changed

doc/redirects.csv

-8
Original file line numberDiff line numberDiff line change
@@ -622,7 +622,6 @@ generated/pandas.Index.asi8,../reference/api/pandas.Index.asi8
622622
generated/pandas.Index.asof,../reference/api/pandas.Index.asof
623623
generated/pandas.Index.asof_locs,../reference/api/pandas.Index.asof_locs
624624
generated/pandas.Index.astype,../reference/api/pandas.Index.astype
625-
generated/pandas.Index.base,../reference/api/pandas.Index.base
626625
generated/pandas.Index.contains,../reference/api/pandas.Index.contains
627626
generated/pandas.Index.copy,../reference/api/pandas.Index.copy
628627
generated/pandas.Index.data,../reference/api/pandas.Index.data
@@ -639,7 +638,6 @@ generated/pandas.Index.empty,../reference/api/pandas.Index.empty
639638
generated/pandas.Index.equals,../reference/api/pandas.Index.equals
640639
generated/pandas.Index.factorize,../reference/api/pandas.Index.factorize
641640
generated/pandas.Index.fillna,../reference/api/pandas.Index.fillna
642-
generated/pandas.Index.flags,../reference/api/pandas.Index.flags
643641
generated/pandas.Index.format,../reference/api/pandas.Index.format
644642
generated/pandas.Index.get_duplicates,../reference/api/pandas.Index.get_duplicates
645643
generated/pandas.Index.get_indexer_for,../reference/api/pandas.Index.get_indexer_for
@@ -679,7 +677,6 @@ generated/pandas.Index.is_object,../reference/api/pandas.Index.is_object
679677
generated/pandas.Index.is_type_compatible,../reference/api/pandas.Index.is_type_compatible
680678
generated/pandas.Index.is_unique,../reference/api/pandas.Index.is_unique
681679
generated/pandas.Index.item,../reference/api/pandas.Index.item
682-
generated/pandas.Index.itemsize,../reference/api/pandas.Index.itemsize
683680
generated/pandas.Index.join,../reference/api/pandas.Index.join
684681
generated/pandas.Index.map,../reference/api/pandas.Index.map
685682
generated/pandas.Index.max,../reference/api/pandas.Index.max
@@ -711,7 +708,6 @@ generated/pandas.Index.sort,../reference/api/pandas.Index.sort
711708
generated/pandas.Index.sortlevel,../reference/api/pandas.Index.sortlevel
712709
generated/pandas.Index.sort_values,../reference/api/pandas.Index.sort_values
713710
generated/pandas.Index.str,../reference/api/pandas.Index.str
714-
generated/pandas.Index.strides,../reference/api/pandas.Index.strides
715711
generated/pandas.Index.summary,../reference/api/pandas.Index.summary
716712
generated/pandas.Index.symmetric_difference,../reference/api/pandas.Index.symmetric_difference
717713
generated/pandas.Index.take,../reference/api/pandas.Index.take
@@ -938,7 +934,6 @@ generated/pandas.Series.at,../reference/api/pandas.Series.at
938934
generated/pandas.Series.at_time,../reference/api/pandas.Series.at_time
939935
generated/pandas.Series.autocorr,../reference/api/pandas.Series.autocorr
940936
generated/pandas.Series.axes,../reference/api/pandas.Series.axes
941-
generated/pandas.Series.base,../reference/api/pandas.Series.base
942937
generated/pandas.Series.between,../reference/api/pandas.Series.between
943938
generated/pandas.Series.between_time,../reference/api/pandas.Series.between_time
944939
generated/pandas.Series.bfill,../reference/api/pandas.Series.bfill
@@ -1047,7 +1042,6 @@ generated/pandas.Series.fillna,../reference/api/pandas.Series.fillna
10471042
generated/pandas.Series.filter,../reference/api/pandas.Series.filter
10481043
generated/pandas.Series.first,../reference/api/pandas.Series.first
10491044
generated/pandas.Series.first_valid_index,../reference/api/pandas.Series.first_valid_index
1050-
generated/pandas.Series.flags,../reference/api/pandas.Series.flags
10511045
generated/pandas.Series.floordiv,../reference/api/pandas.Series.floordiv
10521046
generated/pandas.Series.from_array,../reference/api/pandas.Series.from_array
10531047
generated/pandas.Series.from_csv,../reference/api/pandas.Series.from_csv
@@ -1080,7 +1074,6 @@ generated/pandas.Series.isnull,../reference/api/pandas.Series.isnull
10801074
generated/pandas.Series.is_unique,../reference/api/pandas.Series.is_unique
10811075
generated/pandas.Series.item,../reference/api/pandas.Series.item
10821076
generated/pandas.Series.items,../reference/api/pandas.Series.items
1083-
generated/pandas.Series.itemsize,../reference/api/pandas.Series.itemsize
10841077
generated/pandas.Series.__iter__,../reference/api/pandas.Series.__iter__
10851078
generated/pandas.Series.iteritems,../reference/api/pandas.Series.iteritems
10861079
generated/pandas.Series.ix,../reference/api/pandas.Series.ix
@@ -1193,7 +1186,6 @@ generated/pandas.Series.str.find,../reference/api/pandas.Series.str.find
11931186
generated/pandas.Series.str.get_dummies,../reference/api/pandas.Series.str.get_dummies
11941187
generated/pandas.Series.str.get,../reference/api/pandas.Series.str.get
11951188
generated/pandas.Series.str,../reference/api/pandas.Series.str
1196-
generated/pandas.Series.strides,../reference/api/pandas.Series.strides
11971189
generated/pandas.Series.str.index,../reference/api/pandas.Series.str.index
11981190
generated/pandas.Series.str.isalnum,../reference/api/pandas.Series.str.isalnum
11991191
generated/pandas.Series.str.isalpha,../reference/api/pandas.Series.str.isalpha

doc/source/reference/indexing.rst

-3
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,6 @@ Properties
4242
Index.ndim
4343
Index.size
4444
Index.empty
45-
Index.strides
46-
Index.itemsize
47-
Index.base
4845
Index.T
4946
Index.memory_usage
5047

doc/source/reference/series.rst

-5
Original file line numberDiff line numberDiff line change
@@ -33,16 +33,11 @@ Attributes
3333
Series.nbytes
3434
Series.ndim
3535
Series.size
36-
Series.strides
37-
Series.itemsize
38-
Series.base
3936
Series.T
4037
Series.memory_usage
4138
Series.hasnans
42-
Series.flags
4339
Series.empty
4440
Series.dtypes
45-
Series.data
4641
Series.name
4742
Series.put
4843

doc/source/whatsnew/v1.0.0.rst

+1
Original file line numberDiff line numberDiff line change
@@ -462,6 +462,7 @@ or ``matplotlib.Axes.plot``. See :ref:`plotting.formatters` for more.
462462
- Changed the default ``fill_value`` in :meth:`Categorical.take` from ``True`` to ``False`` (:issue:`20841`)
463463
- 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>`,
464464
- :func:`Series.expanding().apply() <pandas.core.window.Expanding.apply>`, and :func:`DataFrame.expanding().apply() <pandas.core.window.Expanding.apply>` to ``False`` (:issue:`20584`)
465+
- 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`)
465466
- 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`)
466467
- Removed previously deprecated :attr:`Timestamp.weekday_name`, :attr:`DatetimeIndex.weekday_name`, and :attr:`Series.dt.weekday_name` (:issue:`18164`)
467468
- Removed previously deprecated ``errors`` argument in :meth:`Timestamp.tz_localize`, :meth:`DatetimeIndex.tz_localize`, and :meth:`Series.tz_localize` (:issue:`22644`)

pandas/core/arrays/categorical.py

-7
Original file line numberDiff line numberDiff line change
@@ -527,13 +527,6 @@ def tolist(self) -> list:
527527

528528
to_list = tolist
529529

530-
@property
531-
def base(self) -> None:
532-
"""
533-
compat, we are always our own object
534-
"""
535-
return None
536-
537530
@classmethod
538531
def _from_inferred_categories(
539532
cls, inferred_categories, inferred_codes, dtype, true_values=None

pandas/core/arrays/period.py

-8
Original file line numberDiff line numberDiff line change
@@ -618,14 +618,6 @@ def astype(self, dtype, copy=True):
618618
return self.asfreq(dtype.freq)
619619
return super().astype(dtype, copy=copy)
620620

621-
@property
622-
def flags(self):
623-
# TODO: remove
624-
# We need this since reduction.SeriesBinGrouper uses values.flags
625-
# Ideally, we wouldn't be passing objects down there in the first
626-
# place.
627-
return self._data.flags
628-
629621
# ------------------------------------------------------------------
630622
# Arithmetic Methods
631623
_create_comparison_method = classmethod(_period_array_cmp)

pandas/core/base.py

+1-84
Original file line numberDiff line numberDiff line change
@@ -628,15 +628,7 @@ class IndexOpsMixin:
628628
# ndarray compatibility
629629
__array_priority__ = 1000
630630
_deprecations: FrozenSet[str] = frozenset(
631-
[
632-
"tolist", # tolist is not deprecated, just suppressed in the __dir__
633-
"base",
634-
"data",
635-
"item",
636-
"itemsize",
637-
"flags",
638-
"strides",
639-
]
631+
["tolist", "item"] # tolist is not deprecated, just suppressed in the __dir__
640632
)
641633

642634
def transpose(self, *args, **kwargs):
@@ -707,95 +699,20 @@ def item(self):
707699
)
708700
return self.values.item()
709701

710-
@property
711-
def data(self):
712-
"""
713-
Return the data pointer of the underlying data.
714-
715-
.. deprecated:: 0.23.0
716-
"""
717-
warnings.warn(
718-
"{obj}.data is deprecated and will be removed "
719-
"in a future version".format(obj=type(self).__name__),
720-
FutureWarning,
721-
stacklevel=2,
722-
)
723-
return self.values.data
724-
725-
@property
726-
def itemsize(self):
727-
"""
728-
Return the size of the dtype of the item of the underlying data.
729-
730-
.. deprecated:: 0.23.0
731-
"""
732-
warnings.warn(
733-
"{obj}.itemsize is deprecated and will be removed "
734-
"in a future version".format(obj=type(self).__name__),
735-
FutureWarning,
736-
stacklevel=2,
737-
)
738-
return self._ndarray_values.itemsize
739-
740702
@property
741703
def nbytes(self):
742704
"""
743705
Return the number of bytes in the underlying data.
744706
"""
745707
return self._values.nbytes
746708

747-
@property
748-
def strides(self):
749-
"""
750-
Return the strides of the underlying data.
751-
752-
.. deprecated:: 0.23.0
753-
"""
754-
warnings.warn(
755-
"{obj}.strides is deprecated and will be removed "
756-
"in a future version".format(obj=type(self).__name__),
757-
FutureWarning,
758-
stacklevel=2,
759-
)
760-
return self._ndarray_values.strides
761-
762709
@property
763710
def size(self):
764711
"""
765712
Return the number of elements in the underlying data.
766713
"""
767714
return len(self._values)
768715

769-
@property
770-
def flags(self):
771-
"""
772-
Return the ndarray.flags for the underlying data.
773-
774-
.. deprecated:: 0.23.0
775-
"""
776-
warnings.warn(
777-
"{obj}.flags is deprecated and will be removed "
778-
"in a future version".format(obj=type(self).__name__),
779-
FutureWarning,
780-
stacklevel=2,
781-
)
782-
return self.values.flags
783-
784-
@property
785-
def base(self):
786-
"""
787-
Return the base object if the memory of the underlying data is shared.
788-
789-
.. deprecated:: 0.23.0
790-
"""
791-
warnings.warn(
792-
"{obj}.base is deprecated and will be removed "
793-
"in a future version".format(obj=type(self).__name__),
794-
FutureWarning,
795-
stacklevel=2,
796-
)
797-
return self.values.base
798-
799716
@property
800717
def array(self) -> ExtensionArray:
801718
"""

pandas/core/indexes/interval.py

-14
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
from operator import le, lt
33
import textwrap
44
from typing import Any, Optional, Tuple, Union
5-
import warnings
65

76
import numpy as np
87

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

458-
@property
459-
def itemsize(self):
460-
msg = (
461-
"IntervalIndex.itemsize is deprecated and will be removed in "
462-
"a future version"
463-
)
464-
warnings.warn(msg, FutureWarning, stacklevel=2)
465-
466-
# suppress the warning from the underlying left/right itemsize
467-
with warnings.catch_warnings():
468-
warnings.simplefilter("ignore")
469-
return self.left.itemsize + self.right.itemsize
470-
471457
def __len__(self) -> int:
472458
return len(self.left)
473459

pandas/core/indexes/period.py

+1-36
Original file line numberDiff line numberDiff line change
@@ -911,20 +911,9 @@ def __setstate__(self, state):
911911

912912
_unpickle_compat = __setstate__
913913

914-
@property
915-
def flags(self):
916-
""" return the ndarray.flags for the underlying data """
917-
warnings.warn(
918-
"{obj}.flags is deprecated and will be removed "
919-
"in a future version".format(obj=type(self).__name__),
920-
FutureWarning,
921-
stacklevel=2,
922-
)
923-
return self._ndarray_values.flags
924-
925914
def item(self):
926915
"""
927-
return the first element of the underlying data as a python
916+
Return the first element of the underlying data as a python
928917
scalar
929918
930919
.. deprecated:: 0.25.0
@@ -943,30 +932,6 @@ def item(self):
943932
# copy numpy's message here because Py26 raises an IndexError
944933
raise ValueError("can only convert an array of size 1 to a Python scalar")
945934

946-
@property
947-
def data(self):
948-
""" return the data pointer of the underlying data """
949-
warnings.warn(
950-
"{obj}.data is deprecated and will be removed "
951-
"in a future version".format(obj=type(self).__name__),
952-
FutureWarning,
953-
stacklevel=2,
954-
)
955-
return np.asarray(self._data).data
956-
957-
@property
958-
def base(self):
959-
""" return the base object if the memory of the underlying data is
960-
shared
961-
"""
962-
warnings.warn(
963-
"{obj}.base is deprecated and will be removed "
964-
"in a future version".format(obj=type(self).__name__),
965-
FutureWarning,
966-
stacklevel=2,
967-
)
968-
return np.asarray(self._data)
969-
970935
def memory_usage(self, deep=False):
971936
result = super().memory_usage(deep=deep)
972937
if hasattr(self, "_cache") and "_int64index" in self._cache:

pandas/tests/indexes/interval/test_interval.py

-11
Original file line numberDiff line numberDiff line change
@@ -836,17 +836,6 @@ def test_nbytes(self):
836836
expected = 64 # 4 * 8 * 2
837837
assert result == expected
838838

839-
def test_itemsize(self):
840-
# GH 19209
841-
left = np.arange(0, 4, dtype="i8")
842-
right = np.arange(1, 5, dtype="i8")
843-
expected = 16 # 8 * 2
844-
845-
with tm.assert_produces_warning(FutureWarning, check_stacklevel=False):
846-
result = IntervalIndex.from_arrays(left, right).itemsize
847-
848-
assert result == expected
849-
850839
@pytest.mark.parametrize("new_closed", ["left", "right", "both", "neither"])
851840
def test_set_closed(self, name, closed, new_closed):
852841
# GH 21670

pandas/tests/indexes/test_category.py

+4-2
Original file line numberDiff line numberDiff line change
@@ -788,8 +788,10 @@ def test_ensure_copied_data(self, indices):
788788
# Index.__new__ is honored.
789789
#
790790
# Must be tested separately from other indexes because
791-
# self.value is not an ndarray.
792-
_base = lambda ar: ar if ar.base is None else ar.base
791+
# self.values is not an ndarray.
792+
# GH#29918 Index.base has been removed
793+
# FIXME: is this test still meaningful?
794+
_base = lambda ar: ar if getattr(ar, "base", None) is None else ar.base
793795

794796
result = CategoricalIndex(indices.values, copy=True)
795797
tm.assert_index_equal(indices, result)

pandas/tests/test_base.py

+2-14
Original file line numberDiff line numberDiff line change
@@ -333,20 +333,8 @@ def test_ndarray_compat_properties(self):
333333
assert getattr(o, p, None) is not None
334334

335335
# deprecated properties
336-
for p in ["flags", "strides", "itemsize"]:
337-
with tm.assert_produces_warning(FutureWarning):
338-
assert getattr(o, p, None) is not None
339-
340-
with tm.assert_produces_warning(FutureWarning):
341-
assert hasattr(o, "base")
342-
343-
# If we have a datetime-like dtype then needs a view to work
344-
# but the user is responsible for that
345-
try:
346-
with tm.assert_produces_warning(FutureWarning):
347-
assert o.data is not None
348-
except ValueError:
349-
pass
336+
for p in ["flags", "strides", "itemsize", "base", "data"]:
337+
assert not hasattr(o, p)
350338

351339
with pytest.raises(ValueError):
352340
with tm.assert_produces_warning(FutureWarning):

0 commit comments

Comments
 (0)