From 3f2291f8025cf01ac96981d4e3a5284ba6e57f9f Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Fri, 3 Oct 2008 16:38:30 +0000 Subject: [PATCH] Change fnmatch.py to use separate caches for str and bytes keys. This is necessary to pass the tests with -bb. --- Lib/fnmatch.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Lib/fnmatch.py b/Lib/fnmatch.py index dd012059a7..0397549d4d 100644 --- a/Lib/fnmatch.py +++ b/Lib/fnmatch.py @@ -14,7 +14,8 @@ import re __all__ = ["filter", "fnmatch","fnmatchcase","translate"] -_cache = {} +_cache = {} # Maps text patterns to compiled regexen. +_cacheb = {} # Ditto for bytes patterns. def fnmatch(name, pat): """Test whether FILENAME matches PATTERN. @@ -38,7 +39,8 @@ def fnmatch(name, pat): return fnmatchcase(name, pat) def _compile_pattern(pat): - regex = _cache.get(pat) + cache = _cacheb if isinstance(pat, bytes) else _cache + regex = cache.get(pat) if regex is None: if isinstance(pat, bytes): pat_str = str(pat, 'ISO-8859-1') @@ -46,7 +48,7 @@ def _compile_pattern(pat): res = bytes(res_str, 'ISO-8859-1') else: res = translate(pat) - _cache[pat] = regex = re.compile(res) + cache[pat] = regex = re.compile(res) return regex.match def filter(names, pat): -- 2.40.0