Skip to content

Commit 5c7ca17

Browse files
committed
Move svg basename detection down to RendererSVG.
This means one fewer argument to track down the call stack (avoiding passing it from print_svg to RendererSVG). Wrapping the file object in a TextIOWrapper (as done in print_svg) forwards the `.name` to the wrapper, so we're fine there.
1 parent 8c764dc commit 5c7ca17

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

lib/matplotlib/backends/backend_svg.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -280,8 +280,13 @@ def __init__(self, width, height, svgwriter, basename=None, image_dpi=72,
280280
self.writer = XMLWriter(svgwriter)
281281
self.image_dpi = image_dpi # actual dpi at which we rasterize stuff
282282

283-
self._groupd = {}
283+
if basename is None:
284+
basename = getattr(svgwriter, "name", "")
285+
if not isinstance(basename, str):
286+
basename = ""
284287
self.basename = basename
288+
289+
self._groupd = {}
285290
self._image_counter = itertools.count()
286291
self._clipd = {}
287292
self._markers = {}
@@ -1311,9 +1316,6 @@ def print_svg(self, filename, *args, **kwargs):
13111316
__ DC_
13121317
"""
13131318
with cbook.open_file_cm(filename, "w", encoding="utf-8") as fh:
1314-
filename = getattr(fh, 'name', '')
1315-
if not isinstance(filename, str):
1316-
filename = ''
13171319
if not cbook.file_requires_unicode(fh):
13181320
fh = codecs.getwriter('utf-8')(fh)
13191321
self._print_svg(filename, fh, **kwargs)
@@ -1336,7 +1338,7 @@ def _print_svg(self, filename, fh, *, dpi=None, bbox_inches_restore=None,
13361338

13371339
renderer = MixedModeRenderer(
13381340
self.figure, width, height, dpi,
1339-
RendererSVG(w, h, fh, filename, dpi, metadata=metadata),
1341+
RendererSVG(w, h, fh, image_dpi=dpi, metadata=metadata),
13401342
bbox_inches_restore=bbox_inches_restore)
13411343

13421344
self.figure.draw(renderer)

0 commit comments

Comments
 (0)