~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/lazy_regex.py

  • Committer: Jelmer Vernooij
  • Date: 2009-02-10 04:10:44 UTC
  • mto: This revision was merged to the branch mainline in revision 3995.
  • Revision ID: jelmer@samba.org-20090210041044-42lmb09hskt9lt9l
Review from Ian.

Show diffs side-by-side

added added

removed removed

Lines of Context:
12
12
#
13
13
# You should have received a copy of the GNU General Public License
14
14
# along with this program; if not, write to the Free Software
15
 
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
16
 
17
17
"""Lazily compiled regex objects.
18
18
 
22
22
 
23
23
import re
24
24
 
25
 
from bzrlib import errors
26
 
 
27
25
 
28
26
class LazyRegex(object):
29
27
    """A proxy around a real regex, which won't be compiled until accessed."""
60
58
 
61
59
    def _real_re_compile(self, *args, **kwargs):
62
60
        """Thunk over to the original re.compile"""
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))
 
61
        return _real_re_compile(*args, **kwargs)
69
62
 
70
63
    def __getattr__(self, attr):
71
64
        """Return a member from the proxied regex object.
98
91
 
99
92
def reset_compile():
100
93
    """Restore the original function to re.compile().
101
 
 
 
94
    
102
95
    It is safe to call reset_compile() multiple times, it will always
103
96
    restore re.compile() to the value that existed at import time.
104
97
    Though the first call will reset back to the original (it doesn't