|
1 |
| -import six |
| 1 | +import functools |
2 | 2 |
|
3 | 3 | from matplotlib import (
|
4 | 4 | artist as martist, collections as mcoll, transforms as mtransforms,
|
@@ -40,32 +40,21 @@ def cla(self):
|
40 | 40 | self.yaxis.set_zorder(2.5)
|
41 | 41 |
|
42 | 42 |
|
43 |
| -_parasite_axes_classes = {} |
| 43 | +@functools.lru_cache(None) |
44 | 44 | def parasite_axes_class_factory(axes_class=None):
|
45 | 45 | if axes_class is None:
|
46 | 46 | axes_class = Axes
|
47 | 47 |
|
48 |
| - new_class = _parasite_axes_classes.get(axes_class) |
49 |
| - if new_class is None: |
50 |
| - def _get_base_axes_attr(self, attrname): |
51 |
| - return getattr(axes_class, attrname) |
| 48 | + def _get_base_axes_attr(self, attrname): |
| 49 | + return getattr(axes_class, attrname) |
52 | 50 |
|
53 |
| - new_class = type(str("%sParasite" % (axes_class.__name__)), |
54 |
| - (ParasiteAxesBase, axes_class), |
55 |
| - {'_get_base_axes_attr': _get_base_axes_attr}) |
56 |
| - _parasite_axes_classes[axes_class] = new_class |
| 51 | + return type("%sParasite" % axes_class.__name__, |
| 52 | + (ParasiteAxesBase, axes_class), |
| 53 | + {'_get_base_axes_attr': _get_base_axes_attr}) |
57 | 54 |
|
58 |
| - return new_class |
59 | 55 |
|
60 | 56 | ParasiteAxes = parasite_axes_class_factory()
|
61 | 57 |
|
62 |
| -# #class ParasiteAxes(ParasiteAxesBase, Axes): |
63 |
| - |
64 |
| -# @classmethod |
65 |
| -# def _get_base_axes_attr(cls, attrname): |
66 |
| -# return getattr(Axes, attrname) |
67 |
| - |
68 |
| - |
69 | 58 |
|
70 | 59 | class ParasiteAxesAuxTransBase(object):
|
71 | 60 | def __init__(self, parent_axes, aux_transform, viewlim_mode=None,
|
@@ -189,30 +178,22 @@ def apply_aspect(self, position=None):
|
189 | 178 | #ParasiteAxes.apply_aspect()
|
190 | 179 |
|
191 | 180 |
|
192 |
| - |
193 |
| -_parasite_axes_auxtrans_classes = {} |
| 181 | +@functools.lru_cache(None) |
194 | 182 | def parasite_axes_auxtrans_class_factory(axes_class=None):
|
195 | 183 | if axes_class is None:
|
196 | 184 | parasite_axes_class = ParasiteAxes
|
197 | 185 | elif not issubclass(axes_class, ParasiteAxesBase):
|
198 | 186 | parasite_axes_class = parasite_axes_class_factory(axes_class)
|
199 | 187 | else:
|
200 | 188 | parasite_axes_class = axes_class
|
201 |
| - |
202 |
| - new_class = _parasite_axes_auxtrans_classes.get(parasite_axes_class) |
203 |
| - if new_class is None: |
204 |
| - new_class = type(str("%sParasiteAuxTrans" % (parasite_axes_class.__name__)), |
205 |
| - (ParasiteAxesAuxTransBase, parasite_axes_class), |
206 |
| - {'_parasite_axes_class': parasite_axes_class, |
207 |
| - 'name': 'parasite_axes'}) |
208 |
| - _parasite_axes_auxtrans_classes[parasite_axes_class] = new_class |
209 |
| - |
210 |
| - return new_class |
211 |
| - |
212 |
| - |
213 |
| -ParasiteAxesAuxTrans = parasite_axes_auxtrans_class_factory(axes_class=ParasiteAxes) |
| 189 | + return type("%sParasiteAuxTrans" % parasite_axes_class.__name__, |
| 190 | + (ParasiteAxesAuxTransBase, parasite_axes_class), |
| 191 | + {'_parasite_axes_class': parasite_axes_class, |
| 192 | + 'name': 'parasite_axes'}) |
214 | 193 |
|
215 | 194 |
|
| 195 | +ParasiteAxesAuxTrans = parasite_axes_auxtrans_class_factory( |
| 196 | + axes_class=ParasiteAxes) |
216 | 197 |
|
217 | 198 |
|
218 | 199 | def _get_handles(ax):
|
@@ -391,33 +372,29 @@ def get_tightbbox(self, renderer, call_axes_locator=True):
|
391 | 372 | return _bbox
|
392 | 373 |
|
393 | 374 |
|
394 |
| -_host_axes_classes = {} |
| 375 | +@functools.lru_cache(None) |
395 | 376 | def host_axes_class_factory(axes_class=None):
|
396 | 377 | if axes_class is None:
|
397 | 378 | axes_class = Axes
|
398 | 379 |
|
399 |
| - new_class = _host_axes_classes.get(axes_class) |
400 |
| - if new_class is None: |
401 |
| - def _get_base_axes(self): |
402 |
| - return axes_class |
| 380 | + def _get_base_axes(self): |
| 381 | + return axes_class |
403 | 382 |
|
404 |
| - def _get_base_axes_attr(self, attrname): |
405 |
| - return getattr(axes_class, attrname) |
| 383 | + def _get_base_axes_attr(self, attrname): |
| 384 | + return getattr(axes_class, attrname) |
406 | 385 |
|
407 |
| - new_class = type(str("%sHostAxes" % (axes_class.__name__)), |
408 |
| - (HostAxesBase, axes_class), |
409 |
| - {'_get_base_axes_attr': _get_base_axes_attr, |
410 |
| - '_get_base_axes': _get_base_axes}) |
| 386 | + return type("%sHostAxes" % axes_class.__name__, |
| 387 | + (HostAxesBase, axes_class), |
| 388 | + {'_get_base_axes_attr': _get_base_axes_attr, |
| 389 | + '_get_base_axes': _get_base_axes}) |
411 | 390 |
|
412 |
| - _host_axes_classes[axes_class] = new_class |
413 |
| - |
414 |
| - return new_class |
415 | 391 |
|
416 | 392 | def host_subplot_class_factory(axes_class):
|
417 | 393 | host_axes_class = host_axes_class_factory(axes_class=axes_class)
|
418 | 394 | subplot_host_class = subplot_class_factory(host_axes_class)
|
419 | 395 | return subplot_host_class
|
420 | 396 |
|
| 397 | + |
421 | 398 | HostAxes = host_axes_class_factory(axes_class=Axes)
|
422 | 399 | SubplotHost = subplot_class_factory(HostAxes)
|
423 | 400 |
|
|
0 commit comments