1. Stake Freddy.
e.g. further improve subprocess interrupt, exceptions, and termination.
2. Remove the workarounds in PyShell.py and ScriptBinding.py involving
interrupting the subprocess prior to killing it, not necessary anymore.
3. Fix a bug introduced at PyShell Rev 1.66: was getting extra shell menu
every time the shell window was recreated.
M PyShell.py
M ScriptBinding.py
M rpc.py
M run.py
diff --git a/Lib/idlelib/rpc.py b/Lib/idlelib/rpc.py
index 8bb1aba..658aaf3 100644
--- a/Lib/idlelib/rpc.py
+++ b/Lib/idlelib/rpc.py
@@ -41,7 +41,6 @@
import types
import marshal
-import interrupt
def unpickle_code(ms):
co = marshal.loads(ms)
@@ -327,12 +326,9 @@
while len(s) > 0:
try:
n = self.sock.send(s)
- except AttributeError:
+ except (AttributeError, socket.error):
# socket was closed
raise IOError
- except socket.error:
- self.debug("putmessage:socketerror:pid:%s" % os.getpid())
- os._exit(0)
else:
s = s[n:]
@@ -471,7 +467,6 @@
self.responses[key] = ('EOF', None)
cv.notify()
cv.release()
- interrupt.interrupt_main()
# call our (possibly overridden) exit function
self.exithook()