Documentation on python website says: xml.etree.ElementTree.iterparse(source, events=None, parser=None) Parses an XML section into an element tree incrementally, and 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. But 'events' must be a *tuple* or iterparse raises "TypeError: invalid event tuple" Possibly also worth explaining that "start-ns" event is accompanied by a tuple of (namespace, url) rather than an element from the XML document. Currently the description just says "ns events are used to get detailed namespace information" but doesn't say how or give an example.
How about actually allowing a list in addition to a tuple? And, in fact, any sequence? I can't see a reason not to. For reference, lxml only expects it to be either None or an iterable. Essentially, I consider it more of a set-like filter, since the linear aspect of a tuple/list/sequence has no meaning for it.
Thanks for the report, Peter. This is indeed a documentation fix for Python 3.3; note that in 3.4 (default branch), the restriction was lifted and iterparse now accepts any iterable sequence. The documentation also reflects that (saying that 'events' is a sequence). I'll update the 3.3 docs to address this issue.