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

Skip to content

Commit 26df6b5

Browse files
committed
transform refactoring : see TODO
1 parent a0d53cd commit 26df6b5

29 files changed

+1007
-136
lines changed

TODO.txt

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,22 +23,21 @@
2323
1.2) write relevant imports
2424
1.3) make the method changes
2525

26-
27-
# in TextMate
26+
# using custom script
2827
2.0) locate method references
2928
2.1) changed the method references
3029

3130
3.0) locate underscored attr references
3231
3.1) change the underscored attrs
3332

34-
4.0) if property find normal references
35-
4.1) change the underscored attrs
33+
4.0) run test suite
34+
4.1) rework for passing
3635

37-
5.0) complete
36+
5.0) compelete
3837

3938
-- STATUS --
4039

41-
1.3 : transform
40+
2.1 : transform
4241
0.2 : transform_set
4342
0.2 : stale
4443
0.0 : visible

lib/matplotlib/artist.py

Lines changed: 34 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
TransformedPath, Transform)
1515
from .path import Path
1616

17+
from .traitlets import Configurable, TransformInstance, Bool
18+
1719
# Note, matplotlib artists use the doc strings for set and get
1820
# methods to enable the introspection methods of setp and getp. Every
1921
# set_* method should have a docstring containing the line
@@ -30,6 +32,8 @@
3032
# as far as I can see - see
3133
# http://groups.google.com/groups?hl=en&lr=&threadm=mailman.5090.1098044946.5135.python-list%40python.org&rnum=1&prev=/groups%3Fq%3D__doc__%2Bauthor%253Ajdhunter%2540ace.bsd.uchicago.edu%26hl%3Den%26btnG%3DGoogle%2BSearch
3234

35+
class Undefined(object): pass
36+
Undefined = Undefined()
3337

3438
def allow_rasterization(draw):
3539
"""
@@ -76,7 +80,7 @@ def _stale_axes_callback(self):
7680
self.axes.stale = True
7781

7882

79-
class Artist(object):
83+
class Artist(Configurable):
8084
"""
8185
Abstract base class for someone who renders into a
8286
:class:`FigureCanvas`.
@@ -87,7 +91,7 @@ class Artist(object):
8791

8892
transform = TransformInstance(IdentityTransform())
8993

90-
def _tranform_changed(self):
94+
def _transform_changed(self):
9195
self.transform_set = True
9296
self.pchanged()
9397
self.stale = True
@@ -240,25 +244,27 @@ def axes(self, new_axes):
240244

241245
return new_axes
242246

243-
@property
244-
def stale(self):
245-
"""
246-
If the artist is 'stale' and needs to be re-drawn for the output to
247-
match the internal state of the artist.
248-
"""
249-
return self._stale
247+
#!DEPRECATED
248+
# @property
249+
# def stale(self):
250+
# """
251+
# If the artist is 'stale' and needs to be re-drawn for the output to
252+
# match the internal state of the artist.
253+
# """
254+
# return self._stale
250255

251-
@stale.setter
252-
def stale(self, val):
253-
# only trigger call-back stack on being marked as 'stale'
254-
# when not already stale
255-
# the draw process will take care of propagating the cleaning
256-
# process
257-
if not (self._stale == val):
258-
self._stale = val
259-
# only trigger propagation if marking as stale
260-
if self._stale:
261-
self.pchanged()
256+
#!DEPRECATED
257+
# @stale.setter
258+
# def stale(self, val):
259+
# # only trigger call-back stack on being marked as 'stale'
260+
# # when not already stale
261+
# # the draw process will take care of propagating the cleaning
262+
# # process
263+
# if not (self._stale == val):
264+
# self._stale = val
265+
# # only trigger propagation if marking as stale
266+
# if self._stale:
267+
# self.pchanged()
262268

263269
def get_window_extent(self, renderer):
264270
"""
@@ -660,13 +666,13 @@ def set_clip_path(self, path, transform=None):
660666
if transform is None:
661667
if isinstance(path, Rectangle):
662668
self.clipbox = TransformedBbox(Bbox.unit(),
663-
path.get_transform())
669+
path.transform)
664670
self._clippath = None
665671
success = True
666672
elif isinstance(path, Patch):
667673
self._clippath = TransformedPath(
668674
path.get_path(),
669-
path.get_transform())
675+
path.transform)
670676
success = True
671677
elif isinstance(path, tuple):
672678
path, transform = path
@@ -831,9 +837,12 @@ def update(self, props):
831837
setattr(self, k, v)
832838
else:
833839
func = getattr(self, 'set_' + k, None)
834-
if func is None or not six.callable(func):
840+
if func is not None and six.callable(func):
841+
func(v)
842+
elif getattr(self, k, Undefined) is not Undefined:
843+
setattr(self, k, v)
844+
else:
835845
raise AttributeError('Unknown property %s' % k)
836-
func(v)
837846
changed = True
838847
self.eventson = store
839848
if changed:
@@ -878,7 +887,7 @@ def set_zorder(self, level):
878887

879888
def update_from(self, other):
880889
'Copy properties from *other* to *self*.'
881-
self._transform = other._transform
890+
self.transform = other.transform
882891
self._transformSet = other._transformSet
883892
self._visible = other._visible
884893
self._alpha = other._alpha

lib/matplotlib/axes/_base.py

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -707,9 +707,8 @@ def get_yaxis_text2_transform(self, pad_points):
707707
"center", "left")
708708

709709
def _update_transScale(self):
710-
self.transScale.set(
711-
mtransforms.blended_transform_factory(
712-
self.xaxis.get_transform(), self.yaxis.get_transform()))
710+
self.transScale.set(mtransforms.blended_transform_factory(
711+
self.xaxis.transform, self.yaxis.transform))
713712
if hasattr(self, "lines"):
714713
for line in self.lines:
715714
try:
@@ -782,7 +781,7 @@ def get_axes_locator(self):
782781
def _set_artist_props(self, a):
783782
"""set the boilerplate props for artists added to axes"""
784783
a.set_figure(self.figure)
785-
if not a.transform_set):
784+
if not a.transform_set:
786785
a.transform = self.transData
787786

788787
a.axes = self
@@ -1580,7 +1579,7 @@ def _update_line_limits(self, line):
15801579
if path.vertices.size == 0:
15811580
return
15821581

1583-
line_trans = line.get_transform()
1582+
line_trans = line.transform
15841583

15851584
if line_trans == self.transData:
15861585
data_path = path
@@ -1655,7 +1654,7 @@ def _update_patch_limits(self, patch):
16551654
self.transData)
16561655
xys = patch_to_data.transform(xys)
16571656

1658-
updatex, updatey = patch.get_transform().\
1657+
updatex, updatey = patch.transform.\
16591658
contains_branch_seperately(self.transData)
16601659
self.update_datalim(xys, updatex=updatex,
16611660
updatey=updatey)
@@ -2155,7 +2154,7 @@ def draw(self, renderer=None, inframe=False):
21552154
gc.set_clip_rectangle(self.bbox)
21562155
gc.set_clip_path(mtransforms.TransformedPath(
21572156
self.patch.get_path(),
2158-
self.patch.get_transform()))
2157+
self.patch.transform))
21592158

21602159
renderer.draw_image(gc, round(l), round(b), im)
21612160
gc.restore()

lib/matplotlib/axis.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1779,7 +1779,7 @@ def _update_label_position(self, bboxes, bboxes2):
17791779
if self.label_position == 'bottom':
17801780
try:
17811781
spine = self.axes.spines['bottom']
1782-
spinebbox = spine.get_transform().transform_path(
1782+
spinebbox = spine.transform.transform_path(
17831783
spine.get_path()).get_extents()
17841784
except KeyError:
17851785
# use axes if spine doesn't exist
@@ -1794,7 +1794,7 @@ def _update_label_position(self, bboxes, bboxes2):
17941794
else:
17951795
try:
17961796
spine = self.axes.spines['top']
1797-
spinebbox = spine.get_transform().transform_path(
1797+
spinebbox = spine.transform.transform_path(
17981798
spine.get_path()).get_extents()
17991799
except KeyError:
18001800
# use axes if spine doesn't exist
@@ -2101,7 +2101,7 @@ def _update_label_position(self, bboxes, bboxes2):
21012101
if self.label_position == 'left':
21022102
try:
21032103
spine = self.axes.spines['left']
2104-
spinebbox = spine.get_transform().transform_path(
2104+
spinebbox = spine.transform.transform_path(
21052105
spine.get_path()).get_extents()
21062106
except KeyError:
21072107
# use axes if spine doesn't exist
@@ -2116,7 +2116,7 @@ def _update_label_position(self, bboxes, bboxes2):
21162116
else:
21172117
try:
21182118
spine = self.axes.spines['right']
2119-
spinebbox = spine.get_transform().transform_path(
2119+
spinebbox = spine.transform.transform_path(
21202120
spine.get_path()).get_extents()
21212121
except KeyError:
21222122
# use axes if spine doesn't exist

lib/matplotlib/backends/backend_pgf.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -669,7 +669,7 @@ def draw_text(self, gc, x, y, s, prop, angle, ismath=False, mtext=None):
669669
if mtext and (angle == 0 or mtext.get_rotation_mode() == "anchor"):
670670
# if text anchoring can be supported, get the original coordinates
671671
# and add alignment information
672-
x, y = mtext.get_transform().transform_point(mtext.get_position())
672+
x, y = mtext.transform.transform_point(mtext.get_position())
673673
text_args.append("x=%fin" % (x * f))
674674
text_args.append("y=%fin" % (y * f))
675675

lib/matplotlib/backends/backend_svg.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1038,7 +1038,7 @@ def _draw_text_as_text(self, gc, x, y, s, prop, angle, ismath, mtext=None):
10381038
# coordinates and add alignment information.
10391039

10401040
# Get anchor coordinates.
1041-
transform = mtext.get_transform()
1041+
transform = mtext.transform
10421042
ax, ay = transform.transform_point(mtext.get_position())
10431043
ay = self.height - ay
10441044

lib/matplotlib/collections.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ def get_offset_transform(self):
178178
return t
179179

180180
def get_datalim(self, transData):
181-
transform = self.get_transform()
181+
transform = self.transform
182182
transOffset = self.get_offset_transform()
183183
offsets = self._offsets
184184
paths = self.get_paths()
@@ -213,7 +213,7 @@ def get_window_extent(self, renderer):
213213
def _prepare_points(self):
214214
"""Point prep for drawing and hit testing"""
215215

216-
transform = self.get_transform()
216+
transform = self.transform
217217
transOffset = self.get_offset_transform()
218218
offsets = self._offsets
219219
paths = self.get_paths()
@@ -1610,7 +1610,7 @@ def determine_facecolor(patch):
16101610
self.set_paths(patches)
16111611

16121612
def set_paths(self, patches):
1613-
paths = [p.get_transform().transform_path(p.get_path())
1613+
paths = [p.transform.transform_path(p.get_path())
16141614
for p in patches]
16151615
self._paths = paths
16161616

@@ -1665,7 +1665,7 @@ def draw(self, renderer):
16651665
if not self.get_visible():
16661666
return
16671667
renderer.open_group(self.__class__.__name__)
1668-
transform = self.get_transform()
1668+
transform = self.transform
16691669

16701670
# Get a list of triangles and the color at each vertex.
16711671
tri = self._triangulation
@@ -1745,7 +1745,7 @@ def set_paths(self):
17451745
self.stale = True
17461746

17471747
def get_datalim(self, transData):
1748-
return (self.get_transform() - transData).transform_bbox(self._bbox)
1748+
return (self.transform - transData).transform_bbox(self._bbox)
17491749

17501750
@staticmethod
17511751
def convert_mesh_to_paths(meshWidth, meshHeight, coordinates):
@@ -1820,7 +1820,7 @@ def draw(self, renderer):
18201820
if not self.get_visible():
18211821
return
18221822
renderer.open_group(self.__class__.__name__, self.get_gid())
1823-
transform = self.get_transform()
1823+
transform = self.transform
18241824
transOffset = self.get_offset_transform()
18251825
offsets = self._offsets
18261826

lib/matplotlib/contour.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,6 @@
2828
import matplotlib.texmanager as texmanager
2929
import matplotlib.transforms as mtrans
3030

31-
from .traitlest import TransformInstance
32-
3331
# Import needed for adding manual selection capability to clabel
3432
from matplotlib.blocking_input import BlockingContourLabeler
3533

@@ -49,7 +47,7 @@ class ClabelText(text.Text):
4947
"""
5048
def get_rotation(self):
5149
angle = text.Text.get_rotation(self)
52-
trans = self.get_transform()
50+
trans = self.transform
5351
x, y = self.get_position()
5452
new_angles = trans.transform_angles(np.array([angle]),
5553
np.array([[x, y]]))
@@ -650,7 +648,7 @@ def labels(self, inline, inline_spacing):
650648
self.labelFontSizeList, self.labelCValueList):
651649

652650
con = self.collections[icon]
653-
trans = con.get_transform()
651+
trans = con.transform
654652
lw = self.get_label_width(lev, self.labelFmt, fsize)
655653
lw *= self.ax.figure.dpi / 72.0 # scale to screen coordinates
656654
additions = []
@@ -1376,7 +1374,7 @@ def find_nearest_contour(self, x, y, indices=None, pixel=True):
13761374

13771375
for icon in indices:
13781376
con = self.collections[icon]
1379-
trans = con.get_transform()
1377+
trans = con.transform
13801378
paths = con.get_paths()
13811379

13821380
for segNum, linepath in enumerate(paths):

lib/matplotlib/image.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -277,7 +277,7 @@ def _draw_unsampled_image(self, renderer, gc):
277277
draw unsampled image. The renderer should support a draw_image method
278278
with scale parameter.
279279
"""
280-
trans = self.get_transform() # axes.transData
280+
trans = self.transform # axes.transData
281281

282282
# convert the coordinates to the intermediate coordinate (ic).
283283
# The transformation from the ic to the canvas is a pure
@@ -601,7 +601,7 @@ def make_image(self, magnification=1.0):
601601

602602
# image is created in the canvas coordinate.
603603
x1, x2, y1, y2 = self.get_extent()
604-
trans = self.get_transform()
604+
trans = self.transform
605605
xy = trans.transform(np.array([(x1, y1),
606606
(x2, y2),
607607
]))

lib/matplotlib/legend.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -741,7 +741,7 @@ def _auto_legend_data(self):
741741
for handle in ax.lines:
742742
assert isinstance(handle, Line2D)
743743
path = handle.get_path()
744-
trans = handle.get_transform()
744+
trans = handle.transform
745745
tpath = trans.transform_path(path)
746746
lines.append(tpath)
747747

@@ -752,7 +752,7 @@ def _auto_legend_data(self):
752752
transform = handle.get_data_transform()
753753
bboxes.append(handle.get_bbox().transformed(transform))
754754
else:
755-
transform = handle.get_transform()
755+
transform = handle.transform
756756
bboxes.append(handle.get_path().get_extents(transform))
757757

758758
try:

lib/matplotlib/legend_handler.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ def legend_artist(self, legend, orig_handle,
116116
fontsize)
117117
artists = self.create_artists(legend, orig_handle,
118118
xdescent, ydescent, width, height,
119-
fontsize, handlebox.get_transform())
119+
fontsize, handlebox.transform)
120120

121121
# create_artists will return a list of artists.
122122
for a in artists:

0 commit comments

Comments
 (0)