mirror of
https://github.com/python/cpython.git
synced 2025-12-05 00:52:25 +00:00
bpo-45948: Remove constructor discrepancy in C version of ElementTree.XMLParser (GH-31152)
Both implementations accept target=None now.
This commit is contained in:
parent
9d9cfd61ec
commit
168fd6453b
4 changed files with 19 additions and 5 deletions
|
|
@ -758,6 +758,15 @@ class ElementTreeTest(unittest.TestCase):
|
||||||
('end-ns', ''),
|
('end-ns', ''),
|
||||||
])
|
])
|
||||||
|
|
||||||
|
def test_initialize_parser_without_target(self):
|
||||||
|
# Explicit None
|
||||||
|
parser = ET.XMLParser(target=None)
|
||||||
|
self.assertIsInstance(parser.target, ET.TreeBuilder)
|
||||||
|
|
||||||
|
# Implicit None
|
||||||
|
parser2 = ET.XMLParser()
|
||||||
|
self.assertIsInstance(parser2.target, ET.TreeBuilder)
|
||||||
|
|
||||||
def test_children(self):
|
def test_children(self):
|
||||||
# Test Element children iteration
|
# Test Element children iteration
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
Fixed a discrepancy in the C implementation of the
|
||||||
|
:mod:`xml.etree.ElementTree` module. Now, instantiating an
|
||||||
|
:class:`xml.etree.ElementTree.XMLParser` with a ``target=None``
|
||||||
|
keyword provides a default :class:`xml.etree.ElementTree.TreeBuilder`
|
||||||
|
target as the Python implementation does.
|
||||||
|
|
@ -3637,7 +3637,7 @@ ignore_attribute_error(PyObject *value)
|
||||||
_elementtree.XMLParser.__init__
|
_elementtree.XMLParser.__init__
|
||||||
|
|
||||||
*
|
*
|
||||||
target: object = NULL
|
target: object = None
|
||||||
encoding: str(accept={str, NoneType}) = None
|
encoding: str(accept={str, NoneType}) = None
|
||||||
|
|
||||||
[clinic start generated code]*/
|
[clinic start generated code]*/
|
||||||
|
|
@ -3645,7 +3645,7 @@ _elementtree.XMLParser.__init__
|
||||||
static int
|
static int
|
||||||
_elementtree_XMLParser___init___impl(XMLParserObject *self, PyObject *target,
|
_elementtree_XMLParser___init___impl(XMLParserObject *self, PyObject *target,
|
||||||
const char *encoding)
|
const char *encoding)
|
||||||
/*[clinic end generated code: output=3ae45ec6cdf344e4 input=53e35a829ae043e8]*/
|
/*[clinic end generated code: output=3ae45ec6cdf344e4 input=7e716dd6e4f3e439]*/
|
||||||
{
|
{
|
||||||
self->entity = PyDict_New();
|
self->entity = PyDict_New();
|
||||||
if (!self->entity)
|
if (!self->entity)
|
||||||
|
|
@ -3670,7 +3670,7 @@ _elementtree_XMLParser___init___impl(XMLParserObject *self, PyObject *target,
|
||||||
(unsigned long)_Py_HashSecret.expat.hashsalt);
|
(unsigned long)_Py_HashSecret.expat.hashsalt);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (target) {
|
if (target != Py_None) {
|
||||||
Py_INCREF(target);
|
Py_INCREF(target);
|
||||||
} else {
|
} else {
|
||||||
target = treebuilder_new(&TreeBuilder_Type, NULL, NULL);
|
target = treebuilder_new(&TreeBuilder_Type, NULL, NULL);
|
||||||
|
|
|
||||||
4
Modules/clinic/_elementtree.c.h
generated
4
Modules/clinic/_elementtree.c.h
generated
|
|
@ -807,7 +807,7 @@ _elementtree_XMLParser___init__(PyObject *self, PyObject *args, PyObject *kwargs
|
||||||
PyObject * const *fastargs;
|
PyObject * const *fastargs;
|
||||||
Py_ssize_t nargs = PyTuple_GET_SIZE(args);
|
Py_ssize_t nargs = PyTuple_GET_SIZE(args);
|
||||||
Py_ssize_t noptargs = nargs + (kwargs ? PyDict_GET_SIZE(kwargs) : 0) - 0;
|
Py_ssize_t noptargs = nargs + (kwargs ? PyDict_GET_SIZE(kwargs) : 0) - 0;
|
||||||
PyObject *target = NULL;
|
PyObject *target = Py_None;
|
||||||
const char *encoding = NULL;
|
const char *encoding = NULL;
|
||||||
|
|
||||||
fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser, 0, 0, 0, argsbuf);
|
fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser, 0, 0, 0, argsbuf);
|
||||||
|
|
@ -915,4 +915,4 @@ skip_optional:
|
||||||
exit:
|
exit:
|
||||||
return return_value;
|
return return_value;
|
||||||
}
|
}
|
||||||
/*[clinic end generated code: output=1385b5e5688f3614 input=a9049054013a1b77]*/
|
/*[clinic end generated code: output=992733cfc7390590 input=a9049054013a1b77]*/
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue