Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 20c1cdd

Browse files
committed
Issue #17901: fix TreeBuilder construction for an explicit element_factory=None
Based on report and patch by Aaron Oakley.
2 parents 10e8c49 + 08231a9 commit 20c1cdd

3 files changed

Lines changed: 8 additions & 1 deletion

File tree

Lib/test/test_xml_etree.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1896,6 +1896,12 @@ class DummyBuilder(BaseDummyBuilder):
18961896
parser.feed(self.sample1)
18971897
self.assertIsNone(parser.close())
18981898

1899+
def test_treebuilder_elementfactory_none(self):
1900+
parser = ET.XMLParser(target=ET.TreeBuilder(element_factory=None))
1901+
parser.feed(self.sample1)
1902+
e = parser.close()
1903+
self._check_sample1_element(e)
1904+
18991905
def test_subclass(self):
19001906
class MyTreeBuilder(ET.TreeBuilder):
19011907
def foobar(self, x):

Misc/ACKS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -905,6 +905,7 @@ John O'Connor
905905
Kevin O'Connor
906906
Tim O'Malley
907907
Zooko O'Whielacronx
908+
Aaron Oakley
908909
James Oakley
909910
Jon Oberheide
910911
Pascal Oberndoerfer

Modules/_elementtree.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2341,7 +2341,7 @@ treebuilder_handle_start(TreeBuilderObject* self, PyObject* tag,
23412341
self->data = NULL;
23422342
}
23432343

2344-
if (self->element_factory) {
2344+
if (self->element_factory && self->element_factory != Py_None) {
23452345
node = PyObject_CallFunction(self->element_factory, "OO", tag, attrib);
23462346
} else {
23472347
node = create_new_element(tag, attrib);

0 commit comments

Comments
 (0)