#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.
This commit is contained in:
Terry Jan Reedy 2012-01-31 02:09:25 -05:00
parent 1d8e6fd45e
commit b98000ab5b
4 changed files with 20 additions and 9 deletions

View file

@ -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):
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):
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):
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()

View file

@ -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:

View file

@ -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
Ž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

View file

@ -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.