Skip to content

Commit

Permalink
Don't include trailing '/.' to FileFinder path
Browse files Browse the repository at this point in the history
  • Loading branch information
tiran committed Jun 10, 2022
1 parent 41aeca2 commit 5163c35
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 10 deletions.
9 changes: 6 additions & 3 deletions Lib/importlib/_bootstrap_external.py
Original file line number Diff line number Diff line change
Expand Up @@ -1569,9 +1569,12 @@ def __init__(self, path, *loader_details):
loaders.extend((suffix, loader) for suffix in suffixes)
self._loaders = loaders
# Base (directory) path
self.path = path or '.'
if not _path_isabs(self.path):
self.path = _path_join(_os.getcwd(), self.path)
if not path or path == '.':
self.path = _os.getcwd()
elif not _path_isabs(path):
self.path = _path_join(_os.getcwd(), path)
else:
self.path = path
self._path_mtime = -1
self._path_cache = set()
self._relaxed_path_cache = set()
Expand Down
14 changes: 7 additions & 7 deletions Lib/test/test_import/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -927,15 +927,15 @@ def test_missing_source_legacy(self):
m = __import__(TESTFN)
try:
self.assertEqual(m.__file__,
os.path.join(os.getcwd(), os.curdir, os.path.relpath(pyc_file)))
os.path.join(os.getcwd(), os.path.relpath(pyc_file)))
finally:
os.remove(pyc_file)

def test___cached__(self):
# Modules now also have an __cached__ that points to the pyc file.
m = __import__(TESTFN)
pyc_file = importlib.util.cache_from_source(TESTFN + '.py')
self.assertEqual(m.__cached__, os.path.join(os.getcwd(), os.curdir, pyc_file))
self.assertEqual(m.__cached__, os.path.join(os.getcwd(), pyc_file))

@skip_if_dont_write_bytecode
def test___cached___legacy_pyc(self):
Expand All @@ -951,7 +951,7 @@ def test___cached___legacy_pyc(self):
importlib.invalidate_caches()
m = __import__(TESTFN)
self.assertEqual(m.__cached__,
os.path.join(os.getcwd(), os.curdir, os.path.relpath(pyc_file)))
os.path.join(os.getcwd(), os.path.relpath(pyc_file)))

@skip_if_dont_write_bytecode
def test_package___cached__(self):
Expand All @@ -971,10 +971,10 @@ def cleanup():
m = __import__('pep3147.foo')
init_pyc = importlib.util.cache_from_source(
os.path.join('pep3147', '__init__.py'))
self.assertEqual(m.__cached__, os.path.join(os.getcwd(), os.curdir, init_pyc))
self.assertEqual(m.__cached__, os.path.join(os.getcwd(), init_pyc))
foo_pyc = importlib.util.cache_from_source(os.path.join('pep3147', 'foo.py'))
self.assertEqual(sys.modules['pep3147.foo'].__cached__,
os.path.join(os.getcwd(), os.curdir, foo_pyc))
os.path.join(os.getcwd(), foo_pyc))

def test_package___cached___from_pyc(self):
# Like test___cached__ but ensuring __cached__ when imported from a
Expand All @@ -998,10 +998,10 @@ def cleanup():
m = __import__('pep3147.foo')
init_pyc = importlib.util.cache_from_source(
os.path.join('pep3147', '__init__.py'))
self.assertEqual(m.__cached__, os.path.join(os.getcwd(), os.curdir, init_pyc))
self.assertEqual(m.__cached__, os.path.join(os.getcwd(), init_pyc))
foo_pyc = importlib.util.cache_from_source(os.path.join('pep3147', 'foo.py'))
self.assertEqual(sys.modules['pep3147.foo'].__cached__,
os.path.join(os.getcwd(), os.curdir, foo_pyc))
os.path.join(os.getcwd(), foo_pyc))

def test_recompute_pyc_same_second(self):
# Even when the source file doesn't change timestamp, a change in
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
:func:`importlib.invalidate_caches` now drops entries from
:data:`sys.path_importer_cache` with a relative path as name. This solves a
caching issue when a process changes its current working directory.

``FileFinder`` no longer inserts a dot in the path, e.g.
``/egg/./spam`` is now ``/egg/spam``.

0 comments on commit 5163c35

Please sign in to comment.