cpython: fea94f9cb5a0 (original) (raw)

--- a/Modules/_elementtree.c +++ b/Modules/_elementtree.c @@ -370,6 +370,14 @@ get_attrib_from_keywords(PyObject kwds) return attrib; } +/[clinic input] +module _elementtree +class _elementtree.Element "ElementObject " "&Element_Type" +class _elementtree.TreeBuilder "TreeBuilderObject " "&TreeBuilder_Type" +class _elementtree.XMLParser "XMLParserObject " "&XMLParser_Type" +[clinic start generated code]/ +/[clinic end generated code: output=da39a3ee5e6b4b0d input=159aa50a54061c22]/ + static int element_init(PyObject self, PyObject args, PyObject kwds) { @@ -658,25 +666,33 @@ element_dealloc(ElementObject self) / -------------------------------------------------------------------- / -static PyObject -element_append(ElementObject self, PyObject* args) +/*[clinic input] +_elementtree.Element.append +

+ +[clinic start generated code]*/ + +static PyObject * +_elementtree_Element_append_impl(ElementObject self, PyObject subelement) +/[clinic end generated code: output=54a884b7cf2295f4 input=3ed648beb5bfa22a]/ {

-

Py_RETURN_NONE; } -static PyObject* -element_clearmethod(ElementObject* self, PyObject* args) +/[clinic input] +_elementtree.Element.clear + +[clinic start generated code]/ + +static PyObject +_elementtree_Element_clear_impl(ElementObject self) +/[clinic end generated code: output=8bcd7a51f94cfff6 input=3c719ff94bf45dd6]/ {

- dealloc_extra(self); Py_INCREF(Py_None); @@ -690,15 +706,18 @@ element_clearmethod(ElementObject* self, Py_RETURN_NONE; } -static PyObject* -element_copy(ElementObject* self, PyObject* args) +/[clinic input] +_elementtree.Element.copy + +[clinic start generated code]/ + +static PyObject +_elementtree_Element___copy___impl(ElementObject self) +/[clinic end generated code: output=2c701ebff7247781 input=ad87aaebe95675bf]/ { Py_ssize_t i; ElementObject* element;

- element = (ElementObject*) create_new_element( self->tag, (self->extra) ? self->extra->attrib : Py_None); if (!element) @@ -729,8 +748,17 @@ element_copy(ElementObject* self, PyObje return (PyObject*) element; } -static PyObject* -element_deepcopy(ElementObject* self, PyObject* args) +/*[clinic input] +_elementtree.Element.deepcopy +

+ +[clinic start generated code]/ + +static PyObject +elementtree_Element___deepcopy_(ElementObject self, PyObject memo) +/[clinic end generated code: output=d1f19851d17bf239 input=df24c2b602430b77]/ { Py_ssize_t i; ElementObject element; @@ -740,10 +768,6 @@ element_deepcopy(ElementObject self, Py PyObject* tail; PyObject* id;

- tag = deepcopy(self->tag, memo); if (!tag) return NULL; @@ -814,17 +838,22 @@ element_deepcopy(ElementObject* self, Py return NULL; } -static PyObject* -element_sizeof(PyObject* myself, PyObject* args) +/[clinic input] +_elementtree.Element.sizeof -> Py_ssize_t + +[clinic start generated code]/ + +static Py_ssize_t +_elementtree_Element___sizeof___impl(ElementObject self) +/[clinic end generated code: output=bf73867721008000 input=70f4b323d55a17c1]*/ {

} /* dict keys for getstate/setstate. / @@ -840,8 +869,14 @@ element_sizeof(PyObject myself, PyObjec

+[clinic start generated code]*/ + static PyObject * -element_getstate(ElementObject self) +_elementtree_Element___getstate___impl(ElementObject self) +/[clinic end generated code: output=37279aeeb6bb5b04 input=f0d16d7ec2f7adc1]/ { Py_ssize_t i, noattrib; PyObject *instancedict = NULL, children; @@ -956,6 +991,7 @@ element_setstate_from_attributes(Element / setstate for Element instance from the Python implementation.

static PyObject * element_setstate_from_Python(ElementObject *self, PyObject state) { @@ -981,8 +1017,17 @@ element_setstate_from_Python(ElementObje return retval; } +/[clinic input] +_elementtree.Element.setstate +

+ +[clinic start generated code]/ + static PyObject -element_setstate(ElementObject self, PyObject state) +elementtree_Element___setstate_(ElementObject self, PyObject state) +/[clinic end generated code: output=ea28bf3491b1f75e input=aaf80abea7c1e3b9]/ { if (!PyDict_CheckExact(state)) { PyErr_Format(PyExc_TypeError, @@ -1036,21 +1081,26 @@ checkpath(PyObject tag) return 1; / unknown type; might be path expression / } -static PyObject -element_extend(ElementObject self, PyObject args) +/*[clinic input] +_elementtree.Element.extend +

+ +[clinic start generated code]*/ + +static PyObject +_elementtree_Element_extend(ElementObject self, PyObject elements) +/[clinic end generated code: output=f6e67fc2ff529191 input=807bc4f31c69f7c0]/ { PyObject seq; Py_ssize_t i, seqlen = 0;

-

+ +[clinic start generated code]*/ + +static PyObject * +_elementtree_Element_find_impl(ElementObject *self, PyObject *path,

+/[clinic end generated code: output=41b43f0f0becafae input=359b6985f6489d2e]/ { Py_ssize_t i;

-

@@ -1113,24 +1166,28 @@ element_find(ElementObject self, PyObje Py_RETURN_NONE; } -static PyObject -element_findtext(ElementObject *self, PyObject *args, PyObject kwds) +/[clinic input] +_elementtree.Element.findtext +

+ +[clinic start generated code]*/ + +static PyObject * +_elementtree_Element_findtext_impl(ElementObject *self, PyObject *path,

+/[clinic end generated code: output=83b3ba4535d308d2 input=b53a85aa5aa2a916]/ { Py_ssize_t i;

-

if (!self->extra) { @@ -1141,7 +1198,7 @@ element_findtext(ElementObject self, Py for (i = 0; i < self->extra->length; i++) { ElementObject item = (ElementObject*) self->extra->children[i]; if (Element_CheckExact(item) &&

@@ -1154,20 +1211,24 @@ element_findtext(ElementObject self, Py return default_value; } -static PyObject -element_findall(ElementObject *self, PyObject *args, PyObject kwds) +/[clinic input] +_elementtree.Element.findall +

+ +[clinic start generated code]*/ + +static PyObject * +_elementtree_Element_findall_impl(ElementObject *self, PyObject *path,

+/[clinic end generated code: output=1a0bd9f5541b711d input=4d9e6505a638550c]/ { Py_ssize_t i; PyObject* out;

- if (checkpath(tag) || namespaces != Py_None) { _Py_IDENTIFIER(findall); return _PyObject_CallMethodId( @@ -1196,36 +1257,41 @@ element_findall(ElementObject self, PyO return out; } -static PyObject -element_iterfind(ElementObject *self, PyObject *args, PyObject kwds) +/[clinic input] +_elementtree.Element.iterfind +

+ +[clinic start generated code]*/ + +static PyObject * +_elementtree_Element_iterfind_impl(ElementObject *self, PyObject *path,

+/[clinic end generated code: output=ecdd56d63b19d40f input=abb974e350fb65c7]/ {

- return _PyObject_CallMethodId( st->elementpath_obj, &PyId_iterfind, "OOO", self, tag, namespaces); } -static PyObject* -element_get(ElementObject* self, PyObject* args, PyObject* kwds) +/*[clinic input] +_elementtree.Element.get +

+ +[clinic start generated code]*/ + +static PyObject * +_elementtree_Element_get_impl(ElementObject *self, PyObject *key,

+/[clinic end generated code: output=523c614142595d75 input=ee153bbf8cdb246e]/ { PyObject* value;

-

-

if (!self->extra || self->extra->attrib == Py_None) value = default_value; @@ -1239,17 +1305,20 @@ element_get(ElementObject* self, PyObjec return value; } -static PyObject* -element_getchildren(ElementObject* self, PyObject* args) +/[clinic input] +_elementtree.Element.getchildren + +[clinic start generated code]/ + +static PyObject +_elementtree_Element_getchildren_impl(ElementObject self) +/[clinic end generated code: output=e50ffe118637b14f input=0f754dfded150d5f]/ { Py_ssize_t i; PyObject* list; /* FIXME: report as deprecated? */

- if (!self->extra) return PyList_New(0); @@ -1271,25 +1340,30 @@ static PyObject * create_elementiter(ElementObject *self, PyObject tag, int gettext); +/[clinic input] +_elementtree.Element.iter +

+ +[clinic start generated code]*/ + static PyObject * -element_iter(ElementObject *self, PyObject *args, PyObject *kwds) +_elementtree_Element_iter_impl(ElementObject self, PyObject tag) +/[clinic end generated code: output=3f49f9a862941cc5 input=774d5b12e573aedd]/ {

-

- return create_elementiter(self, tag, 0); } -static PyObject* -element_itertext(ElementObject* self, PyObject* args) +/[clinic input] +_elementtree.Element.itertext + +[clinic start generated code]/ + +static PyObject +_elementtree_Element_itertext_impl(ElementObject self) +/[clinic end generated code: output=5fa34b2fbcb65df6 input=af8f0e42cb239c89]/ {

- return create_elementiter(self, Py_None, 1); } @@ -1311,14 +1385,21 @@ element_getitem(PyObject* self_, Py_ssiz return self->extra->children[index]; } -static PyObject* -element_insert(ElementObject* self, PyObject* args) +/*[clinic input] +_elementtree.Element.insert +

+ +[clinic start generated code]*/ + +static PyObject * +_elementtree_Element_insert_impl(ElementObject *self, Py_ssize_t index,

+/[clinic end generated code: output=990adfef4d424c0b input=cd6fbfcdab52d7a8]/ {

if (!self->extra) { if (create_extra(self, NULL) < 0) @@ -1339,32 +1420,38 @@ element_insert(ElementObject* self, PyOb for (i = self->extra->length; i > index; i--) self->extra->children[i] = self->extra->children[i-1];

self->extra->length++; Py_RETURN_NONE; } -static PyObject* -element_items(ElementObject* self, PyObject* args) +/[clinic input] +_elementtree.Element.items + +[clinic start generated code]/ + +static PyObject +_elementtree_Element_items_impl(ElementObject self) +/[clinic end generated code: output=6db2c778ce3f5a4d input=adbe09aaea474447]/ {

- if (!self->extra || self->extra->attrib == Py_None) return PyList_New(0); return PyDict_Items(self->extra->attrib); } -static PyObject* -element_keys(ElementObject* self, PyObject* args) +/[clinic input] +_elementtree.Element.keys + +[clinic start generated code]/ + +static PyObject +_elementtree_Element_keys_impl(ElementObject self) +/[clinic end generated code: output=bc5bfabbf20eeb3c input=f02caf5b496b5b0b]/ {

- if (!self->extra || self->extra->attrib == Py_None) return PyList_New(0); @@ -1380,16 +1467,22 @@ element_length(ElementObject* self) return self->extra->length; } -static PyObject* -element_makeelement(PyObject* self, PyObject* args, PyObject* kw) +/*[clinic input] +_elementtree.Element.makeelement +

+ +[clinic start generated code]*/ + +static PyObject * +_elementtree_Element_makeelement_impl(ElementObject *self, PyObject *tag,

+/[clinic end generated code: output=4109832d5bb789ef input=9480d1d2e3e68235]/ { PyObject* elem;

- attrib = PyDict_Copy(attrib); if (!attrib) return NULL; @@ -1401,15 +1494,20 @@ element_makeelement(PyObject* self, PyOb return elem; } -static PyObject* -element_remove(ElementObject* self, PyObject* args) +/*[clinic input] +_elementtree.Element.remove +

+ +[clinic start generated code]*/ + +static PyObject * +_elementtree_Element_remove_impl(ElementObject self, PyObject subelement) +/[clinic end generated code: output=38fe6c07d6d87d1f input=d52fc28ededc0bd8]/ { Py_ssize_t i;

- if (!self->extra) { /* element has no children, so raise exception / PyErr_SetString( @@ -1420,14 +1518,14 @@ element_remove(ElementObject self, PyOb } for (i = 0; i < self->extra->length; i++) {

@@ -1454,16 +1552,22 @@ element_repr(ElementObject* self) return PyUnicode_FromFormat("<Element at %p>", self); } -static PyObject* -element_set(ElementObject* self, PyObject* args) +/*[clinic input] +_elementtree.Element.set +

+ +[clinic start generated code]*/ + +static PyObject * +_elementtree_Element_set_impl(ElementObject *self, PyObject *key,

+/[clinic end generated code: output=fb938806be3c5656 input=1efe90f7d82b3fe9]/ { PyObject* attrib;

- if (!self->extra) { if (create_extra(self, NULL) < 0) return NULL; @@ -1744,43 +1848,6 @@ element_ass_subscr(PyObject* self_, PyOb } } -static PyMethodDef element_methods[] = { -

-

-

-

-

-

-

-

-

-

-}; - static PyObject* element_getattro(ElementObject* self, PyObject* nameobj) { @@ -1877,54 +1944,6 @@ static PySequenceMethods element_as_sequ 0, }; -static PyMappingMethods element_as_mapping = {

-}; - -static PyTypeObject Element_Type = {

-}; - /******************************* Element iterator ****************************/ /* ElementIterObject represents the iteration state over an XML element in @@ -2264,23 +2283,24 @@ treebuilder_new(PyTypeObject *type, PyOb return (PyObject )t; } +/[clinic input] +_elementtree.TreeBuilder.init +

+ +[clinic start generated code]*/ + static int -treebuilder_init(PyObject *self, PyObject *args, PyObject *kwds) +_elementtree_TreeBuilder___init___impl(TreeBuilderObject *self,

+/[clinic end generated code: output=91cfa7558970ee96 input=1b424eeefc35249c]/ {

- if (element_factory) { Py_INCREF(element_factory);

+ +[clinic start generated code]*/ + +static PyObject * +_elementtree_TreeBuilder_data(TreeBuilderObject self, PyObject data) +/[clinic end generated code: output=69144c7100795bb2 input=a0540c532b284d29]/ {

- return treebuilder_handle_data(self, data); } -static PyObject* -treebuilder_end(TreeBuilderObject* self, PyObject* args) +/*[clinic input] +_elementtree.TreeBuilder.end +

+ +[clinic start generated code]*/ + +static PyObject * +_elementtree_TreeBuilder_end(TreeBuilderObject self, PyObject tag) +/[clinic end generated code: output=9a98727cc691cd9d input=22dc3674236f5745]/ {

- return treebuilder_handle_end(self, tag); } @@ -2636,76 +2666,35 @@ treebuilder_done(TreeBuilderObject* self return res; } -static PyObject* -treebuilder_close(TreeBuilderObject* self, PyObject* args) +/[clinic input] +_elementtree.TreeBuilder.close + +[clinic start generated code]/ + +static PyObject +_elementtree_TreeBuilder_close_impl(TreeBuilderObject self) +/[clinic end generated code: output=b441fee3202f61ee input=f7c9c65dc718de14]/ {

- return treebuilder_done(self); } -static PyObject* -treebuilder_start(TreeBuilderObject* self, PyObject* args) +/*[clinic input] +_elementtree.TreeBuilder.start +

+ +[clinic start generated code]*/ + +static PyObject * +_elementtree_TreeBuilder_start_impl(TreeBuilderObject *self, PyObject *tag,

+/[clinic end generated code: output=e7e9dc2861349411 input=95fc1758dd042c65]/ {

-

} -static PyMethodDef treebuilder_methods[] = {

-}; - -static PyTypeObject TreeBuilder_Type = {

-}; - /* ==================================================================== / / the expat interface */ @@ -3212,33 +3201,34 @@ xmlparser_new(PyTypeObject *type, PyObje return (PyObject )self; } +/[clinic input] +_elementtree.XMLParser.init +

+ +[clinic start generated code]*/ + static int -xmlparser_init(PyObject *self, PyObject *args, PyObject *kwds) +_elementtree_XMLParser___init___impl(XMLParserObject *self, PyObject *html,

+/[clinic end generated code: output=d6a16c63dda54441 input=a870da39c80d7d68]/ {

-

+

-

-

-

+

PyErr_Clear(); /* configure parser */

@@ -3372,15 +3362,18 @@ expat_parse(XMLParserObject* self, const Py_RETURN_NONE; } -static PyObject* -xmlparser_close(XMLParserObject* self, PyObject* args) +/[clinic input] +_elementtree.XMLParser.close + +[clinic start generated code]/ + +static PyObject +_elementtree_XMLParser_close_impl(XMLParserObject self) +/[clinic end generated code: output=d68d375dd23bc7fb input=ca7909ca78c3abfe]/ { /* end feeding data to parser / PyObject res;

- res = expat_parse(self, "", 0, 1); if (!res) return NULL; @@ -3398,15 +3391,24 @@ xmlparser_close(XMLParserObject* self, P } } -static PyObject* -xmlparser_feed(XMLParserObject* self, PyObject* arg) +/*[clinic input] +_elementtree.XMLParser.feed +

+ +[clinic start generated code]*/ + +static PyObject +_elementtree_XMLParser_feed(XMLParserObject self, PyObject data) +/[clinic end generated code: output=e42b6a78eec7446d input=fe231b6b8de3ce1f]/ { / feed data to parser */

@@ -3414,12 +3416,12 @@ xmlparser_feed(XMLParserObject* self, Py } /* Explicitly set UTF-8 encoding. Return code ignored. */ (void)EXPAT(SetEncoding)(self->parser, "utf-8");

@@ -3432,8 +3434,17 @@ xmlparser_feed(XMLParserObject* self, Py } } -static PyObject* -xmlparser_parse_whole(XMLParserObject* self, PyObject* args) +/*[clinic input] +_elementtree.XMLParser._parse_whole +

+ +[clinic start generated code]/ + +static PyObject +_elementtree_XMLParser__parse_whole(XMLParserObject self, PyObject file) +/[clinic end generated code: output=f797197bb818dda3 input=19ecc893b6f3e752]/ { / (internal) parse the whole input, until end of stream / PyObject reader; @@ -3441,11 +3452,7 @@ xmlparser_parse_whole(XMLParserObject s PyObject* temp; PyObject* res;

-

@@ -3512,25 +3519,37 @@ xmlparser_parse_whole(XMLParserObject* s return res; } -static PyObject* -xmlparser_doctype(XMLParserObject self, PyObject args) +/[clinic input] +_elementtree.XMLParser.doctype + +[clinic start generated code]/ + +static PyObject +_elementtree_XMLParser_doctype_impl(XMLParserObject self) +/[clinic end generated code: output=d09fdb9c45f3a602 input=20d5e0febf902a2f]/ { Py_RETURN_NONE; } -static PyObject* -xmlparser_setevents(XMLParserObject self, PyObject args) +/*[clinic input] +_elementtree.XMLParser._setevents +

+ +[clinic start generated code]*/ + +static PyObject * +_elementtree_XMLParser__setevents_impl(XMLParserObject *self,

+/[clinic end generated code: output=1440092922b13ed1 input=59db9742910c6174]/ { /* activate element event reporting */ Py_ssize_t i, seqlen; TreeBuilderObject *target; -

if (!TreeBuilder_CheckExact(self->target)) { PyErr_SetString( @@ -3614,15 +3633,6 @@ xmlparser_setevents(XMLParserObject *sel Py_RETURN_NONE; } -static PyMethodDef xmlparser_methods[] = {

-}; - static PyObject* xmlparser_getattro(XMLParserObject* self, PyObject* nameobj) { @@ -3647,6 +3657,152 @@ xmlparser_getattro(XMLParserObject* self return PyObject_GenericGetAttr((PyObject*) self, nameobj); } +#include "clinic/_elementtree.c.h" + +static PyMethodDef element_methods[] = { +

+

+

+

+

+

+

+

+

+

+}; + +static PyMappingMethods element_as_mapping = {

+}; + +static PyTypeObject Element_Type = {

+}; + +static PyMethodDef treebuilder_methods[] = {

+}; + +static PyTypeObject TreeBuilder_Type = {

+}; + +static PyMethodDef xmlparser_methods[] = {

+}; + static PyTypeObject XMLParser_Type = { PyVarObject_HEAD_INIT(NULL, 0) "xml.etree.ElementTree.XMLParser", sizeof(XMLParserObject), 0, @@ -3683,7 +3839,7 @@ static PyTypeObject XMLParser_Type = { 0, /* tp_descr_get / 0, / tp_descr_set / 0, / tp_dictoffset */

copy from Modules/_elementtree.c copy to Modules/clinic/_elementtree.c.h --- a/Modules/_elementtree.c +++ b/Modules/clinic/_elementtree.c.h @@ -1,3781 +1,666 @@ -/*--------------------------------------------------------------------

-/* For best performance, chose a value so that 80-90% of all nodes

-/* Also note that pymalloc always allocates blocks in multiples of

-/* -------------------------------------------------------------------- */ +#define _ELEMENTTREE_ELEMENT_APPEND_METHODDEF [](#l2.49)

-#if 0 -static int memory = 0; -#define ALLOC(size, comment)[](#l2.54) -do { memory += size; printf("%8d - %s\n", memory, comment); } while (0) -#define RELEASE(size, comment)[](#l2.56) -do { memory -= size; printf("%8d - %s\n", memory, comment); } while (0) -#else -#define ALLOC(size, comment) -#define RELEASE(size, comment) -#endif - -/* compiler tweaks */ -#if defined(_MSC_VER) -#define LOCAL(type) static __inline type __fastcall -#else -#define LOCAL(type) static type -#endif +static PyObject * +_elementtree_Element_append_impl(ElementObject *self, PyObject subelement); -/ macros used to store 'join' flags in string object pointers. note

-/* Py_CLEAR for a PyObject* that uses a join flag. Pass the pointer by

+ +exit:

} -/* Types defined by this extension / -static PyTypeObject Element_Type; -static PyTypeObject ElementIter_Type; -static PyTypeObject TreeBuilder_Type; -static PyTypeObject XMLParser_Type; - - -/ Per-module state; PEP 3121 */ -typedef struct {

-} elementtreestate; - -static struct PyModuleDef elementtreemodule; - -/* Given a module object (assumed to be _elementtree), get its per-module

+#define _ELEMENTTREE_ELEMENT_CLEAR_METHODDEF [](#l2.133)

-static int -elementtree_clear(PyObject *m) -{

-} +static PyObject * +_elementtree_Element_clear_impl(ElementObject *self); -static int -elementtree_traverse(PyObject *m, visitproc visit, void *arg) -{

-} - -static void -elementtree_free(void *m) +static PyObject * +_elementtree_Element_clear(ElementObject *self, PyObject *Py_UNUSED(ignored)) {

-} - -/* helpers / - -LOCAL(PyObject) -deepcopy(PyObject* object, PyObject* memo) -{

-

-

-} - -LOCAL(PyObject*) -list_join(PyObject* list) -{

-

-} - -/* Is the given object an empty dictionary? -*/ -static int -is_empty_dict(PyObject *obj) -{

} - -/* -------------------------------------------------------------------- / -/ the Element type */ - -typedef struct { -

-

-

-

- -} ElementObjectExtra; - -typedef struct {

+PyDoc_STRVAR(elementtree_Element___copy____doc_, +"copy($self, /)\n" +"--\n" +"\n");

-

-

-

-

- -} ElementObject; - - -#define Element_CheckExact(op) (Py_TYPE(op) == &Element_Type) +#define _ELEMENTTREE_ELEMENT___COPY___METHODDEF [](#l2.268)

-/* -------------------------------------------------------------------- / -/ Element constructors and destructor / - -LOCAL(int) -create_extra(ElementObject self, PyObject* attrib) -{

-

-

-

+static PyObject * +_elementtree_Element___copy___impl(ElementObject *self);

-} - -LOCAL(void) -dealloc_extra(ElementObject* self) +static PyObject * +elementtree_Element___copy_(ElementObject *self, PyObject *Py_UNUSED(ignored)) {

-

-

-

-

-

-

} -/* Convenience internal function to create new Element objects with the given

+PyDoc_STRVAR(elementtree_Element___deepcopy____doc_, +"deepcopy($self, memo, /)\n" +"--\n" +"\n");

-

+#define _ELEMENTTREE_ELEMENT___DEEPCOPY___METHODDEF [](#l2.345)

-

-

+PyDoc_STRVAR(elementtree_Element___sizeof____doc_, +"sizeof($self, /)\n" +"--\n" +"\n");

+#define _ELEMENTTREE_ELEMENT___SIZEOF___METHODDEF [](#l2.362)

-

-} +static Py_ssize_t +elementtree_Element___sizeof___impl(ElementObject *self); static PyObject * -element_new(PyTypeObject *type, PyObject *args, PyObject *kwds) +elementtree_Element___sizeof(ElementObject *self, PyObject *Py_UNUSED(ignored)) {

-

+exit:

} -/* Helper function for extracting the attrib dictionary from a keywords dict.

+PyDoc_STRVAR(elementtree_Element___getstate____doc_, +"getstate($self, /)\n" +"--\n" +"\n");

-

-

-} - -static int -element_init(PyObject *self, PyObject *args, PyObject *kwds) -{

+#define _ELEMENTTREE_ELEMENT___GETSTATE___METHODDEF [](#l2.456)

-

-

+static PyObject * +_elementtree_Element___getstate___impl(ElementObject *self);

-

-

-

-

-

+static PyObject * +elementtree_Element___getstate_(ElementObject *self, PyObject *Py_UNUSED(ignored)) +{

} -LOCAL(int) -element_resize(ElementObject* self, Py_ssize_t extra) -{

-

-

-

+PyDoc_STRVAR(elementtree_Element___setstate____doc_, +"setstate($self, state, /)\n" +"--\n" +"\n");

-

-

-} +#define _ELEMENTTREE_ELEMENT___SETSTATE___METHODDEF [](#l2.575)

-LOCAL(int) -element_add_subelement(ElementObject* self, PyObject* element) -{

-

-

-

-

-} - -LOCAL(PyObject*) -element_get_attrib(ElementObject* self) -{

-

+PyDoc_STRVAR(elementtree_Element_extend__doc_, +"extend($self, elements, /)\n" +"--\n" +"\n");

-

-} +#define _ELEMENTTREE_ELEMENT_EXTEND_METHODDEF [](#l2.617)

-LOCAL(PyObject*) -element_get_text(ElementObject* self) -{

-

-

-

-} +PyDoc_STRVAR(elementtree_Element_find__doc_, +"find($self, /, path, namespaces=None)\n" +"--\n" +"\n"); -LOCAL(PyObject*) -element_get_tail(ElementObject* self) -{

-

-

-

-} - -static PyObject* -subelement(PyObject *self, PyObject *args, PyObject *kwds) -{

+#define _ELEMENTTREE_ELEMENT_FIND_METHODDEF [](#l2.668)

-

+static PyObject * +_elementtree_Element_find_impl(ElementObject *self, PyObject *path,

-

-

-} - -static int -element_gc_traverse(ElementObject *self, visitproc visit, void *arg) +static PyObject * +_elementtree_Element_find(ElementObject *self, PyObject *args, PyObject *kwargs) {

-

-} - -static int -element_gc_clear(ElementObject *self) -{

-} - -static void -element_dealloc(ElementObject* self) -{

-

-

-

+exit:

} -/* -------------------------------------------------------------------- / - -static PyObject -element_append(ElementObject* self, PyObject* args) -{

-

-

-} +PyDoc_STRVAR(elementtree_Element_findtext__doc_, +"findtext($self, /, path, default=None, namespaces=None)\n" +"--\n" +"\n"); -static PyObject* -element_clearmethod(ElementObject* self, PyObject* args) -{

-

+#define _ELEMENTTREE_ELEMENT_FINDTEXT_METHODDEF [](#l2.802)

-

-

-} +static PyObject * +_elementtree_Element_findtext_impl(ElementObject *self, PyObject *path,

-static PyObject* -element_copy(ElementObject* self, PyObject* args) +static PyObject * +_elementtree_Element_findtext(ElementObject *self, PyObject *args, PyObject *kwargs) {

-

-

-

-

-

-

+exit:

} -static PyObject* -element_deepcopy(ElementObject* self, PyObject* args) -{

-

-

+PyDoc_STRVAR(elementtree_Element_findall__doc_, +"findall($self, /, path, namespaces=None)\n" +"--\n" +"\n");

+#define _ELEMENTTREE_ELEMENT_FINDALL_METHODDEF [](#l2.905)

-

-

+static PyObject * +_elementtree_Element_findall_impl(ElementObject *self, PyObject *path,

-

-

+static PyObject * +_elementtree_Element_findall(ElementObject *self, PyObject *args, PyObject *kwargs) +{

-

-

-

-

-

-

+exit:

} -static PyObject* -element_sizeof(PyObject* myself, PyObject* args) -{

-} - -/* dict keys for getstate/setstate. / -#define PICKLED_TAG "tag" -#define PICKLED_CHILDREN "_children" -#define PICKLED_ATTRIB "attrib" -#define PICKLED_TAIL "tail" -#define PICKLED_TEXT "text" - -/ getstate returns a fabricated instance dict as in the pure-Python

+PyDoc_STRVAR(elementtree_Element_iterfind__doc_, +"iterfind($self, /, path, namespaces=None)\n" +"--\n" +"\n");

+#define _ELEMENTTREE_ELEMENT_ITERFIND_METHODDEF [](#l2.1024)

-

-} +static PyObject * +_elementtree_Element_iterfind_impl(ElementObject *self, PyObject *path,

static PyObject * -element_setstate_from_attributes(ElementObject *self,

+_elementtree_Element_iterfind(ElementObject *self, PyObject *args, PyObject *kwargs) {

-

-

-

-

-

-

-

-

-

-

-}

-/* setstate for Element instance from the Python implementation.

-

-

-

-} - -static PyObject * -element_setstate(ElementObject *self, PyObject *state) -{

+exit:

} -LOCAL(int) -checkpath(PyObject* tag) -{

-

- -#define PATHCHAR(ch) [](#l2.1187)

+PyDoc_STRVAR(elementtree_Element_get__doc_, +"get($self, /, key, default=None)\n" +"--\n" +"\n");

+#define _ELEMENTTREE_ELEMENT_GET_METHODDEF [](#l2.1221)

-} - -static PyObject* -element_extend(ElementObject* self, PyObject* args) -{

-

+static PyObject * +_elementtree_Element_get_impl(ElementObject *self, PyObject *key,

-

-

-

-

-} +static PyObject * +_elementtree_Element_get(ElementObject *self, PyObject *args, PyObject *kwargs) +{

-static PyObject* -element_find(ElementObject *self, PyObject *args, PyObject *kwds) -{

-

-

-

-

+exit:

} -static PyObject* -element_findtext(ElementObject *self, PyObject *args, PyObject *kwds) -{

-

-

+PyDoc_STRVAR(elementtree_Element_getchildren__doc_, +"getchildren($self, /)\n" +"--\n" +"\n");

+#define _ELEMENTTREE_ELEMENT_GETCHILDREN_METHODDEF [](#l2.1348)

+static PyObject * +_elementtree_Element_getchildren_impl(ElementObject *self);

-} - -static PyObject* -element_findall(ElementObject *self, PyObject *args, PyObject *kwds) +static PyObject * +_elementtree_Element_getchildren(ElementObject *self, PyObject *Py_UNUSED(ignored)) {

-

-

-

-

-

-

-} - -static PyObject* -element_iterfind(ElementObject *self, PyObject *args, PyObject *kwds) -{

-

-

} -static PyObject* -element_get(ElementObject* self, PyObject* args, PyObject* kwds) -{

-

-

-

-

-} +PyDoc_STRVAR(elementtree_Element_iter__doc_, +"iter($self, /, tag=None)\n" +"--\n" +"\n"); -static PyObject* -element_getchildren(ElementObject* self, PyObject* args) -{

-

-

-

-

-

-

-} - +#define _ELEMENTTREE_ELEMENT_ITER_METHODDEF [](#l2.1488)

static PyObject * -create_elementiter(ElementObject *self, PyObject *tag, int gettext); - +_elementtree_Element_iter_impl(ElementObject *self, PyObject *tag); static PyObject * -element_iter(ElementObject *self, PyObject *args, PyObject *kwds) +_elementtree_Element_iter(ElementObject *self, PyObject *args, PyObject *kwargs) {

-

-} -

-static PyObject* -element_itertext(ElementObject* self, PyObject* args) -{

-

+exit:

} - -static PyObject* -element_getitem(PyObject* self_, Py_ssize_t index) -{

+PyDoc_STRVAR(elementtree_Element_itertext__doc_, +"itertext($self, /)\n" +"--\n" +"\n");

+#define _ELEMENTTREE_ELEMENT_ITERTEXT_METHODDEF [](#l2.1545)

-} +static PyObject +_elementtree_Element_itertext_impl(ElementObject self); -static PyObject -element_insert(ElementObject self, PyObject* args) +static PyObject * +_elementtree_Element_itertext(ElementObject *self, PyObject *Py_UNUSED(ignored)) {

-

-

-

-

-

-

-

} -static PyObject* -element_items(ElementObject* self, PyObject* args) -{

-

-

-} - -static PyObject* -element_keys(ElementObject* self, PyObject* args) -{

-

+PyDoc_STRVAR(elementtree_Element_insert__doc_, +"insert($self, index, subelement, /)\n" +"--\n" +"\n");

-} - -static Py_ssize_t -element_length(ElementObject* self) -{

-

-} +#define _ELEMENTTREE_ELEMENT_INSERT_METHODDEF [](#l2.1629)

-static PyObject* -element_makeelement(PyObject* self, PyObject* args, PyObject* kw) -{

-

-

+static PyObject * +_elementtree_Element_insert_impl(ElementObject *self, Py_ssize_t index,

-

-

-} - -static PyObject* -element_remove(ElementObject* self, PyObject* args) +static PyObject * +_elementtree_Element_insert(ElementObject *self, PyObject *args) {

-

-

-

-

-

-

+exit:

} -static PyObject* -element_repr(ElementObject* self) -{

-} +PyDoc_STRVAR(elementtree_Element_items__doc_, +"items($self, /)\n" +"--\n" +"\n"); -static PyObject* -element_set(ElementObject* self, PyObject* args) -{

+#define _ELEMENTTREE_ELEMENT_ITEMS_METHODDEF [](#l2.1728)

+static PyObject * +_elementtree_Element_items_impl(ElementObject *self);

-

-

-

+static PyObject * +_elementtree_Element_items(ElementObject *self, PyObject *Py_UNUSED(ignored)) +{

} -static int -element_setitem(PyObject* self_, Py_ssize_t index, PyObject* item) -{

-

-

+PyDoc_STRVAR(elementtree_Element_keys__doc_, +"keys($self, /)\n" +"--\n" +"\n");

-

-

-} - -static PyObject* -element_subscr(PyObject* self_, PyObject* item) -{

-

+#define _ELEMENTTREE_ELEMENT_KEYS_METHODDEF [](#l2.1798)

-

-

+static PyObject * +_elementtree_Element_keys_impl(ElementObject *self);

-

-

+static PyObject * +_elementtree_Element_keys(ElementObject *self, PyObject *Py_UNUSED(ignored)) +{

} -static int -element_ass_subscr(PyObject* self_, PyObject* item, PyObject* value) -{

-

-

-

-

-

-

-

+PyDoc_STRVAR(elementtree_Element_makeelement__doc_, +"makeelement($self, tag, attrib, /)\n" +"--\n" +"\n");

-

-

+#define _ELEMENTTREE_ELEMENT_MAKEELEMENT_METHODDEF [](#l2.1913)

-

-

+static PyObject * +_elementtree_Element_makeelement_impl(ElementObject *self, PyObject *tag,

-

-

-

-

+static PyObject * +_elementtree_Element_makeelement(ElementObject *self, PyObject *args) +{

-

-

-

-

-

+exit:

} -static PyMethodDef element_methods[] = { -

-

-

-

-

+PyDoc_STRVAR(elementtree_Element_remove__doc_, +"remove($self, subelement, /)\n" +"--\n" +"\n");

-

-

+#define _ELEMENTTREE_ELEMENT_REMOVE_METHODDEF [](#l2.2087)

+static PyObject * +_elementtree_Element_remove_impl(ElementObject *self, PyObject *subelement);

-}; - -static PyObject* -element_getattro(ElementObject* self, PyObject* nameobj) +static PyObject * +_elementtree_Element_remove(ElementObject *self, PyObject *arg) {

-

+exit:

+} + +PyDoc_STRVAR(elementtree_Element_set__doc_, +"set($self, key, value, /)\n" +"--\n" +"\n"); + +#define _ELEMENTTREE_ELEMENT_SET_METHODDEF [](#l2.2139)

+static PyObject * +_elementtree_Element_set_impl(ElementObject *self, PyObject *key,

+static PyObject * +_elementtree_Element_set(ElementObject *self, PyObject *args) +{

+exit:

} static int -element_setattro(ElementObject* self, PyObject* nameobj, PyObject* value) -{

+_elementtree_TreeBuilder___init___impl(TreeBuilderObject *self,

+static int +elementtree_TreeBuilder___init_(PyObject *self, PyObject *args, PyObject *kwargs) +{

+ +exit:

} -static PySequenceMethods element_as_sequence = {

-}; - -static PyMappingMethods element_as_mapping = {

-}; +PyDoc_STRVAR(elementtree_TreeBuilder_data__doc_, +"data($self, data, /)\n" +"--\n" +"\n"); -static PyTypeObject Element_Type = {

-}; - -/******************************* Element iterator ****************************/ +#define _ELEMENTTREE_TREEBUILDER_DATA_METHODDEF [](#l2.2299)

-/* ElementIterObject represents the iteration state over an XML element in

-} ParentLocator; +PyDoc_STRVAR(elementtree_TreeBuilder_end__doc_, +"end($self, tag, /)\n" +"--\n" +"\n"); -typedef struct {

-} ElementIterObject; - - -static void -elementiter_dealloc(ElementIterObject *it) -{

+#define _ELEMENTTREE_TREEBUILDER_END_METHODDEF [](#l2.2340)

-

-} - -static int -elementiter_traverse(ElementIterObject *it, visitproc visit, void *arg) -{

+PyDoc_STRVAR(elementtree_TreeBuilder_close__doc_, +"close($self, /)\n" +"--\n" +"\n");

-} - -/* Helper function for elementiter_next. Add a new parent to the parent stack.

-} +#define _ELEMENTTREE_TREEBUILDER_CLOSE_METHODDEF [](#l2.2382)

static PyObject * -elementiter_next(ElementIterObject *it) -{

-

-

+_elementtree_TreeBuilder_close_impl(TreeBuilderObject *self);

-

-

-

+static PyObject * +_elementtree_TreeBuilder_close(TreeBuilderObject *self, PyObject *Py_UNUSED(ignored)) +{

} +PyDoc_STRVAR(elementtree_TreeBuilder_start__doc_, +"start($self, tag, attrs=None, /)\n" +"--\n" +"\n"); -static PyTypeObject ElementIter_Type = {

-}; - +#define _ELEMENTTREE_TREEBUILDER_START_METHODDEF [](#l2.2556)

static PyObject * -create_elementiter(ElementObject *self, PyObject *tag, int gettext) -{

-

-

-

-

-

-

-

-} - - -/* ==================================================================== / -/ the tree builder type */ - -typedef struct {

-

-

-

-

-

-

-} TreeBuilderObject; - -#define TreeBuilder_CheckExact(op) (Py_TYPE(op) == &TreeBuilder_Type) - -/* -------------------------------------------------------------------- / -/ constructor and destructor */ +_elementtree_TreeBuilder_start_impl(TreeBuilderObject *self, PyObject *tag,

static PyObject * -treebuilder_new(PyTypeObject *type, PyObject *args, PyObject *kwds) -{

-

-

-

-} - -static int -treebuilder_init(PyObject *self, PyObject *args, PyObject *kwds) +_elementtree_TreeBuilder_start(TreeBuilderObject *self, PyObject *args) {

-

-

-

-} - -static int -treebuilder_gc_traverse(TreeBuilderObject *self, visitproc visit, void *arg) -{

-}

-static int -treebuilder_gc_clear(TreeBuilderObject *self) -{

-} - -static void -treebuilder_dealloc(TreeBuilderObject *self) -{

-} - -/* -------------------------------------------------------------------- / -/ helpers for handling of arbitrary element-like objects */

-static int -treebuilder_set_element_text_or_tail(PyObject *element, PyObject *data,

-{

-} - -/* These two functions steal a reference to data */ -static int -treebuilder_set_element_text(PyObject *element, PyObject *data) -{

-} - -static int -treebuilder_set_element_tail(PyObject *element, PyObject *data) -{

+exit:

} static int -treebuilder_add_subelement(PyObject *element, PyObject *child) -{

-} - -/* -------------------------------------------------------------------- / -/ handlers / - -LOCAL(PyObject) -treebuilder_handle_start(TreeBuilderObject* self, PyObject* tag,

-{

-

-

-

-

-

-

-

-

-

-

-} - -LOCAL(PyObject*) -treebuilder_handle_data(TreeBuilderObject* self, PyObject* data) -{

-

-} - -LOCAL(PyObject*) -treebuilder_handle_end(TreeBuilderObject* self, PyObject* tag) -{

+_elementtree_XMLParser___init___impl(XMLParserObject *self, PyObject *html,

-

-

-

-

-

-

-

-} - -LOCAL(void) -treebuilder_handle_namespace(TreeBuilderObject* self, int start,

+static int +elementtree_XMLParser___init_(PyObject *self, PyObject *args, PyObject *kwargs) {

-

-

-

-} - -/* -------------------------------------------------------------------- / -/ methods (in alphabetical order) / - -static PyObject -treebuilder_data(TreeBuilderObject* self, PyObject* args) -{

-

-} - -static PyObject* -treebuilder_end(TreeBuilderObject* self, PyObject* args) -{

-} - -LOCAL(PyObject*) -treebuilder_done(TreeBuilderObject* self) -{

-

-

-

-} - -static PyObject* -treebuilder_close(TreeBuilderObject* self, PyObject* args) -{

-

-} - -static PyObject* -treebuilder_start(TreeBuilderObject* self, PyObject* args) -{

-

+exit:

} -static PyMethodDef treebuilder_methods[] = {

-}; - -static PyTypeObject TreeBuilder_Type = {

-}; - -/* ==================================================================== / -/ the expat interface / - -#include "expat.h" -#include "pyexpat.h" - -/ The PyExpat_CAPI structure is an immutable dispatch table, so it can be

- -typedef struct {

-

-

-

-

-

-

- -} XMLParserObject; - -#define XMLParser_CheckExact(op) (Py_TYPE(op) == &XMLParser_Type) - -/* helpers / - -LOCAL(PyObject) -makeuniversal(XMLParserObject* self, const char* string) -{

+PyDoc_STRVAR(elementtree_XMLParser_close__doc_, +"close($self, /)\n" +"--\n" +"\n");

-

-

-

-

-

-

-

-

-} - -/* Set the ParseError exception with the given parameters.

-{

-

-

-

+#define _ELEMENTTREE_XMLPARSER_CLOSE_METHODDEF [](#l2.3280)

-

-} - -/* -------------------------------------------------------------------- / -/ handlers / - -static void -expat_default_handler(XMLParserObject self, const XML_Char* data_in,

-{

-

-

-

-

-

-

-} - -static void -expat_start_handler(XMLParserObject* self, const XML_Char* tag_in,

-{

-

-

+static PyObject * +_elementtree_XMLParser_close_impl(XMLParserObject *self);

-

-

-

-} - -static void -expat_data_handler(XMLParserObject* self, const XML_Char* data_in,

+static PyObject * +_elementtree_XMLParser_close(XMLParserObject *self, PyObject *Py_UNUSED(ignored)) {

-

-

-

-

-

-} - -static void -expat_end_handler(XMLParserObject* self, const XML_Char* tag_in) -{

-

-

-

-} - -static void -expat_start_ns_handler(XMLParserObject* self, const XML_Char* prefix,

-{

-

-

-

-

-

} -static void -expat_end_ns_handler(XMLParserObject* self, const XML_Char* prefix_in) -{

-

-} - -static void -expat_comment_handler(XMLParserObject* self, const XML_Char* comment_in) -{

-

-

-} +PyDoc_STRVAR(elementtree_XMLParser_feed__doc_, +"feed($self, data, /)\n" +"--\n" +"\n"); -static void -expat_start_doctype_handler(XMLParserObject *self,

-{

-

-

-

+#define _ELEMENTTREE_XMLPARSER_FEED_METHODDEF [](#l2.3565)

+PyDoc_STRVAR(elementtree_XMLParser__parse_whole__doc_, +"_parse_whole($self, file, /)\n" +"--\n" +"\n");

+#define _ELEMENTTREE_XMLPARSER__PARSE_WHOLE_METHODDEF [](#l2.3590)

- -clear:

-} +PyDoc_STRVAR(elementtree_XMLParser_doctype__doc_, +"doctype($self, /)\n" +"--\n" +"\n"); -static void -expat_pi_handler(XMLParserObject* self, const XML_Char* target_in,

-{

-

-

-} - -/* -------------------------------------------------------------------- */ +#define _ELEMENTTREE_XMLPARSER_DOCTYPE_METHODDEF [](#l2.3650)

static PyObject * -xmlparser_new(PyTypeObject *type, PyObject *args, PyObject *kwds) -{

-} - -static int -xmlparser_init(PyObject *self, PyObject *args, PyObject *kwds) -{

-

-

-

-

-

-

-

+_elementtree_XMLParser_doctype_impl(XMLParserObject *self);

-

-} - -static int -xmlparser_gc_traverse(XMLParserObject *self, visitproc visit, void *arg) -{

-

-

-} - -static int -xmlparser_gc_clear(XMLParserObject *self) +static PyObject * +_elementtree_XMLParser_doctype(XMLParserObject *self, PyObject *Py_UNUSED(ignored)) {

-

-

-

-} - -static void -xmlparser_dealloc(XMLParserObject* self) -{

-} - -LOCAL(PyObject*) -expat_parse(XMLParserObject* self, const char* data, int data_len, int final) -{

-

-

-

-

-} - -static PyObject* -xmlparser_close(XMLParserObject* self, PyObject* args) -{

-

-

-

} -static PyObject* -xmlparser_feed(XMLParserObject* self, PyObject* arg) -{

+PyDoc_STRVAR(elementtree_XMLParser__setevents__doc_, +"_setevents($self, events_queue, events_to_report=None, /)\n" +"--\n" +"\n");

-} - -static PyObject* -xmlparser_parse_whole(XMLParserObject* self, PyObject* args) -{

-

-

-

-

-

+#define _ELEMENTTREE_XMLPARSER__SETEVENTS_METHODDEF [](#l2.3922)

-

-

+static PyObject * +_elementtree_XMLParser__setevents_impl(XMLParserObject *self,

-

-

-

-

-

-} - -static PyObject* -xmlparser_doctype(XMLParserObject *self, PyObject *args) +static PyObject * +_elementtree_XMLParser__setevents(XMLParserObject *self, PyObject *args) {

-} - -static PyObject* -xmlparser_setevents(XMLParserObject self, PyObject args) -{

-

-

-

-

-

-

-

-

-

-

-} - -static PyMethodDef xmlparser_methods[] = {

-}; - -static PyObject* -xmlparser_getattro(XMLParserObject* self, PyObject* nameobj) -{

-

-} -static PyTypeObject XMLParser_Type = {

-}; - -/* ==================================================================== / -/ python module interface */ - -static PyMethodDef _functions[] = {

-}; - - -static struct PyModuleDef elementtreemodule = {

-};

-PyMODINIT_FUNC -PyInit__elementtree(void) -{

-

-

-

-

-

-

-

-

-

-

-

+exit:

} +/[clinic end generated code: output=119aed84c1545187 input=a9049054013a1b77]/