bpo-39495: Remove default value from C impl of TreeBuilder.start (GH-18275)

This commit is contained in:
Shantanu 2020-03-01 22:33:24 -08:00 committed by GitHub
parent 1f577ce363
commit 4edc95cf0a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 14 additions and 9 deletions

View file

@ -2259,6 +2259,10 @@ class BugsTest(unittest.TestCase):
text = text[6:-4] text = text[6:-4]
self.assertEqual(root.get('b'), text) self.assertEqual(root.get('b'), text)
def test_39495_treebuilder_start(self):
self.assertRaises(TypeError, ET.TreeBuilder().start, "tag")
self.assertRaises(TypeError, ET.TreeBuilder().start, "tag", None)
# -------------------------------------------------------------------- # --------------------------------------------------------------------

View file

@ -0,0 +1 @@
Remove default value from *attrs* parameter of :meth:`xml.etree.ElementTree.TreeBuilder.start` for consistency between Python and C implementations.

View file

@ -3038,7 +3038,7 @@ _elementtree_TreeBuilder_close_impl(TreeBuilderObject *self)
_elementtree.TreeBuilder.start _elementtree.TreeBuilder.start
tag: object tag: object
attrs: object = None attrs: object(subclass_of='&PyDict_Type')
/ /
[clinic start generated code]*/ [clinic start generated code]*/
@ -3046,7 +3046,7 @@ _elementtree.TreeBuilder.start
static PyObject * static PyObject *
_elementtree_TreeBuilder_start_impl(TreeBuilderObject *self, PyObject *tag, _elementtree_TreeBuilder_start_impl(TreeBuilderObject *self, PyObject *tag,
PyObject *attrs) PyObject *attrs)
/*[clinic end generated code: output=e7e9dc2861349411 input=95fc1758dd042c65]*/ /*[clinic end generated code: output=e7e9dc2861349411 input=7288e9e38e63b2b6]*/
{ {
return treebuilder_handle_start(self, tag, attrs); return treebuilder_handle_start(self, tag, attrs);
} }

View file

@ -761,7 +761,7 @@ _elementtree_TreeBuilder_close(TreeBuilderObject *self, PyObject *Py_UNUSED(igno
} }
PyDoc_STRVAR(_elementtree_TreeBuilder_start__doc__, PyDoc_STRVAR(_elementtree_TreeBuilder_start__doc__,
"start($self, tag, attrs=None, /)\n" "start($self, tag, attrs, /)\n"
"--\n" "--\n"
"\n"); "\n");
@ -777,17 +777,17 @@ _elementtree_TreeBuilder_start(TreeBuilderObject *self, PyObject *const *args, P
{ {
PyObject *return_value = NULL; PyObject *return_value = NULL;
PyObject *tag; PyObject *tag;
PyObject *attrs = Py_None; PyObject *attrs;
if (!_PyArg_CheckPositional("start", nargs, 1, 2)) { if (!_PyArg_CheckPositional("start", nargs, 2, 2)) {
goto exit; goto exit;
} }
tag = args[0]; tag = args[0];
if (nargs < 2) { if (!PyDict_Check(args[1])) {
goto skip_optional; _PyArg_BadArgument("start", "argument 2", "dict", args[1]);
goto exit;
} }
attrs = args[1]; attrs = args[1];
skip_optional:
return_value = _elementtree_TreeBuilder_start_impl(self, tag, attrs); return_value = _elementtree_TreeBuilder_start_impl(self, tag, attrs);
exit: exit:
@ -916,4 +916,4 @@ skip_optional:
exit: exit:
return return_value; return return_value;
} }
/*[clinic end generated code: output=bee26d0735a3fddc input=a9049054013a1b77]*/ /*[clinic end generated code: output=3ad029ba71f5ae39 input=a9049054013a1b77]*/