# HG changeset patch # User Siddharth Agarwal # Date 1405460443 25200 # Node ID cad9dadc9d26cbb63ea80c56cbd4a565c5154dac # Parent 7e5dfa00e3c28777bbee425a514cd5a0a3dcc27e util: move compilere to a class We do this to allow us to use descriptors for other related methods. For now, util.compilere does the same thing. Upcoming patches will remove it. diff -r 7e5dfa00e3c2 -r cad9dadc9d26 mercurial/util.py --- a/mercurial/util.py Tue Jul 15 14:35:19 2014 -0700 +++ b/mercurial/util.py Tue Jul 15 14:40:43 2014 -0700 @@ -716,29 +716,33 @@ except ImportError: _re2 = False -def compilere(pat, flags=0): - '''Compile a regular expression, using re2 if possible +class _re(object): + def compile(self, pat, flags=0): + '''Compile a regular expression, using re2 if possible - For best performance, use only re2-compatible regexp features. The - only flags from the re module that are re2-compatible are - IGNORECASE and MULTILINE.''' - global _re2 - if _re2 is None: - try: - # check if match works, see issue3964 - _re2 = bool(re2.match(r'\[([^\[]+)\]', '[ui]')) - except ImportError: - _re2 = False - if _re2 and (flags & ~(remod.IGNORECASE | remod.MULTILINE)) == 0: - if flags & remod.IGNORECASE: - pat = '(?i)' + pat - if flags & remod.MULTILINE: - pat = '(?m)' + pat - try: - return re2.compile(pat) - except re2.error: - pass - return remod.compile(pat, flags) + For best performance, use only re2-compatible regexp features. The + only flags from the re module that are re2-compatible are + IGNORECASE and MULTILINE.''' + global _re2 + if _re2 is None: + try: + # check if match works, see issue3964 + _re2 = bool(re2.match(r'\[([^\[]+)\]', '[ui]')) + except ImportError: + _re2 = False + if _re2 and (flags & ~(remod.IGNORECASE | remod.MULTILINE)) == 0: + if flags & remod.IGNORECASE: + pat = '(?i)' + pat + if flags & remod.MULTILINE: + pat = '(?m)' + pat + try: + return re2.compile(pat) + except re2.error: + pass + return remod.compile(pat, flags) + +re = _re() +compilere = re.compile _fspathcache = {} def fspath(name, root):