except ImportError:
_locale = None
+# try _collections first to reduce startup cost
+try:
+ from _collections import OrderedDict
+except ImportError:
+ from collections import OrderedDict
+
+
# public symbols
__all__ = [
"match", "fullmatch", "search", "sub", "subn", "split",
# --------------------------------------------------------------------
# internals
-_cache = {}
+_cache = OrderedDict()
_pattern_type = type(sre_compile.compile("", 0))
p = sre_compile.compile(pattern, flags)
if not (flags & DEBUG):
if len(_cache) >= _MAXCACHE:
- _cache.clear()
+ try:
+ _cache.popitem(False)
+ except KeyError:
+ pass
_cache[type(pattern), pattern, flags] = p
return p