]> granicus.if.org Git - python/commitdiff
Issue #17741: use composition, rather than inheritance, for xml.etree.iterparse's...
authorAntoine Pitrou <solipsis@pitrou.net>
Fri, 23 Aug 2013 21:04:30 +0000 (23:04 +0200)
committerAntoine Pitrou <solipsis@pitrou.net>
Fri, 23 Aug 2013 21:04:30 +0000 (23:04 +0200)
Patch by Stefan Behnel.

Lib/xml/etree/ElementTree.py

index bb34bb3ae2c482be295c29a24907c0bcc51956a6..291579bbacaae74390e29ab741b8fd649523dd60 100644 (file)
@@ -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