Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit d09e70e

Browse files
committed
update traitlets
1 parent 930292e commit d09e70e

File tree

7 files changed

+271
-38
lines changed

7 files changed

+271
-38
lines changed

lib/matplotlib/artist.py

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -70,12 +70,9 @@ def draw_wrapper(artist, renderer, *args, **kwargs):
7070
return draw_wrapper
7171

7272

73-
def _stale_figure_callback(self):
74-
self.figure.stale = True
75-
76-
77-
def _stale_axes_callback(self):
78-
self.axes.stale = True
73+
def _stale_axes_callback(self, val):
74+
if self.axes:
75+
self.axes.stale = val
7976

8077

8178
class Artist(PrivateMethodMixin, Configurable):
@@ -104,9 +101,14 @@ def _transform_getter(self, value, trait):
104101

105102
stale = Bool(True)
106103

107-
def _stale_changed(self):
108-
if self.stale:
109-
self.pchanged()
104+
def _stale_validate(self, value, trait):
105+
if self.get_animated():
106+
return self.stale
107+
return value
108+
109+
def _stale_changed(self, name, new):
110+
if new and self.stale_callback is not None:
111+
self.stale_callback(self, new)
110112

111113
transform_set = Bool(False)
112114

@@ -117,15 +119,17 @@ def _axes_changed(self, name, old, new):
117119
"in more than one Axes which is not "
118120
"supported")
119121
if new not in (Undefined,None) and new is not self:
120-
self.add_callback(_stale_axes_callback)
122+
self.stale_callback = _stale_axes_callback
121123

122124
axes = Instance(str('matplotlib.axes.Axes'), allow_none=True)
123125

124126
figure = Instance(str('matplotlib.figure.Figure'), allow_none=True)
125127

126-
def _figure_changed(self, name, new):
128+
def _figure_changed(self, name, old, new):
129+
if old not in (None, Undefined):
130+
raise RuntimeError("Can not put single artist in "
131+
"more than one figure")
127132
if new and new is not self:
128-
self.add_callback(_stale_figure_callback)
129133
self.pchanged()
130134
self.stale = True
131135

@@ -136,6 +140,7 @@ def __init__(self):
136140

137141
# self._transform = None
138142
# self._transformSet = False
143+
self.stale_callback = None
139144
self._visible = True
140145
self._animated = False
141146
self._alpha = None
@@ -168,6 +173,9 @@ def __getstate__(self):
168173
# remove the unpicklable remove method, this will get re-added on load
169174
# (by the axes) if the artist lives on an axes.
170175
d['_remove_method'] = None
176+
d['stale_callback'] = None
177+
# .private(name, value) forces _notify_trait into __dict__
178+
d.pop('_notify_trait', None)
171179
return d
172180

173181
def remove(self):

lib/matplotlib/axes/_base.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -506,11 +506,11 @@ def _init_axis(self):
506506
self.spines['right'].register_axis(self.yaxis)
507507
self._update_transScale()
508508

509-
def _figure_changed(self, name, fig):
510-
martist.Artist._figure_changed(self, name, fig)
509+
def _figure_changed(self, name, old, new):
510+
martist.Artist._figure_changed(self, name, old, new)
511511

512512
self.bbox = mtransforms.TransformedBbox(self._position,
513-
fig.transFigure)
513+
new.transFigure)
514514
# these will be updated later as data is added
515515
self.dataLim = mtransforms.Bbox.null()
516516
self.viewLim = mtransforms.Bbox.unit()

lib/matplotlib/offsetbox.py

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -178,15 +178,15 @@ def __setstate__(self, state):
178178
self._offset = self._offset.get_instancemethod()
179179
self.stale = True
180180

181-
def _figure_changed(self, name, fig):
181+
def _figure_changed(self, name, old, new):
182182
"""
183183
Set the figure
184184
185185
accepts a class:`~matplotlib.figure.Figure` instance
186186
"""
187-
martist.Artist._figure_changed(self, name, fig)
187+
martist.Artist._figure_changed(self, name, old, new)
188188
for c in self.get_children():
189-
c.figure = fig
189+
c.figure = new
190190

191191
#!DEPRICATED
192192
# def set_figure(self, fig):
@@ -204,7 +204,7 @@ def _axes_changed(self, name, old, new):
204204
martist.Artist._axes_changed(self, name, old, new)
205205
for c in self.get_children():
206206
if c is not None:
207-
c.axes = ax
207+
c.axes = new
208208

209209
def contains(self, mouseevent):
210210
for c in self.get_children():
@@ -694,9 +694,7 @@ def get_extent(self, renderer):
694694
def add_artist(self, a):
695695
'Add any :class:`~matplotlib.artist.Artist` to the container box'
696696
self._children.append(a)
697-
if not a.transform_set):
698697
if not a.transform_set:
699-
if not a.is_transform_set():
700698
a.transform = self.transform
701699
if self.axes is not None:
702700
a.axes = self.axes
@@ -1510,11 +1508,11 @@ def get_children(self):
15101508
children.append(self.arrow_patch)
15111509
return children
15121510

1513-
def _figure_changed(self, name, fig):
1511+
def _figure_changed(self, name, old, new):
15141512
if self.arrow_patch is not None:
1515-
self.arrow_patch.figure = fig
1516-
self.offsetbox.figure = fig
1517-
martist.Artist._figure_changed(self, name, fig)
1513+
self.arrow_patch.figure = new
1514+
self.offsetbox.figure = new
1515+
martist.Artist._figure_changed(self, name, old, new)
15181516

15191517
#!DEPRICATED
15201518
# def set_figure(self, fig):

lib/matplotlib/quiver.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -350,9 +350,9 @@ def _set_transform(self):
350350
else:
351351
raise ValueError('unrecognized coordinates')
352352

353-
def _figure_changed(self, name, fig):
354-
martist.Artist._figure_changed(self, name, fig)
355-
self.text.figure = fig
353+
def _figure_changed(self, name, old, new):
354+
martist.Artist._figure_changed(self, name, old, new)
355+
self.text.figure = new
356356

357357
def contains(self, mouseevent):
358358
# Maybe the dictionary should allow one to

lib/matplotlib/table.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,9 +76,9 @@ def _transform_set(self):
7676
# # the text does not get the transform!
7777
# self.stale = True
7878

79-
def _figure_changed(self, name, fig):
80-
Rectangle._figure_changed(self, name, fig)
81-
self._text.figure = fig
79+
def _figure_changed(self, name, old, new):
80+
Rectangle._figure_changed(self, name, old, new)
81+
self._text.figure = new
8282

8383
#!DEPRICATED
8484
# def set_figure(self, fig):

lib/matplotlib/text.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1634,9 +1634,9 @@ def _transform_changed(self, name, new):
16341634
# 'return the figure instance the artist belongs to'
16351635
# return self.figure
16361636

1637-
def _figure_changed(self, name, fig):
1638-
Text._figure_changed(self, name, fig)
1639-
self.dashline.figure = fig
1637+
def _figure_changed(self, name, old, new):
1638+
Text._figure_changed(self, name, old, new)
1639+
self.dashline.figure = new
16401640

16411641
#!DEPRICATED
16421642
# def set_figure(self, fig):
@@ -2102,12 +2102,12 @@ def anncoords(self):
21022102
def anncoords(self, coords):
21032103
self._textcoords = coords
21042104

2105-
def _figure_changed(self, name, fig):
2105+
def _figure_changed(self, name, old, new):
21062106
if self.arrow is not None:
2107-
self.arrow.figure = fig
2107+
self.arrow.figure = new
21082108
if self.arrow_patch is not None:
2109-
self.arrow_patch.figure = fig
2110-
Artist._figure_changed(self, name, fig)
2109+
self.arrow_patch.figure = new
2110+
Artist._figure_changed(self, name, old, new)
21112111

21122112
#!DEPRICATED
21132113
# def set_figure(self, fig):

0 commit comments

Comments
 (0)