From: Terry Jan Reedy Date: Tue, 31 Jan 2012 07:09:25 +0000 (-0500) Subject: #13506 Add '' to path for interactive interpreter by adding with_cwd parameter X-Git-Tag: v2.7.3rc1~113 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b98000ab5bd3fcb3774666ce3bb127e71634c349;p=python #13506 Add '' to path for interactive interpreter by adding with_cwd parameter to PyShell.PyShell.transfer_path() and changing elsewhere as needed. Original patches by Marco Scataglini and Roger Serwy. --- diff --git a/Lib/idlelib/PyShell.py b/Lib/idlelib/PyShell.py index 96efcecb54..73db11a044 100644 --- a/Lib/idlelib/PyShell.py +++ b/Lib/idlelib/PyShell.py @@ -423,11 +423,11 @@ class ModifiedInterpreter(InteractiveInterpreter): self.rpcclt.register("flist", self.tkconsole.flist) self.rpcclt.register("linecache", linecache) self.rpcclt.register("interp", self) - self.transfer_path() + self.transfer_path(with_cwd=True) self.poll_subprocess() return self.rpcclt - def restart_subprocess(self): + def restart_subprocess(self, with_cwd=False): if self.restarting: return self.rpcclt self.restarting = True @@ -451,7 +451,7 @@ class ModifiedInterpreter(InteractiveInterpreter): except socket.timeout, err: self.display_no_subprocess_error() return None - self.transfer_path() + self.transfer_path(with_cwd=with_cwd) # annotate restart in shell window and mark it console.text.delete("iomark", "end-1c") if was_executing: @@ -501,12 +501,18 @@ class ModifiedInterpreter(InteractiveInterpreter): except OSError: return - def transfer_path(self): + def transfer_path(self, with_cwd=False): + if with_cwd: # Issue 13506 + path = [''] # include Current Working Directory + path.extend(sys.path) + else: + path = sys.path + self.runcommand("""if 1: import sys as _sys _sys.path = %r del _sys - \n""" % (sys.path,)) + \n""" % (path,)) active_seq = None @@ -1209,7 +1215,8 @@ class PyShell(OutputWindow): self.text.see("restart") def restart_shell(self, event=None): - self.interp.restart_subprocess() + "Callback for Run/Restart Shell Cntl-F6" + self.interp.restart_subprocess(with_cwd=True) def showprompt(self): self.resetoutput() diff --git a/Lib/idlelib/ScriptBinding.py b/Lib/idlelib/ScriptBinding.py index 4c6dc82e0f..01ac474658 100644 --- a/Lib/idlelib/ScriptBinding.py +++ b/Lib/idlelib/ScriptBinding.py @@ -146,10 +146,9 @@ class ScriptBinding: return 'break' if not self.tabnanny(filename): return 'break' - shell = self.shell - interp = shell.interp + interp = self.shell.interp if PyShell.use_subprocess: - shell.restart_shell() + interp.restart_subprocess(with_cwd=False) dirname = os.path.dirname(filename) # XXX Too often this discards arguments the user just set... interp.runcommand("""if 1: diff --git a/Misc/ACKS b/Misc/ACKS index 172a370f6c..b21e78c393 100644 --- a/Misc/ACKS +++ b/Misc/ACKS @@ -740,6 +740,7 @@ Mark Sapiro Ty Sarna Ben Sayer sbt +Marco Scataglini Michael Scharf Neil Schemenauer David Scherer @@ -759,6 +760,7 @@ Nick Seidenman Žiga Seilnach Fred Sells Jiwon Seo +Roger Serwy Jerry Seutter Denis Severson Ian Seyer diff --git a/Misc/NEWS b/Misc/NEWS index 1c6b66f955..2884bbad4e 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -90,6 +90,9 @@ Core and Builtins Library ------- +- Issue #13506: Add '' to path for IDLE Shell when started and restarted with Restart Shell. + Original patches by Marco Scataglini and Roger Serwy. + - Issue #13806: The size check in audioop decompression functions was too strict and could reject valid compressed data. Patch by Oleg Plakhotnyuk.