8000 Deprecate visible attribute of selectors in favour of get_visible/set… · matplotlib/matplotlib@f5540f5 · GitHub
[go: up one dir, main page]

Skip to content

Commit f5540f5

Browse files
committed
Deprecate visible attribute of selectors in favour of get_visible/set_visible
1 parent db96106 commit f5540f5

File tree

3 files changed

+40
-17
lines changed

3 files changed

+40
-17
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
Selector widget state internals
2+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3+
The *visible* attribute have been deprecated, use *set_visible* or
4+
*get_visible* instead.

lib/matplotlib/tests/test_widgets.py

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,19 @@ def test_rectangle_selector():
5959
check_rectangle(props=dict(fill=True))
6060

6161

62+
def test_deprecation_selector_visible_attribute():
63+
ax = get_ax()
64+
tool = widgets.RectangleSelector(ax, lambda *args: None)
65+
66+
assert tool.get_visible()
67+
68+
with pytest.warns(
69+
MatplotlibDeprecationWarning,
70+
match="The visible attribute was deprecated"):
71+
tool.visible = False
72+
assert not tool.get_visible()
73+
74+
6275
@pytest.mark.parametrize('drag_from_anywhere, new_center',
6376
[[True, (60, 75)],
6477
[False, (30, 20)]])
@@ -832,18 +845,18 @@ def onselect(*args):
832845
tool = widgets.RectangleSelector(ax, onselect, interactive=True)
833846
click_and_drag(tool, start=(10, 10), end=(100, 120))
834847
assert tool._selection_completed
835-
assert tool.visible
848+
assert tool.get_visible()
836849
if selector == 'span':
837850
assert tool.extents == (10, 100)
838851

839852
tool.clear()
840853
assert not tool._selection_completed
841-
assert not tool.visible
854+
assert not tool.get_visible()
842855

843856
# Do another cycle of events to make sure we can
844857
click_and_drag(tool, start=(10, 10), end=(50, 120))
845858
assert tool._selection_completed
846-
assert tool.visible
859+
assert tool.get_visible()
847860
if selector == 'span':
848861
assert tool.extents == (10, 50)
849862

lib/matplotlib/widgets.py

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1801,7 +1801,7 @@ def __init__(self, ax, onselect, useblit=False, button=None,
18011801
state_modifier_keys=None, use_data_coordinates=False):
18021802
super().__init__(ax)
18031803

1804-
self.visible = True
1804+
self._visible = True
18051805
self.onselect = onselect
18061806
self.useblit = useblit and self.canvas.supports_blit
18071807
self.connect_default_events()
@@ -2025,11 +2025,20 @@ def _on_key_release(self, event):
20252025
"""Key release event handler."""
20262026

20272027
def set_visible(self, visible):
2028-
"""Set the visibility of our artists."""
2029-
self.visible = visible
2028+
"""Set the visibility of the selector artists."""
2029+
self._visible = visible
20302030
for artist in self.artists:
20312031
artist.set_visible(visible)
20322032

2033+
def get_visible(self):
2034+
"""Get the visibility of the selector artists."""
2035+
return self._visible
2036+
2037+
visible = _api.deprecated("3.6", name="visible",
2038+
alternative="set_visible or get_visible")(
2039+
property(lambda self: self._visible,
2040+
lambda self, value: setattr(self, "_visible", value)))
2041+
20332042
def clear(self):
20342043
"""Clear the selection and set the selector ready to make a new one."""
20352044
self._selection_completed = False
@@ -2236,8 +2245,6 @@ def __init__(self, ax, onselect, direction, minspan=0, useblit=False,
22362245
props['animated'] = self.useblit
22372246

22382247
self.direction = direction
2239-
2240-
self.visible = True
22412248
self._extents_on_press = None
22422249

22432250
# self._pressv is deprecated and we don't use it internally anymore
@@ -2374,11 +2381,11 @@ def _press(self, event):
23742381
# when the press event outside the span, we initially set the
23752382
# visibility to False and extents to (v, v)
23762383
# update will be called when setting the extents
2377-
self.visible = False
2384+
self._visible = False
23782385
self.extents = v, v
23792386
# We need to set the visibility back, so the span selector will be
23802387
# drawn when necessary (span width > 0)
2381-
self.visible = True
2388+
self._visible = True
23822389
else:
23832390
self.set_visible(True)
23842391

@@ -2556,7 +2563,7 @@ def extents(self, extents):
25562563
if self._interactive:
25572564
# Update displayed handles
25582565
self._edge_handles.set_data(self.extents)
2559-
self.set_visible(self.visible)
2566+
self.set_visible(self._visible)
25602567
self.update()
25612568

25622569

@@ -2870,7 +2877,6 @@ def __init__(self, ax, onselect, drawtype='box',
28702877
state_modifier_keys=state_modifier_keys,
28712878
use_data_coordinates=use_data_coordinates)
28722879

2873-
self.visible = True
28742880
self._interactive = interactive
28752881
self.drag_from_anywhere = drag_from_anywhere
28762882
self.ignore_event_outside = ignore_event_outside
@@ -2889,14 +2895,14 @@ def __init__(self, ax, onselect, drawtype='box',
28892895
"%(removal)s."
28902896
"Use props=dict(visible=False) instead.")
28912897
drawtype = 'line'
2892-
self.visible = False
2898+
self._visible = False
28932899

28942900
if drawtype == 'box':
28952901
if props is None:
28962902
props = dict(facecolor='red', edgecolor='black',
28972903
alpha=0.2, fill=True)
28982904
props['animated'] = self.useblit
2899-
self.visible = props.pop('visible', self.visible)
2905+
self._visible = props.pop('visible', self._visible)
29002906
self._props = props
29012907
to_draw = self._init_shape(**self._props)
29022908
self.ax.add_patch(to_draw)
@@ -2993,9 +2999,9 @@ def _press(self, event):
29932999
self._allow_creation):
29943000
x = event.xdata
29953001
y = event.ydata
2996-
self.visible = False
3002+
self._visible = False
29973003
self.extents = x, x, y, y
2998-
self.visible = True
3004+
self._visible = True
29993005
else:
30003006
self.set_visible(True)
30013007

@@ -3292,7 +3298,7 @@ def extents(self, extents):
32923298
self._corner_handles.set_data(*self.corners)
32933299
self._edge_handles.set_data(*self.edge_centers)
32943300
self._center_handle.set_data(*self.center)
3295-
self.set_visible(self.visible)
3301+
self.set_visible(self._visible)
32963302
self.update()
32973303

32983304
@property

0 commit comments

Comments
 (0)
0