@@ -678,6 +678,22 @@ def new_figure_manager_given_figure(num, figure):
678678 return manager
679679
680680
681+ class TmpDirCleaner :
682+ remaining_tmpdirs = set ()
683+
684+ @staticmethod
685+ def add (tmpdir ):
686+ TmpDirCleaner .remaining_tmpdirs .add (tmpdir )
687+
688+ @staticmethod
689+ def cleanup_remaining_tmpdirs ():
690+ for tmpdir in TmpDirCleaner .remaining_tmpdirs :
691+ try :
692+ shutil .rmtree (tmpdir )
693+ except :
694+ sys .stderr .write ("error deleting tmp directory %s\n " % tmpdir )
695+
696+
681697class FigureCanvasPgf (FigureCanvasBase ):
682698 filetypes = {"pgf" : "LaTeX PGF picture" ,
683699 "pdf" : "LaTeX compiled PGF picture" ,
@@ -798,7 +814,7 @@ def _print_pdf_to_fh(self, fh):
798814 try :
799815 shutil .rmtree (tmpdir )
800816 except :
801- sys . stderr . write ( "error deleting tmp directory %s \n " % tmpdir )
817+ TmpDirCleaner . add ( tmpdir )
802818
803819 def print_pdf (self , fname_or_fh , * args , ** kwargs ):
804820 """
@@ -831,7 +847,7 @@ def _print_png_to_fh(self, fh):
831847 try :
832848 shutil .rmtree (tmpdir )
833849 except :
834- sys . stderr . write ( "error deleting tmp directory %s \n " % tmpdir )
850+ TmpDirCleaner . add ( tmpdir )
835851
836852 def print_png (self , fname_or_fh , * args , ** kwargs ):
837853 """
@@ -904,4 +920,8 @@ def __init__(self, *args):
904920
905921FigureManager = FigureManagerPgf
906922
907- atexit .register (LatexManager ._cleanup_remaining_instances )
923+ def _cleanup_all ():
924+ LatexManager ._cleanup_remaining_instances ()
925+ TmpDirCleaner .cleanup_remaining_tmpdirs ()
926+
927+ atexit .register (_cleanup_all )
0 commit comments