| 2231 | |
| 2232 | |
| 2233 | class WSGIFileWrapper(object): |
| 2234 | |
| 2235 | def __init__(self, fp, buffer_size=1024*64): |
| 2236 | self.fp, self.buffer_size = fp, buffer_size |
| 2237 | for attr in ('fileno', 'close', 'read', 'readlines', 'tell', 'seek'): |
| 2238 | if hasattr(fp, attr): setattr(self, attr, getattr(fp, attr)) |
| 2239 | |
| 2240 | def __iter__(self): |
| 2241 | buff, read = self.buffer_size, self.read |
| 2242 | while True: |
| 2243 | part = read(buff) |
| 2244 | if not part: return |
| 2245 | yield part |
| 2246 | |
| 2247 | |
| 2248 | class _closeiter(object): |