8000 Merge pull request #25196 from ericpre/add_deprecation_sequence_set_d… · matplotlib/matplotlib@545b581 · GitHub
[go: up one dir, main page]

Skip to content

Commit 545b581

Browse files
authored
Merge pull request #25196 from ericpre/add_deprecation_sequence_set_data_line
Add deprecation for setting data with non sequence type in `Line2D`
2 parents 81f5f24 + 044fbc0 commit 545b581

File tree

3 files changed

+26
-4
lines changed

3 files changed

+26
-4
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
``Line2D``
2+
~~~~~~~~~~
3+
When creating a Line2D or using `.Line2D.set_xdata` and `.Line2D.set_ydata`,
4+
passing x/y data as non sequence is deprecated.

lib/matplotlib/lines.py

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1280,7 +1280,14 @@ def set_xdata(self, x):
12801280
x : 1D array
12811281
"""
12821282
if not np.iterable(x):
1283-
raise RuntimeError('x must be a sequence')
1283+
# When deprecation cycle is completed
1284+
# raise RuntimeError('x must be a sequence')
1285+
_api.warn_deprecated(
1286+
since=3.7,
1287+
message="Setting data with a non sequence type "
1288+
"is deprecated since %(since)s and will be "
1289+
"remove %(removal)s")
1290+
x = [x, ]
12841291
self._xorig = copy.copy(x)
12851292
self._invalidx = True
12861293
self.stale = True
@@ -1294,7 +1301,14 @@ def set_ydata(self, y):
12941301
y : 1D array
12951302
"""
12961303
if not np.iterable(y):
1297-
raise RuntimeError('y must be a sequence')
1304+
# When deprecation cycle is completed
1305+
# raise RuntimeError('y must be a sequence')
1306+
_api.warn_deprecated(
1307+
since=3.7,
1308+
message="Setting data with a non sequence type "
1309+
"is deprecated since %(since)s and will be "
1310+
"remove %(removal)s")
1311+
y = [y, ]
12981312
self._yorig = copy.copy(y)
12991313
self._invalidy = True
13001314
self.stale = True

lib/matplotlib/tests/test_lines.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import matplotlib.pyplot as plt
2121
import matplotlib.transforms as mtransforms
2222
from matplotlib.testing.decorators import image_comparison, check_figures_equal
23+
from matplotlib._api.deprecation import MatplotlibDeprecationWarning
2324

2425

2526
def test_segment_hits():
@@ -91,9 +92,12 @@ def test_invalid_line_data():
9192
mlines.Line2D([], 1)
9293

9394
line = mlines.Line2D([], [])
94-
with pytest.raises(RuntimeError, match='x must be'):
95+
# when deprecation cycle is completed
96+
# with pytest.raises(RuntimeError, match='x must be'):
97+
with pytest.warns(MatplotlibDeprecationWarning):
9598
line.set_xdata(0)
96-
with pytest.raises(RuntimeError, match='y must be'):
99+
# with pytest.raises(RuntimeError, match='y must be'):
100+
with pytest.warns(MatplotlibDeprecationWarning):
97101
line.set_ydata(0)
98102

99103

0 commit comments

Comments
 (0)
0