Skip to content

Commit 54f274a

Browse files
committed
Deprecate visible setter of selectors in favour of get_visible/set_visible
1 parent 40dea5a commit 54f274a

File tree

3 files changed

+44
-17
lines changed

3 files changed

+44
-17
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
Selector widget state internals
2+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3+
The *visible* attribute has been deprecated, use *set_visible* or
4+
*get_visible* instead.

lib/matplotlib/tests/test_widgets.py

+16-3
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,19 @@ def onselect(epress, erelease):
104104
assert ax._erelease.ydata == y1
105105

106106

107+
def test_deprecation_selector_visible_attribute():
108+
ax = get_ax()
109+
tool = widgets.RectangleSelector(ax, lambda *args: None)
110+
111+
assert tool.get_visible()
112+
113+
with pytest.warns(
114+
MatplotlibDeprecationWarning,
115+
match="was deprecated in Matplotlib 3.6"):
116+
tool.visible = False
117+
assert not tool.get_visible()
118+
119+
107120
@pytest.mark.parametrize('drag_from_anywhere, new_center',
108121
[[True, (60, 75)],
109122
[False, (30, 20)]])
@@ -789,18 +802,18 @@ def test_selector_clear_method(ax, selector):
789802
tool = widgets.RectangleSelector(ax, onselect=noop, interactive=True)
790803
click_and_drag(tool, start=(10, 10), end=(100, 120))
791804
assert tool._selection_completed
792-
assert tool.visible
805+
assert tool.get_visible()
793806
if selector == 'span':
794807
assert tool.extents == (10, 100)
795808

796809
tool.clear()
797810
assert not tool._selection_completed
798-
assert not tool.visible
811+
assert not tool.get_visible()
799812

800813
# Do another cycle of events to make sure we can
801814
click_and_drag(tool, start=(10, 10), end=(50, 120))
802815
assert tool._selection_completed
803-
assert tool.visible
816+
assert tool.get_visible()
804817
if selector == 'span':
805818
assert tool.extents == (10, 50)
806819

lib/matplotlib/widgets.py

+24-14
Original file line numberDiff line numberDiff line change
@@ -1804,7 +1804,7 @@ def __init__(self, ax, onselect, useblit=False, button=None,
18041804
state_modifier_keys=None, use_data_coordinates=False):
18051805
super().__init__(ax)
18061806

1807-
self.visible = True
1807+
self._visible = True
18081808
self.onselect = onselect
18091809
self.useblit = useblit and self.canvas.supports_blit
18101810
self.connect_default_events()
@@ -2052,11 +2052,24 @@ def _on_key_release(self, event):
20522052
"""Key release event handler."""
20532053

20542054
def set_visible(self, visible):
2055-
"""Set the visibility of our artists."""
2056-
self.visible = visible
2055+
"""Set the visibility of the selector artists."""
2056+
self._visible = visible
20572057
for artist in self.artists:
20582058
artist.set_visible(visible)
20592059

2060+
def get_visible(self):
2061+
"""Get the visibility of the selector artists."""
2062+
return self._visible
2063+
2064+
@property
2065+
def visible(self):
2066+
return self.get_visible()
2067+
2068+
@visible.setter
2069+
def visible(self, visible):
2070+
_api.warn_deprecated("3.6", alternative="set_visible")
2071+
self.set_visible(visible)
2072+
20602073
def clear(self):
20612074
"""Clear the selection and set the selector ready to make a new one."""
20622075
self._selection_completed = False
@@ -2266,8 +2279,6 @@ def __init__(self, ax, onselect, direction, minspan=0, useblit=False,
22662279
props['animated'] = self.useblit
22672280

22682281
self.direction = direction
2269-
2270-
self.visible = True
22712282
self._extents_on_press = None
22722283
self.snap_values = snap_values
22732284

@@ -2405,11 +2416,11 @@ def _press(self, event):
24052416
# when the press event outside the span, we initially set the
24062417
# visibility to False and extents to (v, v)
24072418
# update will be called when setting the extents
2408-
self.visible = False
2419+
self._visible = False
24092420
self.extents = v, v
24102421
# We need to set the visibility back, so the span selector will be
24112422
# drawn when necessary (span width > 0)
2412-
self.visible = True
2423+
self._visible = True
24132424
else:
24142425
self.set_visible(True)
24152426

@@ -2598,7 +2609,7 @@ def extents(self, extents):
25982609
if self._interactive:
25992610
# Update displayed handles
26002611
self._edge_handles.set_data(self.extents)
2601-
self.set_visible(self.visible)
2612+
self.set_visible(self._visible)
26022613
self.update()
26032614

26042615

@@ -2912,7 +2923,6 @@ def __init__(self, ax, onselect, drawtype='box',
29122923
state_modifier_keys=state_modifier_keys,
29132924
use_data_coordinates=use_data_coordinates)
29142925

2915-
self.visible = True
29162926
self._interactive = interactive
29172927
self.drag_from_anywhere = drag_from_anywhere
29182928
self.ignore_event_outside = ignore_event_outside
@@ -2931,14 +2941,14 @@ def __init__(self, ax, onselect, drawtype='box',
29312941
"%(removal)s."
29322942
"Use props=dict(visible=False) instead.")
29332943
drawtype = 'line'
2934-
self.visible = False
2944+
self._visible = False
29352945

29362946
if drawtype == 'box':
29372947
if props is None:
29382948
props = dict(facecolor='red', edgecolor='black',
29392949
alpha=0.2, fill=True)
29402950
props['animated'] = self.useblit
2941-
self.visible = props.pop('visible', self.visible)
2951+
self._visible = props.pop('visible', self._visible)
29422952
self._props = props
29432953
to_draw = self._init_shape(**self._props)
29442954
self.ax.add_patch(to_draw)
@@ -3035,9 +3045,9 @@ def _press(self, event):
30353045
self._allow_creation):
30363046
x = event.xdata
30373047
y = event.ydata
3038-
self.visible = False
3048+
self._visible = False
30393049
self.extents = x, x, y, y
3040-
self.visible = True
3050+
self._visible = True
30413051
else:
30423052
self.set_visible(True)
30433053

@@ -3331,7 +3341,7 @@ def extents(self, extents):
33313341
self._corner_handles.set_data(*self.corners)
33323342
self._edge_handles.set_data(*self.edge_centers)
33333343
self._center_handle.set_data(*self.center)
3334-
self.set_visible(self.visible)
3344+
self.set_visible(self._visible)
33353345
self.update()
33363346

33373347
@property

0 commit comments

Comments
 (0)