Skip to content

Commit 1c88e6a

Browse files
authored
DEPR: get_value (#33907)
1 parent 3912a38 commit 1c88e6a

File tree

9 files changed

+50
-21
lines changed

9 files changed

+50
-21
lines changed

doc/source/whatsnew/v1.1.0.rst

+1
Original file line numberDiff line numberDiff line change
@@ -487,6 +487,7 @@ Deprecations
487487
arguments (:issue:`27573`).
488488

489489
- :func:`pandas.api.types.is_categorical` is deprecated and will be removed in a future version; use `:func:pandas.api.types.is_categorical_dtype` instead (:issue:`33385`)
490+
- :meth:`Index.get_value` is deprecated and will be removed in a future version (:issue:`19728`)
490491

491492
.. ---------------------------------------------------------------------------
492493

pandas/core/indexes/base.py

+7
Original file line numberDiff line numberDiff line change
@@ -4541,6 +4541,13 @@ def get_value(self, series: "Series", key):
45414541
-------
45424542
scalar or Series
45434543
"""
4544+
warnings.warn(
4545+
"get_value is deprecated and will be removed in a future version. "
4546+
"Use Series[key] instead",
4547+
FutureWarning,
4548+
stacklevel=2,
4549+
)
4550+
45444551
self._check_indexing_error(key)
45454552

45464553
try:

pandas/tests/indexes/datetimes/test_indexing.py

+8-4
Original file line numberDiff line numberDiff line change
@@ -608,13 +608,17 @@ def test_get_value(self):
608608
key = dti[1]
609609

610610
with pytest.raises(AttributeError, match="has no attribute '_values'"):
611-
dti.get_value(arr, key)
611+
with tm.assert_produces_warning(FutureWarning):
612+
dti.get_value(arr, key)
612613

613-
result = dti.get_value(ser, key)
614+
with tm.assert_produces_warning(FutureWarning):
615+
result = dti.get_value(ser, key)
614616
assert result == 7
615617

616-
result = dti.get_value(ser, key.to_pydatetime())
618+
with tm.assert_produces_warning(FutureWarning):
619+
result = dti.get_value(ser, key.to_pydatetime())
617620
assert result == 7
618621

619-
result = dti.get_value(ser, key.to_datetime64())
622+
with tm.assert_produces_warning(FutureWarning):
623+
result = dti.get_value(ser, key.to_datetime64())
620624
assert result == 7

pandas/tests/indexes/period/test_indexing.py

+18-9
Original file line numberDiff line numberDiff line change
@@ -673,21 +673,24 @@ def test_get_value(self):
673673
input0 = pd.Series(np.array([1, 2, 3]), index=idx0)
674674
expected0 = 2
675675

676-
result0 = idx0.get_value(input0, p1)
676+
with tm.assert_produces_warning(FutureWarning):
677+
result0 = idx0.get_value(input0, p1)
677678
assert result0 == expected0
678679

679680
idx1 = PeriodIndex([p1, p1, p2])
680681
input1 = pd.Series(np.array([1, 2, 3]), index=idx1)
681682
expected1 = input1.iloc[[0, 1]]
682683

683-
result1 = idx1.get_value(input1, p1)
684+
with tm.assert_produces_warning(FutureWarning):
685+
result1 = idx1.get_value(input1, p1)
684686
tm.assert_series_equal(result1, expected1)
685687

686688
idx2 = PeriodIndex([p1, p2, p1])
687689
input2 = pd.Series(np.array([1, 2, 3]), index=idx2)
688690
expected2 = input2.iloc[[0, 2]]
689691

690-
result2 = idx2.get_value(input2, p1)
692+
with tm.assert_produces_warning(FutureWarning):
693+
result2 = idx2.get_value(input2, p1)
691694
tm.assert_series_equal(result2, expected2)
692695

693696
@pytest.mark.parametrize("freq", ["H", "D"])
@@ -700,7 +703,8 @@ def test_get_value_datetime_hourly(self, freq):
700703
ts = dti[0]
701704

702705
assert pi.get_loc(ts) == 0
703-
assert pi.get_value(ser, ts) == 7
706+
with tm.assert_produces_warning(FutureWarning):
707+
assert pi.get_value(ser, ts) == 7
704708
assert ser[ts] == 7
705709
assert ser.loc[ts] == 7
706710

@@ -709,14 +713,16 @@ def test_get_value_datetime_hourly(self, freq):
709713
with pytest.raises(KeyError, match="2016-01-01 03:00"):
710714
pi.get_loc(ts2)
711715
with pytest.raises(KeyError, match="2016-01-01 03:00"):
712-
pi.get_value(ser, ts2)
716+
with tm.assert_produces_warning(FutureWarning):
717+
pi.get_value(ser, ts2)
713718
with pytest.raises(KeyError, match="2016-01-01 03:00"):
714719
ser[ts2]
715720
with pytest.raises(KeyError, match="2016-01-01 03:00"):
716721
ser.loc[ts2]
717722
else:
718723
assert pi.get_loc(ts2) == 0
719-
assert pi.get_value(ser, ts2) == 7
724+
with tm.assert_produces_warning(FutureWarning):
725+
assert pi.get_value(ser, ts2) == 7
720726
assert ser[ts2] == 7
721727
assert ser.loc[ts2] == 7
722728

@@ -726,13 +732,15 @@ def test_get_value_integer(self):
726732
pi = dti.to_period("D")
727733
ser = pd.Series(range(3), index=pi)
728734
with pytest.raises(IndexError, match=msg):
729-
pi.get_value(ser, 16801)
735+
with tm.assert_produces_warning(FutureWarning):
736+
pi.get_value(ser, 16801)
730737

731738
msg = "index 46 is out of bounds for axis 0 with size 3"
732739
pi2 = dti.to_period("Y") # duplicates, ordinals are all 46
733740
ser2 = pd.Series(range(3), index=pi2)
734741
with pytest.raises(IndexError, match=msg):
735-
pi2.get_value(ser2, 46)
742+
with tm.assert_produces_warning(FutureWarning):
743+
pi2.get_value(ser2, 46)
736744

737745

738746
class TestContains:
@@ -758,7 +766,8 @@ def test_contains(self):
758766
with pytest.raises(KeyError, match=key):
759767
idx0.get_loc(key)
760768
with pytest.raises(KeyError, match=key):
761-
idx0.get_value(ser, key)
769+
with tm.assert_produces_warning(FutureWarning):
770+
idx0.get_value(ser, key)
762771

763772
assert "2017-09" in idx0
764773

pandas/tests/indexes/period/test_partial_slicing.py

+4-2
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,8 @@ def test_partial_slice_doesnt_require_monotonicity(self):
113113

114114
expected = ser[indexer_2014]
115115

116-
result = nidx.get_value(ser, "2014")
116+
with tm.assert_produces_warning(FutureWarning):
117+
result = nidx.get_value(ser, "2014")
117118
tm.assert_series_equal(result, expected)
118119

119120
result = ser.loc["2014"]
@@ -131,7 +132,8 @@ def test_partial_slice_doesnt_require_monotonicity(self):
131132

132133
expected = ser[indexer_may2015]
133134

134-
result = nidx.get_value(ser, "May 2015")
135+
with tm.assert_produces_warning(FutureWarning):
136+
result = nidx.get_value(ser, "May 2015")
135137
tm.assert_series_equal(result, expected)
136138

137139
result = ser.loc["May 2015"]

pandas/tests/indexes/test_base.py

+4-2
Original file line numberDiff line numberDiff line change
@@ -1697,9 +1697,11 @@ def test_get_value(self, indices):
16971697

16981698
with pytest.raises(AttributeError, match="has no attribute '_values'"):
16991699
# Index.get_value requires a Series, not an ndarray
1700-
indices.get_value(values, value)
1700+
with tm.assert_produces_warning(FutureWarning):
1701+
indices.get_value(values, value)
17011702

1702-
result = indices.get_value(Series(values, index=values), value)
1703+
with tm.assert_produces_warning(FutureWarning):
1704+
result = indices.get_value(Series(values, index=values), value)
17031705
tm.assert_almost_equal(result, values[67])
17041706

17051707
@pytest.mark.parametrize("values", [["foo", "bar", "quux"], {"foo", "bar", "quux"}])

pandas/tests/indexes/test_numeric.py

+4-2
Original file line numberDiff line numberDiff line change
@@ -254,9 +254,11 @@ def test_lookups_datetimelike_values(self, vals):
254254

255255
expected = vals[1]
256256

257-
result = ser.index.get_value(ser, 4.0)
257+
with tm.assert_produces_warning(FutureWarning):
258+
result = ser.index.get_value(ser, 4.0)
258259
assert isinstance(result, type(expected)) and result == expected
259-
result = ser.index.get_value(ser, 4)
260+
with tm.assert_produces_warning(FutureWarning):
261+
result = ser.index.get_value(ser, 4)
260262
assert isinstance(result, type(expected)) and result == expected
261263

262264
result = ser[4.0]

pandas/tests/indexing/multiindex/test_partial.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,8 @@ def test_getitem_intkey_leading_level(
151151
with pytest.raises(KeyError, match="14"):
152152
ser[14]
153153
with pytest.raises(KeyError, match="14"):
154-
mi.get_value(ser, 14)
154+
with tm.assert_produces_warning(FutureWarning):
155+
mi.get_value(ser, 14)
155156

156157
# ---------------------------------------------------------------------
157158
# AMBIGUOUS CASES!

pandas/tests/series/indexing/test_indexing.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -550,7 +550,8 @@ def test_getitem_categorical_str():
550550
tm.assert_series_equal(result, expected)
551551

552552
# Check the intermediate steps work as expected
553-
result = ser.index.get_value(ser, "a")
553+
with tm.assert_produces_warning(FutureWarning):
554+
result = ser.index.get_value(ser, "a")
554555
tm.assert_series_equal(result, expected)
555556

556557

0 commit comments

Comments
 (0)