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.
This commit is contained in:
Brett Cannon 2016-04-08 15:04:28 -07:00
parent ef0138f421
commit 5f0507d8ab
5 changed files with 22 additions and 10 deletions

View File

@ -251,6 +251,14 @@ Previously, names of properties and slots which were not yet created on
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
---------

View File

@ -131,13 +131,13 @@ def removeduppaths():
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 @@ def addpackage(sitedir, name, known_paths):
"""
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 @@ def addsitedir(sitedir, known_paths=None):
'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

View File

@ -75,7 +75,7 @@ class HelperFunctionsTests(unittest.TestCase):
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))

View File

@ -815,6 +815,7 @@ Torsten Landschoff
Tino Lange
Glenn Langford
Andrew Langmead
Wolfgang Langner
Detlef Lannert
Soren Larsen
Amos Latteier

View File

@ -237,6 +237,9 @@ Core and Builtins
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.