From 3b4527893d92ad8e9815d11cbce3f9826e12c81c 2014-12-26 18:21:35 From: Yaroslav Halchenko Date: 2014-12-26 18:21:35 Subject: [PATCH] BF(BK): cleanup tempdir in EmbeddedSphinxShell atexit --- diff --git a/IPython/sphinxext/ipython_directive.py b/IPython/sphinxext/ipython_directive.py index 94af7e7..3e8ca44 100644 --- a/IPython/sphinxext/ipython_directive.py +++ b/IPython/sphinxext/ipython_directive.py @@ -126,12 +126,14 @@ from __future__ import print_function #----------------------------------------------------------------------------- # Stdlib +import atexit import os import re import sys import tempfile import ast import warnings +import shutil # To keep compatibility with various python versions try: @@ -295,6 +297,7 @@ class EmbeddedSphinxShell(object): # Create and initialize global ipython, but don't start its mainloop. # This will persist across different EmbededSphinxShell instances. IP = InteractiveShell.instance(config=config, profile_dir=profile) + atexit.register(self.cleanup) # io.stdout redirect must be done after instantiating InteractiveShell io.stdout = self.cout @@ -312,6 +315,7 @@ class EmbeddedSphinxShell(object): self.input = '' self.output = '' + self.tmp_profile_dir = tmp_profile_dir self.is_verbatim = False self.is_doctest = False @@ -332,6 +336,9 @@ class EmbeddedSphinxShell(object): for line in exec_lines: self.process_input_line(line, store_history=False) + def cleanup(self): + shutil.rmtree(self.tmp_profile_dir, ignore_errors=True) + def clear_cout(self): self.cout.seek(0) self.cout.truncate(0)