[Python-checkins] r74414 - in python/branches/tk_and_idle_maintenance/Lib/idlelib: PyShell.py ScriptBinding.py
guilherme.polo
python-checkins at python.org
Thu Aug 13 16:47:34 CEST 2009
Author: guilherme.polo
Date: Thu Aug 13 16:47:34 2009
New Revision: 74414
Log:
Cleanup temp files after the IDLE shell ends its execution so tracebacks can be printed without loss of information.
Modified:
python/branches/tk_and_idle_maintenance/Lib/idlelib/PyShell.py
python/branches/tk_and_idle_maintenance/Lib/idlelib/ScriptBinding.py
Modified: python/branches/tk_and_idle_maintenance/Lib/idlelib/PyShell.py
==============================================================================
--- python/branches/tk_and_idle_maintenance/Lib/idlelib/PyShell.py (original)
+++ python/branches/tk_and_idle_maintenance/Lib/idlelib/PyShell.py Thu Aug 13 16:47:34 2009
@@ -875,6 +875,11 @@
self.history = self.History(self.text)
#
self.pollinterval = 50 # millisec
+ # Cleanup functions to be called when endexecuting is called
+ self._cleanup_funcs = []
+
+ def append_cleanup_func(self, func, *args, **kwargs):
+ self._cleanup_funcs.append((func, args, kwargs))
def get_standard_extension_names(self):
return idleConf.GetExtensions(shell_only=True)
@@ -949,6 +954,11 @@
self.canceled = 0
self.showprompt()
+ for func, args, kwargs in self._cleanup_funcs:
+ print func, args, kwargs
+ func(*args, **kwargs)
+ self._cleanup_funcs = []
+
def close(self):
"Extend EditorWindow.close()"
if self.executing:
Modified: python/branches/tk_and_idle_maintenance/Lib/idlelib/ScriptBinding.py
==============================================================================
--- python/branches/tk_and_idle_maintenance/Lib/idlelib/ScriptBinding.py (original)
+++ python/branches/tk_and_idle_maintenance/Lib/idlelib/ScriptBinding.py Thu Aug 13 16:47:34 2009
@@ -53,7 +53,7 @@
self.flist = self.editwin.flist
self.root = self.editwin.root
- def _cleanup_temp(self, filename, is_temp):
+ def _cleanup_temp(self, filename, is_temp=True):
if is_temp:
os.unlink(filename)
@@ -176,7 +176,8 @@
# go to __stderr__. With subprocess, they go to the shell.
# Need to change streams in PyShell.ModifiedInterpreter.
interp.runcode(code)
- self._cleanup_temp(filename, is_temp)
+ if is_temp:
+ interp.tkconsole.append_cleanup_func(self._cleanup_temp, filename)
return 'break'
def getfilename(self):
More information about the Python-checkins
mailing list