summaryrefslogtreecommitdiffstats
path: root/Lib/xml
diff options
context:
space:
mode:
authorEli Bendersky <eliben@gmail.com>2013-01-24 15:15:46 (GMT)
committerEli Bendersky <eliben@gmail.com>2013-01-24 15:15:46 (GMT)
commitc4d5e08e3f5463272178ceb226bb7457890e81d3 (patch)
tree3ca1a2dc94c84c77b182ad3fe5c050a265e705e0 /Lib/xml
parent5c6198b3fdecc12cfb6b5bec4d83a1f0ba422b12 (diff)
parentaaa9780fe174a4ed5fc19df1d474fb802a19fa42 (diff)
downloadcpython-c4d5e08e3f5463272178ceb226bb7457890e81d3.zip
cpython-c4d5e08e3f5463272178ceb226bb7457890e81d3.tar.gz
cpython-c4d5e08e3f5463272178ceb226bb7457890e81d3.tar.bz2
Issue #9708: Fix support for iterparse(parser=...) argument per documentation.
When _elementtree is imported, iterparse is redefined as a class and the parser argument was ommitted. Fix this, and add a docstring to the class.
Diffstat (limited to 'Lib/xml')
-rw-r--r--Lib/xml/etree/ElementTree.py19
1 files changed, 16 insertions, 3 deletions
diff --git a/Lib/xml/etree/ElementTree.py b/Lib/xml/etree/ElementTree.py
index 85cab2b..aa5e346 100644
--- a/Lib/xml/etree/ElementTree.py
+++ b/Lib/xml/etree/ElementTree.py
@@ -1743,8 +1743,20 @@ else:
source.close()
class iterparse:
+ """Parses an XML section into an element tree incrementally.
+
+ Reports what’s going on to the user. 'source' is a filename or file
+ object containing XML data. 'events' is a list of events to report back.
+ The supported events are the strings "start", "end", "start-ns" and
+ "end-ns" (the "ns" events are used to get detailed namespace
+ information). If 'events' is omitted, only "end" events are reported.
+ 'parser' is an optional parser instance. If not given, the standard
+ XMLParser parser is used. Returns an iterator providing
+ (event, elem) pairs.
+ """
+
root = None
- def __init__(self, file, events=None):
+ def __init__(self, file, events=None, parser=None):
self._close_file = False
if not hasattr(file, 'read'):
file = open(file, 'rb')
@@ -1754,8 +1766,9 @@ else:
self._index = 0
self._error = None
self.root = self._root = None
- b = TreeBuilder()
- self._parser = XMLParser(b)
+ if parser is None:
+ parser = XMLParser(target=TreeBuilder())
+ self._parser = parser
self._parser._setevents(self._events, events)
def __next__(self):