From: Antoine Pitrou Date: Fri, 23 Aug 2013 21:04:30 +0000 (+0200) Subject: Issue #17741: use composition, rather than inheritance, for xml.etree.iterparse's... X-Git-Tag: v3.4.0a2~135 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0acbcb5bbeec87e3a8fae872a0368a4e297a8e8a;p=python Issue #17741: use composition, rather than inheritance, for xml.etree.iterparse's result class. Patch by Stefan Behnel. --- diff --git a/Lib/xml/etree/ElementTree.py b/Lib/xml/etree/ElementTree.py index bb34bb3ae2..291579bbac 100644 --- a/Lib/xml/etree/ElementTree.py +++ b/Lib/xml/etree/ElementTree.py @@ -1265,27 +1265,29 @@ class IncrementalParser: self.root = self._root -class _IterParseIterator(IncrementalParser): +class _IterParseIterator: def __init__(self, source, events, parser, close_source=False): - IncrementalParser.__init__(self, events, parser) + self._parser = IncrementalParser(events, parser) self._file = source self._close_file = close_source + self.root = None def __next__(self): while 1: - for event in self.events(): + for event in self._parser.events(): return event - if self._parser is None: + if self._parser._parser is None: + self.root = self._parser.root if self._close_file: self._file.close() raise StopIteration # load event buffer data = self._file.read(16384) if data: - self.data_received(data) + self._parser.data_received(data) else: - self.eof_received() + self._parser.eof_received() def __iter__(self): return self