Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit8698d15

Browse files
committed
MNT: consolidate the no-op logic into a RenderBase method
Be forgiving about renderer instances that do not inherit fromRendereBase.
1 parent297cf79 commit8698d15

File tree

2 files changed

+27
-21
lines changed

2 files changed

+27
-21
lines changed

‎lib/matplotlib/backend_bases.py

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
The base class for the Toolbar class of each interactive backend.
2626
"""
2727

28-
fromcontextlibimportcontextmanager
28+
fromcontextlibimportcontextmanager,suppress
2929
fromenumimportEnum,IntEnum
3030
importfunctools
3131
importimportlib
@@ -709,6 +709,23 @@ def stop_filter(self, filter_func):
709709
Currently only supported by the agg renderer.
710710
"""
711711

712+
def_draw_disabled(self):
713+
"""
714+
Context manager to temporary disable drawing.
715+
716+
This is used for getting the drawn size of Artists. This lets us
717+
run the draw process to update any Python state but does not pay the
718+
cost of the draw_XYZ calls on the canvas.
719+
"""
720+
no_ops= {
721+
meth_name:lambda*args,**kwargs:None
722+
formeth_nameindir(RendererBase)
723+
if (meth_name.startswith("draw_")
724+
ormeth_namein ["open_group","close_group"])
725+
}
726+
727+
return_setattr_cm(self,**no_ops)
728+
712729

713730
classGraphicsContextBase:
714731
"""An abstract base class that provides color, line styles, etc."""
@@ -2089,14 +2106,10 @@ def print_figure(
20892106
functools.partial(
20902107
print_method,orientation=orientation)
20912108
)
2092-
no_ops= {
2093-
meth_name:lambda*args,**kwargs:None
2094-
formeth_nameindir(RendererBase)
2095-
if (meth_name.startswith("draw_")
2096-
ormeth_namein ["open_group","close_group"])
2097-
}
2098-
2099-
with_setattr_cm(renderer,**no_ops):
2109+
ctx= (renderer._draw_disabled()
2110+
ifhasattr(renderer,'_draw_disabled')
2111+
elsesuppress())
2112+
withctx:
21002113
self.figure.draw(renderer)
21012114

21022115
bbox_inches=self.figure.get_tightbbox(

‎lib/matplotlib/figure.py

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2392,9 +2392,7 @@ def tight_layout(self, renderer=None, pad=1.08, h_pad=None, w_pad=None,
23922392

23932393
from .tight_layoutimport (
23942394
get_renderer,get_subplotspec_list,get_tight_layout_figure)
2395-
from .cbookimport_setattr_cm
2396-
from .backend_basesimportRendererBase
2397-
2395+
fromcontextlibimportsuppress
23982396
subplotspec_list=get_subplotspec_list(self.axes)
23992397
ifNoneinsubplotspec_list:
24002398
cbook._warn_external("This figure includes Axes that are not "
@@ -2403,15 +2401,10 @@ def tight_layout(self, renderer=None, pad=1.08, h_pad=None, w_pad=None,
24032401

24042402
ifrendererisNone:
24052403
renderer=get_renderer(self)
2406-
2407-
no_ops= {
2408-
meth_name:lambda*args,**kwargs:None
2409-
formeth_nameindir(RendererBase)
2410-
if (meth_name.startswith("draw_")
2411-
ormeth_namein ["open_group","close_group"])
2412-
}
2413-
2414-
with_setattr_cm(renderer,**no_ops):
2404+
ctx= (renderer._draw_disabled()
2405+
ifhasattr(renderer,'_draw_disabled')
2406+
elsesuppress())
2407+
withctx:
24152408
kwargs=get_tight_layout_figure(
24162409
self,self.axes,subplotspec_list,renderer,
24172410
pad=pad,h_pad=h_pad,w_pad=w_pad,rect=rect)

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp