mercurial/changelog.py
changeset 44496 897f0ce4b484
parent 44308 5962fd0d1045
child 44661 e147748f750b
equal deleted inserted replaced
44495:1376cb1c8e34 44496:897f0ce4b484
   162 
   162 
   163     def __exit__(self, *args):
   163     def __exit__(self, *args):
   164         return self.fp.__exit__(*args)
   164         return self.fp.__exit__(*args)
   165 
   165 
   166 
   166 
   167 def _divertopener(opener, target):
   167 class _divertopener(object):
   168     """build an opener that writes in 'target.a' instead of 'target'"""
   168     def __init__(self, opener, target):
   169 
   169         self._opener = opener
   170     def _divert(name, mode=b'r', checkambig=False, **kwargs):
   170         self._target = target
   171         if name != target:
   171 
   172             return opener(name, mode, **kwargs)
   172     def __call__(self, name, mode=b'r', checkambig=False, **kwargs):
   173         return opener(name + b".a", mode, **kwargs)
   173         if name != self._target:
   174 
   174             return self._opener(name, mode, **kwargs)
   175     return _divert
   175         return self._opener(name + b".a", mode, **kwargs)
       
   176 
       
   177     def __getattr__(self, attr):
       
   178         return getattr(self._opener, attr)
   176 
   179 
   177 
   180 
   178 def _delayopener(opener, target, buf):
   181 def _delayopener(opener, target, buf):
   179     """build an opener that stores chunks in 'buf' instead of 'target'"""
   182     """build an opener that stores chunks in 'buf' instead of 'target'"""
   180 
   183