mercurial/changelog.py
changeset 51007 c690d2cc7f36
parent 50316 87f0155d68aa
child 51026 498afb627f78
equal deleted inserted replaced
51006:ffb393dd5999 51007:c690d2cc7f36
   173 
   173 
   174     def __getattr__(self, attr):
   174     def __getattr__(self, attr):
   175         return getattr(self._opener, attr)
   175         return getattr(self._opener, attr)
   176 
   176 
   177 
   177 
   178 def _delayopener(opener, target, buf):
   178 class _delayopener:
   179     """build an opener that stores chunks in 'buf' instead of 'target'"""
   179     """build an opener that stores chunks in 'buf' instead of 'target'"""
   180 
   180 
   181     def _delay(name, mode=b'r', checkambig=False, **kwargs):
   181     def __init__(self, opener, target, buf):
   182         if name != target:
   182         self._opener = opener
   183             return opener(name, mode, **kwargs)
   183         self._target = target
       
   184         self._buf = buf
       
   185 
       
   186     def __call__(self, name, mode=b'r', checkambig=False, **kwargs):
       
   187         if name != self._target:
       
   188             return self._opener(name, mode, **kwargs)
   184         assert not kwargs
   189         assert not kwargs
   185         return appender(opener, name, mode, buf)
   190         return appender(self._opener, name, mode, self._buf)
   186 
   191 
   187     return _delay
   192     def __getattr__(self, attr):
       
   193         return getattr(self._opener, attr)
   188 
   194 
   189 
   195 
   190 @attr.s
   196 @attr.s
   191 class _changelogrevision:
   197 class _changelogrevision:
   192     # Extensions might modify _defaultextra, so let the constructor below pass
   198     # Extensions might modify _defaultextra, so let the constructor below pass