lxml 6.0.0__cp312-cp312-musllinux_1_2_armv7l.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- lxml/ElementInclude.py +244 -0
- lxml/__init__.py +22 -0
- lxml/_elementpath.cpython-312-arm-linux-musleabihf.so +0 -0
- lxml/_elementpath.py +343 -0
- lxml/apihelpers.pxi +1801 -0
- lxml/builder.cpython-312-arm-linux-musleabihf.so +0 -0
- lxml/builder.py +243 -0
- lxml/classlookup.pxi +580 -0
- lxml/cleanup.pxi +215 -0
- lxml/cssselect.py +101 -0
- lxml/debug.pxi +36 -0
- lxml/docloader.pxi +178 -0
- lxml/doctestcompare.py +488 -0
- lxml/dtd.pxi +479 -0
- lxml/etree.cpython-312-arm-linux-musleabihf.so +0 -0
- lxml/etree.h +244 -0
- lxml/etree.pyx +3853 -0
- lxml/etree_api.h +204 -0
- lxml/extensions.pxi +830 -0
- lxml/html/ElementSoup.py +10 -0
- lxml/html/__init__.py +1927 -0
- lxml/html/_diffcommand.py +86 -0
- lxml/html/_difflib.cpython-312-arm-linux-musleabihf.so +0 -0
- lxml/html/_difflib.py +2106 -0
- lxml/html/_html5builder.py +100 -0
- lxml/html/_setmixin.py +56 -0
- lxml/html/builder.py +173 -0
- lxml/html/clean.py +21 -0
- lxml/html/defs.py +135 -0
- lxml/html/diff.cpython-312-arm-linux-musleabihf.so +0 -0
- lxml/html/diff.py +972 -0
- lxml/html/formfill.py +299 -0
- lxml/html/html5parser.py +260 -0
- lxml/html/soupparser.py +314 -0
- lxml/html/usedoctest.py +13 -0
- lxml/includes/__init__.pxd +0 -0
- lxml/includes/__init__.py +0 -0
- lxml/includes/c14n.pxd +25 -0
- lxml/includes/config.pxd +3 -0
- lxml/includes/dtdvalid.pxd +18 -0
- lxml/includes/etree_defs.h +379 -0
- lxml/includes/etreepublic.pxd +237 -0
- lxml/includes/extlibs/__init__.py +0 -0
- lxml/includes/extlibs/libcharset.h +45 -0
- lxml/includes/extlibs/localcharset.h +137 -0
- lxml/includes/extlibs/zconf.h +543 -0
- lxml/includes/extlibs/zlib.h +1938 -0
- lxml/includes/htmlparser.pxd +56 -0
- lxml/includes/libexslt/__init__.py +0 -0
- lxml/includes/libexslt/exslt.h +108 -0
- lxml/includes/libexslt/exsltconfig.h +70 -0
- lxml/includes/libexslt/exsltexports.h +63 -0
- lxml/includes/libxml/HTMLparser.h +339 -0
- lxml/includes/libxml/HTMLtree.h +148 -0
- lxml/includes/libxml/SAX.h +18 -0
- lxml/includes/libxml/SAX2.h +170 -0
- lxml/includes/libxml/__init__.py +0 -0
- lxml/includes/libxml/c14n.h +115 -0
- lxml/includes/libxml/catalog.h +183 -0
- lxml/includes/libxml/chvalid.h +230 -0
- lxml/includes/libxml/debugXML.h +79 -0
- lxml/includes/libxml/dict.h +82 -0
- lxml/includes/libxml/encoding.h +307 -0
- lxml/includes/libxml/entities.h +147 -0
- lxml/includes/libxml/globals.h +25 -0
- lxml/includes/libxml/hash.h +251 -0
- lxml/includes/libxml/list.h +137 -0
- lxml/includes/libxml/nanoftp.h +16 -0
- lxml/includes/libxml/nanohttp.h +98 -0
- lxml/includes/libxml/parser.h +1633 -0
- lxml/includes/libxml/parserInternals.h +591 -0
- lxml/includes/libxml/relaxng.h +224 -0
- lxml/includes/libxml/schemasInternals.h +959 -0
- lxml/includes/libxml/schematron.h +143 -0
- lxml/includes/libxml/threads.h +81 -0
- lxml/includes/libxml/tree.h +1326 -0
- lxml/includes/libxml/uri.h +106 -0
- lxml/includes/libxml/valid.h +485 -0
- lxml/includes/libxml/xinclude.h +141 -0
- lxml/includes/libxml/xlink.h +193 -0
- lxml/includes/libxml/xmlIO.h +419 -0
- lxml/includes/libxml/xmlautomata.h +163 -0
- lxml/includes/libxml/xmlerror.h +962 -0
- lxml/includes/libxml/xmlexports.h +96 -0
- lxml/includes/libxml/xmlmemory.h +188 -0
- lxml/includes/libxml/xmlmodule.h +61 -0
- lxml/includes/libxml/xmlreader.h +444 -0
- lxml/includes/libxml/xmlregexp.h +116 -0
- lxml/includes/libxml/xmlsave.h +111 -0
- lxml/includes/libxml/xmlschemas.h +254 -0
- lxml/includes/libxml/xmlschemastypes.h +152 -0
- lxml/includes/libxml/xmlstring.h +140 -0
- lxml/includes/libxml/xmlunicode.h +15 -0
- lxml/includes/libxml/xmlversion.h +332 -0
- lxml/includes/libxml/xmlwriter.h +489 -0
- lxml/includes/libxml/xpath.h +569 -0
- lxml/includes/libxml/xpathInternals.h +639 -0
- lxml/includes/libxml/xpointer.h +48 -0
- lxml/includes/libxslt/__init__.py +0 -0
- lxml/includes/libxslt/attributes.h +39 -0
- lxml/includes/libxslt/documents.h +93 -0
- lxml/includes/libxslt/extensions.h +262 -0
- lxml/includes/libxslt/extra.h +72 -0
- lxml/includes/libxslt/functions.h +78 -0
- lxml/includes/libxslt/imports.h +75 -0
- lxml/includes/libxslt/keys.h +53 -0
- lxml/includes/libxslt/namespaces.h +68 -0
- lxml/includes/libxslt/numbersInternals.h +73 -0
- lxml/includes/libxslt/pattern.h +84 -0
- lxml/includes/libxslt/preproc.h +43 -0
- lxml/includes/libxslt/security.h +104 -0
- lxml/includes/libxslt/templates.h +77 -0
- lxml/includes/libxslt/transform.h +207 -0
- lxml/includes/libxslt/variables.h +118 -0
- lxml/includes/libxslt/xslt.h +110 -0
- lxml/includes/libxslt/xsltInternals.h +1995 -0
- lxml/includes/libxslt/xsltconfig.h +146 -0
- lxml/includes/libxslt/xsltexports.h +64 -0
- lxml/includes/libxslt/xsltlocale.h +44 -0
- lxml/includes/libxslt/xsltutils.h +343 -0
- lxml/includes/lxml-version.h +3 -0
- lxml/includes/relaxng.pxd +64 -0
- lxml/includes/schematron.pxd +34 -0
- lxml/includes/tree.pxd +492 -0
- lxml/includes/uri.pxd +5 -0
- lxml/includes/xinclude.pxd +22 -0
- lxml/includes/xmlerror.pxd +852 -0
- lxml/includes/xmlparser.pxd +303 -0
- lxml/includes/xmlschema.pxd +35 -0
- lxml/includes/xpath.pxd +136 -0
- lxml/includes/xslt.pxd +190 -0
- lxml/isoschematron/__init__.py +348 -0
- lxml/isoschematron/resources/rng/iso-schematron.rng +709 -0
- lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl +75 -0
- lxml/isoschematron/resources/xsl/XSD2Schtrn.xsl +77 -0
- lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_abstract_expand.xsl +313 -0
- lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_dsdl_include.xsl +1160 -0
- lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_message.xsl +55 -0
- lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_skeleton_for_xslt1.xsl +1796 -0
- lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_svrl_for_xslt1.xsl +588 -0
- lxml/isoschematron/resources/xsl/iso-schematron-xslt1/readme.txt +84 -0
- lxml/iterparse.pxi +438 -0
- lxml/lxml.etree.h +244 -0
- lxml/lxml.etree_api.h +204 -0
- lxml/nsclasses.pxi +281 -0
- lxml/objectify.cpython-312-arm-linux-musleabihf.so +0 -0
- lxml/objectify.pyx +2149 -0
- lxml/objectpath.pxi +332 -0
- lxml/parser.pxi +2059 -0
- lxml/parsertarget.pxi +180 -0
- lxml/proxy.pxi +619 -0
- lxml/public-api.pxi +178 -0
- lxml/pyclasslookup.py +3 -0
- lxml/readonlytree.pxi +565 -0
- lxml/relaxng.pxi +165 -0
- lxml/sax.cpython-312-arm-linux-musleabihf.so +0 -0
- lxml/sax.py +286 -0
- lxml/saxparser.pxi +875 -0
- lxml/schematron.pxi +173 -0
- lxml/serializer.pxi +1849 -0
- lxml/usedoctest.py +13 -0
- lxml/xinclude.pxi +67 -0
- lxml/xmlerror.pxi +1654 -0
- lxml/xmlid.pxi +179 -0
- lxml/xmlschema.pxi +215 -0
- lxml/xpath.pxi +487 -0
- lxml/xslt.pxi +957 -0
- lxml/xsltext.pxi +242 -0
- lxml-6.0.0.dist-info/METADATA +163 -0
- lxml-6.0.0.dist-info/RECORD +174 -0
- lxml-6.0.0.dist-info/WHEEL +5 -0
- lxml-6.0.0.dist-info/licenses/LICENSE.txt +31 -0
- lxml-6.0.0.dist-info/licenses/LICENSES.txt +29 -0
- lxml-6.0.0.dist-info/top_level.txt +1 -0
lxml/xsltext.pxi
ADDED
@@ -0,0 +1,242 @@
|
|
1
|
+
# XSLT extension elements
|
2
|
+
|
3
|
+
cdef class XSLTExtension:
|
4
|
+
"""Base class of an XSLT extension element.
|
5
|
+
"""
|
6
|
+
def execute(self, context, self_node, input_node, output_parent):
|
7
|
+
"""execute(self, context, self_node, input_node, output_parent)
|
8
|
+
Execute this extension element.
|
9
|
+
|
10
|
+
Subclasses must override this method. They may append
|
11
|
+
elements to the `output_parent` element here, or set its text
|
12
|
+
content. To this end, the `input_node` provides read-only
|
13
|
+
access to the current node in the input document, and the
|
14
|
+
`self_node` points to the extension element in the stylesheet.
|
15
|
+
|
16
|
+
Note that the `output_parent` parameter may be `None` if there
|
17
|
+
is no parent element in the current context (e.g. no content
|
18
|
+
was added to the output tree yet).
|
19
|
+
"""
|
20
|
+
pass
|
21
|
+
|
22
|
+
def apply_templates(self, _XSLTContext context not None, node, output_parent=None,
|
23
|
+
*, elements_only=False, remove_blank_text=False):
|
24
|
+
"""apply_templates(self, context, node, output_parent=None, elements_only=False, remove_blank_text=False)
|
25
|
+
|
26
|
+
Call this method to retrieve the result of applying templates
|
27
|
+
to an element.
|
28
|
+
|
29
|
+
The return value is a list of elements or text strings that
|
30
|
+
were generated by the XSLT processor. If you pass
|
31
|
+
``elements_only=True``, strings will be discarded from the result
|
32
|
+
list. The option ``remove_blank_text=True`` will only discard
|
33
|
+
strings that consist entirely of whitespace (e.g. formatting).
|
34
|
+
These options do not apply to Elements, only to bare string results.
|
35
|
+
|
36
|
+
If you pass an Element as `output_parent` parameter, the result
|
37
|
+
will instead be appended to the element (including attributes
|
38
|
+
etc.) and the return value will be `None`. This is a safe way
|
39
|
+
to generate content into the output document directly, without
|
40
|
+
having to take care of special values like text or attributes.
|
41
|
+
Note that the string discarding options will be ignored in this
|
42
|
+
case.
|
43
|
+
"""
|
44
|
+
cdef xmlNode* c_parent
|
45
|
+
cdef xmlNode* c_node
|
46
|
+
cdef xmlNode* c_context_node
|
47
|
+
assert context._xsltCtxt is not NULL, "XSLT context not initialised"
|
48
|
+
c_context_node = _roNodeOf(node)
|
49
|
+
#assert c_context_node.doc is context._xsltContext.node.doc, \
|
50
|
+
# "switching input documents during transformation is not currently supported"
|
51
|
+
|
52
|
+
if output_parent is not None:
|
53
|
+
c_parent = _nonRoNodeOf(output_parent)
|
54
|
+
else:
|
55
|
+
c_parent = tree.xmlNewDocNode(
|
56
|
+
context._xsltCtxt.output, NULL, <unsigned char*>"fake-parent", NULL)
|
57
|
+
|
58
|
+
c_node = context._xsltCtxt.insert
|
59
|
+
context._xsltCtxt.insert = c_parent
|
60
|
+
xslt.xsltProcessOneNode(
|
61
|
+
context._xsltCtxt, c_context_node, NULL)
|
62
|
+
context._xsltCtxt.insert = c_node
|
63
|
+
|
64
|
+
if output_parent is not None:
|
65
|
+
return None
|
66
|
+
|
67
|
+
try:
|
68
|
+
return self._collectXSLTResultContent(
|
69
|
+
context, c_parent, elements_only, remove_blank_text)
|
70
|
+
finally:
|
71
|
+
# free all intermediate nodes that will not be freed by proxies
|
72
|
+
tree.xmlFreeNode(c_parent)
|
73
|
+
|
74
|
+
def process_children(self, _XSLTContext context not None, output_parent=None,
|
75
|
+
*, elements_only=False, remove_blank_text=False):
|
76
|
+
"""process_children(self, context, output_parent=None, elements_only=False, remove_blank_text=False)
|
77
|
+
|
78
|
+
Call this method to process the XSLT content of the extension
|
79
|
+
element itself.
|
80
|
+
|
81
|
+
The return value is a list of elements or text strings that
|
82
|
+
were generated by the XSLT processor. If you pass
|
83
|
+
``elements_only=True``, strings will be discarded from the result
|
84
|
+
list. The option ``remove_blank_text=True`` will only discard
|
85
|
+
strings that consist entirely of whitespace (e.g. formatting).
|
86
|
+
These options do not apply to Elements, only to bare string results.
|
87
|
+
|
88
|
+
If you pass an Element as `output_parent` parameter, the result
|
89
|
+
will instead be appended to the element (including attributes
|
90
|
+
etc.) and the return value will be `None`. This is a safe way
|
91
|
+
to generate content into the output document directly, without
|
92
|
+
having to take care of special values like text or attributes.
|
93
|
+
Note that the string discarding options will be ignored in this
|
94
|
+
case.
|
95
|
+
"""
|
96
|
+
cdef xmlNode* c_parent
|
97
|
+
cdef xslt.xsltTransformContext* c_ctxt = context._xsltCtxt
|
98
|
+
cdef xmlNode* c_old_output_parent = c_ctxt.insert
|
99
|
+
assert context._xsltCtxt is not NULL, "XSLT context not initialised"
|
100
|
+
|
101
|
+
# output_parent node is used for adding results instead of
|
102
|
+
# elements list used in apply_templates, that's easier and allows to
|
103
|
+
# use attributes added to extension element with <xsl:attribute>.
|
104
|
+
|
105
|
+
if output_parent is not None:
|
106
|
+
c_parent = _nonRoNodeOf(output_parent)
|
107
|
+
else:
|
108
|
+
c_parent = tree.xmlNewDocNode(
|
109
|
+
context._xsltCtxt.output, NULL, <unsigned char*>"fake-parent", NULL)
|
110
|
+
|
111
|
+
c_ctxt.insert = c_parent
|
112
|
+
xslt.xsltApplyOneTemplate(c_ctxt,
|
113
|
+
c_ctxt.node, c_ctxt.inst.children, NULL, NULL)
|
114
|
+
c_ctxt.insert = c_old_output_parent
|
115
|
+
|
116
|
+
if output_parent is not None:
|
117
|
+
return None
|
118
|
+
|
119
|
+
try:
|
120
|
+
return self._collectXSLTResultContent(
|
121
|
+
context, c_parent, elements_only, remove_blank_text)
|
122
|
+
finally:
|
123
|
+
# free all intermediate nodes that will not be freed by proxies
|
124
|
+
tree.xmlFreeNode(c_parent)
|
125
|
+
|
126
|
+
cdef _collectXSLTResultContent(self, _XSLTContext context, xmlNode* c_parent,
|
127
|
+
bint elements_only, bint remove_blank_text):
|
128
|
+
cdef xmlNode* c_node
|
129
|
+
cdef xmlNode* c_next
|
130
|
+
cdef _ReadOnlyProxy proxy
|
131
|
+
cdef list results = [] # or maybe _collectAttributes(c_parent, 2) ?
|
132
|
+
c_node = c_parent.children
|
133
|
+
while c_node is not NULL:
|
134
|
+
c_next = c_node.next
|
135
|
+
if c_node.type == tree.XML_TEXT_NODE:
|
136
|
+
if not elements_only:
|
137
|
+
s = funicode(c_node.content)
|
138
|
+
if not remove_blank_text or s.strip():
|
139
|
+
results.append(s)
|
140
|
+
s = None
|
141
|
+
elif c_node.type == tree.XML_ELEMENT_NODE:
|
142
|
+
proxy = _newReadOnlyProxy(
|
143
|
+
context._extension_element_proxy, c_node)
|
144
|
+
results.append(proxy)
|
145
|
+
# unlink node and make sure it will be freed later on
|
146
|
+
tree.xmlUnlinkNode(c_node)
|
147
|
+
proxy.free_after_use()
|
148
|
+
else:
|
149
|
+
raise TypeError, \
|
150
|
+
f"unsupported XSLT result type: {c_node.type}"
|
151
|
+
c_node = c_next
|
152
|
+
return results
|
153
|
+
|
154
|
+
|
155
|
+
cdef _registerXSLTExtensions(xslt.xsltTransformContext* c_ctxt,
|
156
|
+
extension_dict):
|
157
|
+
for ns_utf, name_utf in extension_dict:
|
158
|
+
xslt.xsltRegisterExtElement(
|
159
|
+
c_ctxt, _xcstr(name_utf), _xcstr(ns_utf),
|
160
|
+
<xslt.xsltTransformFunction>_callExtensionElement)
|
161
|
+
|
162
|
+
cdef void _callExtensionElement(xslt.xsltTransformContext* c_ctxt,
|
163
|
+
xmlNode* c_context_node,
|
164
|
+
xmlNode* c_inst_node,
|
165
|
+
void* dummy) noexcept with gil:
|
166
|
+
cdef _XSLTContext context
|
167
|
+
cdef XSLTExtension extension
|
168
|
+
cdef python.PyObject* dict_result
|
169
|
+
cdef xmlNode* c_node
|
170
|
+
cdef _ReadOnlyProxy context_node = None, self_node = None
|
171
|
+
cdef object output_parent # not restricted to ro-nodes
|
172
|
+
c_uri = _getNs(c_inst_node)
|
173
|
+
if c_uri is NULL:
|
174
|
+
# not allowed, and should never happen
|
175
|
+
return
|
176
|
+
if c_ctxt.xpathCtxt.userData is NULL:
|
177
|
+
# just for safety, should never happen
|
178
|
+
return
|
179
|
+
context = <_XSLTContext>c_ctxt.xpathCtxt.userData
|
180
|
+
try:
|
181
|
+
try:
|
182
|
+
dict_result = python.PyDict_GetItem(
|
183
|
+
context._extension_elements, (c_uri, c_inst_node.name))
|
184
|
+
if dict_result is NULL:
|
185
|
+
raise KeyError, f"extension element {funicode(c_inst_node.name)} not found"
|
186
|
+
extension = <object>dict_result
|
187
|
+
|
188
|
+
try:
|
189
|
+
# build the context proxy nodes
|
190
|
+
self_node = _newReadOnlyProxy(None, c_inst_node)
|
191
|
+
if _isElement(c_ctxt.insert):
|
192
|
+
output_parent = _newAppendOnlyProxy(self_node, c_ctxt.insert)
|
193
|
+
else:
|
194
|
+
# may be the document node or other stuff
|
195
|
+
output_parent = _newOpaqueAppendOnlyNodeWrapper(c_ctxt.insert)
|
196
|
+
if c_context_node.type in (tree.XML_DOCUMENT_NODE,
|
197
|
+
tree.XML_HTML_DOCUMENT_NODE):
|
198
|
+
c_node = tree.xmlDocGetRootElement(<xmlDoc*>c_context_node)
|
199
|
+
if c_node is not NULL:
|
200
|
+
context_node = _newReadOnlyProxy(self_node, c_node)
|
201
|
+
else:
|
202
|
+
context_node = None
|
203
|
+
elif c_context_node.type in (tree.XML_ATTRIBUTE_NODE,
|
204
|
+
tree.XML_TEXT_NODE,
|
205
|
+
tree.XML_CDATA_SECTION_NODE):
|
206
|
+
# this isn't easy to support using read-only
|
207
|
+
# nodes, as the smart-string factory must
|
208
|
+
# instantiate the parent proxy somehow...
|
209
|
+
raise TypeError(f"Unsupported element type: {c_context_node.type}")
|
210
|
+
else:
|
211
|
+
context_node = _newReadOnlyProxy(self_node, c_context_node)
|
212
|
+
|
213
|
+
# run the XSLT extension
|
214
|
+
context._extension_element_proxy = self_node
|
215
|
+
extension.execute(context, self_node, context_node, output_parent)
|
216
|
+
finally:
|
217
|
+
context._extension_element_proxy = None
|
218
|
+
if self_node is not None:
|
219
|
+
_freeReadOnlyProxies(self_node)
|
220
|
+
except Exception as e:
|
221
|
+
try:
|
222
|
+
e = unicode(e).encode("UTF-8")
|
223
|
+
except:
|
224
|
+
e = repr(e).encode("UTF-8")
|
225
|
+
message = python.PyBytes_FromFormat(
|
226
|
+
"Error executing extension element '%s': %s",
|
227
|
+
c_inst_node.name, _cstr(e))
|
228
|
+
xslt.xsltTransformError(c_ctxt, NULL, c_inst_node, "%s", message)
|
229
|
+
context._exc._store_raised()
|
230
|
+
except:
|
231
|
+
# just in case
|
232
|
+
message = python.PyBytes_FromFormat(
|
233
|
+
"Error executing extension element '%s'", c_inst_node.name)
|
234
|
+
xslt.xsltTransformError(c_ctxt, NULL, c_inst_node, "%s", message)
|
235
|
+
context._exc._store_raised()
|
236
|
+
except:
|
237
|
+
# no Python functions here - everything can fail...
|
238
|
+
xslt.xsltTransformError(c_ctxt, NULL, c_inst_node,
|
239
|
+
"Error during XSLT extension element evaluation")
|
240
|
+
context._exc._store_raised()
|
241
|
+
finally:
|
242
|
+
return # swallow any further exceptions
|
@@ -0,0 +1,163 @@
|
|
1
|
+
Metadata-Version: 2.4
|
2
|
+
Name: lxml
|
3
|
+
Version: 6.0.0
|
4
|
+
Summary: Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API.
|
5
|
+
Home-page: https://lxml.de/
|
6
|
+
Author: lxml dev team
|
7
|
+
Author-email: lxml@lxml.de
|
8
|
+
Maintainer: lxml dev team
|
9
|
+
Maintainer-email: lxml@lxml.de
|
10
|
+
License: BSD-3-Clause
|
11
|
+
Project-URL: Source, https://github.com/lxml/lxml
|
12
|
+
Project-URL: Bug Tracker, https://bugs.launchpad.net/lxml
|
13
|
+
Classifier: Development Status :: 5 - Production/Stable
|
14
|
+
Classifier: Intended Audience :: Developers
|
15
|
+
Classifier: Intended Audience :: Information Technology
|
16
|
+
Classifier: License :: OSI Approved :: BSD License
|
17
|
+
Classifier: Programming Language :: Cython
|
18
|
+
Classifier: Programming Language :: Python :: 3
|
19
|
+
Classifier: Programming Language :: Python :: 3.8
|
20
|
+
Classifier: Programming Language :: Python :: 3.9
|
21
|
+
Classifier: Programming Language :: Python :: 3.10
|
22
|
+
Classifier: Programming Language :: Python :: 3.11
|
23
|
+
Classifier: Programming Language :: Python :: 3.12
|
24
|
+
Classifier: Programming Language :: Python :: 3.13
|
25
|
+
Classifier: Programming Language :: C
|
26
|
+
Classifier: Operating System :: OS Independent
|
27
|
+
Classifier: Topic :: Text Processing :: Markup :: HTML
|
28
|
+
Classifier: Topic :: Text Processing :: Markup :: XML
|
29
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
30
|
+
Requires-Python: >=3.8
|
31
|
+
License-File: LICENSE.txt
|
32
|
+
License-File: LICENSES.txt
|
33
|
+
Provides-Extra: source
|
34
|
+
Provides-Extra: cssselect
|
35
|
+
Requires-Dist: cssselect>=0.7; extra == "cssselect"
|
36
|
+
Provides-Extra: html5
|
37
|
+
Requires-Dist: html5lib; extra == "html5"
|
38
|
+
Provides-Extra: htmlsoup
|
39
|
+
Requires-Dist: BeautifulSoup4; extra == "htmlsoup"
|
40
|
+
Provides-Extra: html-clean
|
41
|
+
Requires-Dist: lxml_html_clean; extra == "html-clean"
|
42
|
+
Dynamic: author
|
43
|
+
Dynamic: author-email
|
44
|
+
Dynamic: classifier
|
45
|
+
Dynamic: description
|
46
|
+
Dynamic: home-page
|
47
|
+
Dynamic: license
|
48
|
+
Dynamic: license-file
|
49
|
+
Dynamic: maintainer
|
50
|
+
Dynamic: maintainer-email
|
51
|
+
Dynamic: project-url
|
52
|
+
Dynamic: provides-extra
|
53
|
+
Dynamic: requires-python
|
54
|
+
Dynamic: summary
|
55
|
+
|
56
|
+
lxml is a Pythonic, mature binding for the libxml2 and libxslt libraries.
|
57
|
+
It provides safe and convenient access to these libraries using the
|
58
|
+
ElementTree API.
|
59
|
+
|
60
|
+
It extends the ElementTree API significantly to offer support for XPath,
|
61
|
+
RelaxNG, XML Schema, XSLT, C14N and much more.
|
62
|
+
|
63
|
+
To contact the project, go to the `project home page <https://lxml.de/>`_
|
64
|
+
or see our bug tracker at https://launchpad.net/lxml
|
65
|
+
|
66
|
+
In case you want to use the current in-development version of lxml,
|
67
|
+
you can get it from the github repository at
|
68
|
+
https://github.com/lxml/lxml . Note that this requires Cython to
|
69
|
+
build the sources, see the build instructions on the project home page.
|
70
|
+
|
71
|
+
|
72
|
+
After an official release of a new stable series, bug fixes may become available at
|
73
|
+
https://github.com/lxml/lxml/tree/lxml-6.0 .
|
74
|
+
Running ``pip install https://github.com/lxml/lxml/archive/refs/heads/lxml-6.0.tar.gz``
|
75
|
+
will install the unreleased branch state as soon as a maintenance branch has been established.
|
76
|
+
Note that this requires Cython to be installed at an appropriate version for the build.
|
77
|
+
|
78
|
+
6.0.0 (2025-06-26)
|
79
|
+
==================
|
80
|
+
|
81
|
+
Features added
|
82
|
+
--------------
|
83
|
+
|
84
|
+
* GH#463: ``lxml.html.diff`` is faster and provides structurally better diffs.
|
85
|
+
Original patch by Steven Fernandez.
|
86
|
+
|
87
|
+
* GH#405: The factories ``Element`` and ``ElementTree`` can now be used in type hints.
|
88
|
+
|
89
|
+
* GH#448: Parsing from ``memoryview`` and other buffers is supported to allow zero-copy parsing.
|
90
|
+
|
91
|
+
* GH#437: ``lxml.html.builder`` was missing several HTML5 tag names.
|
92
|
+
Patch by Nick Tarleton.
|
93
|
+
|
94
|
+
* GH#458: ``CDATA`` can now be written into the incremental ``xmlfile()`` writer.
|
95
|
+
Original patch by Lane Shaw.
|
96
|
+
|
97
|
+
* A new parser option ``decompress=False`` was added that controls the automatic
|
98
|
+
input decompression when using libxml2 2.15.0 or later. Disabling this option
|
99
|
+
by default will effectively prevent decompression bombs when handling untrusted
|
100
|
+
input. Code that depends on automatic decompression must enable this option.
|
101
|
+
Note that libxml2 2.15.0 was not released yet, so this option currently has no
|
102
|
+
effect but can already be used.
|
103
|
+
|
104
|
+
* The set of compile time / runtime supported libxml2 feature names is available as
|
105
|
+
``etree.LIBXML_COMPILED_FEATURES`` and ``etree.LIBXML_FEATURES``.
|
106
|
+
This currently includes
|
107
|
+
``catalog``, ``ftp``, ``html``, ``http``, ``iconv``, ``icu``,
|
108
|
+
``lzma``, ``regexp``, ``schematron``, ``xmlschema``, ``xpath``, ``zlib``.
|
109
|
+
|
110
|
+
Bugs fixed
|
111
|
+
----------
|
112
|
+
|
113
|
+
* GH#353: Predicates in ``.find*()`` could mishandle tag indices if a default namespace is provided.
|
114
|
+
Original patch by Luise K.
|
115
|
+
|
116
|
+
* GH#272: The ``head`` and ``body`` properties of ``lxml.html`` elements failed if no such element
|
117
|
+
was found. They now return ``None`` instead.
|
118
|
+
Original patch by FVolral.
|
119
|
+
|
120
|
+
* Tag names provided by code (API, not data) that are longer than ``INT_MAX``
|
121
|
+
could be truncated or mishandled in other ways.
|
122
|
+
|
123
|
+
* ``.text_content()`` on ``lxml.html`` elements accidentally returned a "smart string"
|
124
|
+
without additional information. It now returns a plain string.
|
125
|
+
|
126
|
+
* LP#2109931: When building lxml with coverage reporting, it now disables the ``sys.monitoring``
|
127
|
+
support due to the lack of support in https://github.com/nedbat/coveragepy/issues/1790
|
128
|
+
|
129
|
+
Other changes
|
130
|
+
-------------
|
131
|
+
|
132
|
+
* Support for Python < 3.8 was removed.
|
133
|
+
|
134
|
+
* Parsing directly from zlib (or lzma) compressed data is now considered an optional
|
135
|
+
feature in lxml. It may get removed from libxml2 at some point for security reasons
|
136
|
+
(compression bombs) and is therefore no longer guaranteed to be available in lxml.
|
137
|
+
|
138
|
+
As of this release, zlib support is still normally available in the binary wheels
|
139
|
+
but may get disabled or removed in later (x.y.0) releases. To test the availability,
|
140
|
+
use ``"zlib" in etree.LIBXML_FEATURES``.
|
141
|
+
|
142
|
+
* The ``Schematron`` class is deprecated and will become non-functional in a future lxml version.
|
143
|
+
The feature will soon be removed from libxml2 and stop being available.
|
144
|
+
|
145
|
+
* GH#438: Wheels include the ``arm7l`` target.
|
146
|
+
|
147
|
+
* GH#465: Windows wheels include the ``arm64`` target.
|
148
|
+
Patch by Finn Womack.
|
149
|
+
|
150
|
+
* Binary wheels use the library versions libxml2 2.14.4 and libxslt 1.1.43.
|
151
|
+
Note that this disables direct HTTP and FTP support for parsing from URLs.
|
152
|
+
Use Python URL request tools instead (which usually also support HTTPS).
|
153
|
+
To test the availability, use ``"http" in etree.LIBXML_FEATURES``.
|
154
|
+
|
155
|
+
* Windows binary wheels use the library versions libxml2 2.11.9, libxslt 1.1.39 and libiconv 1.17.
|
156
|
+
They are now based on VS-2022.
|
157
|
+
|
158
|
+
* Built using Cython 3.1.2.
|
159
|
+
|
160
|
+
* The debug methods ``MemDebug.dump()`` and ``MemDebug.show()`` were removed completely.
|
161
|
+
libxml2 2.13.0 discarded this feature.
|
162
|
+
|
163
|
+
|
@@ -0,0 +1,174 @@
|
|
1
|
+
lxml/ElementInclude.py,sha256=PSLeZFvCa76WHJulPLxcZXJtCI2-4dK2CtqPRiYOAQg,8560
|
2
|
+
lxml/__init__.py,sha256=E9pqXsEQS2c4XCODrKN8ZqYvH6x5Y5PK7B9vSkgW4xk,574
|
3
|
+
lxml/_elementpath.cpython-312-arm-linux-musleabihf.so,sha256=AONAyfvsp_cS18-qmgM-MqdGF4w-mHH70F0GtoxZbFQ,141140
|
4
|
+
lxml/_elementpath.py,sha256=b80hM3ndAkTtRX6v54za3LkkAqCcd0700BbMPZHnTBU,10959
|
5
|
+
lxml/apihelpers.pxi,sha256=9S6bzp-VKCUPZv0f6-el5PsbPFN4FJqSnMCIYilS0eU,63881
|
6
|
+
lxml/builder.cpython-312-arm-linux-musleabihf.so,sha256=RTlm9Y8vUEnWVtf1sOuwxV1iiJHCaRA3giqlVdUzykU,84688
|
7
|
+
lxml/builder.py,sha256=KI1HxHTd4wJqqVfmTRtSbXBQdl2T-P36ih4hT-J3MNw,8485
|
8
|
+
lxml/classlookup.pxi,sha256=Tax8Vhbm5C6UCjgmRFsYjW0pFHxIuTthH1MOgASDLgc,22435
|
9
|
+
lxml/cleanup.pxi,sha256=ZNEpbv7qx_ICPzsxhCaMUHCOfiznOoZ_u3jlYXHAuh4,8454
|
10
|
+
lxml/cssselect.py,sha256=_wZdX-B9p5MeIYABmENIYRWEkwXwX-7jO8Dkf-1rUZU,3306
|
11
|
+
lxml/debug.pxi,sha256=KTcpR8-slUYvmIPbE35GoHDNTb-gjTEvD7bw6LltM4c,1125
|
12
|
+
lxml/docloader.pxi,sha256=bYSZAxxbBEfVzfLXTUWFRfOyUTfV23L7i9hR2dgtSNY,5772
|
13
|
+
lxml/doctestcompare.py,sha256=40EDnkwpcvW86qNa86990OXF42xdHaosSZoiBsEjkzU,17731
|
14
|
+
lxml/dtd.pxi,sha256=IAKkmA4ZoC68sqAWcTqoS8jEGYcPQrVMCZgn4iLBYko,15281
|
15
|
+
lxml/etree.cpython-312-arm-linux-musleabihf.so,sha256=Yra3JVM66BRFzvWfN4Lfo-5NxXT_MOTCrbnG3Xo8GYg,3851656
|
16
|
+
lxml/etree.h,sha256=0h07COSE5RC8y3MbrK3cc4ElLplQjGFZTxRbGMrTsMA,9792
|
17
|
+
lxml/etree.pyx,sha256=2qCb8ZNjsdoB0fUELYwAM4ldLQZWS5_gt-OxKEUM-vs,138014
|
18
|
+
lxml/etree_api.h,sha256=1c5kUDv9UYF9-y7OVw_Bf22hdlfYojVQ_onrrPAPl4A,17372
|
19
|
+
lxml/extensions.pxi,sha256=xKLad35EQgpsDhs07tw31aKJBBMWIK9rMc0JTXETAUA,32022
|
20
|
+
lxml/iterparse.pxi,sha256=JXvYhSOCaRjT_hYbRGMlJt2rlqx0TiRpN4FE1jQc63w,16521
|
21
|
+
lxml/lxml.etree.h,sha256=0h07COSE5RC8y3MbrK3cc4ElLplQjGFZTxRbGMrTsMA,9792
|
22
|
+
lxml/lxml.etree_api.h,sha256=ZrX9se6gmhPcafaEjNJwqSrgFejIyDhXnKHchEZ9IKM,17377
|
23
|
+
lxml/nsclasses.pxi,sha256=5pzNBhBtlqObPdThL9QIGRs1Dxj1qnr0PyXuTCURqTg,9129
|
24
|
+
lxml/objectify.cpython-312-arm-linux-musleabihf.so,sha256=2-wU8wLxmkuqKprIwcAvrq-P1PlVWjL6jgFYyPTavYo,2151204
|
25
|
+
lxml/objectify.pyx,sha256=I4bQQXmQssBtk5bTrid-eVURBLKRTM5iQZiviugIrts,75823
|
26
|
+
lxml/objectpath.pxi,sha256=s5TNG2-EbaWWKLFAiX303B95zK_Ui8ausB__3QvFFGw,11450
|
27
|
+
lxml/parser.pxi,sha256=C1wKmFQFTh7YM6q1GgxD9cgLq3dMpQ7Y07dtj0zxxHI,84788
|
28
|
+
lxml/parsertarget.pxi,sha256=v1PidxRaG5giwXcTDkpBI7PDFmsZuOcK0y9LdkQaY8M,6326
|
29
|
+
lxml/proxy.pxi,sha256=TPfavn4-ufhVlr-GKciz2qXCTUFtvGdxO-F-h30yIws,23697
|
30
|
+
lxml/public-api.pxi,sha256=XoP6_cJOEoQIItvE1RiYCKYD1ry4AobaOr4XLo0KSE4,6666
|
31
|
+
lxml/pyclasslookup.py,sha256=gLD1HM2HtITYYiGzjEOewSwbB7XkVx_NZv_quCt79Oc,92
|
32
|
+
lxml/readonlytree.pxi,sha256=ddRYczhHieJ4XUvWvTPW9N9oQ8vuKtv7lC1mtE1qvH8,18976
|
33
|
+
lxml/relaxng.pxi,sha256=3OQ-fZMzP-KF5vM6HTozT_9ee3J0DJnpj9RcHC8LoMw,6339
|
34
|
+
lxml/sax.cpython-312-arm-linux-musleabihf.so,sha256=IxqQyWGb9HQxzOcDswEoXlD4wm4I8Gmx3_Jeqpe6O6I,125680
|
35
|
+
lxml/sax.py,sha256=nby0w7jWwdq6QHYkRMkw096rxDZsscXy-zx8d67tbzE,9705
|
36
|
+
lxml/saxparser.pxi,sha256=TmkdM5h9xII9iKRaBk_1NGk2KTfeesl5Ha8bpFQGqLc,33529
|
37
|
+
lxml/schematron.pxi,sha256=F2OHKZUl57-byBk_wWtPTnHZ1fwlj0FtwG3VuGtG-UY,6064
|
38
|
+
lxml/serializer.pxi,sha256=iIXfechFHfvFs2sTk7wMIy3sDJxmaMPbNO33mkLLBUE,68063
|
39
|
+
lxml/usedoctest.py,sha256=qRgZKQVcAZcl-zN0AIXVJnOsETUXz2nPXkxuzs1lGgk,230
|
40
|
+
lxml/xinclude.pxi,sha256=7eBrI_OK47mmrHQ0ixbixRI8pKqQ1nwkMV-OmKUVlD4,2456
|
41
|
+
lxml/xmlerror.pxi,sha256=K7YIB21sLWdf_2GxyUymRZ5vDr3O4OJ5vGjrklBGa6o,49854
|
42
|
+
lxml/xmlid.pxi,sha256=5zf9oR6bsCtavGiOmilNyHqYwgG_bnrIabSd2SURtm0,6073
|
43
|
+
lxml/xmlschema.pxi,sha256=mumNoHni5S3BQPtcmOHRd61KRaVWu4eOie2wQeB0e6E,8490
|
44
|
+
lxml/xpath.pxi,sha256=aqW24V817dUxps4Gnc8h7Tm3QVlITKvxU5_9WgJUIFg,19132
|
45
|
+
lxml/xslt.pxi,sha256=wxdbuvNFVA8eP57tHmBYWER__ceFhf6HGdsbBHbx_0A,36315
|
46
|
+
lxml/xsltext.pxi,sha256=TImDiAPlAezC07P7RY1N9YChA7AuKFH-G53hXdel9yc,11088
|
47
|
+
lxml/html/ElementSoup.py,sha256=s_dLobLMuKn2DhexR-iDXdZrMFg1RjLy1feHsIeZMpw,320
|
48
|
+
lxml/html/__init__.py,sha256=CC5WdsvSptZhr9MZya1qsL6JKVbviYdrHOhXrGhmORg,64425
|
49
|
+
lxml/html/_diffcommand.py,sha256=kz_7EP9PmYWuczlZcGiw74_rG0eTKvQ2lrO0rkiwlYE,2081
|
50
|
+
lxml/html/_difflib.cpython-312-arm-linux-musleabihf.so,sha256=ohf4CtjXnwDR5bRkOJ2vxhZEhvF1zFBfroiK_gvomDs,402020
|
51
|
+
lxml/html/_difflib.py,sha256=GgH_jVrZQC8tI8WV_lFZQsXFJ3mOTAPup1zjBJNvkPo,84954
|
52
|
+
lxml/html/_html5builder.py,sha256=NLaT-Ev-aBgJpeQl-6ZbJChLZK5GV-znDkHOJD5VQC4,3230
|
53
|
+
lxml/html/_setmixin.py,sha256=8IFIOLmVz0G-XzsD2tCEkSFWO-dgPBHgvHufC8ni67s,1188
|
54
|
+
lxml/html/builder.py,sha256=Uz3r5uiuCdoN0UPa7ngoLMwAadVIhslzGvlRPGigY_M,6187
|
55
|
+
lxml/html/clean.py,sha256=FghSJy4jt2RaBy6dgusowkU18hxpZ4XLE5ceCK9qxyA,503
|
56
|
+
lxml/html/defs.py,sha256=l_6nh4DHvrsVyWVqWCUUx14QiahRyZv4Melqy_thf6Q,4250
|
57
|
+
lxml/html/diff.cpython-312-arm-linux-musleabihf.so,sha256=00KoOdhuRJ1Ho42ajfwlazvWWaj4h_JUm_5AJDsCYwc,250104
|
58
|
+
lxml/html/diff.py,sha256=Za0By-yeYlQEjUu7m7xKB288kKiy8VBS5gT0RPOaFY0,32989
|
59
|
+
lxml/html/formfill.py,sha256=umgk0BbkAI1W6q9musFbL-cDnI_aap2NsLBJqk0UmVI,9681
|
60
|
+
lxml/html/html5parser.py,sha256=dnyC4cqHxywjZSzk0mu2L7THTZjxhg4yF4pncjusa_w,8634
|
61
|
+
lxml/html/soupparser.py,sha256=xo8VvNeOEb-SChuXLKCRECh8J7HBiJLE9sAbEskoUUQ,10197
|
62
|
+
lxml/html/usedoctest.py,sha256=tPlmVz4KK1GRKV5DJLrdVECeqsT9PlDzSqqTodVi5s0,249
|
63
|
+
lxml/includes/__init__.pxd,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
64
|
+
lxml/includes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
65
|
+
lxml/includes/c14n.pxd,sha256=DBQcOJ0c_YS245ohMb8fmuEC1kFyv1LrNY_8Mf-syZg,1110
|
66
|
+
lxml/includes/config.pxd,sha256=H6Mrl8It21hzRI2hzMId9W48QqkYYkoLT4dniLNmdTw,96
|
67
|
+
lxml/includes/dtdvalid.pxd,sha256=Nv0OykjYehv2lO-Zj--q6jS3TAC_dvQVPSgPMuse1NM,689
|
68
|
+
lxml/includes/etree_defs.h,sha256=dEuf7oHs7KS08Jo5dIr9tTGG8ILWz0OeRqzmql4XFv4,14224
|
69
|
+
lxml/includes/etreepublic.pxd,sha256=Bn4d3JkWPqXputXqI-eJ0xmPrwNFPTfDCa7axgjB7FM,10184
|
70
|
+
lxml/includes/htmlparser.pxd,sha256=9uASkP5dU7OE2lCOLT-z2e01qSbFlp4ehgwdostF_qk,2802
|
71
|
+
lxml/includes/lxml-version.h,sha256=wEVR0E9vWcIcLqeKSynNl-L8FcZ0xlZLBysRvInuHmo,71
|
72
|
+
lxml/includes/relaxng.pxd,sha256=HzHlQ6mCcf_tj_JZ9NAVJTVAv8ScCkE8Ifq15y3bS0c,2615
|
73
|
+
lxml/includes/schematron.pxd,sha256=Hob7xh-K-MKqp7WiG8thMagf5EkQzmgfi4ds0EF91JA,1604
|
74
|
+
lxml/includes/tree.pxd,sha256=XApzMRy_LSqCtQ-OTS-vNSW7CT_OWstybfIT2H84LsA,20179
|
75
|
+
lxml/includes/uri.pxd,sha256=3vOXw6AbSPxAM9uo71T1qnfx-wd9ezXLDQtWsb2zX0I,145
|
76
|
+
lxml/includes/xinclude.pxd,sha256=CuO_XZNB6E2JK1qXXWn11APrjFQV5kA6SMyb77WZn0A,804
|
77
|
+
lxml/includes/xmlerror.pxd,sha256=pNP5juL4hRHdVdXUWzMspbdtgPqJdHLDu4jns3ItvrI,58016
|
78
|
+
lxml/includes/xmlparser.pxd,sha256=LpFrvQj89EmV8WBXY1Eoxz8Vz6TiioXIFclFXKDXQE4,12494
|
79
|
+
lxml/includes/xmlschema.pxd,sha256=OLZPd2WDJyopiXJJyo-dAyyYHaeSYFiMAI4tqIiv-Ik,1702
|
80
|
+
lxml/includes/xpath.pxd,sha256=e8-ZYUbRG7N1mHETAlknJ_QqAteOosrYLRgpH-OsTkg,5603
|
81
|
+
lxml/includes/xslt.pxd,sha256=4yl3pOu7pAvsx5Tc-W4IWCoB8wgtSSR62HI1jqu6jko,8241
|
82
|
+
lxml/includes/extlibs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
83
|
+
lxml/includes/extlibs/libcharset.h,sha256=GA0FumrbNI4VDGlzq3lf5CLaCwXgn4unw2l0btGQFwI,1510
|
84
|
+
lxml/includes/extlibs/localcharset.h,sha256=Z_AagaQeq0aDE7NPsVOqEf4nO4KcUp46ggo4d0ONIOQ,6338
|
85
|
+
lxml/includes/extlibs/zconf.h,sha256=ROVD_0UUx6mgHWSAGcLJqB0RBcv6PHfx-vbNhur6ir0,16464
|
86
|
+
lxml/includes/extlibs/zlib.h,sha256=ilV5r3LqT0J_8ApBUPDMs_xcHkN59ybhARM7Grn8YAw,96829
|
87
|
+
lxml/includes/libexslt/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
88
|
+
lxml/includes/libexslt/exslt.h,sha256=eSW5tMJAewSUANLqk7AGEiU8b2BbCNRyauHnez7nKSU,3114
|
89
|
+
lxml/includes/libexslt/exsltconfig.h,sha256=QHxzEbRlv_h0USBvpr0Zrl0Muzlc71VCrvgR6lqnLEY,1172
|
90
|
+
lxml/includes/libexslt/exsltexports.h,sha256=1Jm9KTXm2FUUJIZ6V6-Uw55yG0BMULX3_goyxDd2LL8,1077
|
91
|
+
lxml/includes/libxml/HTMLparser.h,sha256=sU4xGqj-vBtEvzlxA3hBPWJboifvkc4F1hynKXmsl3k,9569
|
92
|
+
lxml/includes/libxml/HTMLtree.h,sha256=Q7UBKFbQ8fx4d_dMnmR6ay8JmfOhopFkDp2B63YkLDU,3517
|
93
|
+
lxml/includes/libxml/SAX.h,sha256=SFnG27EFrYGUB9HDL_xSIGBwEns5pl07rApXWThFZFM,386
|
94
|
+
lxml/includes/libxml/SAX2.h,sha256=RfFP5o3le-Rg8bnA2GW7L7L9_pfXCs3TieODcv1DTWY,4240
|
95
|
+
lxml/includes/libxml/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
96
|
+
lxml/includes/libxml/c14n.h,sha256=BSBXw6nIZutC8mWvbRrLLmoWjw3wRt-nM93vjXGMCm8,2742
|
97
|
+
lxml/includes/libxml/catalog.h,sha256=H9ssTCaBjtDqc-AZqCk1R7h8F2iD9szqLjJyHpaczXg,4633
|
98
|
+
lxml/includes/libxml/chvalid.h,sha256=TZcceNp6Cw0QlYwIqK9GxyYqL5UiAjpQyjt_yrZGTQE,5087
|
99
|
+
lxml/includes/libxml/debugXML.h,sha256=XXRNI39gJW7bGRC4SzE4ad-SJ906BsUGz3AwOtkKuS4,1667
|
100
|
+
lxml/includes/libxml/dict.h,sha256=SweaPGMtTTf4je6dNTIoEzcfEvpsAT9_PhR7FC0K-rQ,1770
|
101
|
+
lxml/includes/libxml/encoding.h,sha256=haL7ratww2wkIERGmtwUqU2BbTVe52FZFU7MmrOpsPk,9623
|
102
|
+
lxml/includes/libxml/entities.h,sha256=LEOCA826-0f8dhRJzC_2hvUVsSH7lKQjrea9hSTdBbo,4419
|
103
|
+
lxml/includes/libxml/globals.h,sha256=NH8zyRI5cXJJGp5k2aLxOm-reJEGOFX6LYP82GBXRlY,583
|
104
|
+
lxml/includes/libxml/hash.h,sha256=KIIpAYKBfGUU3ydWhGehUyfuauZz_Ps0gyambzQo_rc,7017
|
105
|
+
lxml/includes/libxml/list.h,sha256=oh7iJNQajRA_cHsNk9CcFPYkaW2smf4J_MpedPPjC4k,3128
|
106
|
+
lxml/includes/libxml/nanoftp.h,sha256=22PBtWhJueYLFvwukt4oFooRct_xJA83hbluHRBNXUM,302
|
107
|
+
lxml/includes/libxml/nanohttp.h,sha256=bLbzYjAyAKmP3ComMOPH6XaUImu6bNAESF1HrVtRve0,2124
|
108
|
+
lxml/includes/libxml/parser.h,sha256=Uq7-ce55UUAsvo4n6CiBlNQpmowewvWhOsQtgGM1UQ8,48498
|
109
|
+
lxml/includes/libxml/parserInternals.h,sha256=8_Wr6UgRzm8BRn1RPLxyBkw6BagAdDvVqMA_e181_EI,14539
|
110
|
+
lxml/includes/libxml/relaxng.h,sha256=VXZ74r5Yja06KqypdBHc8neDwPxQ2aMrsWHSdRt5oi4,5991
|
111
|
+
lxml/includes/libxml/schemasInternals.h,sha256=V8M4In3zf24EX55Yt4dcfxwp7NpHGYViKnLKwtyrPJ4,26233
|
112
|
+
lxml/includes/libxml/schematron.h,sha256=8EhPDhvtlMxl9e0C5rSbEruOvzJS5BC_OOFbq9RXZnY,4255
|
113
|
+
lxml/includes/libxml/threads.h,sha256=mT3CgK4lXK7-NDnUOFXqYuCK6fyY70S3BsHF-TnT45k,1619
|
114
|
+
lxml/includes/libxml/tree.h,sha256=zTRLt6h5x6ApyeXgs90CKQZSAl2hKm7b5NxtPKUQFAE,36106
|
115
|
+
lxml/includes/libxml/uri.h,sha256=J9teJHme5z883c4twF5oImEYY-E3xSvhdSGpyRVtvIg,2855
|
116
|
+
lxml/includes/libxml/valid.h,sha256=2opFsEsFyRRvQKdIFGfqU7eT3qT2PwSfSyOkAxm6PSc,13271
|
117
|
+
lxml/includes/libxml/xinclude.h,sha256=K3I5jhw2zAMj26LuRNZc15Bwv2JE2hWxwVn4TCqv2b4,3258
|
118
|
+
lxml/includes/libxml/xlink.h,sha256=TVLOkISrcKDelo9n_XIUyPiStDYa8NxuF2dz70aBFCI,5062
|
119
|
+
lxml/includes/libxml/xmlIO.h,sha256=FvbuMYTy1-S5PScabE03wz0oWKf626pmXvOPZNuLm-w,11948
|
120
|
+
lxml/includes/libxml/xmlautomata.h,sha256=7Sc3YgPz1ZIBKCHPSxs5oAwJEZWQ1RT2kyUw85pUtmU,4004
|
121
|
+
lxml/includes/libxml/xmlerror.h,sha256=vJE2WmGiCT7oYMSkSYqCMjk8geBQBIu3XncLgIR_Yyg,37535
|
122
|
+
lxml/includes/libxml/xmlexports.h,sha256=IyV3AMeQVbOl0wkjlnNX4B8WUZ-5GNKQmxZc6-maWUU,2025
|
123
|
+
lxml/includes/libxml/xmlmemory.h,sha256=m7wGvVMxNzZiuOAo3vkjxaVWstc8aQLzb6obbjPsebE,4658
|
124
|
+
lxml/includes/libxml/xmlmodule.h,sha256=ERUHUmDdZRmh6NjLYWUpse51rLWR8qNjPHOtdgmlLF0,1198
|
125
|
+
lxml/includes/libxml/xmlreader.h,sha256=BAHinlSOTXX3DEax9BniaIIPAXJyLGfzym9R-27LCcU,12387
|
126
|
+
lxml/includes/libxml/xmlregexp.h,sha256=_q6C1XRy8DS3kSmLbEKpvkKQciTgjTJgGc_zUQ6m22M,2632
|
127
|
+
lxml/includes/libxml/xmlsave.h,sha256=zcEQr9sO5CsFrnoOLshhdsqMEr8k4AeFhbkYyNfO9Fs,2934
|
128
|
+
lxml/includes/libxml/xmlschemas.h,sha256=5AfLnYUcfmxHRzg0dVpdHig--4ui1-XDwDgpKGDKCiU,7067
|
129
|
+
lxml/includes/libxml/xmlschemastypes.h,sha256=MYwlGmoKAo3lHRaaKgnCXiLmPT9KRjdxyCJ7TEyZ6jM,4583
|
130
|
+
lxml/includes/libxml/xmlstring.h,sha256=d5PpqxP1I1sfmCUHvVJtjoC9h7hLHcAAQ5ok_Rtf50I,5271
|
131
|
+
lxml/includes/libxml/xmlunicode.h,sha256=8sq3wEW2AiyTCuc3ZceOEkce7lfrI7VnkRfwEQgc6pU,278
|
132
|
+
lxml/includes/libxml/xmlversion.h,sha256=qq0Y7Y5p8Q2LGzTNCbbGuwtgvERwp7-ILbUTli_KBZw,5112
|
133
|
+
lxml/includes/libxml/xmlwriter.h,sha256=BEUwYNKx3xymDE9vepksEK7yVq9SXYm1d2pQnzlPy90,20688
|
134
|
+
lxml/includes/libxml/xpath.h,sha256=CQv6X_pRhuXoCVpqoDXYB7FfusLK7AuPxCNigwhNYAA,16156
|
135
|
+
lxml/includes/libxml/xpathInternals.h,sha256=mc9B5tdpfssyz_NPUzww6dKuWCtBybBiBRJkTe4AE4U,18504
|
136
|
+
lxml/includes/libxml/xpointer.h,sha256=DAxMsfPp2SSZgXFrPbxBA84RwTMRf35Qg_LBbUzPQhA,1026
|
137
|
+
lxml/includes/libxslt/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
138
|
+
lxml/includes/libxslt/attributes.h,sha256=qKwzfGf7r89esLC65s96iYJWRA-s-Ezss2_V6Mmo1hk,957
|
139
|
+
lxml/includes/libxslt/documents.h,sha256=kBihgH5pqRvFalhm_fOFHtJTFhTpBcm681yT5dxgwfw,2704
|
140
|
+
lxml/includes/libxslt/extensions.h,sha256=W5UMyJqUP_1zt6sXZ0mgc0gAIwDJrZ8gjByhyrWqvd8,6899
|
141
|
+
lxml/includes/libxslt/extra.h,sha256=6X3Wu3NdPtrlqz-Koo7dB-rccnnszi6j3zg599gTByg,1640
|
142
|
+
lxml/includes/libxslt/functions.h,sha256=fc4CZj-9KeBHzO9-WWU_bNqmaEZAz3n7NNwClIBXk14,1972
|
143
|
+
lxml/includes/libxslt/imports.h,sha256=18kIjoGqdFXR63Ce3ZtzxsTiYV3XGKpchYakMUPDuUI,1840
|
144
|
+
lxml/includes/libxslt/keys.h,sha256=16v25VEluS7jYhgg6gYFwVxgGMn-1ctnlhhWWT4RcBY,1155
|
145
|
+
lxml/includes/libxslt/namespaces.h,sha256=VofSn2Kkn-a5JyRKCmY3jPp7amQy3n09vzy0KUQt4q0,1666
|
146
|
+
lxml/includes/libxslt/numbersInternals.h,sha256=Eg5gYZ5p3h0_e5wyI61S-0E6_ArVJzv0yr63j6BU2fc,2019
|
147
|
+
lxml/includes/libxslt/pattern.h,sha256=tJ-BPfs9UYgiZMMoQZbhij3g7xVppYq7TrrOu25eR7Q,2110
|
148
|
+
lxml/includes/libxslt/preproc.h,sha256=D_LjEdHhsdyBnEAvflnwFgoR4hGUb72kgEhXkkmPRsw,896
|
149
|
+
lxml/includes/libxslt/security.h,sha256=fUD1cy_WxFCTvTNAF0WOQIU4p5CNWn1LHFyZJd-Fx5U,2652
|
150
|
+
lxml/includes/libxslt/templates.h,sha256=bnt6Jqui6KU5pNUdMNPbQZkZ5d-VTWqC0TMGkOlVoIo,2268
|
151
|
+
lxml/includes/libxslt/transform.h,sha256=ICT7meUV0OTAx27WaKVrKj-aUmR9LSpTNaOAJd2UStg,6311
|
152
|
+
lxml/includes/libxslt/variables.h,sha256=cQAgPe4QCcK2uKbWg7Iz-9peM9xWGm7m3M6jQm0sjIA,3143
|
153
|
+
lxml/includes/libxslt/xslt.h,sha256=wmFx2Q31Pd8Iq2phAQpY9J3QQatb8lWg3gABtqKFgEw,1964
|
154
|
+
lxml/includes/libxslt/xsltInternals.h,sha256=2EbEKYmnYZq0HjGnUMAlpqnqZJurRXzjlgk5Js1WYaY,57949
|
155
|
+
lxml/includes/libxslt/xsltconfig.h,sha256=cV5scdRK6xmOHeOg3OCw6hBfcQ_nrtNs_tKefX67304,2910
|
156
|
+
lxml/includes/libxslt/xsltexports.h,sha256=1-luH-0bCIgBAlKAXhV-dqHBfwOAQNDamiYbxIlTf0k,1124
|
157
|
+
lxml/includes/libxslt/xsltlocale.h,sha256=ppxGEmJfZIJgwRQzCM0_77p9WNekEWq1NrdYZrQl4IE,942
|
158
|
+
lxml/includes/libxslt/xsltutils.h,sha256=1eguYgR9-jeNOVlBUktHboaq-VLX6JXraO80TfbARKM,9085
|
159
|
+
lxml/isoschematron/__init__.py,sha256=uauerYeKTlWFCJSqieIHhF5l6rYV2myeEJ0Imd1LzRc,13274
|
160
|
+
lxml/isoschematron/resources/rng/iso-schematron.rng,sha256=VsWxPyi3iViJDDbjJJw0wWkEHkLrz9zoCA8zJLor9N4,18337
|
161
|
+
lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl,sha256=ObebsB8Wt-d3uIA_U5NU85TpnQ3PxPX38TdOAqosMac,3172
|
162
|
+
lxml/isoschematron/resources/xsl/XSD2Schtrn.xsl,sha256=QweRrIIM-zFcgg98GXA2CaWfIbgVE0XKEeYSfvv67A0,4563
|
163
|
+
lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_abstract_expand.xsl,sha256=xSZ_Ekq_I-62ZpiE5AqYYHwFW_qh855zt9V4_s7rbkY,11703
|
164
|
+
lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_dsdl_include.xsl,sha256=x42QJ-dxQ1waPzydsCoQnp2Xj15y53nW43O7BuoDRHk,39957
|
165
|
+
lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_message.xsl,sha256=Tr9BnO6pzjVWwhqJfm10UlvAy95EgfSCz2iMlrVGT6Q,2015
|
166
|
+
lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_skeleton_for_xslt1.xsl,sha256=ue8q_88X4e_jsJizo31GRNBxNhdxkEE9fY20oq0Iqwk,71764
|
167
|
+
lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_svrl_for_xslt1.xsl,sha256=BBAdsVSi5zAzeGepuN6gS1saQINDqITXKplmmj4dTWg,20382
|
168
|
+
lxml/isoschematron/resources/xsl/iso-schematron-xslt1/readme.txt,sha256=OGLiFswuLJEW5EPYKOeoauuCJFEtVa6jyzBE1OcJI98,3310
|
169
|
+
lxml-6.0.0.dist-info/METADATA,sha256=l0V9FIpBXx7-YI5aTsHRBGKuJZYt__AMOBXA3mPJtNE,6600
|
170
|
+
lxml-6.0.0.dist-info/WHEEL,sha256=7T4zFk_QXvv00tKalVL8k7FjF00WVYNo8CCLy0TvWlI,112
|
171
|
+
lxml-6.0.0.dist-info/top_level.txt,sha256=NjD988wqaKq512nshNdLt-uDxsjkp4Bh51m6N-dhUrk,5
|
172
|
+
lxml-6.0.0.dist-info/RECORD,,
|
173
|
+
lxml-6.0.0.dist-info/licenses/LICENSE.txt,sha256=j8K1aBM1FuRoRdIUeRet7uFkjnCumrXtbFQXr-9M6FU,1507
|
174
|
+
lxml-6.0.0.dist-info/licenses/LICENSES.txt,sha256=QdSd1AaqDhVIptXyGjDWv2OLPNlutyid00jYPtLkA5I,1514
|
@@ -0,0 +1,31 @@
|
|
1
|
+
BSD 3-Clause License
|
2
|
+
|
3
|
+
Copyright (c) 2004 Infrae. All rights reserved.
|
4
|
+
|
5
|
+
Redistribution and use in source and binary forms, with or without
|
6
|
+
modification, are permitted provided that the following conditions are
|
7
|
+
met:
|
8
|
+
|
9
|
+
1. Redistributions of source code must retain the above copyright
|
10
|
+
notice, this list of conditions and the following disclaimer.
|
11
|
+
|
12
|
+
2. Redistributions in binary form must reproduce the above copyright
|
13
|
+
notice, this list of conditions and the following disclaimer in
|
14
|
+
the documentation and/or other materials provided with the
|
15
|
+
distribution.
|
16
|
+
|
17
|
+
3. Neither the name of Infrae nor the names of its contributors may
|
18
|
+
be used to endorse or promote products derived from this software
|
19
|
+
without specific prior written permission.
|
20
|
+
|
21
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
22
|
+
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
23
|
+
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
24
|
+
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INFRAE OR
|
25
|
+
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
26
|
+
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
27
|
+
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
28
|
+
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
29
|
+
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
30
|
+
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
31
|
+
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
@@ -0,0 +1,29 @@
|
|
1
|
+
lxml is copyright Infrae and distributed under the BSD license (see
|
2
|
+
doc/licenses/BSD.txt), with the following exceptions:
|
3
|
+
|
4
|
+
Some code, such a selftest.py, selftest2.py and
|
5
|
+
src/lxml/_elementpath.py are derived from ElementTree and
|
6
|
+
cElementTree. See doc/licenses/elementtree.txt for the license text.
|
7
|
+
|
8
|
+
lxml.cssselect and lxml.html are copyright Ian Bicking and distributed
|
9
|
+
under the BSD license (see doc/licenses/BSD.txt).
|
10
|
+
|
11
|
+
test.py, the test-runner script, is GPL and copyright Shuttleworth
|
12
|
+
Foundation. See doc/licenses/GPL.txt. It is believed the unchanged
|
13
|
+
inclusion of test.py to run the unit test suite falls under the
|
14
|
+
"aggregation" clause of the GPL and thus does not affect the license
|
15
|
+
of the rest of the package.
|
16
|
+
|
17
|
+
The isoschematron implementation uses several XSL and RelaxNG resources:
|
18
|
+
* The (XML syntax) RelaxNG schema for schematron, copyright International
|
19
|
+
Organization for Standardization (see
|
20
|
+
src/lxml/isoschematron/resources/rng/iso-schematron.rng for the license
|
21
|
+
text)
|
22
|
+
* The skeleton iso-schematron-xlt1 pure-xslt schematron implementation
|
23
|
+
xsl stylesheets, copyright Rick Jelliffe and Academia Sinica Computing
|
24
|
+
Center, Taiwan (see the xsl files here for the license text:
|
25
|
+
src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/)
|
26
|
+
* The xsd/rng schema schematron extraction xsl transformations are unlicensed
|
27
|
+
and copyright the respective authors as noted (see
|
28
|
+
src/lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl and
|
29
|
+
src/lxml/isoschematron/resources/xsl/XSD2Schtrn.xsl)
|
@@ -0,0 +1 @@
|
|
1
|
+
lxml
|