~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/lazy_regex.py

  • Committer: John Arbash Meinel
  • Date: 2010-09-21 19:30:33 UTC
  • mto: This revision was merged to the branch mainline in revision 5451.
  • Revision ID: john@arbash-meinel.com-20100921193033-9ftw56og72mhlwo4
Change GroupCompressBlock to work in self._z_compress_chunks

This pushes down one of the peak memory locations. We still have a requirement
during commit of 1 fulltext + 2 compressed texts, but at least this code
path is now better about only using 1 fulltext and 1 compressed text.
We need to push this into more apis to get a bigger benefit.

Show diffs side-by-side

added added

removed removed

Lines of Context:
22
22
 
23
23
import re
24
24
 
 
25
from bzrlib import errors
 
26
 
25
27
 
26
28
class LazyRegex(object):
27
29
    """A proxy around a real regex, which won't be compiled until accessed."""
58
60
 
59
61
    def _real_re_compile(self, *args, **kwargs):
60
62
        """Thunk over to the original re.compile"""
61
 
        return _real_re_compile(*args, **kwargs)
 
63
        try:
 
64
            return _real_re_compile(*args, **kwargs)
 
65
        except re.error, e:
 
66
            # raise InvalidPattern instead of re.error as this gives a
 
67
            # cleaner message to the user.
 
68
            raise errors.InvalidPattern('"' + args[0] + '" ' +str(e))
62
69
 
63
70
    def __getattr__(self, attr):
64
71
        """Return a member from the proxied regex object.