@@ -509,10 +509,9 @@ def print_png(self, filename_or_obj, *args,
509
509
510
510
if metadata is None :
511
511
metadata = {}
512
- metadata = {
512
+ default_metadata = {
513
513
"Software" :
514
514
f"matplotlib version{ __version__ } , http://matplotlib.org/" ,
515
- ** metadata ,
516
515
}
517
516
518
517
FigureCanvasAgg .draw (self )
@@ -521,9 +520,13 @@ def print_png(self, filename_or_obj, *args,
521
520
from PIL .PngImagePlugin import PngInfo
522
521
# Only use the metadata kwarg if pnginfo is not set, because the
523
522
# semantics of duplicate keys in pnginfo is unclear.
524
- if "pnginfo" not in pil_kwargs :
523
+ if "pnginfo" in pil_kwargs :
524
+ if metadata :
525
+ cbook ._warn_external ("'metadata' is overridden by the "
526
+ "'pnginfo' entry in 'pil_kwargs'." )
527
+ else :
525
528
pnginfo = PngInfo ()
526
- for k , v in metadata .items ():
529
+ for k , v in { ** default_metadata , ** metadata } .items ():
527
530
pnginfo .add_text (k , v )
528
531
pil_kwargs ["pnginfo" ] = pnginfo
529
532
pil_kwargs .setdefault ("dpi" , (self .figure .dpi , self .figure .dpi ))
@@ -533,8 +536,8 @@ def print_png(self, filename_or_obj, *args,
533
536
else :
534
537
renderer = self .get_renderer ()
535
538
with cbook .open_file_cm (filename_or_obj , "wb" ) as fh :
536
- _png .write_png (renderer ._renderer , fh ,
537
- self . figure . dpi , metadata = metadata )
539
+ _png .write_png (renderer ._renderer , fh , self . figure . dpi ,
540
+ metadata = { ** default_metadata , ** metadata } )
538
541
539
542
def print_to_buffer (self ):
540
543
FigureCanvasAgg .draw (self )
0 commit comments