Mercurial > repos > shellac > guppy_basecaller
comparison env/lib/python3.7/site-packages/lxml/includes/etreepublic.pxd @ 0:26e78fe6e8c4 draft
"planemo upload commit c699937486c35866861690329de38ec1a5d9f783"
| author | shellac |
|---|---|
| date | Sat, 02 May 2020 07:14:21 -0400 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:26e78fe6e8c4 |
|---|---|
| 1 # public Cython/C interface to lxml.etree | |
| 2 | |
| 3 from lxml.includes cimport tree | |
| 4 from lxml.includes.tree cimport const_xmlChar | |
| 5 | |
| 6 cdef extern from "lxml-version.h": | |
| 7 cdef char* LXML_VERSION_STRING | |
| 8 | |
| 9 cdef extern from "etree_defs.h": | |
| 10 # test if c_node is considered an Element (i.e. Element, Comment, etc.) | |
| 11 cdef bint _isElement(tree.xmlNode* c_node) nogil | |
| 12 | |
| 13 # return the namespace URI of the node or NULL | |
| 14 cdef const_xmlChar* _getNs(tree.xmlNode* node) nogil | |
| 15 | |
| 16 # pair of macros for tree traversal | |
| 17 cdef void BEGIN_FOR_EACH_ELEMENT_FROM(tree.xmlNode* tree_top, | |
| 18 tree.xmlNode* start_node, | |
| 19 int start_node_inclusive) nogil | |
| 20 cdef void END_FOR_EACH_ELEMENT_FROM(tree.xmlNode* start_node) nogil | |
| 21 | |
| 22 cdef extern from "etree_api.h": | |
| 23 | |
| 24 # first function to call! | |
| 25 cdef int import_lxml__etree() except -1 | |
| 26 | |
| 27 ########################################################################## | |
| 28 # public ElementTree API classes | |
| 29 | |
| 30 cdef class lxml.etree._Document [ object LxmlDocument ]: | |
| 31 cdef tree.xmlDoc* _c_doc | |
| 32 | |
| 33 cdef class lxml.etree._Element [ object LxmlElement ]: | |
| 34 cdef _Document _doc | |
| 35 cdef tree.xmlNode* _c_node | |
| 36 | |
| 37 cdef class lxml.etree.ElementBase(_Element) [ object LxmlElementBase ]: | |
| 38 pass | |
| 39 | |
| 40 cdef class lxml.etree._ElementTree [ object LxmlElementTree ]: | |
| 41 cdef _Document _doc | |
| 42 cdef _Element _context_node | |
| 43 | |
| 44 cdef class lxml.etree.ElementClassLookup [ object LxmlElementClassLookup ]: | |
| 45 cdef object (*_lookup_function)(object, _Document, tree.xmlNode*) | |
| 46 | |
| 47 cdef class lxml.etree.FallbackElementClassLookup(ElementClassLookup) \ | |
| 48 [ object LxmlFallbackElementClassLookup ]: | |
| 49 cdef ElementClassLookup fallback | |
| 50 cdef object (*_fallback_function)(object, _Document, tree.xmlNode*) | |
| 51 | |
| 52 ########################################################################## | |
| 53 # creating Element objects | |
| 54 | |
| 55 # create an Element for a C-node in the Document | |
| 56 cdef _Element elementFactory(_Document doc, tree.xmlNode* c_node) | |
| 57 | |
| 58 # create an ElementTree for an Element | |
| 59 cdef _ElementTree elementTreeFactory(_Element context_node) | |
| 60 | |
| 61 # create an ElementTree subclass for an Element | |
| 62 cdef _ElementTree newElementTree(_Element context_node, object subclass) | |
| 63 | |
| 64 # create an ElementTree from an external document | |
| 65 cdef _ElementTree adoptExternalDocument(tree.xmlDoc* c_doc, parser, bint is_owned) | |
| 66 | |
| 67 # create a new Element for an existing or new document (doc = None) | |
| 68 # builds Python object after setting text, tail, namespaces and attributes | |
| 69 cdef _Element makeElement(tag, _Document doc, parser, | |
| 70 text, tail, attrib, nsmap) | |
| 71 | |
| 72 # create a new SubElement for an existing parent | |
| 73 # builds Python object after setting text, tail, namespaces and attributes | |
| 74 cdef _Element makeSubElement(_Element parent, tag, text, tail, | |
| 75 attrib, nsmap) | |
| 76 | |
| 77 # deep copy a node to include it in the Document | |
| 78 cdef _Element deepcopyNodeToDocument(_Document doc, tree.xmlNode* c_root) | |
| 79 | |
| 80 # set the internal lookup function for Element/Comment/PI classes | |
| 81 # use setElementClassLookupFunction(NULL, None) to reset it | |
| 82 # note that the lookup function *must always* return an _Element subclass! | |
| 83 cdef void setElementClassLookupFunction( | |
| 84 object (*function)(object, _Document, tree.xmlNode*), object state) | |
| 85 | |
| 86 # lookup function that always returns the default Element class | |
| 87 # note that the first argument is expected to be None! | |
| 88 cdef object lookupDefaultElementClass(_1, _Document _2, | |
| 89 tree.xmlNode* c_node) | |
| 90 | |
| 91 # lookup function for namespace/tag specific Element classes | |
| 92 # note that the first argument is expected to be None! | |
| 93 cdef object lookupNamespaceElementClass(_1, _Document _2, | |
| 94 tree.xmlNode* c_node) | |
| 95 | |
| 96 # call the fallback lookup function of a FallbackElementClassLookup | |
| 97 cdef object callLookupFallback(FallbackElementClassLookup lookup, | |
| 98 _Document doc, tree.xmlNode* c_node) | |
| 99 | |
| 100 ########################################################################## | |
| 101 # XML attribute access | |
| 102 | |
| 103 # return an attribute value for a C attribute on a C element node | |
| 104 cdef object attributeValue(tree.xmlNode* c_element, | |
| 105 tree.xmlAttr* c_attrib_node) | |
| 106 | |
| 107 # return the value of the attribute with 'ns' and 'name' (or None) | |
| 108 cdef object attributeValueFromNsName(tree.xmlNode* c_element, | |
| 109 const_xmlChar* c_ns, const_xmlChar* c_name) | |
| 110 | |
| 111 # return the value of attribute "{ns}name", or the default value | |
| 112 cdef object getAttributeValue(_Element element, key, default) | |
| 113 | |
| 114 # return an iterator over attribute names (1), values (2) or items (3) | |
| 115 # attributes must not be removed during iteration! | |
| 116 cdef object iterattributes(_Element element, int keysvalues) | |
| 117 | |
| 118 # return the list of all attribute names (1), values (2) or items (3) | |
| 119 cdef list collectAttributes(tree.xmlNode* c_element, int keysvalues) | |
| 120 | |
| 121 # set an attribute value on an element | |
| 122 # on failure, sets an exception and returns -1 | |
| 123 cdef int setAttributeValue(_Element element, key, value) except -1 | |
| 124 | |
| 125 # delete an attribute | |
| 126 # on failure, sets an exception and returns -1 | |
| 127 cdef int delAttribute(_Element element, key) except -1 | |
| 128 | |
| 129 # delete an attribute based on name and namespace URI | |
| 130 # returns -1 if the attribute was not found (no exception) | |
| 131 cdef int delAttributeFromNsName(tree.xmlNode* c_element, | |
| 132 const_xmlChar* c_href, const_xmlChar* c_name) | |
| 133 | |
| 134 ########################################################################## | |
| 135 # XML node helper functions | |
| 136 | |
| 137 # check if the element has at least one child | |
| 138 cdef bint hasChild(tree.xmlNode* c_node) nogil | |
| 139 | |
| 140 # find child element number 'index' (supports negative indexes) | |
| 141 cdef tree.xmlNode* findChild(tree.xmlNode* c_node, | |
| 142 Py_ssize_t index) nogil | |
| 143 | |
| 144 # find child element number 'index' starting at first one | |
| 145 cdef tree.xmlNode* findChildForwards(tree.xmlNode* c_node, | |
| 146 Py_ssize_t index) nogil | |
| 147 | |
| 148 # find child element number 'index' starting at last one | |
| 149 cdef tree.xmlNode* findChildBackwards(tree.xmlNode* c_node, | |
| 150 Py_ssize_t index) nogil | |
| 151 | |
| 152 # return next/previous sibling element of the node | |
| 153 cdef tree.xmlNode* nextElement(tree.xmlNode* c_node) nogil | |
| 154 cdef tree.xmlNode* previousElement(tree.xmlNode* c_node) nogil | |
| 155 | |
| 156 ########################################################################## | |
| 157 # iterators (DEPRECATED API, don't use in new code!) | |
| 158 | |
| 159 cdef class lxml.etree._ElementTagMatcher [ object LxmlElementTagMatcher ]: | |
| 160 cdef char* _href | |
| 161 cdef char* _name | |
| 162 | |
| 163 # store "{ns}tag" (or None) filter for this matcher or element iterator | |
| 164 # ** unless _href *and* _name are set up 'by hand', this function *must* | |
| 165 # ** be called when subclassing the iterator below! | |
| 166 cdef void initTagMatch(_ElementTagMatcher matcher, tag) | |
| 167 | |
| 168 cdef class lxml.etree._ElementIterator(_ElementTagMatcher) [ | |
| 169 object LxmlElementIterator ]: | |
| 170 cdef _Element _node | |
| 171 cdef tree.xmlNode* (*_next_element)(tree.xmlNode*) | |
| 172 | |
| 173 # store the initial node of the iterator if it matches the required tag | |
| 174 # or its next matching sibling if not | |
| 175 cdef void iteratorStoreNext(_ElementIterator iterator, _Element node) | |
| 176 | |
| 177 ########################################################################## | |
| 178 # other helper functions | |
| 179 | |
| 180 # check if a C node matches a tag name and namespace | |
| 181 # (NULL allowed for each => always matches) | |
| 182 cdef int tagMatches(tree.xmlNode* c_node, const_xmlChar* c_href, const_xmlChar* c_name) | |
| 183 | |
| 184 # convert a UTF-8 char* to a Python string or unicode string | |
| 185 cdef object pyunicode(const_xmlChar* s) | |
| 186 | |
| 187 # convert the string to UTF-8 using the normal lxml.etree semantics | |
| 188 cdef bytes utf8(object s) | |
| 189 | |
| 190 # split a tag into a (URI, name) tuple, return None as URI for '{}tag' | |
| 191 cdef tuple getNsTag(object tag) | |
| 192 | |
| 193 # split a tag into a (URI, name) tuple, return b'' as URI for '{}tag' | |
| 194 cdef tuple getNsTagWithEmptyNs(object tag) | |
| 195 | |
| 196 # get the "{ns}tag" string for a C node | |
| 197 cdef object namespacedName(tree.xmlNode* c_node) | |
| 198 | |
| 199 # get the "{ns}tag" string for a href/tagname pair (c_ns may be NULL) | |
| 200 cdef object namespacedNameFromNsName(const_xmlChar* c_ns, const_xmlChar* c_tag) | |
| 201 | |
| 202 # check if the node has a text value (which may be '') | |
| 203 cdef bint hasText(tree.xmlNode* c_node) nogil | |
| 204 | |
| 205 # check if the node has a tail value (which may be '') | |
| 206 cdef bint hasTail(tree.xmlNode* c_node) nogil | |
| 207 | |
| 208 # get the text content of an element (or None) | |
| 209 cdef object textOf(tree.xmlNode* c_node) | |
| 210 | |
| 211 # get the tail content of an element (or None) | |
| 212 cdef object tailOf(tree.xmlNode* c_node) | |
| 213 | |
| 214 # set the text value of an element | |
| 215 cdef int setNodeText(tree.xmlNode* c_node, text) except -1 | |
| 216 | |
| 217 # set the tail text value of an element | |
| 218 cdef int setTailText(tree.xmlNode* c_node, text) except -1 | |
| 219 | |
| 220 # append an element to the children of a parent element | |
| 221 # deprecated: don't use, does not propagate exceptions! | |
| 222 # use appendChildToElement() instead | |
| 223 cdef void appendChild(_Element parent, _Element child) | |
| 224 | |
| 225 # added in lxml 3.3 as a safe replacement for appendChild() | |
| 226 # return -1 for exception, 0 for ok | |
| 227 cdef int appendChildToElement(_Element parent, _Element child) except -1 | |
| 228 | |
| 229 # recursively lookup a namespace in element or ancestors, or create it | |
| 230 cdef tree.xmlNs* findOrBuildNodeNsPrefix( | |
| 231 _Document doc, tree.xmlNode* c_node, const_xmlChar* href, const_xmlChar* prefix) | |
| 232 | |
| 233 # find the Document of an Element, ElementTree or Document (itself!) | |
| 234 cdef _Document documentOrRaise(object input) | |
| 235 | |
| 236 # find the root Element of an Element (itself!), ElementTree or Document | |
| 237 cdef _Element rootNodeOrRaise(object input) |
