]> granicus.if.org Git - python/commitdiff
Relocate importlib._case_ok to importlib._bootstrap.
authorBrett Cannon <brett@python.org>
Fri, 27 Jan 2012 00:03:52 +0000 (19:03 -0500)
committerBrett Cannon <brett@python.org>
Fri, 27 Jan 2012 00:03:52 +0000 (19:03 -0500)
This required updating the code to use posix instead of os. This is
all being done to make bootstrapping easier to removing dependencies
that are kept in importlib.__init__ and thus outside of the single
file to bootstrap from.

Lib/importlib/__init__.py
Lib/importlib/_bootstrap.py

index 9672b36d438825e206afdf0a81d112ec572fa605..ec6a96554da0c87edc10fa38094a02417960c64b 100644 (file)
@@ -33,25 +33,6 @@ _r_long = _bootstrap._r_long
 
 # Bootstrap help #####################################################
 
-# TODO: Expose from import.c, else handle encode/decode as _os.environ returns
-#       bytes.
-def _case_ok(directory, check):
-    """Check if the directory contains something matching 'check'.
-
-    No check is done if the file/directory exists or not.
-
-    """
-    if 'PYTHONCASEOK' in os.environ:
-        return True
-    if not directory:
-        directory = os.getcwd()
-    if check in os.listdir(directory):
-        return True
-    return False
-
-_bootstrap._case_ok = _case_ok
-
-
 # Required built-in modules.
 try:
     import posix as _os
index e81fa9f74f72c44510ed7428f5b8d2df54bceaf4..f0de77bc62d91d06594a755045508841f376929a 100644 (file)
@@ -18,6 +18,33 @@ work. One should use importlib as the public-facing version of this module.
 
 # Bootstrap-related code ######################################################
 
+# TODO: when not on any of these platforms, replace _case_ok() w/
+#       ``lambda x,y: True``.
+CASE_OK_PLATFORMS = 'win', 'cygwin', 'darwin'
+
+def _case_ok(directory, check):
+    """Check if the directory contains something matching 'check'
+    case-sensitively when running on Windows or OS X.
+
+    If running on Window or OS X and PYTHONCASEOK is a defined environment
+    variable then no case-sensitive check is performed. No check is done to see
+    if what is being checked for exists, so if the platform is not Windows or
+    OS X then assume the case is fine.
+
+    """
+    if (any(map(sys.platform.startswith, CASE_OK_PLATFORMS)) and
+            b'PYTHONCASEOK' not in _os.environ):
+        if not directory:
+            directory = '.'
+        if check in _os.listdir(directory):
+            return True
+        else:
+            return False
+    else:
+        return True
+
+
+
 # TODO: Expose from marshal
 def _w_long(x):
     """Convert a 32-bit integer to little-endian.