diff options
Diffstat (limited to 'Lib/importlib/_bootstrap.py')
| -rw-r--r-- | Lib/importlib/_bootstrap.py | 18 | 
1 files changed, 17 insertions, 1 deletions
| diff --git a/Lib/importlib/_bootstrap.py b/Lib/importlib/_bootstrap.py index 6478db5..914d853 100644 --- a/Lib/importlib/_bootstrap.py +++ b/Lib/importlib/_bootstrap.py @@ -841,7 +841,23 @@ class _FileFinder:          contents = _os.listdir(path)          # We store two cached versions, to handle runtime changes of the          # PYTHONCASEOK environment variable. -        self._path_cache = set(contents) +        if not sys.platform.startswith('win'): +            self._path_cache = set(contents) +        else: +            # Windows users can import modules with case-insensitive file +            # suffixes (for legacy reasons). Make the suffix lowercase here +            # so it's done once instead of for every import. This is safe as +            # the specified suffixes to check against are always specified in a +            # case-sensitive manner. +            lower_suffix_contents = set() +            for item in contents: +                name, dot, suffix = item.partition('.') +                if dot: +                    new_name = '{}.{}'.format(name, suffix.lower()) +                else: +                    new_name = name +                lower_suffix_contents.add(new_name) +            self._path_cache = lower_suffix_contents          if sys.platform.startswith(CASE_INSENSITIVE_PLATFORMS):              self._relaxed_path_cache = set(fn.lower() for fn in contents) | 
