Skip to content

Commit c212f2f

Browse files
committed
Warn when pil_kwargs["pnginfo"] overrides metadata.
1 parent 7aad47a commit c212f2f

File tree

2 files changed

+14
-14
lines changed

2 files changed

+14
-14
lines changed

lib/matplotlib/backends/backend_agg.py

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -498,14 +498,6 @@ def print_png(self, filename_or_obj, *args,
498498
If the 'pnginfo' key is present, it completely overrides
499499
*metadata*, including the default 'Software' key.
500500
"""
501-
502-
if metadata is None:
503-
metadata = {}
504-
metadata = {
505-
"Software":
506-
f"matplotlib version{mpl.__version__}, http://matplotlib.org/",
507-
**metadata,
508-
}
509501
FigureCanvasAgg.draw(self)
510502
mpl.image.imsave(
511503
filename_or_obj, np.asarray(self.buffer_rgba()), format="png",

lib/matplotlib/image.py

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1520,14 +1520,22 @@ def imsave(fname, arr, vmin=None, vmax=None, cmap=None, format=None,
15201520
pil_shape = (rgba.shape[1], rgba.shape[0])
15211521
image = PIL.Image.frombuffer(
15221522
"RGBA", pil_shape, rgba, "raw", "RGBA", 0, 1)
1523-
if (format == "png"
1524-
and metadata is not None and "pnginfo" not in pil_kwargs):
1523+
if format == "png":
15251524
# Only use the metadata kwarg if pnginfo is not set, because the
15261525
# semantics of duplicate keys in pnginfo is unclear.
1527-
pnginfo = PIL.PngImagePlugin.PngInfo()
1528-
for k, v in metadata.items():
1529-
pnginfo.add_text(k, v)
1530-
pil_kwargs["pnginfo"] = pnginfo
1526+
if "pnginfo" in pil_kwargs:
1527+
if metadata:
1528+
cbook._warn_external("'metadata' is overridden by the "
1529+
"'pnginfo' entry in 'pil_kwargs'.")
1530+
else:
1531+
metadata = {
1532+
"Software": (f"Matplotlib version{mpl.__version__}, "
1533+
f"https://matplotlib.org/"),
1534+
**(metadata if metadata is not None else {}),
1535+
}
1536+
pil_kwargs["pnginfo"] = pnginfo = PIL.PngImagePlugin.PngInfo()
1537+
for k, v in metadata.items():
1538+
pnginfo.add_text(k, v)
15311539
if format in ["jpg", "jpeg"]:
15321540
format = "jpeg" # Pillow doesn't recognize "jpg".
15331541
facecolor = mpl.rcParams["savefig.facecolor"]

0 commit comments

Comments
 (0)