10000 backend_pgf: track remaining tmpdirs and try to delete them atexit · matplotlib/matplotlib@c810d47 · GitHub
[go: up one dir, main page]

Skip to content

Commit c810d47

Browse files
author
pwuertz
committed
backend_pgf: track remaining tmpdirs and try to delete them atexit
1 parent 510ca38 commit c810d47

File tree

1 file changed

+23
-3
lines changed

1 file changed

+23
-3
lines changed

lib/matplotlib/backends/backend_pgf.py

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
681697
class 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

905921
FigureManager = 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

Comments
 (0)
0