##// END OF EJS Templates
changelog: make the `_delayopener` a real proxy...
marmoute -
r51903:c690d2cc default
parent child Browse files
Show More
@@ -175,16 +175,22 b' class _divertopener:'
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
General Comments 0
You need to be logged in to leave comments. Login now