Kaydet (Commit) b98000ab authored tarafından Terry Jan Reedy's avatar Terry Jan Reedy

#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.
üst 1d8e6fd4
...@@ -423,11 +423,11 @@ class ModifiedInterpreter(InteractiveInterpreter): ...@@ -423,11 +423,11 @@ class ModifiedInterpreter(InteractiveInterpreter):
self.rpcclt.register("flist", self.tkconsole.flist) self.rpcclt.register("flist", self.tkconsole.flist)
self.rpcclt.register("linecache", linecache) self.rpcclt.register("linecache", linecache)
self.rpcclt.register("interp", self) self.rpcclt.register("interp", self)
self.transfer_path() self.transfer_path(with_cwd=True)
self.poll_subprocess() self.poll_subprocess()
return self.rpcclt return self.rpcclt
def restart_subprocess(self): def restart_subprocess(self, with_cwd=False):
if self.restarting: if self.restarting:
return self.rpcclt return self.rpcclt
self.restarting = True self.restarting = True
...@@ -451,7 +451,7 @@ class ModifiedInterpreter(InteractiveInterpreter): ...@@ -451,7 +451,7 @@ class ModifiedInterpreter(InteractiveInterpreter):
except socket.timeout, err: except socket.timeout, err:
self.display_no_subprocess_error() self.display_no_subprocess_error()
return None return None
self.transfer_path() self.transfer_path(with_cwd=with_cwd)
# annotate restart in shell window and mark it # annotate restart in shell window and mark it
console.text.delete("iomark", "end-1c") console.text.delete("iomark", "end-1c")
if was_executing: if was_executing:
...@@ -501,12 +501,18 @@ class ModifiedInterpreter(InteractiveInterpreter): ...@@ -501,12 +501,18 @@ class ModifiedInterpreter(InteractiveInterpreter):
except OSError: except OSError:
return 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: self.runcommand("""if 1:
import sys as _sys import sys as _sys
_sys.path = %r _sys.path = %r
del _sys del _sys
\n""" % (sys.path,)) \n""" % (path,))
active_seq = None active_seq = None
...@@ -1209,7 +1215,8 @@ class PyShell(OutputWindow): ...@@ -1209,7 +1215,8 @@ class PyShell(OutputWindow):
self.text.see("restart") self.text.see("restart")
def restart_shell(self, event=None): 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): def showprompt(self):
self.resetoutput() self.resetoutput()
......
...@@ -146,10 +146,9 @@ class ScriptBinding: ...@@ -146,10 +146,9 @@ class ScriptBinding:
return 'break' return 'break'
if not self.tabnanny(filename): if not self.tabnanny(filename):
return 'break' return 'break'
shell = self.shell interp = self.shell.interp
interp = shell.interp
if PyShell.use_subprocess: if PyShell.use_subprocess:
shell.restart_shell() interp.restart_subprocess(with_cwd=False)
dirname = os.path.dirname(filename) dirname = os.path.dirname(filename)
# XXX Too often this discards arguments the user just set... # XXX Too often this discards arguments the user just set...
interp.runcommand("""if 1: interp.runcommand("""if 1:
......
...@@ -740,6 +740,7 @@ Mark Sapiro ...@@ -740,6 +740,7 @@ Mark Sapiro
Ty Sarna Ty Sarna
Ben Sayer Ben Sayer
sbt sbt
Marco Scataglini
Michael Scharf Michael Scharf
Neil Schemenauer Neil Schemenauer
David Scherer David Scherer
...@@ -759,6 +760,7 @@ Nick Seidenman ...@@ -759,6 +760,7 @@ Nick Seidenman
Žiga Seilnach Žiga Seilnach
Fred Sells Fred Sells
Jiwon Seo Jiwon Seo
Roger Serwy
Jerry Seutter Jerry Seutter
Denis Severson Denis Severson
Ian Seyer Ian Seyer
......
...@@ -90,6 +90,9 @@ Core and Builtins ...@@ -90,6 +90,9 @@ Core and Builtins
Library 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 - Issue #13806: The size check in audioop decompression functions was too
strict and could reject valid compressed data. Patch by Oleg Plakhotnyuk. strict and could reject valid compressed data. Patch by Oleg Plakhotnyuk.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment