Rev 5703: (jelmer) More lazy loading in bzrlib.revisionspec. (Jelmer Vernooij) in file:///home/pqm/archives/thelove/bzr/%2Btrunk/

Canonical.com Patch Queue Manager pqm at pqm.ubuntu.com
Mon Mar 7 16:49:25 UTC 2011


At file:///home/pqm/archives/thelove/bzr/%2Btrunk/

------------------------------------------------------------
revno: 5703 [merge]
revision-id: pqm at pqm.ubuntu.com-20110307164922-h4ny7ro3g0k9bi9e
parent: pqm at pqm.ubuntu.com-20110307153403-v1c3wgpajflxmejf
parent: jelmer at samba.org-20110303125021-ziry6a0qsr9l72x5
committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Mon 2011-03-07 16:49:22 +0000
message:
  (jelmer) More lazy loading in bzrlib.revisionspec. (Jelmer Vernooij)
modified:
  bzrlib/revisionspec.py         revisionspec.py-20050907152633-17567659fd5c0ddb
=== modified file 'bzrlib/revisionspec.py'
--- a/bzrlib/revisionspec.py	2011-02-25 00:12:01 +0000
+++ b/bzrlib/revisionspec.py	2011-03-03 12:50:21 +0000
@@ -15,27 +15,25 @@
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 
 
-import re
-
 from bzrlib.lazy_import import lazy_import
 lazy_import(globals(), """
 import bisect
 import datetime
 
 from bzrlib import (
-    workingtree,
-    )
-""")
-
-from bzrlib import (
     branch as _mod_branch,
-    errors,
     osutils,
-    registry,
     revision,
     symbol_versioning,
+    workingtree,
+    )
+""")
+
+from bzrlib import (
+    errors,
+    lazy_regex,
+    registry,
     trace,
-    workingtree,
     )
 
 
@@ -119,9 +117,6 @@
         return RevisionInfo(branch, revno, revision_id)
 
 
-_revno_regex = None
-
-
 class RevisionSpec(object):
     """A parsed revision specification."""
 
@@ -303,6 +298,8 @@
     # each revspec we try.
     wants_revision_history = False
 
+    _revno_regex = lazy_regex.lazy_compile(r'^(?:(\d+(\.\d+)*)|-\d+)(:.*)?$')
+
     # The revspecs to try
     _possible_revspecs = []
 
@@ -316,10 +313,7 @@
         """Run the lookup and see what we can get."""
 
         # First, see if it's a revno
-        global _revno_regex
-        if _revno_regex is None:
-            _revno_regex = re.compile(r'^(?:(\d+(\.\d+)*)|-\d+)(:.*)?$')
-        if _revno_regex.match(self.spec) is not None:
+        if self._revno_regex.match(self.spec) is not None:
             try:
                 return self._try_spectype(RevisionSpec_revno, branch)
             except RevisionSpec_revno.dwim_catchable_exceptions:
@@ -691,7 +685,7 @@
                                    August 14th, 2006 at 5:10pm.
     """
     prefix = 'date:'
-    _date_re = re.compile(
+    _date_regex = lazy_regex.lazy_compile(
             r'(?P<date>(?P<year>\d\d\d\d)-(?P<month>\d\d)-(?P<day>\d\d))?'
             r'(,|T)?\s*'
             r'(?P<time>(?P<hour>\d\d):(?P<minute>\d\d)(:(?P<second>\d\d))?)?'
@@ -715,7 +709,7 @@
         elif self.spec.lower() == 'tomorrow':
             dt = today + datetime.timedelta(days=1)
         else:
-            m = self._date_re.match(self.spec)
+            m = self._date_regex.match(self.spec)
             if not m or (not m.group('date') and not m.group('time')):
                 raise errors.InvalidRevisionSpec(self.user_spec,
                                                  branch, 'invalid date')




More information about the bazaar-commits mailing list