MCPcopy Create free account
hub / github.com/Pylons/webtest / IteratorWrapper

Class IteratorWrapper

webtest/lint.py:276–310  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

274
275
276class IteratorWrapper:
277
278 def __init__(self, wsgi_iterator, check_start_response):
279 self.original_iterator = wsgi_iterator
280 self.iterator = iter(wsgi_iterator)
281 self.closed = False
282 self.check_start_response = check_start_response
283
284 def __iter__(self):
285 return self
286
287 def next(self):
288 assert not self.closed, (
289 "Iterator read after closed")
290 v = next(self.iterator)
291 if self.check_start_response is not None:
292 assert self.check_start_response, (
293 "The application returns and we started iterating over its"
294 " body, but start_response has not yet been called")
295 self.check_start_response = None
296 assert isinstance(v, bytes), (
297 "Iterator %r returned a non-%r object: %r"
298 % (self.iterator, bytes, v))
299 return v
300
301 __next__ = next
302
303 def close(self):
304 self.closed = True
305 if hasattr(self.original_iterator, 'close'):
306 self.original_iterator.close()
307
308 def __del__(self):
309 assert self.closed, (
310 "Iterator garbage collected without being closed")
311
312
313def check_environ(environ):

Callers 2

test_closeMethod · 0.90
lint_appFunction · 0.85

Calls

no outgoing calls

Tested by 1

test_closeMethod · 0.72

Used in the wild real call sites across dependent graphs

searching dependent graphs…