summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrett Cannon <brett@python.org>2012-01-31 19:58:07 (GMT)
committerBrett Cannon <brett@python.org>2012-01-31 19:58:07 (GMT)
commitcdf11210769906137da2c6815abd4585c6ceb88e (patch)
tree41b4423d573eca92bb428dcf9e9024e1493ef128
parente3a9ae5ecefb82a8c73a6e00202f5cdaca8f1476 (diff)
parent5d605c2861d9c42c7bdff50c7ad443108db233b9 (diff)
downloadcpython-cdf11210769906137da2c6815abd4585c6ceb88e.zip
cpython-cdf11210769906137da2c6815abd4585c6ceb88e.tar.gz
cpython-cdf11210769906137da2c6815abd4585c6ceb88e.tar.bz2
Merge
-rw-r--r--Lib/idlelib/PyShell.py19
-rw-r--r--Lib/idlelib/ScriptBinding.py5
-rw-r--r--Misc/ACKS1
-rw-r--r--Misc/NEWS3
-rw-r--r--Modules/zipimport.c9
5 files changed, 24 insertions, 13 deletions
diff --git a/Lib/idlelib/PyShell.py b/Lib/idlelib/PyShell.py
index 86e4eed..f884b28 100644
--- a/Lib/idlelib/PyShell.py
+++ b/Lib/idlelib/PyShell.py
@@ -411,11 +411,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
@@ -439,7 +439,7 @@ class ModifiedInterpreter(InteractiveInterpreter):
except socket.timeout as 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:
@@ -492,12 +492,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
@@ -1191,7 +1197,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 26becce..18ce965 100644
--- a/Lib/idlelib/ScriptBinding.py
+++ b/Lib/idlelib/ScriptBinding.py
@@ -144,10 +144,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 d49b85f..aafb51f 100644
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -880,6 +880,7 @@ Mark Sapiro
Ty Sarna
Ben Sayer
sbt
+Marco Scataglini
Andrew Schaaf
Michael Scharf
Andreas Schawo
diff --git a/Misc/NEWS b/Misc/NEWS
index 8b67257..9ee1ce7 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -463,6 +463,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 #8828: Add new function os.replace(), for cross-platform renaming
with overwriting.
diff --git a/Modules/zipimport.c b/Modules/zipimport.c
index 68929ba..f822f92 100644
--- a/Modules/zipimport.c
+++ b/Modules/zipimport.c
@@ -728,14 +728,15 @@ read_directory(PyObject *archive)
PyObject *files = NULL;
FILE *fp;
unsigned short flags;
- long compress, crc, data_size, file_size, file_offset, date, time;
- long header_offset, name_size, header_size, header_position;
+ short compress, time, date, name_size;
+ long crc, data_size, file_size, header_size;
+ Py_ssize_t file_offset, header_position, header_offset;
long l, count;
Py_ssize_t i;
char name[MAXPATHLEN + 5];
PyObject *nameobj = NULL;
char *p, endof_central_dir[22];
- long arc_offset; /* offset from beginning of file to start of zip-archive */
+ Py_ssize_t arc_offset; /* Absolute offset to start of the zip-archive. */
PyObject *path;
const char *charset;
int bootstrap;
@@ -835,7 +836,7 @@ read_directory(PyObject *archive)
path = PyUnicode_FromFormat("%U%c%U", archive, SEP, nameobj);
if (path == NULL)
goto error;
- t = Py_BuildValue("Niiiiiii", path, compress, data_size,
+ t = Py_BuildValue("Nhllnhhl", path, compress, data_size,
file_size, file_offset, time, date, crc);
if (t == NULL)
goto error;