[Python-checkins] cpython: Issue #26587: Allow .pth files to specify file paths as well as

brett.cannon python-checkins at python.org
Fri Apr 8 18:04:34 EDT 2016


https://hg.python.org/cpython/rev/bd1af1a97c2e
changeset: 100875:bd1af1a97c2e
user: Brett Cannon <brett at python.org>
date: Fri Apr 08 15:04:28 2016 -0700
summary:
 Issue #26587: Allow .pth files to specify file paths as well as
directories.
Thanks to Wolfgang Langner for the bug report and initial version of
the patch.
files:
 Doc/whatsnew/3.6.rst | 8 ++++++++
 Lib/site.py | 18 +++++++++---------
 Lib/test/test_site.py | 2 +-
 Misc/ACKS | 1 +
 Misc/NEWS | 3 +++
 5 files changed, 22 insertions(+), 10 deletions(-)
diff --git a/Doc/whatsnew/3.6.rst b/Doc/whatsnew/3.6.rst
--- a/Doc/whatsnew/3.6.rst
+++ b/Doc/whatsnew/3.6.rst
@@ -251,6 +251,14 @@
 an instance were excluded. (Contributed by Martin Panter in :issue:`25590`.)
 
 
+site
+----
+
+When specifying paths to add to :attr:`sys.path` in a `.pth` file,
+you may now specify file paths on top of directories (e.g. zip files).
+(Contributed by Wolfgang Langner in :issue:`26587`).
+
+
 telnetlib
 ---------
 
diff --git a/Lib/site.py b/Lib/site.py
--- a/Lib/site.py
+++ b/Lib/site.py
@@ -131,13 +131,13 @@
 
 
 def _init_pathinfo():
- """Return a set containing all existing directory entries from sys.path"""
+ """Return a set containing all existing file system items from sys.path."""
 d = set()
- for dir in sys.path:
+ for item in sys.path:
 try:
- if os.path.isdir(dir):
- dir, dircase = makepath(dir)
- d.add(dircase)
+ if os.path.exists(item):
+ _, itemcase = makepath(item)
+ d.add(itemcase)
 except TypeError:
 continue
 return d
@@ -150,9 +150,9 @@
 """
 if known_paths is None:
 known_paths = _init_pathinfo()
- reset = 1
+ reset = True
 else:
- reset = 0
+ reset = False
 fullname = os.path.join(sitedir, name)
 try:
 f = open(fullname, "r")
@@ -190,9 +190,9 @@
 'sitedir'"""
 if known_paths is None:
 known_paths = _init_pathinfo()
- reset = 1
+ reset = True
 else:
- reset = 0
+ reset = False
 sitedir, sitedircase = makepath(sitedir)
 if not sitedircase in known_paths:
 sys.path.append(sitedir) # Add path component
diff --git a/Lib/test/test_site.py b/Lib/test/test_site.py
--- a/Lib/test/test_site.py
+++ b/Lib/test/test_site.py
@@ -75,7 +75,7 @@
 def test_init_pathinfo(self):
 dir_set = site._init_pathinfo()
 for entry in [site.makepath(path)[1] for path in sys.path
- if path and os.path.isdir(path)]:
+ if path and os.path.exists(path)]:
 self.assertIn(entry, dir_set,
 "%s from sys.path not found in set returned "
 "by _init_pathinfo(): %s" % (entry, dir_set))
diff --git a/Misc/ACKS b/Misc/ACKS
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -815,6 +815,7 @@
 Tino Lange
 Glenn Langford
 Andrew Langmead
+Wolfgang Langner
 Detlef Lannert
 Soren Larsen
 Amos Latteier
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -237,6 +237,9 @@
 Library
 -------
 
+- Issue #26587: the site module now allows .pth files to specify files to be
+ added to sys.path (e.g. zip files).
+
 - Issue #25609: Introduce contextlib.AbstractContextManager and
 typing.ContextManager.
 
-- 
Repository URL: https://hg.python.org/cpython


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /