View difference between Paste ID: mKUhpcnT and FQK1buzF
SHOW: | | - or go back to the newest paste.
1
# See http://blog.dscpl.com.au/2012/10/obligations-for-calling-close-on.html
2
class ClosingMiddleware(object):
3
    def __init__(self, application):
4
        self.application = application
5-
        self.iterator = None
5+
        self.iterable = None
6
7
    def __call__(self, environ, start_response):
8-
        self.iterator = self.application(environ, start_response)
8+
        self.iterable = self.application(environ, start_response)
9
        return self
10
11
    def __iter__(self):
12
        for data in self.iterable:
13
            yield data
14
15
    def close(self):
16
        if hasattr(self.iterable, 'close'):
17
            self.iterable.close()