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.
--- 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):