From: Brett Cannon <brett@python.org>
Date: Thu, 16 Feb 2012 23:12:00 +0000 (-0500)
Subject: Tweak the handling of the empty string in sys.path for importlib.
X-Git-Tag: v3.3.0a1~160
X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f58d45c649c1738870ac85887599850fd2bbf157;p=python

Tweak the handling of the empty string in sys.path for importlib.
It seems better to cache the finder for the cwd under its full path
insetad of '' in case the cwd changes. Otherwise FileFinder needs to
dynamically change itself based on whether it is given '' instead of
caching a finder for every change to the cwd.
---

diff --git a/Lib/importlib/_bootstrap.py b/Lib/importlib/_bootstrap.py
index 44349a8e12..39cf76a310 100644
--- a/Lib/importlib/_bootstrap.py
+++ b/Lib/importlib/_bootstrap.py
@@ -713,10 +713,12 @@ class PathFinder:
         the default hook, for which ImportError is raised.
 
         """
+        if path == '':
+            path = _os.getcwd()
         try:
             finder = sys.path_importer_cache[path]
         except KeyError:
-            finder = cls._path_hooks(path if path != '' else _os.getcwd())
+            finder = cls._path_hooks(path)
             sys.path_importer_cache[path] = finder
         else:
             if finder is None and default:
diff --git a/Lib/importlib/test/import_/test_path.py b/Lib/importlib/test/import_/test_path.py
index b28f25df86..61fe2260d4 100644
--- a/Lib/importlib/test/import_/test_path.py
+++ b/Lib/importlib/test/import_/test_path.py
@@ -82,7 +82,7 @@ class FinderTests(unittest.TestCase):
         with util.import_state(path=[path], path_hooks=[hook]):
             loader = machinery.PathFinder.find_module(module)
             self.assertIs(loader, importer)
-            self.assertIn('', sys.path_importer_cache)
+            self.assertIn(os.getcwd(), sys.path_importer_cache)
 
 
 class DefaultPathFinderTests(unittest.TestCase):