diff options
-rw-r--r-- | Lib/importlib/__init__.py | 19 | ||||
-rw-r--r-- | Lib/importlib/_bootstrap.py | 27 |
2 files changed, 27 insertions, 19 deletions
diff --git a/Lib/importlib/__init__.py b/Lib/importlib/__init__.py index 9672b36..ec6a965 100644 --- a/Lib/importlib/__init__.py +++ b/Lib/importlib/__init__.py @@ -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 diff --git a/Lib/importlib/_bootstrap.py b/Lib/importlib/_bootstrap.py index e81fa9f..f0de77b 100644 --- a/Lib/importlib/_bootstrap.py +++ b/Lib/importlib/_bootstrap.py @@ -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. |