lxml 5.2.2__cp36-cp36m-macosx_10_9_x86_64.whl → 5.3.1__cp36-cp36m-macosx_10_9_x86_64.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/__init__.py CHANGED
@@ -1,6 +1,6 @@
1
1
  # this is a package
2
2
 
3
- __version__ = "5.2.2"
3
+ __version__ = "5.3.1"
4
4
 
5
5
 
6
6
  def get_include():
Binary file
Binary file
lxml/dtd.pxi CHANGED
@@ -293,9 +293,10 @@ cdef class DTD(_Validator):
293
293
  else:
294
294
  raise DTDParseError, "file must be a filename, file-like or path-like object"
295
295
  elif external_id is not None:
296
+ external_id_utf = _utf8(external_id)
296
297
  with self._error_log:
297
298
  orig_loader = _register_document_loader()
298
- self._c_dtd = xmlparser.xmlParseDTD(<const_xmlChar*>external_id, NULL)
299
+ self._c_dtd = xmlparser.xmlParseDTD(<const_xmlChar*>external_id_utf, NULL)
299
300
  _reset_document_loader(orig_loader)
300
301
  else:
301
302
  raise DTDParseError, "either filename or external ID required"
Binary file
lxml/etree.h CHANGED
@@ -1,4 +1,4 @@
1
- /* Generated by Cython 3.0.10 */
1
+ /* Generated by Cython 3.0.11 */
2
2
 
3
3
  #ifndef __PYX_HAVE__lxml__etree
4
4
  #define __PYX_HAVE__lxml__etree
@@ -13,7 +13,7 @@ struct LxmlElementBase;
13
13
  struct LxmlElementClassLookup;
14
14
  struct LxmlFallbackElementClassLookup;
15
15
 
16
- /* "lxml/etree.pyx":353
16
+ /* "lxml/etree.pyx":355
17
17
  *
18
18
  * # type of a function that steps from node to node
19
19
  * ctypedef public xmlNode* (*_node_to_node_function)(xmlNode*) # <<<<<<<<<<<<<<
@@ -22,7 +22,7 @@ struct LxmlFallbackElementClassLookup;
22
22
  */
23
23
  typedef xmlNode *(*_node_to_node_function)(xmlNode *);
24
24
 
25
- /* "lxml/etree.pyx":369
25
+ /* "lxml/etree.pyx":371
26
26
  * @cython.final
27
27
  * @cython.freelist(8)
28
28
  * cdef public class _Document [ type LxmlDocumentType, object LxmlDocument ]: # <<<<<<<<<<<<<<
@@ -38,7 +38,7 @@ struct LxmlDocument {
38
38
  struct __pyx_obj_4lxml_5etree__BaseParser *_parser;
39
39
  };
40
40
 
41
- /* "lxml/etree.pyx":718
41
+ /* "lxml/etree.pyx":720
42
42
  *
43
43
  * @cython.no_gc_clear
44
44
  * cdef public class _Element [ type LxmlElementType, object LxmlElement ]: # <<<<<<<<<<<<<<
@@ -52,7 +52,7 @@ struct LxmlElement {
52
52
  PyObject *_tag;
53
53
  };
54
54
 
55
- /* "lxml/etree.pyx":1892
55
+ /* "lxml/etree.pyx":1895
56
56
  *
57
57
  *
58
58
  * cdef public class _ElementTree [ type LxmlElementTreeType, # <<<<<<<<<<<<<<
@@ -66,7 +66,7 @@ struct LxmlElementTree {
66
66
  struct LxmlElement *_context_node;
67
67
  };
68
68
 
69
- /* "lxml/etree.pyx":2666
69
+ /* "lxml/etree.pyx":2669
70
70
  *
71
71
  *
72
72
  * cdef public class _ElementTagMatcher [ object LxmlElementTagMatcher, # <<<<<<<<<<<<<<
@@ -82,7 +82,7 @@ struct LxmlElementTagMatcher {
82
82
  char *_name;
83
83
  };
84
84
 
85
- /* "lxml/etree.pyx":2697
85
+ /* "lxml/etree.pyx":2700
86
86
  * self._name = NULL
87
87
  *
88
88
  * cdef public class _ElementIterator(_ElementTagMatcher) [ # <<<<<<<<<<<<<<
lxml/etree.pyx CHANGED
@@ -16,9 +16,11 @@ __all__ = [
16
16
  'ElementBase', 'ElementClassLookup', 'ElementDefaultClassLookup',
17
17
  'ElementNamespaceClassLookup', 'ElementTree', 'Entity', 'EntityBase',
18
18
  'Error', 'ErrorDomains', 'ErrorLevels', 'ErrorTypes', 'Extension',
19
- 'FallbackElementClassLookup', 'FunctionNamespace', 'HTML',
20
- 'HTMLParser', 'LIBXML_COMPILED_VERSION', 'LIBXML_VERSION',
21
- 'LIBXSLT_COMPILED_VERSION', 'LIBXSLT_VERSION', 'LXML_VERSION',
19
+ 'FallbackElementClassLookup', 'FunctionNamespace', 'HTML', 'HTMLParser',
20
+ 'ICONV_COMPILED_VERSION',
21
+ 'LIBXML_COMPILED_VERSION', 'LIBXML_VERSION',
22
+ 'LIBXSLT_COMPILED_VERSION', 'LIBXSLT_VERSION',
23
+ 'LXML_VERSION',
22
24
  'LxmlError', 'LxmlRegistryError', 'LxmlSyntaxError',
23
25
  'NamespaceRegistryError', 'PI', 'PIBase', 'ParseError',
24
26
  'ParserBasedElementClassLookup', 'ParserError', 'ProcessingInstruction',
@@ -1212,7 +1214,8 @@ cdef public class _Element [ type LxmlElementType, object LxmlElement ]:
1212
1214
  """__bool__(self)"""
1213
1215
  import warnings
1214
1216
  warnings.warn(
1215
- "The behavior of this method will change in future versions. "
1217
+ "Truth-testing of elements was a source of confusion and will always "
1218
+ "return True in future versions. "
1216
1219
  "Use specific 'len(elem)' or 'elem is not None' test instead.",
1217
1220
  FutureWarning
1218
1221
  )
@@ -3164,10 +3167,7 @@ cdef class CDATA:
3164
3167
  """
3165
3168
  cdef bytes _utf8_data
3166
3169
  def __cinit__(self, data):
3167
- _utf8_data = _utf8(data)
3168
- if b']]>' in _utf8_data:
3169
- raise ValueError, "']]>' not allowed inside CDATA"
3170
- self._utf8_data = _utf8_data
3170
+ self._utf8_data = _utf8(data)
3171
3171
 
3172
3172
 
3173
3173
  def Entity(name):
lxml/etree_api.h CHANGED
@@ -1,4 +1,4 @@
1
- /* Generated by Cython 3.0.10 */
1
+ /* Generated by Cython 3.0.11 */
2
2
 
3
3
  #ifndef __PYX_HAVE_API__lxml__etree
4
4
  #define __PYX_HAVE_API__lxml__etree
@@ -98,9 +98,9 @@ static void (*__pyx_api_f_4lxml_5etree_initTagMatch)(struct LxmlElementTagMatche
98
98
  #define initTagMatch __pyx_api_f_4lxml_5etree_initTagMatch
99
99
  static xmlNs *(*__pyx_api_f_4lxml_5etree_findOrBuildNodeNsPrefix)(struct LxmlDocument *, xmlNode *, const xmlChar *, const xmlChar *) = 0;
100
100
  #define findOrBuildNodeNsPrefix __pyx_api_f_4lxml_5etree_findOrBuildNodeNsPrefix
101
- #ifndef __PYX_HAVE_RT_ImportFunction_3_0_10
102
- #define __PYX_HAVE_RT_ImportFunction_3_0_10
103
- static int __Pyx_ImportFunction_3_0_10(PyObject *module, const char *funcname, void (**f)(void), const char *sig) {
101
+ #ifndef __PYX_HAVE_RT_ImportFunction_3_0_11
102
+ #define __PYX_HAVE_RT_ImportFunction_3_0_11
103
+ static int __Pyx_ImportFunction_3_0_11(PyObject *module, const char *funcname, void (**f)(void), const char *sig) {
104
104
  PyObject *d = 0;
105
105
  PyObject *cobj = 0;
106
106
  union {
@@ -140,51 +140,51 @@ static int import_lxml__etree(void) {
140
140
  PyObject *module = 0;
141
141
  module = PyImport_ImportModule("lxml.etree");
142
142
  if (!module) goto bad;
143
- if (__Pyx_ImportFunction_3_0_10(module, "deepcopyNodeToDocument", (void (**)(void))&__pyx_api_f_4lxml_5etree_deepcopyNodeToDocument, "struct LxmlElement *(struct LxmlDocument *, xmlNode *)") < 0) goto bad;
144
- if (__Pyx_ImportFunction_3_0_10(module, "elementTreeFactory", (void (**)(void))&__pyx_api_f_4lxml_5etree_elementTreeFactory, "struct LxmlElementTree *(struct LxmlElement *)") < 0) goto bad;
145
- if (__Pyx_ImportFunction_3_0_10(module, "newElementTree", (void (**)(void))&__pyx_api_f_4lxml_5etree_newElementTree, "struct LxmlElementTree *(struct LxmlElement *, PyObject *)") < 0) goto bad;
146
- if (__Pyx_ImportFunction_3_0_10(module, "adoptExternalDocument", (void (**)(void))&__pyx_api_f_4lxml_5etree_adoptExternalDocument, "struct LxmlElementTree *(xmlDoc *, PyObject *, int)") < 0) goto bad;
147
- if (__Pyx_ImportFunction_3_0_10(module, "elementFactory", (void (**)(void))&__pyx_api_f_4lxml_5etree_elementFactory, "struct LxmlElement *(struct LxmlDocument *, xmlNode *)") < 0) goto bad;
148
- if (__Pyx_ImportFunction_3_0_10(module, "makeElement", (void (**)(void))&__pyx_api_f_4lxml_5etree_makeElement, "struct LxmlElement *(PyObject *, struct LxmlDocument *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *)") < 0) goto bad;
149
- if (__Pyx_ImportFunction_3_0_10(module, "makeSubElement", (void (**)(void))&__pyx_api_f_4lxml_5etree_makeSubElement, "struct LxmlElement *(struct LxmlElement *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *)") < 0) goto bad;
150
- if (__Pyx_ImportFunction_3_0_10(module, "setElementClassLookupFunction", (void (**)(void))&__pyx_api_f_4lxml_5etree_setElementClassLookupFunction, "void (_element_class_lookup_function, PyObject *)") < 0) goto bad;
151
- if (__Pyx_ImportFunction_3_0_10(module, "lookupDefaultElementClass", (void (**)(void))&__pyx_api_f_4lxml_5etree_lookupDefaultElementClass, "PyObject *(PyObject *, PyObject *, xmlNode *)") < 0) goto bad;
152
- if (__Pyx_ImportFunction_3_0_10(module, "lookupNamespaceElementClass", (void (**)(void))&__pyx_api_f_4lxml_5etree_lookupNamespaceElementClass, "PyObject *(PyObject *, PyObject *, xmlNode *)") < 0) goto bad;
153
- if (__Pyx_ImportFunction_3_0_10(module, "callLookupFallback", (void (**)(void))&__pyx_api_f_4lxml_5etree_callLookupFallback, "PyObject *(struct LxmlFallbackElementClassLookup *, struct LxmlDocument *, xmlNode *)") < 0) goto bad;
154
- if (__Pyx_ImportFunction_3_0_10(module, "tagMatches", (void (**)(void))&__pyx_api_f_4lxml_5etree_tagMatches, "int (xmlNode *, const xmlChar *, const xmlChar *)") < 0) goto bad;
155
- if (__Pyx_ImportFunction_3_0_10(module, "documentOrRaise", (void (**)(void))&__pyx_api_f_4lxml_5etree_documentOrRaise, "struct LxmlDocument *(PyObject *)") < 0) goto bad;
156
- if (__Pyx_ImportFunction_3_0_10(module, "rootNodeOrRaise", (void (**)(void))&__pyx_api_f_4lxml_5etree_rootNodeOrRaise, "struct LxmlElement *(PyObject *)") < 0) goto bad;
157
- if (__Pyx_ImportFunction_3_0_10(module, "hasText", (void (**)(void))&__pyx_api_f_4lxml_5etree_hasText, "int (xmlNode *)") < 0) goto bad;
158
- if (__Pyx_ImportFunction_3_0_10(module, "hasTail", (void (**)(void))&__pyx_api_f_4lxml_5etree_hasTail, "int (xmlNode *)") < 0) goto bad;
159
- if (__Pyx_ImportFunction_3_0_10(module, "textOf", (void (**)(void))&__pyx_api_f_4lxml_5etree_textOf, "PyObject *(xmlNode *)") < 0) goto bad;
160
- if (__Pyx_ImportFunction_3_0_10(module, "tailOf", (void (**)(void))&__pyx_api_f_4lxml_5etree_tailOf, "PyObject *(xmlNode *)") < 0) goto bad;
161
- if (__Pyx_ImportFunction_3_0_10(module, "setNodeText", (void (**)(void))&__pyx_api_f_4lxml_5etree_setNodeText, "int (xmlNode *, PyObject *)") < 0) goto bad;
162
- if (__Pyx_ImportFunction_3_0_10(module, "setTailText", (void (**)(void))&__pyx_api_f_4lxml_5etree_setTailText, "int (xmlNode *, PyObject *)") < 0) goto bad;
163
- if (__Pyx_ImportFunction_3_0_10(module, "attributeValue", (void (**)(void))&__pyx_api_f_4lxml_5etree_attributeValue, "PyObject *(xmlNode *, xmlAttr *)") < 0) goto bad;
164
- if (__Pyx_ImportFunction_3_0_10(module, "attributeValueFromNsName", (void (**)(void))&__pyx_api_f_4lxml_5etree_attributeValueFromNsName, "PyObject *(xmlNode *, const xmlChar *, const xmlChar *)") < 0) goto bad;
165
- if (__Pyx_ImportFunction_3_0_10(module, "getAttributeValue", (void (**)(void))&__pyx_api_f_4lxml_5etree_getAttributeValue, "PyObject *(struct LxmlElement *, PyObject *, PyObject *)") < 0) goto bad;
166
- if (__Pyx_ImportFunction_3_0_10(module, "iterattributes", (void (**)(void))&__pyx_api_f_4lxml_5etree_iterattributes, "PyObject *(struct LxmlElement *, int)") < 0) goto bad;
167
- if (__Pyx_ImportFunction_3_0_10(module, "collectAttributes", (void (**)(void))&__pyx_api_f_4lxml_5etree_collectAttributes, "PyObject *(xmlNode *, int)") < 0) goto bad;
168
- if (__Pyx_ImportFunction_3_0_10(module, "setAttributeValue", (void (**)(void))&__pyx_api_f_4lxml_5etree_setAttributeValue, "int (struct LxmlElement *, PyObject *, PyObject *)") < 0) goto bad;
169
- if (__Pyx_ImportFunction_3_0_10(module, "delAttribute", (void (**)(void))&__pyx_api_f_4lxml_5etree_delAttribute, "int (struct LxmlElement *, PyObject *)") < 0) goto bad;
170
- if (__Pyx_ImportFunction_3_0_10(module, "delAttributeFromNsName", (void (**)(void))&__pyx_api_f_4lxml_5etree_delAttributeFromNsName, "int (xmlNode *, const xmlChar *, const xmlChar *)") < 0) goto bad;
171
- if (__Pyx_ImportFunction_3_0_10(module, "hasChild", (void (**)(void))&__pyx_api_f_4lxml_5etree_hasChild, "int (xmlNode *)") < 0) goto bad;
172
- if (__Pyx_ImportFunction_3_0_10(module, "findChild", (void (**)(void))&__pyx_api_f_4lxml_5etree_findChild, "xmlNode *(xmlNode *, Py_ssize_t)") < 0) goto bad;
173
- if (__Pyx_ImportFunction_3_0_10(module, "findChildForwards", (void (**)(void))&__pyx_api_f_4lxml_5etree_findChildForwards, "xmlNode *(xmlNode *, Py_ssize_t)") < 0) goto bad;
174
- if (__Pyx_ImportFunction_3_0_10(module, "findChildBackwards", (void (**)(void))&__pyx_api_f_4lxml_5etree_findChildBackwards, "xmlNode *(xmlNode *, Py_ssize_t)") < 0) goto bad;
175
- if (__Pyx_ImportFunction_3_0_10(module, "nextElement", (void (**)(void))&__pyx_api_f_4lxml_5etree_nextElement, "xmlNode *(xmlNode *)") < 0) goto bad;
176
- if (__Pyx_ImportFunction_3_0_10(module, "previousElement", (void (**)(void))&__pyx_api_f_4lxml_5etree_previousElement, "xmlNode *(xmlNode *)") < 0) goto bad;
177
- if (__Pyx_ImportFunction_3_0_10(module, "appendChild", (void (**)(void))&__pyx_api_f_4lxml_5etree_appendChild, "void (struct LxmlElement *, struct LxmlElement *)") < 0) goto bad;
178
- if (__Pyx_ImportFunction_3_0_10(module, "appendChildToElement", (void (**)(void))&__pyx_api_f_4lxml_5etree_appendChildToElement, "int (struct LxmlElement *, struct LxmlElement *)") < 0) goto bad;
179
- if (__Pyx_ImportFunction_3_0_10(module, "pyunicode", (void (**)(void))&__pyx_api_f_4lxml_5etree_pyunicode, "PyObject *(const xmlChar *)") < 0) goto bad;
180
- if (__Pyx_ImportFunction_3_0_10(module, "utf8", (void (**)(void))&__pyx_api_f_4lxml_5etree_utf8, "PyObject *(PyObject *)") < 0) goto bad;
181
- if (__Pyx_ImportFunction_3_0_10(module, "getNsTag", (void (**)(void))&__pyx_api_f_4lxml_5etree_getNsTag, "PyObject *(PyObject *)") < 0) goto bad;
182
- if (__Pyx_ImportFunction_3_0_10(module, "getNsTagWithEmptyNs", (void (**)(void))&__pyx_api_f_4lxml_5etree_getNsTagWithEmptyNs, "PyObject *(PyObject *)") < 0) goto bad;
183
- if (__Pyx_ImportFunction_3_0_10(module, "namespacedName", (void (**)(void))&__pyx_api_f_4lxml_5etree_namespacedName, "PyObject *(xmlNode *)") < 0) goto bad;
184
- if (__Pyx_ImportFunction_3_0_10(module, "namespacedNameFromNsName", (void (**)(void))&__pyx_api_f_4lxml_5etree_namespacedNameFromNsName, "PyObject *(const xmlChar *, const xmlChar *)") < 0) goto bad;
185
- if (__Pyx_ImportFunction_3_0_10(module, "iteratorStoreNext", (void (**)(void))&__pyx_api_f_4lxml_5etree_iteratorStoreNext, "void (struct LxmlElementIterator *, struct LxmlElement *)") < 0) goto bad;
186
- if (__Pyx_ImportFunction_3_0_10(module, "initTagMatch", (void (**)(void))&__pyx_api_f_4lxml_5etree_initTagMatch, "void (struct LxmlElementTagMatcher *, PyObject *)") < 0) goto bad;
187
- if (__Pyx_ImportFunction_3_0_10(module, "findOrBuildNodeNsPrefix", (void (**)(void))&__pyx_api_f_4lxml_5etree_findOrBuildNodeNsPrefix, "xmlNs *(struct LxmlDocument *, xmlNode *, const xmlChar *, const xmlChar *)") < 0) goto bad;
143
+ if (__Pyx_ImportFunction_3_0_11(module, "deepcopyNodeToDocument", (void (**)(void))&__pyx_api_f_4lxml_5etree_deepcopyNodeToDocument, "struct LxmlElement *(struct LxmlDocument *, xmlNode *)") < 0) goto bad;
144
+ if (__Pyx_ImportFunction_3_0_11(module, "elementTreeFactory", (void (**)(void))&__pyx_api_f_4lxml_5etree_elementTreeFactory, "struct LxmlElementTree *(struct LxmlElement *)") < 0) goto bad;
145
+ if (__Pyx_ImportFunction_3_0_11(module, "newElementTree", (void (**)(void))&__pyx_api_f_4lxml_5etree_newElementTree, "struct LxmlElementTree *(struct LxmlElement *, PyObject *)") < 0) goto bad;
146
+ if (__Pyx_ImportFunction_3_0_11(module, "adoptExternalDocument", (void (**)(void))&__pyx_api_f_4lxml_5etree_adoptExternalDocument, "struct LxmlElementTree *(xmlDoc *, PyObject *, int)") < 0) goto bad;
147
+ if (__Pyx_ImportFunction_3_0_11(module, "elementFactory", (void (**)(void))&__pyx_api_f_4lxml_5etree_elementFactory, "struct LxmlElement *(struct LxmlDocument *, xmlNode *)") < 0) goto bad;
148
+ if (__Pyx_ImportFunction_3_0_11(module, "makeElement", (void (**)(void))&__pyx_api_f_4lxml_5etree_makeElement, "struct LxmlElement *(PyObject *, struct LxmlDocument *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *)") < 0) goto bad;
149
+ if (__Pyx_ImportFunction_3_0_11(module, "makeSubElement", (void (**)(void))&__pyx_api_f_4lxml_5etree_makeSubElement, "struct LxmlElement *(struct LxmlElement *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *)") < 0) goto bad;
150
+ if (__Pyx_ImportFunction_3_0_11(module, "setElementClassLookupFunction", (void (**)(void))&__pyx_api_f_4lxml_5etree_setElementClassLookupFunction, "void (_element_class_lookup_function, PyObject *)") < 0) goto bad;
151
+ if (__Pyx_ImportFunction_3_0_11(module, "lookupDefaultElementClass", (void (**)(void))&__pyx_api_f_4lxml_5etree_lookupDefaultElementClass, "PyObject *(PyObject *, PyObject *, xmlNode *)") < 0) goto bad;
152
+ if (__Pyx_ImportFunction_3_0_11(module, "lookupNamespaceElementClass", (void (**)(void))&__pyx_api_f_4lxml_5etree_lookupNamespaceElementClass, "PyObject *(PyObject *, PyObject *, xmlNode *)") < 0) goto bad;
153
+ if (__Pyx_ImportFunction_3_0_11(module, "callLookupFallback", (void (**)(void))&__pyx_api_f_4lxml_5etree_callLookupFallback, "PyObject *(struct LxmlFallbackElementClassLookup *, struct LxmlDocument *, xmlNode *)") < 0) goto bad;
154
+ if (__Pyx_ImportFunction_3_0_11(module, "tagMatches", (void (**)(void))&__pyx_api_f_4lxml_5etree_tagMatches, "int (xmlNode *, const xmlChar *, const xmlChar *)") < 0) goto bad;
155
+ if (__Pyx_ImportFunction_3_0_11(module, "documentOrRaise", (void (**)(void))&__pyx_api_f_4lxml_5etree_documentOrRaise, "struct LxmlDocument *(PyObject *)") < 0) goto bad;
156
+ if (__Pyx_ImportFunction_3_0_11(module, "rootNodeOrRaise", (void (**)(void))&__pyx_api_f_4lxml_5etree_rootNodeOrRaise, "struct LxmlElement *(PyObject *)") < 0) goto bad;
157
+ if (__Pyx_ImportFunction_3_0_11(module, "hasText", (void (**)(void))&__pyx_api_f_4lxml_5etree_hasText, "int (xmlNode *)") < 0) goto bad;
158
+ if (__Pyx_ImportFunction_3_0_11(module, "hasTail", (void (**)(void))&__pyx_api_f_4lxml_5etree_hasTail, "int (xmlNode *)") < 0) goto bad;
159
+ if (__Pyx_ImportFunction_3_0_11(module, "textOf", (void (**)(void))&__pyx_api_f_4lxml_5etree_textOf, "PyObject *(xmlNode *)") < 0) goto bad;
160
+ if (__Pyx_ImportFunction_3_0_11(module, "tailOf", (void (**)(void))&__pyx_api_f_4lxml_5etree_tailOf, "PyObject *(xmlNode *)") < 0) goto bad;
161
+ if (__Pyx_ImportFunction_3_0_11(module, "setNodeText", (void (**)(void))&__pyx_api_f_4lxml_5etree_setNodeText, "int (xmlNode *, PyObject *)") < 0) goto bad;
162
+ if (__Pyx_ImportFunction_3_0_11(module, "setTailText", (void (**)(void))&__pyx_api_f_4lxml_5etree_setTailText, "int (xmlNode *, PyObject *)") < 0) goto bad;
163
+ if (__Pyx_ImportFunction_3_0_11(module, "attributeValue", (void (**)(void))&__pyx_api_f_4lxml_5etree_attributeValue, "PyObject *(xmlNode *, xmlAttr *)") < 0) goto bad;
164
+ if (__Pyx_ImportFunction_3_0_11(module, "attributeValueFromNsName", (void (**)(void))&__pyx_api_f_4lxml_5etree_attributeValueFromNsName, "PyObject *(xmlNode *, const xmlChar *, const xmlChar *)") < 0) goto bad;
165
+ if (__Pyx_ImportFunction_3_0_11(module, "getAttributeValue", (void (**)(void))&__pyx_api_f_4lxml_5etree_getAttributeValue, "PyObject *(struct LxmlElement *, PyObject *, PyObject *)") < 0) goto bad;
166
+ if (__Pyx_ImportFunction_3_0_11(module, "iterattributes", (void (**)(void))&__pyx_api_f_4lxml_5etree_iterattributes, "PyObject *(struct LxmlElement *, int)") < 0) goto bad;
167
+ if (__Pyx_ImportFunction_3_0_11(module, "collectAttributes", (void (**)(void))&__pyx_api_f_4lxml_5etree_collectAttributes, "PyObject *(xmlNode *, int)") < 0) goto bad;
168
+ if (__Pyx_ImportFunction_3_0_11(module, "setAttributeValue", (void (**)(void))&__pyx_api_f_4lxml_5etree_setAttributeValue, "int (struct LxmlElement *, PyObject *, PyObject *)") < 0) goto bad;
169
+ if (__Pyx_ImportFunction_3_0_11(module, "delAttribute", (void (**)(void))&__pyx_api_f_4lxml_5etree_delAttribute, "int (struct LxmlElement *, PyObject *)") < 0) goto bad;
170
+ if (__Pyx_ImportFunction_3_0_11(module, "delAttributeFromNsName", (void (**)(void))&__pyx_api_f_4lxml_5etree_delAttributeFromNsName, "int (xmlNode *, const xmlChar *, const xmlChar *)") < 0) goto bad;
171
+ if (__Pyx_ImportFunction_3_0_11(module, "hasChild", (void (**)(void))&__pyx_api_f_4lxml_5etree_hasChild, "int (xmlNode *)") < 0) goto bad;
172
+ if (__Pyx_ImportFunction_3_0_11(module, "findChild", (void (**)(void))&__pyx_api_f_4lxml_5etree_findChild, "xmlNode *(xmlNode *, Py_ssize_t)") < 0) goto bad;
173
+ if (__Pyx_ImportFunction_3_0_11(module, "findChildForwards", (void (**)(void))&__pyx_api_f_4lxml_5etree_findChildForwards, "xmlNode *(xmlNode *, Py_ssize_t)") < 0) goto bad;
174
+ if (__Pyx_ImportFunction_3_0_11(module, "findChildBackwards", (void (**)(void))&__pyx_api_f_4lxml_5etree_findChildBackwards, "xmlNode *(xmlNode *, Py_ssize_t)") < 0) goto bad;
175
+ if (__Pyx_ImportFunction_3_0_11(module, "nextElement", (void (**)(void))&__pyx_api_f_4lxml_5etree_nextElement, "xmlNode *(xmlNode *)") < 0) goto bad;
176
+ if (__Pyx_ImportFunction_3_0_11(module, "previousElement", (void (**)(void))&__pyx_api_f_4lxml_5etree_previousElement, "xmlNode *(xmlNode *)") < 0) goto bad;
177
+ if (__Pyx_ImportFunction_3_0_11(module, "appendChild", (void (**)(void))&__pyx_api_f_4lxml_5etree_appendChild, "void (struct LxmlElement *, struct LxmlElement *)") < 0) goto bad;
178
+ if (__Pyx_ImportFunction_3_0_11(module, "appendChildToElement", (void (**)(void))&__pyx_api_f_4lxml_5etree_appendChildToElement, "int (struct LxmlElement *, struct LxmlElement *)") < 0) goto bad;
179
+ if (__Pyx_ImportFunction_3_0_11(module, "pyunicode", (void (**)(void))&__pyx_api_f_4lxml_5etree_pyunicode, "PyObject *(const xmlChar *)") < 0) goto bad;
180
+ if (__Pyx_ImportFunction_3_0_11(module, "utf8", (void (**)(void))&__pyx_api_f_4lxml_5etree_utf8, "PyObject *(PyObject *)") < 0) goto bad;
181
+ if (__Pyx_ImportFunction_3_0_11(module, "getNsTag", (void (**)(void))&__pyx_api_f_4lxml_5etree_getNsTag, "PyObject *(PyObject *)") < 0) goto bad;
182
+ if (__Pyx_ImportFunction_3_0_11(module, "getNsTagWithEmptyNs", (void (**)(void))&__pyx_api_f_4lxml_5etree_getNsTagWithEmptyNs, "PyObject *(PyObject *)") < 0) goto bad;
183
+ if (__Pyx_ImportFunction_3_0_11(module, "namespacedName", (void (**)(void))&__pyx_api_f_4lxml_5etree_namespacedName, "PyObject *(xmlNode *)") < 0) goto bad;
184
+ if (__Pyx_ImportFunction_3_0_11(module, "namespacedNameFromNsName", (void (**)(void))&__pyx_api_f_4lxml_5etree_namespacedNameFromNsName, "PyObject *(const xmlChar *, const xmlChar *)") < 0) goto bad;
185
+ if (__Pyx_ImportFunction_3_0_11(module, "iteratorStoreNext", (void (**)(void))&__pyx_api_f_4lxml_5etree_iteratorStoreNext, "void (struct LxmlElementIterator *, struct LxmlElement *)") < 0) goto bad;
186
+ if (__Pyx_ImportFunction_3_0_11(module, "initTagMatch", (void (**)(void))&__pyx_api_f_4lxml_5etree_initTagMatch, "void (struct LxmlElementTagMatcher *, PyObject *)") < 0) goto bad;
187
+ if (__Pyx_ImportFunction_3_0_11(module, "findOrBuildNodeNsPrefix", (void (**)(void))&__pyx_api_f_4lxml_5etree_findOrBuildNodeNsPrefix, "xmlNs *(struct LxmlDocument *, xmlNode *, const xmlChar *, const xmlChar *)") < 0) goto bad;
188
188
  Py_DECREF(module); module = 0;
189
189
  return 0;
190
190
  bad:
Binary file
@@ -18,21 +18,21 @@ extern "C" {
18
18
  *
19
19
  * the version string like "1.2.3"
20
20
  */
21
- #define LIBEXSLT_DOTTED_VERSION "0.8.21"
21
+ #define LIBEXSLT_DOTTED_VERSION "0.8.23"
22
22
 
23
23
  /**
24
24
  * LIBEXSLT_VERSION:
25
25
  *
26
26
  * the version number: 1.2.3 value is 10203
27
27
  */
28
- #define LIBEXSLT_VERSION 821
28
+ #define LIBEXSLT_VERSION 823
29
29
 
30
30
  /**
31
31
  * LIBEXSLT_VERSION_STRING:
32
32
  *
33
33
  * the version number string, 1.2.3 value is "10203"
34
34
  */
35
- #define LIBEXSLT_VERSION_STRING "821"
35
+ #define LIBEXSLT_VERSION_STRING "823"
36
36
 
37
37
  /**
38
38
  * LIBEXSLT_VERSION_EXTRA:
@@ -953,7 +953,7 @@ XML_DEPRECATED XMLPUBFUN int
953
953
  xmlSubstituteEntitiesDefault(int val);
954
954
  XML_DEPRECATED XMLPUBFUN int
955
955
  xmlThrDefSubstituteEntitiesDefaultValue(int v);
956
- XML_DEPRECATED XMLPUBFUN int
956
+ XMLPUBFUN int
957
957
  xmlKeepBlanksDefault (int val);
958
958
  XML_DEPRECATED XMLPUBFUN int
959
959
  xmlThrDefKeepBlanksDefaultValue(int v);
@@ -29,21 +29,21 @@ XMLPUBFUN void xmlCheckVersion(int version);
29
29
  *
30
30
  * the version string like "1.2.3"
31
31
  */
32
- #define LIBXML_DOTTED_VERSION "2.12.6"
32
+ #define LIBXML_DOTTED_VERSION "2.12.9"
33
33
 
34
34
  /**
35
35
  * LIBXML_VERSION:
36
36
  *
37
37
  * the version number: 1.2.3 value is 10203
38
38
  */
39
- #define LIBXML_VERSION 21206
39
+ #define LIBXML_VERSION 21209
40
40
 
41
41
  /**
42
42
  * LIBXML_VERSION_STRING:
43
43
  *
44
44
  * the version number string, 1.2.3 value is "10203"
45
45
  */
46
- #define LIBXML_VERSION_STRING "21206"
46
+ #define LIBXML_VERSION_STRING "21209"
47
47
 
48
48
  /**
49
49
  * LIBXML_VERSION_EXTRA:
@@ -58,7 +58,7 @@ XMLPUBFUN void xmlCheckVersion(int version);
58
58
  * Macro to check that the libxml version in use is compatible with
59
59
  * the version the software has been compiled against
60
60
  */
61
- #define LIBXML_TEST_VERSION xmlCheckVersion(21206);
61
+ #define LIBXML_TEST_VERSION xmlCheckVersion(21209);
62
62
 
63
63
  #ifndef VMS
64
64
  #if 0
@@ -1634,6 +1634,9 @@ struct _xsltStylesheet {
1634
1634
  xmlHashTablePtr namedTemplates; /* hash table of named templates */
1635
1635
 
1636
1636
  xmlXPathContextPtr xpathCtxt;
1637
+
1638
+ unsigned long opLimit;
1639
+ unsigned long opCount;
1637
1640
  };
1638
1641
 
1639
1642
  typedef struct _xsltTransformCache xsltTransformCache;
@@ -20,21 +20,21 @@ extern "C" {
20
20
  *
21
21
  * the version string like "1.2.3"
22
22
  */
23
- #define LIBXSLT_DOTTED_VERSION "1.1.39"
23
+ #define LIBXSLT_DOTTED_VERSION "1.1.42"
24
24
 
25
25
  /**
26
26
  * LIBXSLT_VERSION:
27
27
  *
28
28
  * the version number: 1.2.3 value is 10203
29
29
  */
30
- #define LIBXSLT_VERSION 10139
30
+ #define LIBXSLT_VERSION 10142
31
31
 
32
32
  /**
33
33
  * LIBXSLT_VERSION_STRING:
34
34
  *
35
35
  * the version number string, 1.2.3 value is "10203"
36
36
  */
37
- #define LIBXSLT_VERSION_STRING "10139"
37
+ #define LIBXSLT_VERSION_STRING "10142"
38
38
 
39
39
  /**
40
40
  * LIBXSLT_VERSION_EXTRA:
@@ -54,26 +54,6 @@ extern "C" {
54
54
  #define WITH_XSLT_DEBUG
55
55
  #endif
56
56
 
57
- #if 0
58
- /**
59
- * DEBUG_MEMORY:
60
- *
61
- * should be activated only when debugging libxslt. It replaces the
62
- * allocator with a collect and debug shell to the libc allocator.
63
- * Use configure --with-mem-debug to activate it on both library
64
- */
65
- #define DEBUG_MEMORY
66
-
67
- /**
68
- * DEBUG_MEMORY_LOCATION:
69
- *
70
- * should be activated only when debugging libxslt.
71
- * DEBUG_MEMORY_LOCATION should be activated only when libxml has
72
- * been configured with --with-debug-mem too
73
- */
74
- #define DEBUG_MEMORY_LOCATION
75
- #endif
76
-
77
57
  /**
78
58
  * XSLT_NEED_TRIO:
79
59
  *
@@ -135,19 +115,6 @@ extern "C" {
135
115
  #define LIBXSLT_DEFAULT_PLUGINS_PATH() "/Users/runner/work/lxml/lxml/build/tmp/libxml2/lib/libxslt-plugins"
136
116
  #endif
137
117
 
138
- /**
139
- * ATTRIBUTE_UNUSED:
140
- *
141
- * This macro is used to flag unused function parameters to GCC
142
- */
143
- #ifdef __GNUC__
144
- #ifndef ATTRIBUTE_UNUSED
145
- #define ATTRIBUTE_UNUSED __attribute__((unused))
146
- #endif
147
- #else
148
- #define ATTRIBUTE_UNUSED
149
- #endif
150
-
151
118
  /**
152
119
  * LIBXSLT_ATTR_FORMAT:
153
120
  *
@@ -1,3 +1,3 @@
1
1
  #ifndef LXML_VERSION_STRING
2
- #define LXML_VERSION_STRING "5.2.2"
2
+ #define LXML_VERSION_STRING "5.3.1"
3
3
  #endif
@@ -225,7 +225,7 @@ class Schematron(_etree._Validator):
225
225
  schematron = None
226
226
  if element.tag == _xml_schema_root:
227
227
  schematron = self._extract_xsd(element)
228
- elif element.nsmap[element.prefix] == RELAXNG_NS:
228
+ elif element.nsmap.get(element.prefix) == RELAXNG_NS:
229
229
  # RelaxNG does not have a single unique root element
230
230
  schematron = self._extract_rng(element)
231
231
  return schematron
lxml/iterparse.pxi CHANGED
@@ -42,7 +42,8 @@ cdef class iterparse:
42
42
  - remove_blank_text: discard blank text nodes
43
43
  - remove_comments: discard comments
44
44
  - remove_pis: discard processing instructions
45
- - strip_cdata: replace CDATA sections by normal text content (default: True)
45
+ - strip_cdata: replace CDATA sections by normal text content (default:
46
+ True for XML, ignored otherwise)
46
47
  - compact: safe memory for short text content (default: True)
47
48
  - resolve_entities: replace entities by their text value (default: True)
48
49
  - huge_tree: disable security restrictions and support very deep trees
@@ -97,7 +98,6 @@ cdef class iterparse:
97
98
  remove_blank_text=remove_blank_text,
98
99
  remove_comments=remove_comments,
99
100
  remove_pis=remove_pis,
100
- strip_cdata=strip_cdata,
101
101
  no_network=no_network,
102
102
  target=None, # TODO
103
103
  schema=schema,
lxml/lxml.etree.h CHANGED
@@ -1,4 +1,4 @@
1
- /* Generated by Cython 3.0.10 */
1
+ /* Generated by Cython 3.0.11 */
2
2
 
3
3
  #ifndef __PYX_HAVE__lxml__etree
4
4
  #define __PYX_HAVE__lxml__etree
@@ -13,7 +13,7 @@ struct LxmlElementBase;
13
13
  struct LxmlElementClassLookup;
14
14
  struct LxmlFallbackElementClassLookup;
15
15
 
16
- /* "lxml/etree.pyx":353
16
+ /* "lxml/etree.pyx":355
17
17
  *
18
18
  * # type of a function that steps from node to node
19
19
  * ctypedef public xmlNode* (*_node_to_node_function)(xmlNode*) # <<<<<<<<<<<<<<
@@ -22,7 +22,7 @@ struct LxmlFallbackElementClassLookup;
22
22
  */
23
23
  typedef xmlNode *(*_node_to_node_function)(xmlNode *);
24
24
 
25
- /* "lxml/etree.pyx":369
25
+ /* "lxml/etree.pyx":371
26
26
  * @cython.final
27
27
  * @cython.freelist(8)
28
28
  * cdef public class _Document [ type LxmlDocumentType, object LxmlDocument ]: # <<<<<<<<<<<<<<
@@ -38,7 +38,7 @@ struct LxmlDocument {
38
38
  struct __pyx_obj_4lxml_5etree__BaseParser *_parser;
39
39
  };
40
40
 
41
- /* "lxml/etree.pyx":718
41
+ /* "lxml/etree.pyx":720
42
42
  *
43
43
  * @cython.no_gc_clear
44
44
  * cdef public class _Element [ type LxmlElementType, object LxmlElement ]: # <<<<<<<<<<<<<<
@@ -52,7 +52,7 @@ struct LxmlElement {
52
52
  PyObject *_tag;
53
53
  };
54
54
 
55
- /* "lxml/etree.pyx":1892
55
+ /* "lxml/etree.pyx":1895
56
56
  *
57
57
  *
58
58
  * cdef public class _ElementTree [ type LxmlElementTreeType, # <<<<<<<<<<<<<<
@@ -66,7 +66,7 @@ struct LxmlElementTree {
66
66
  struct LxmlElement *_context_node;
67
67
  };
68
68
 
69
- /* "lxml/etree.pyx":2666
69
+ /* "lxml/etree.pyx":2669
70
70
  *
71
71
  *
72
72
  * cdef public class _ElementTagMatcher [ object LxmlElementTagMatcher, # <<<<<<<<<<<<<<
@@ -82,7 +82,7 @@ struct LxmlElementTagMatcher {
82
82
  char *_name;
83
83
  };
84
84
 
85
- /* "lxml/etree.pyx":2697
85
+ /* "lxml/etree.pyx":2700
86
86
  * self._name = NULL
87
87
  *
88
88
  * cdef public class _ElementIterator(_ElementTagMatcher) [ # <<<<<<<<<<<<<<
lxml/lxml.etree_api.h CHANGED
@@ -1,4 +1,4 @@
1
- /* Generated by Cython 3.0.10 */
1
+ /* Generated by Cython 3.0.11 */
2
2
 
3
3
  #ifndef __PYX_HAVE_API__lxml__etree
4
4
  #define __PYX_HAVE_API__lxml__etree
@@ -98,9 +98,9 @@ static void (*__pyx_api_f_4lxml_5etree_initTagMatch)(struct LxmlElementTagMatche
98
98
  #define initTagMatch __pyx_api_f_4lxml_5etree_initTagMatch
99
99
  static xmlNs *(*__pyx_api_f_4lxml_5etree_findOrBuildNodeNsPrefix)(struct LxmlDocument *, xmlNode *, const xmlChar *, const xmlChar *) = 0;
100
100
  #define findOrBuildNodeNsPrefix __pyx_api_f_4lxml_5etree_findOrBuildNodeNsPrefix
101
- #ifndef __PYX_HAVE_RT_ImportFunction_3_0_10
102
- #define __PYX_HAVE_RT_ImportFunction_3_0_10
103
- static int __Pyx_ImportFunction_3_0_10(PyObject *module, const char *funcname, void (**f)(void), const char *sig) {
101
+ #ifndef __PYX_HAVE_RT_ImportFunction_3_0_11
102
+ #define __PYX_HAVE_RT_ImportFunction_3_0_11
103
+ static int __Pyx_ImportFunction_3_0_11(PyObject *module, const char *funcname, void (**f)(void), const char *sig) {
104
104
  PyObject *d = 0;
105
105
  PyObject *cobj = 0;
106
106
  union {
@@ -140,51 +140,51 @@ static int import_lxml__etree(void) {
140
140
  PyObject *module = 0;
141
141
  module = PyImport_ImportModule("lxml.etree");
142
142
  if (!module) goto bad;
143
- if (__Pyx_ImportFunction_3_0_10(module, "deepcopyNodeToDocument", (void (**)(void))&__pyx_api_f_4lxml_5etree_deepcopyNodeToDocument, "struct LxmlElement *(struct LxmlDocument *, xmlNode *)") < 0) goto bad;
144
- if (__Pyx_ImportFunction_3_0_10(module, "elementTreeFactory", (void (**)(void))&__pyx_api_f_4lxml_5etree_elementTreeFactory, "struct LxmlElementTree *(struct LxmlElement *)") < 0) goto bad;
145
- if (__Pyx_ImportFunction_3_0_10(module, "newElementTree", (void (**)(void))&__pyx_api_f_4lxml_5etree_newElementTree, "struct LxmlElementTree *(struct LxmlElement *, PyObject *)") < 0) goto bad;
146
- if (__Pyx_ImportFunction_3_0_10(module, "adoptExternalDocument", (void (**)(void))&__pyx_api_f_4lxml_5etree_adoptExternalDocument, "struct LxmlElementTree *(xmlDoc *, PyObject *, int)") < 0) goto bad;
147
- if (__Pyx_ImportFunction_3_0_10(module, "elementFactory", (void (**)(void))&__pyx_api_f_4lxml_5etree_elementFactory, "struct LxmlElement *(struct LxmlDocument *, xmlNode *)") < 0) goto bad;
148
- if (__Pyx_ImportFunction_3_0_10(module, "makeElement", (void (**)(void))&__pyx_api_f_4lxml_5etree_makeElement, "struct LxmlElement *(PyObject *, struct LxmlDocument *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *)") < 0) goto bad;
149
- if (__Pyx_ImportFunction_3_0_10(module, "makeSubElement", (void (**)(void))&__pyx_api_f_4lxml_5etree_makeSubElement, "struct LxmlElement *(struct LxmlElement *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *)") < 0) goto bad;
150
- if (__Pyx_ImportFunction_3_0_10(module, "setElementClassLookupFunction", (void (**)(void))&__pyx_api_f_4lxml_5etree_setElementClassLookupFunction, "void (_element_class_lookup_function, PyObject *)") < 0) goto bad;
151
- if (__Pyx_ImportFunction_3_0_10(module, "lookupDefaultElementClass", (void (**)(void))&__pyx_api_f_4lxml_5etree_lookupDefaultElementClass, "PyObject *(PyObject *, PyObject *, xmlNode *)") < 0) goto bad;
152
- if (__Pyx_ImportFunction_3_0_10(module, "lookupNamespaceElementClass", (void (**)(void))&__pyx_api_f_4lxml_5etree_lookupNamespaceElementClass, "PyObject *(PyObject *, PyObject *, xmlNode *)") < 0) goto bad;
153
- if (__Pyx_ImportFunction_3_0_10(module, "callLookupFallback", (void (**)(void))&__pyx_api_f_4lxml_5etree_callLookupFallback, "PyObject *(struct LxmlFallbackElementClassLookup *, struct LxmlDocument *, xmlNode *)") < 0) goto bad;
154
- if (__Pyx_ImportFunction_3_0_10(module, "tagMatches", (void (**)(void))&__pyx_api_f_4lxml_5etree_tagMatches, "int (xmlNode *, const xmlChar *, const xmlChar *)") < 0) goto bad;
155
- if (__Pyx_ImportFunction_3_0_10(module, "documentOrRaise", (void (**)(void))&__pyx_api_f_4lxml_5etree_documentOrRaise, "struct LxmlDocument *(PyObject *)") < 0) goto bad;
156
- if (__Pyx_ImportFunction_3_0_10(module, "rootNodeOrRaise", (void (**)(void))&__pyx_api_f_4lxml_5etree_rootNodeOrRaise, "struct LxmlElement *(PyObject *)") < 0) goto bad;
157
- if (__Pyx_ImportFunction_3_0_10(module, "hasText", (void (**)(void))&__pyx_api_f_4lxml_5etree_hasText, "int (xmlNode *)") < 0) goto bad;
158
- if (__Pyx_ImportFunction_3_0_10(module, "hasTail", (void (**)(void))&__pyx_api_f_4lxml_5etree_hasTail, "int (xmlNode *)") < 0) goto bad;
159
- if (__Pyx_ImportFunction_3_0_10(module, "textOf", (void (**)(void))&__pyx_api_f_4lxml_5etree_textOf, "PyObject *(xmlNode *)") < 0) goto bad;
160
- if (__Pyx_ImportFunction_3_0_10(module, "tailOf", (void (**)(void))&__pyx_api_f_4lxml_5etree_tailOf, "PyObject *(xmlNode *)") < 0) goto bad;
161
- if (__Pyx_ImportFunction_3_0_10(module, "setNodeText", (void (**)(void))&__pyx_api_f_4lxml_5etree_setNodeText, "int (xmlNode *, PyObject *)") < 0) goto bad;
162
- if (__Pyx_ImportFunction_3_0_10(module, "setTailText", (void (**)(void))&__pyx_api_f_4lxml_5etree_setTailText, "int (xmlNode *, PyObject *)") < 0) goto bad;
163
- if (__Pyx_ImportFunction_3_0_10(module, "attributeValue", (void (**)(void))&__pyx_api_f_4lxml_5etree_attributeValue, "PyObject *(xmlNode *, xmlAttr *)") < 0) goto bad;
164
- if (__Pyx_ImportFunction_3_0_10(module, "attributeValueFromNsName", (void (**)(void))&__pyx_api_f_4lxml_5etree_attributeValueFromNsName, "PyObject *(xmlNode *, const xmlChar *, const xmlChar *)") < 0) goto bad;
165
- if (__Pyx_ImportFunction_3_0_10(module, "getAttributeValue", (void (**)(void))&__pyx_api_f_4lxml_5etree_getAttributeValue, "PyObject *(struct LxmlElement *, PyObject *, PyObject *)") < 0) goto bad;
166
- if (__Pyx_ImportFunction_3_0_10(module, "iterattributes", (void (**)(void))&__pyx_api_f_4lxml_5etree_iterattributes, "PyObject *(struct LxmlElement *, int)") < 0) goto bad;
167
- if (__Pyx_ImportFunction_3_0_10(module, "collectAttributes", (void (**)(void))&__pyx_api_f_4lxml_5etree_collectAttributes, "PyObject *(xmlNode *, int)") < 0) goto bad;
168
- if (__Pyx_ImportFunction_3_0_10(module, "setAttributeValue", (void (**)(void))&__pyx_api_f_4lxml_5etree_setAttributeValue, "int (struct LxmlElement *, PyObject *, PyObject *)") < 0) goto bad;
169
- if (__Pyx_ImportFunction_3_0_10(module, "delAttribute", (void (**)(void))&__pyx_api_f_4lxml_5etree_delAttribute, "int (struct LxmlElement *, PyObject *)") < 0) goto bad;
170
- if (__Pyx_ImportFunction_3_0_10(module, "delAttributeFromNsName", (void (**)(void))&__pyx_api_f_4lxml_5etree_delAttributeFromNsName, "int (xmlNode *, const xmlChar *, const xmlChar *)") < 0) goto bad;
171
- if (__Pyx_ImportFunction_3_0_10(module, "hasChild", (void (**)(void))&__pyx_api_f_4lxml_5etree_hasChild, "int (xmlNode *)") < 0) goto bad;
172
- if (__Pyx_ImportFunction_3_0_10(module, "findChild", (void (**)(void))&__pyx_api_f_4lxml_5etree_findChild, "xmlNode *(xmlNode *, Py_ssize_t)") < 0) goto bad;
173
- if (__Pyx_ImportFunction_3_0_10(module, "findChildForwards", (void (**)(void))&__pyx_api_f_4lxml_5etree_findChildForwards, "xmlNode *(xmlNode *, Py_ssize_t)") < 0) goto bad;
174
- if (__Pyx_ImportFunction_3_0_10(module, "findChildBackwards", (void (**)(void))&__pyx_api_f_4lxml_5etree_findChildBackwards, "xmlNode *(xmlNode *, Py_ssize_t)") < 0) goto bad;
175
- if (__Pyx_ImportFunction_3_0_10(module, "nextElement", (void (**)(void))&__pyx_api_f_4lxml_5etree_nextElement, "xmlNode *(xmlNode *)") < 0) goto bad;
176
- if (__Pyx_ImportFunction_3_0_10(module, "previousElement", (void (**)(void))&__pyx_api_f_4lxml_5etree_previousElement, "xmlNode *(xmlNode *)") < 0) goto bad;
177
- if (__Pyx_ImportFunction_3_0_10(module, "appendChild", (void (**)(void))&__pyx_api_f_4lxml_5etree_appendChild, "void (struct LxmlElement *, struct LxmlElement *)") < 0) goto bad;
178
- if (__Pyx_ImportFunction_3_0_10(module, "appendChildToElement", (void (**)(void))&__pyx_api_f_4lxml_5etree_appendChildToElement, "int (struct LxmlElement *, struct LxmlElement *)") < 0) goto bad;
179
- if (__Pyx_ImportFunction_3_0_10(module, "pyunicode", (void (**)(void))&__pyx_api_f_4lxml_5etree_pyunicode, "PyObject *(const xmlChar *)") < 0) goto bad;
180
- if (__Pyx_ImportFunction_3_0_10(module, "utf8", (void (**)(void))&__pyx_api_f_4lxml_5etree_utf8, "PyObject *(PyObject *)") < 0) goto bad;
181
- if (__Pyx_ImportFunction_3_0_10(module, "getNsTag", (void (**)(void))&__pyx_api_f_4lxml_5etree_getNsTag, "PyObject *(PyObject *)") < 0) goto bad;
182
- if (__Pyx_ImportFunction_3_0_10(module, "getNsTagWithEmptyNs", (void (**)(void))&__pyx_api_f_4lxml_5etree_getNsTagWithEmptyNs, "PyObject *(PyObject *)") < 0) goto bad;
183
- if (__Pyx_ImportFunction_3_0_10(module, "namespacedName", (void (**)(void))&__pyx_api_f_4lxml_5etree_namespacedName, "PyObject *(xmlNode *)") < 0) goto bad;
184
- if (__Pyx_ImportFunction_3_0_10(module, "namespacedNameFromNsName", (void (**)(void))&__pyx_api_f_4lxml_5etree_namespacedNameFromNsName, "PyObject *(const xmlChar *, const xmlChar *)") < 0) goto bad;
185
- if (__Pyx_ImportFunction_3_0_10(module, "iteratorStoreNext", (void (**)(void))&__pyx_api_f_4lxml_5etree_iteratorStoreNext, "void (struct LxmlElementIterator *, struct LxmlElement *)") < 0) goto bad;
186
- if (__Pyx_ImportFunction_3_0_10(module, "initTagMatch", (void (**)(void))&__pyx_api_f_4lxml_5etree_initTagMatch, "void (struct LxmlElementTagMatcher *, PyObject *)") < 0) goto bad;
187
- if (__Pyx_ImportFunction_3_0_10(module, "findOrBuildNodeNsPrefix", (void (**)(void))&__pyx_api_f_4lxml_5etree_findOrBuildNodeNsPrefix, "xmlNs *(struct LxmlDocument *, xmlNode *, const xmlChar *, const xmlChar *)") < 0) goto bad;
143
+ if (__Pyx_ImportFunction_3_0_11(module, "deepcopyNodeToDocument", (void (**)(void))&__pyx_api_f_4lxml_5etree_deepcopyNodeToDocument, "struct LxmlElement *(struct LxmlDocument *, xmlNode *)") < 0) goto bad;
144
+ if (__Pyx_ImportFunction_3_0_11(module, "elementTreeFactory", (void (**)(void))&__pyx_api_f_4lxml_5etree_elementTreeFactory, "struct LxmlElementTree *(struct LxmlElement *)") < 0) goto bad;
145
+ if (__Pyx_ImportFunction_3_0_11(module, "newElementTree", (void (**)(void))&__pyx_api_f_4lxml_5etree_newElementTree, "struct LxmlElementTree *(struct LxmlElement *, PyObject *)") < 0) goto bad;
146
+ if (__Pyx_ImportFunction_3_0_11(module, "adoptExternalDocument", (void (**)(void))&__pyx_api_f_4lxml_5etree_adoptExternalDocument, "struct LxmlElementTree *(xmlDoc *, PyObject *, int)") < 0) goto bad;
147
+ if (__Pyx_ImportFunction_3_0_11(module, "elementFactory", (void (**)(void))&__pyx_api_f_4lxml_5etree_elementFactory, "struct LxmlElement *(struct LxmlDocument *, xmlNode *)") < 0) goto bad;
148
+ if (__Pyx_ImportFunction_3_0_11(module, "makeElement", (void (**)(void))&__pyx_api_f_4lxml_5etree_makeElement, "struct LxmlElement *(PyObject *, struct LxmlDocument *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *)") < 0) goto bad;
149
+ if (__Pyx_ImportFunction_3_0_11(module, "makeSubElement", (void (**)(void))&__pyx_api_f_4lxml_5etree_makeSubElement, "struct LxmlElement *(struct LxmlElement *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *)") < 0) goto bad;
150
+ if (__Pyx_ImportFunction_3_0_11(module, "setElementClassLookupFunction", (void (**)(void))&__pyx_api_f_4lxml_5etree_setElementClassLookupFunction, "void (_element_class_lookup_function, PyObject *)") < 0) goto bad;
151
+ if (__Pyx_ImportFunction_3_0_11(module, "lookupDefaultElementClass", (void (**)(void))&__pyx_api_f_4lxml_5etree_lookupDefaultElementClass, "PyObject *(PyObject *, PyObject *, xmlNode *)") < 0) goto bad;
152
+ if (__Pyx_ImportFunction_3_0_11(module, "lookupNamespaceElementClass", (void (**)(void))&__pyx_api_f_4lxml_5etree_lookupNamespaceElementClass, "PyObject *(PyObject *, PyObject *, xmlNode *)") < 0) goto bad;
153
+ if (__Pyx_ImportFunction_3_0_11(module, "callLookupFallback", (void (**)(void))&__pyx_api_f_4lxml_5etree_callLookupFallback, "PyObject *(struct LxmlFallbackElementClassLookup *, struct LxmlDocument *, xmlNode *)") < 0) goto bad;
154
+ if (__Pyx_ImportFunction_3_0_11(module, "tagMatches", (void (**)(void))&__pyx_api_f_4lxml_5etree_tagMatches, "int (xmlNode *, const xmlChar *, const xmlChar *)") < 0) goto bad;
155
+ if (__Pyx_ImportFunction_3_0_11(module, "documentOrRaise", (void (**)(void))&__pyx_api_f_4lxml_5etree_documentOrRaise, "struct LxmlDocument *(PyObject *)") < 0) goto bad;
156
+ if (__Pyx_ImportFunction_3_0_11(module, "rootNodeOrRaise", (void (**)(void))&__pyx_api_f_4lxml_5etree_rootNodeOrRaise, "struct LxmlElement *(PyObject *)") < 0) goto bad;
157
+ if (__Pyx_ImportFunction_3_0_11(module, "hasText", (void (**)(void))&__pyx_api_f_4lxml_5etree_hasText, "int (xmlNode *)") < 0) goto bad;
158
+ if (__Pyx_ImportFunction_3_0_11(module, "hasTail", (void (**)(void))&__pyx_api_f_4lxml_5etree_hasTail, "int (xmlNode *)") < 0) goto bad;
159
+ if (__Pyx_ImportFunction_3_0_11(module, "textOf", (void (**)(void))&__pyx_api_f_4lxml_5etree_textOf, "PyObject *(xmlNode *)") < 0) goto bad;
160
+ if (__Pyx_ImportFunction_3_0_11(module, "tailOf", (void (**)(void))&__pyx_api_f_4lxml_5etree_tailOf, "PyObject *(xmlNode *)") < 0) goto bad;
161
+ if (__Pyx_ImportFunction_3_0_11(module, "setNodeText", (void (**)(void))&__pyx_api_f_4lxml_5etree_setNodeText, "int (xmlNode *, PyObject *)") < 0) goto bad;
162
+ if (__Pyx_ImportFunction_3_0_11(module, "setTailText", (void (**)(void))&__pyx_api_f_4lxml_5etree_setTailText, "int (xmlNode *, PyObject *)") < 0) goto bad;
163
+ if (__Pyx_ImportFunction_3_0_11(module, "attributeValue", (void (**)(void))&__pyx_api_f_4lxml_5etree_attributeValue, "PyObject *(xmlNode *, xmlAttr *)") < 0) goto bad;
164
+ if (__Pyx_ImportFunction_3_0_11(module, "attributeValueFromNsName", (void (**)(void))&__pyx_api_f_4lxml_5etree_attributeValueFromNsName, "PyObject *(xmlNode *, const xmlChar *, const xmlChar *)") < 0) goto bad;
165
+ if (__Pyx_ImportFunction_3_0_11(module, "getAttributeValue", (void (**)(void))&__pyx_api_f_4lxml_5etree_getAttributeValue, "PyObject *(struct LxmlElement *, PyObject *, PyObject *)") < 0) goto bad;
166
+ if (__Pyx_ImportFunction_3_0_11(module, "iterattributes", (void (**)(void))&__pyx_api_f_4lxml_5etree_iterattributes, "PyObject *(struct LxmlElement *, int)") < 0) goto bad;
167
+ if (__Pyx_ImportFunction_3_0_11(module, "collectAttributes", (void (**)(void))&__pyx_api_f_4lxml_5etree_collectAttributes, "PyObject *(xmlNode *, int)") < 0) goto bad;
168
+ if (__Pyx_ImportFunction_3_0_11(module, "setAttributeValue", (void (**)(void))&__pyx_api_f_4lxml_5etree_setAttributeValue, "int (struct LxmlElement *, PyObject *, PyObject *)") < 0) goto bad;
169
+ if (__Pyx_ImportFunction_3_0_11(module, "delAttribute", (void (**)(void))&__pyx_api_f_4lxml_5etree_delAttribute, "int (struct LxmlElement *, PyObject *)") < 0) goto bad;
170
+ if (__Pyx_ImportFunction_3_0_11(module, "delAttributeFromNsName", (void (**)(void))&__pyx_api_f_4lxml_5etree_delAttributeFromNsName, "int (xmlNode *, const xmlChar *, const xmlChar *)") < 0) goto bad;
171
+ if (__Pyx_ImportFunction_3_0_11(module, "hasChild", (void (**)(void))&__pyx_api_f_4lxml_5etree_hasChild, "int (xmlNode *)") < 0) goto bad;
172
+ if (__Pyx_ImportFunction_3_0_11(module, "findChild", (void (**)(void))&__pyx_api_f_4lxml_5etree_findChild, "xmlNode *(xmlNode *, Py_ssize_t)") < 0) goto bad;
173
+ if (__Pyx_ImportFunction_3_0_11(module, "findChildForwards", (void (**)(void))&__pyx_api_f_4lxml_5etree_findChildForwards, "xmlNode *(xmlNode *, Py_ssize_t)") < 0) goto bad;
174
+ if (__Pyx_ImportFunction_3_0_11(module, "findChildBackwards", (void (**)(void))&__pyx_api_f_4lxml_5etree_findChildBackwards, "xmlNode *(xmlNode *, Py_ssize_t)") < 0) goto bad;
175
+ if (__Pyx_ImportFunction_3_0_11(module, "nextElement", (void (**)(void))&__pyx_api_f_4lxml_5etree_nextElement, "xmlNode *(xmlNode *)") < 0) goto bad;
176
+ if (__Pyx_ImportFunction_3_0_11(module, "previousElement", (void (**)(void))&__pyx_api_f_4lxml_5etree_previousElement, "xmlNode *(xmlNode *)") < 0) goto bad;
177
+ if (__Pyx_ImportFunction_3_0_11(module, "appendChild", (void (**)(void))&__pyx_api_f_4lxml_5etree_appendChild, "void (struct LxmlElement *, struct LxmlElement *)") < 0) goto bad;
178
+ if (__Pyx_ImportFunction_3_0_11(module, "appendChildToElement", (void (**)(void))&__pyx_api_f_4lxml_5etree_appendChildToElement, "int (struct LxmlElement *, struct LxmlElement *)") < 0) goto bad;
179
+ if (__Pyx_ImportFunction_3_0_11(module, "pyunicode", (void (**)(void))&__pyx_api_f_4lxml_5etree_pyunicode, "PyObject *(const xmlChar *)") < 0) goto bad;
180
+ if (__Pyx_ImportFunction_3_0_11(module, "utf8", (void (**)(void))&__pyx_api_f_4lxml_5etree_utf8, "PyObject *(PyObject *)") < 0) goto bad;
181
+ if (__Pyx_ImportFunction_3_0_11(module, "getNsTag", (void (**)(void))&__pyx_api_f_4lxml_5etree_getNsTag, "PyObject *(PyObject *)") < 0) goto bad;
182
+ if (__Pyx_ImportFunction_3_0_11(module, "getNsTagWithEmptyNs", (void (**)(void))&__pyx_api_f_4lxml_5etree_getNsTagWithEmptyNs, "PyObject *(PyObject *)") < 0) goto bad;
183
+ if (__Pyx_ImportFunction_3_0_11(module, "namespacedName", (void (**)(void))&__pyx_api_f_4lxml_5etree_namespacedName, "PyObject *(xmlNode *)") < 0) goto bad;
184
+ if (__Pyx_ImportFunction_3_0_11(module, "namespacedNameFromNsName", (void (**)(void))&__pyx_api_f_4lxml_5etree_namespacedNameFromNsName, "PyObject *(const xmlChar *, const xmlChar *)") < 0) goto bad;
185
+ if (__Pyx_ImportFunction_3_0_11(module, "iteratorStoreNext", (void (**)(void))&__pyx_api_f_4lxml_5etree_iteratorStoreNext, "void (struct LxmlElementIterator *, struct LxmlElement *)") < 0) goto bad;
186
+ if (__Pyx_ImportFunction_3_0_11(module, "initTagMatch", (void (**)(void))&__pyx_api_f_4lxml_5etree_initTagMatch, "void (struct LxmlElementTagMatcher *, PyObject *)") < 0) goto bad;
187
+ if (__Pyx_ImportFunction_3_0_11(module, "findOrBuildNodeNsPrefix", (void (**)(void))&__pyx_api_f_4lxml_5etree_findOrBuildNodeNsPrefix, "xmlNs *(struct LxmlDocument *, xmlNode *, const xmlChar *, const xmlChar *)") < 0) goto bad;
188
188
  Py_DECREF(module); module = 0;
189
189
  return 0;
190
190
  bad:
Binary file
lxml/parser.pxi CHANGED
@@ -1747,9 +1747,11 @@ _HTML_DEFAULT_PARSE_OPTIONS = (
1747
1747
  htmlparser.HTML_PARSE_COMPACT
1748
1748
  )
1749
1749
 
1750
+ cdef object _UNUSED = object()
1751
+
1750
1752
  cdef class HTMLParser(_FeedParser):
1751
1753
  """HTMLParser(self, encoding=None, remove_blank_text=False, \
1752
- remove_comments=False, remove_pis=False, strip_cdata=True, \
1754
+ remove_comments=False, remove_pis=False, \
1753
1755
  no_network=True, target=None, schema: XMLSchema =None, \
1754
1756
  recover=True, compact=True, collect_ids=True, huge_tree=False)
1755
1757
 
@@ -1767,7 +1769,6 @@ cdef class HTMLParser(_FeedParser):
1767
1769
  - remove_blank_text - discard empty text nodes that are ignorable (i.e. not actual text content)
1768
1770
  - remove_comments - discard comments
1769
1771
  - remove_pis - discard processing instructions
1770
- - strip_cdata - replace CDATA sections by normal text content (default: True)
1771
1772
  - compact - save memory for short text content (default: True)
1772
1773
  - default_doctype - add a default doctype even if it is not found in the HTML (default: True)
1773
1774
  - collect_ids - use a hash table of XML IDs for fast access (default: True)
@@ -1784,7 +1785,7 @@ cdef class HTMLParser(_FeedParser):
1784
1785
  reasons.
1785
1786
  """
1786
1787
  def __init__(self, *, encoding=None, remove_blank_text=False,
1787
- remove_comments=False, remove_pis=False, strip_cdata=True,
1788
+ remove_comments=False, remove_pis=False, strip_cdata=_UNUSED,
1788
1789
  no_network=True, target=None, XMLSchema schema=None,
1789
1790
  recover=True, compact=True, default_doctype=True,
1790
1791
  collect_ids=True, huge_tree=False):
@@ -1803,6 +1804,11 @@ cdef class HTMLParser(_FeedParser):
1803
1804
  if huge_tree:
1804
1805
  parse_options = parse_options | xmlparser.XML_PARSE_HUGE
1805
1806
 
1807
+ if strip_cdata is not _UNUSED:
1808
+ import warnings
1809
+ warnings.warn(
1810
+ "The 'strip_cdata' option of HTMLParser() has never done anything and will eventually be removed.",
1811
+ DeprecationWarning)
1806
1812
  _BaseParser.__init__(self, parse_options, True, schema,
1807
1813
  remove_comments, remove_pis, strip_cdata,
1808
1814
  collect_ids, target, encoding)
Binary file
lxml/serializer.pxi CHANGED
@@ -403,53 +403,10 @@ cdef void _writeNextSiblings(tree.xmlOutputBuffer* c_buffer, xmlNode* c_node,
403
403
  c_sibling = c_sibling.next
404
404
 
405
405
 
406
- # copied and adapted from libxml2
407
- cdef unsigned char *xmlSerializeHexCharRef(unsigned char *out, int val) noexcept:
408
- cdef xmlChar *ptr
409
- cdef const xmlChar* hexdigits = b"0123456789ABCDEF"
410
-
411
- out[0] = b'&'
412
- out += 1
413
- out[0] = b'#'
414
- out += 1
415
- out[0] = b'x'
416
- out += 1
417
-
418
- if val < 0x10:
419
- ptr = out
420
- elif val < 0x100:
421
- ptr = out + 1
422
- elif val < 0x1000:
423
- ptr = out + 2
424
- elif val < 0x10000:
425
- ptr = out + 3
426
- elif val < 0x100000:
427
- ptr = out + 4
428
- else:
429
- ptr = out + 5
430
-
431
- out = ptr + 1
432
- while val > 0:
433
- ptr[0] = hexdigits[val & 0xF]
434
- ptr -= 1
435
- val >>= 4
436
-
437
- out[0] = b';'
438
- out += 1
439
- out[0] = 0
440
-
441
- return out
442
-
443
-
444
406
  # copied and adapted from libxml2 (xmlBufAttrSerializeTxtContent())
445
407
  cdef _write_attr_string(tree.xmlOutputBuffer* buf, const char *string):
446
408
  cdef const char *base
447
409
  cdef const char *cur
448
- cdef const unsigned char *ucur
449
-
450
- cdef unsigned char tmp[12]
451
- cdef int val = 0
452
- cdef int l
453
410
 
454
411
  if string == NULL:
455
412
  return
@@ -511,57 +468,8 @@ cdef _write_attr_string(tree.xmlOutputBuffer* buf, const char *string):
511
468
  cur += 1
512
469
  base = cur
513
470
 
514
- elif (<const unsigned char>cur[0] >= 0x80) and (cur[1] != 0):
515
-
516
- if base != cur:
517
- tree.xmlOutputBufferWrite(buf, cur - base, base)
518
-
519
- ucur = <const unsigned char *>cur
520
-
521
- if ucur[0] < 0xC0:
522
- # invalid UTF-8 sequence
523
- val = ucur[0]
524
- l = 1
525
-
526
- elif ucur[0] < 0xE0:
527
- val = (ucur[0]) & 0x1F
528
- val <<= 6
529
- val |= (ucur[1]) & 0x3F
530
- l = 2
531
-
532
- elif (ucur[0] < 0xF0) and (ucur[2] != 0):
533
- val = (ucur[0]) & 0x0F
534
- val <<= 6
535
- val |= (ucur[1]) & 0x3F
536
- val <<= 6
537
- val |= (ucur[2]) & 0x3F
538
- l = 3
539
-
540
- elif (ucur[0] < 0xF8) and (ucur[2] != 0) and (ucur[3] != 0):
541
- val = (ucur[0]) & 0x07
542
- val <<= 6
543
- val |= (ucur[1]) & 0x3F
544
- val <<= 6
545
- val |= (ucur[2]) & 0x3F
546
- val <<= 6
547
- val |= (ucur[3]) & 0x3F
548
- l = 4
549
- else:
550
- # invalid UTF-8 sequence
551
- val = ucur[0]
552
- l = 1
553
-
554
- if (l == 1) or (not tree.xmlIsCharQ(val)):
555
- raise ValueError(f"Invalid character: {val:X}")
556
-
557
- # We could do multiple things here. Just save
558
- # as a char ref
559
- xmlSerializeHexCharRef(tmp, val)
560
- tree.xmlOutputBufferWrite(buf, len(tmp), <const char*> tmp)
561
- cur += l
562
- base = cur
563
-
564
471
  else:
472
+ # Leave further encoding and escaping to the buffer encoder.
565
473
  cur += 1
566
474
 
567
475
  if base != cur:
@@ -1412,9 +1320,11 @@ cdef class _IncrementalFileWriter:
1412
1320
  self._status = WRITER_STARTING
1413
1321
  self._element_stack = []
1414
1322
  if encoding is None:
1323
+ # We always need a document encoding to make the attribute serialisation
1324
+ # of libxml2 identical to ours.
1415
1325
  encoding = b'ASCII'
1416
1326
  self._encoding = encoding
1417
- self._c_encoding = _cstr(encoding) if encoding is not None else NULL
1327
+ self._c_encoding = _cstr(encoding)
1418
1328
  self._buffered = buffered
1419
1329
  self._target = _create_output_buffer(
1420
1330
  outfile, self._c_encoding, compresslevel, &self._c_out, close)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: lxml
3
- Version: 5.2.2
3
+ Version: 5.3.1
4
4
  Summary: Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API.
5
5
  Home-page: https://lxml.de/
6
6
  Author: lxml dev team
@@ -40,7 +40,7 @@ Requires-Dist: lxml-html-clean ; extra == 'html_clean'
40
40
  Provides-Extra: htmlsoup
41
41
  Requires-Dist: BeautifulSoup4 ; extra == 'htmlsoup'
42
42
  Provides-Extra: source
43
- Requires-Dist: Cython (>=3.0.10) ; extra == 'source'
43
+ Requires-Dist: Cython (<3.1.0,>=3.0.11) ; extra == 'source'
44
44
 
45
45
  lxml is a Pythonic, mature binding for the libxml2 and libxslt libraries. It
46
46
  provides safe and convenient access to these libraries using the ElementTree
@@ -65,26 +65,30 @@ an appropriate version of Cython installed.
65
65
 
66
66
  After an official release of a new stable series, bug fixes may become
67
67
  available at
68
- https://github.com/lxml/lxml/tree/lxml-5.2 .
69
- Running ``easy_install lxml==5.2bugfix`` will install
68
+ https://github.com/lxml/lxml/tree/lxml-5.3 .
69
+ Running ``easy_install lxml==5.3bugfix`` will install
70
70
  the unreleased branch state from
71
- https://github.com/lxml/lxml/tarball/lxml-5.2#egg=lxml-5.2bugfix
71
+ https://github.com/lxml/lxml/tarball/lxml-5.3#egg=lxml-5.3bugfix
72
72
  as soon as a maintenance branch has been established. Note that this
73
73
  requires Cython to be installed at an appropriate version for the build.
74
74
 
75
- 5.2.2 (2024-05-12)
75
+ 5.3.1 (2025-02-09)
76
76
  ==================
77
77
 
78
78
  Bugs fixed
79
79
  ----------
80
80
 
81
- * GH#417: The ``test_feed_parser`` test could fail if ``lxml_html_clean`` was not installed.
82
- It is now skipped in that case.
81
+ * GH#440: Some tests were adapted for libxml2 2.14.0.
82
+ Patch by Nick Wellnhofer.
83
83
 
84
- * LP#2059910: The minimum CPU architecture for the Linux x86 binary wheels was set back to
85
- "core2", without SSE 4.2.
84
+ * LP#2097175: ``DTD(external_id="…")`` erroneously required a byte string as ID value.
86
85
 
87
- * If libxml2 uses iconv, the compile time version is available as `etree.ICONV_COMPILED_VERSION`.
86
+ * GH#450: ``iterparse()`` internally triggered the `DeprecationWarning`` added in lxml 5.3.0 when parsing HTML.
87
+
88
+ Other changes
89
+ -------------
90
+
91
+ * GH#442: Binary wheels for macOS no longer use the linker flag ``-flat_namespace``.
88
92
 
89
93
 
90
94
 
@@ -1,9 +1,9 @@
1
1
  lxml/ElementInclude.py,sha256=PSLeZFvCa76WHJulPLxcZXJtCI2-4dK2CtqPRiYOAQg,8560
2
- lxml/__init__.py,sha256=4yaU1-HfwsVESfRytVX_ANAhtFAmFLhzBtZNkXaaAew,574
3
- lxml/_elementpath.cpython-36m-darwin.so,sha256=NAyGapXDnfghNO9L5DWSP7_4VpAJyZjOYOtND_mjC3g,197072
2
+ lxml/__init__.py,sha256=C88y6BFzhYlNhQIHXh1_Dz49bwKmUnhJJfq_PxM7mTI,574
3
+ lxml/_elementpath.cpython-36m-darwin.so,sha256=kFLsxzX2WksbDKzcBxdHw15lc3vHseRMW4iwSTpDJzI,192976
4
4
  lxml/_elementpath.py,sha256=5-PzX8ZIxPIvESKDGVL829sejYkvx991FSQyM-J0LqE,10888
5
5
  lxml/apihelpers.pxi,sha256=zipCUecXzy5INij_qdEEqZoLp9LYB3CJQUzIzFVH1Ow,63610
6
- lxml/builder.cpython-36m-darwin.so,sha256=G24BljKz90TXvSrsM8Zmtejjp-K997qO4LTUrGhC2yw,126856
6
+ lxml/builder.cpython-36m-darwin.so,sha256=oidFCKTPnOppsJyGSbIRIkXwPWnQfohpz3JZKy5oYCA,102280
7
7
  lxml/builder.py,sha256=XD0DQc_G-D950Ym2NwDqxF2v9frtldxdfmvYhxhpP64,8100
8
8
  lxml/classlookup.pxi,sha256=Tax8Vhbm5C6UCjgmRFsYjW0pFHxIuTthH1MOgASDLgc,22435
9
9
  lxml/cleanup.pxi,sha256=ZNEpbv7qx_ICPzsxhCaMUHCOfiznOoZ_u3jlYXHAuh4,8454
@@ -11,31 +11,31 @@ lxml/cssselect.py,sha256=_wZdX-B9p5MeIYABmENIYRWEkwXwX-7jO8Dkf-1rUZU,3306
11
11
  lxml/debug.pxi,sha256=zhxiMeNnKtkjn_FWboHk1T-Vtcg_vEGV8jfYK0XyXHM,3282
12
12
  lxml/docloader.pxi,sha256=bYSZAxxbBEfVzfLXTUWFRfOyUTfV23L7i9hR2dgtSNY,5772
13
13
  lxml/doctestcompare.py,sha256=40EDnkwpcvW86qNa86990OXF42xdHaosSZoiBsEjkzU,17731
14
- lxml/dtd.pxi,sha256=y2i_PVKnlWCe9VGchgM6t8lIljtVfbWSXuWC-rEbzeE,15228
15
- lxml/etree.cpython-36m-darwin.so,sha256=N9AJA3wlriABlxx8eRC_rP-KrTWQfjIV1zFcMt9ITFo,4782776
16
- lxml/etree.h,sha256=kF0YtzECn-SGPPgu_M6JgpgpBIrgDqcCMEBnuQKjF38,9912
17
- lxml/etree.pyx,sha256=LFQbkC_uIMFUS0F5O5tj0Wmog-MsFcF6VBdP8H2yqdQ,134556
18
- lxml/etree_api.h,sha256=XDHi7lgGoIcyoS8hB27di8OAb0RC6ubGs3ETzd3KDSE,17063
14
+ lxml/dtd.pxi,sha256=IAKkmA4ZoC68sqAWcTqoS8jEGYcPQrVMCZgn4iLBYko,15281
15
+ lxml/etree.cpython-36m-darwin.so,sha256=CZOhAHPURgkLJcn-3rak0JysHl8e6Dx16AYeyYH1qow,4796264
16
+ lxml/etree.h,sha256=LkW1ggNgVtN6OkYtnTMuRUS5tCNcQ_QcdveBB8TcQgs,9912
17
+ lxml/etree.pyx,sha256=LhRTPTEvlFT3PA7L4vvidp9HYQVqX78VZEPUj2ENlSE,134517
18
+ lxml/etree_api.h,sha256=kVJ_gwZ1gF3GgGTpD324jh4RJSwSVX3XOqoNuoJur9o,17063
19
19
  lxml/extensions.pxi,sha256=58O6mBbDeWnkiIsRd9T7mLodylo7typz2dbjpJryAyY,32088
20
- lxml/iterparse.pxi,sha256=HcHYTLU6cs1R7GOik62rEkTebgsz1fYttk00iKfOtcw,16527
21
- lxml/lxml.etree.h,sha256=kF0YtzECn-SGPPgu_M6JgpgpBIrgDqcCMEBnuQKjF38,9912
22
- lxml/lxml.etree_api.h,sha256=10b-ePscCH-tL0k-Ve4JD109sxsFJQnNcLXet_7U8wc,17068
20
+ lxml/iterparse.pxi,sha256=JXvYhSOCaRjT_hYbRGMlJt2rlqx0TiRpN4FE1jQc63w,16521
21
+ lxml/lxml.etree.h,sha256=LkW1ggNgVtN6OkYtnTMuRUS5tCNcQ_QcdveBB8TcQgs,9912
22
+ lxml/lxml.etree_api.h,sha256=VOjk6v1RVrOiSPrhzYZrRUDddL20E3Va6j1vdbYsvg0,17068
23
23
  lxml/nsclasses.pxi,sha256=5pzNBhBtlqObPdThL9QIGRs1Dxj1qnr0PyXuTCURqTg,9129
24
- lxml/objectify.cpython-36m-darwin.so,sha256=pzLtamMB6__y8Ftc1FofGTs0doTnG5gqInx8FuXUrRQ,2825272
24
+ lxml/objectify.cpython-36m-darwin.so,sha256=2DGIAEOgNS5QUhbYvijqeXPsjudXofJMSBh_hedAKLI,2818432
25
25
  lxml/objectify.pyx,sha256=pvaZmS21G-qlNjPuVaB_dgGgi0alxNALo7gFOV8Ispc,75735
26
26
  lxml/objectpath.pxi,sha256=s5TNG2-EbaWWKLFAiX303B95zK_Ui8ausB__3QvFFGw,11450
27
- lxml/parser.pxi,sha256=9R2rdzq1f8LOaKSAzAnFghB3rAspy4vcMTB6q8u0RSA,81866
27
+ lxml/parser.pxi,sha256=LnahQZQl0qCLWtH1NMMHy0_fwG7maRsL-py0q5lauw0,82040
28
28
  lxml/parsertarget.pxi,sha256=v1PidxRaG5giwXcTDkpBI7PDFmsZuOcK0y9LdkQaY8M,6326
29
29
  lxml/proxy.pxi,sha256=TPfavn4-ufhVlr-GKciz2qXCTUFtvGdxO-F-h30yIws,23697
30
30
  lxml/public-api.pxi,sha256=XoP6_cJOEoQIItvE1RiYCKYD1ry4AobaOr4XLo0KSE4,6666
31
31
  lxml/pyclasslookup.py,sha256=gLD1HM2HtITYYiGzjEOewSwbB7XkVx_NZv_quCt79Oc,92
32
32
  lxml/readonlytree.pxi,sha256=ddRYczhHieJ4XUvWvTPW9N9oQ8vuKtv7lC1mtE1qvH8,18976
33
33
  lxml/relaxng.pxi,sha256=3OQ-fZMzP-KF5vM6HTozT_9ee3J0DJnpj9RcHC8LoMw,6339
34
- lxml/sax.cpython-36m-darwin.so,sha256=UGccv2rwe3YMIjUi2Vh1hxtAIzaIH460FLRgeAbd9bk,184424
34
+ lxml/sax.cpython-36m-darwin.so,sha256=Fi9PLPkDSLmnZuvBEm1BGIVe2a7S12C_yxH0BbRshnM,163944
35
35
  lxml/sax.py,sha256=8e9Ef4Cfbwr7AHMGCBBZcotBkOehQtdaCxsVCgWM5_c,9303
36
36
  lxml/saxparser.pxi,sha256=9nJEnVFFFx7vueUJ3fSeDjxG4gLgrXsDBWVkD_f8U1Q,33322
37
37
  lxml/schematron.pxi,sha256=hFn1p4egpvvz-Tkk2AH7cbVOavTC-A7mzHABHrGh7g4,5908
38
- lxml/serializer.pxi,sha256=OQ378sWrl0v3Cv1qomE3T0K2x6WMTukkguQ4XLvA_gI,67962
38
+ lxml/serializer.pxi,sha256=kiHyYa5EK1T_hpsXni-JSa6XuhXlU4BaESP0c-Qkbek,65753
39
39
  lxml/usedoctest.py,sha256=qRgZKQVcAZcl-zN0AIXVJnOsETUXz2nPXkxuzs1lGgk,230
40
40
  lxml/xinclude.pxi,sha256=7eBrI_OK47mmrHQ0ixbixRI8pKqQ1nwkMV-OmKUVlD4,2456
41
41
  lxml/xmlerror.pxi,sha256=K7YIB21sLWdf_2GxyUymRZ5vDr3O4OJ5vGjrklBGa6o,49854
@@ -52,7 +52,7 @@ lxml/html/_setmixin.py,sha256=8IFIOLmVz0G-XzsD2tCEkSFWO-dgPBHgvHufC8ni67s,1188
52
52
  lxml/html/builder.py,sha256=aRgS-Ea9bli-muGX0iUQGKAe9D93P8BspQ2WPuiWJcU,4492
53
53
  lxml/html/clean.py,sha256=FghSJy4jt2RaBy6dgusowkU18hxpZ4XLE5ceCK9qxyA,503
54
54
  lxml/html/defs.py,sha256=ZzOp2TmY9f_ein9GIcDPyN8-f5HVptzSj56umimWub4,4236
55
- lxml/html/diff.cpython-36m-darwin.so,sha256=40-EPayDmTI4jYdGl-b2gGVnA5QXqA-3XqVlfCbdn5E,354792
55
+ lxml/html/diff.cpython-36m-darwin.so,sha256=0aAehmTkte0e-fig4agzfUI32M8rXXsKow-KsBOzZQo,346600
56
56
  lxml/html/diff.py,sha256=n2jMJW8D2OYfG-SKbdmpSjZ3Lwk516WwJfMn6yvQiuM,30393
57
57
  lxml/html/formfill.py,sha256=umgk0BbkAI1W6q9musFbL-cDnI_aap2NsLBJqk0UmVI,9681
58
58
  lxml/html/html5parser.py,sha256=dnyC4cqHxywjZSzk0mu2L7THTZjxhg4yF4pncjusa_w,8634
@@ -66,7 +66,7 @@ lxml/includes/dtdvalid.pxd,sha256=Nv0OykjYehv2lO-Zj--q6jS3TAC_dvQVPSgPMuse1NM,68
66
66
  lxml/includes/etree_defs.h,sha256=wWC0nsE3NCLBABsKjo_UMBtUJr7yPL7-e8OLc-tGI5o,14245
67
67
  lxml/includes/etreepublic.pxd,sha256=Bn4d3JkWPqXputXqI-eJ0xmPrwNFPTfDCa7axgjB7FM,10184
68
68
  lxml/includes/htmlparser.pxd,sha256=9uASkP5dU7OE2lCOLT-z2e01qSbFlp4ehgwdostF_qk,2802
69
- lxml/includes/lxml-version.h,sha256=Ss9KftoD6dlQuVvmQGRKRM0IUuPI1MWiRGCsjaBft68,71
69
+ lxml/includes/lxml-version.h,sha256=AfD6JI9PZVUuwCeUT_L52dun4-ZzekpKD8bOCjGIHQM,71
70
70
  lxml/includes/relaxng.pxd,sha256=HzHlQ6mCcf_tj_JZ9NAVJTVAv8ScCkE8Ifq15y3bS0c,2615
71
71
  lxml/includes/schematron.pxd,sha256=Hob7xh-K-MKqp7WiG8thMagf5EkQzmgfi4ds0EF91JA,1604
72
72
  lxml/includes/tree.pxd,sha256=Z5mHkABQPlnwu81WTTq7R4fz17rJAkamOvXf_Jp-nxg,20391
@@ -84,7 +84,7 @@ lxml/includes/extlibs/zconf.h,sha256=ROVD_0UUx6mgHWSAGcLJqB0RBcv6PHfx-vbNhur6ir0
84
84
  lxml/includes/extlibs/zlib.h,sha256=ilV5r3LqT0J_8ApBUPDMs_xcHkN59ybhARM7Grn8YAw,96829
85
85
  lxml/includes/libexslt/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
86
86
  lxml/includes/libexslt/exslt.h,sha256=eSW5tMJAewSUANLqk7AGEiU8b2BbCNRyauHnez7nKSU,3114
87
- lxml/includes/libexslt/exsltconfig.h,sha256=I0m5Qut1Equ7peyWaseRI4jtPC5ENlOp4UthyUYI3QM,1172
87
+ lxml/includes/libexslt/exsltconfig.h,sha256=agTeMNvoGxvX30dbonoVhr5xRyb390Wjb_OFLCZz06E,1172
88
88
  lxml/includes/libexslt/exsltexports.h,sha256=1Jm9KTXm2FUUJIZ6V6-Uw55yG0BMULX3_goyxDd2LL8,1077
89
89
  lxml/includes/libxml/HTMLparser.h,sha256=ySe0Ebz_SqcymDMfwbuuXrWFjzk36u87-gEel_Nuctg,10008
90
90
  lxml/includes/libxml/HTMLtree.h,sha256=xQMeETDtY8XZnkV9rGkI4UgUIp71I4z2O3R_P1AEwc4,3502
@@ -103,7 +103,7 @@ lxml/includes/libxml/hash.h,sha256=NiQ7FIrpb5_fqLbqB_wuakO2hcbEjkjrLMkWsJ4u7z0,6
103
103
  lxml/includes/libxml/list.h,sha256=kwMDctdAgRtCGInjdXuaBAlNDrn5Vc87rdUNjHgUNH4,3140
104
104
  lxml/includes/libxml/nanoftp.h,sha256=q-OGmv3ltTTTbB_n6ehpGFJpS6wwME-pNTkxcYhHKvo,4013
105
105
  lxml/includes/libxml/nanohttp.h,sha256=jca5Z9jzu_Lb6ey7B90q6gjZHGlO82LUx0OsTulCl8E,1869
106
- lxml/includes/libxml/parser.h,sha256=payh3SrRC3q1IBC6OT_RSTZK8Wp1KUoEcca43p-2pds,44410
106
+ lxml/includes/libxml/parser.h,sha256=4Bg_i5vI9fn_L3IcNok18l1ceX9OlwHg-2Aimeh5KH8,44395
107
107
  lxml/includes/libxml/parserInternals.h,sha256=ZVSsuLs_K-Ldj0ryU1OPP8lnIe3yKN4QL_CgfhmeiZM,16604
108
108
  lxml/includes/libxml/relaxng.h,sha256=miygBGaAxpxiG16kzGWbah9Pl84TunzqKIQf9GcTkhE,5830
109
109
  lxml/includes/libxml/schemasInternals.h,sha256=V8M4In3zf24EX55Yt4dcfxwp7NpHGYViKnLKwtyrPJ4,26233
@@ -127,7 +127,7 @@ lxml/includes/libxml/xmlschemas.h,sha256=lXHsYTgPFpvSZF8LSFmHlF6EycX1PkzzW7zejos
127
127
  lxml/includes/libxml/xmlschemastypes.h,sha256=MYwlGmoKAo3lHRaaKgnCXiLmPT9KRjdxyCJ7TEyZ6jM,4583
128
128
  lxml/includes/libxml/xmlstring.h,sha256=d5PpqxP1I1sfmCUHvVJtjoC9h7hLHcAAQ5ok_Rtf50I,5271
129
129
  lxml/includes/libxml/xmlunicode.h,sha256=xqhfmchk-GELwmZWZ2Ha0IgosCy9csZswVDnbmvzRjI,8665
130
- lxml/includes/libxml/xmlversion.h,sha256=Qa_a27aFYEAc2U7xl_whMtgB8BTe36VfBgUxGjIF2XI,9205
130
+ lxml/includes/libxml/xmlversion.h,sha256=zMS-yTc0vIwJKlsubVTqxa847aW9PS8xQ0iLiOh6jRc,9205
131
131
  lxml/includes/libxml/xmlwriter.h,sha256=7tXNqXynH7tbeeMrxcbpI_TI_ZSjxmcR43wXxVg9X9o,20625
132
132
  lxml/includes/libxml/xpath.h,sha256=v7fb_GTuugqevysPRNLBocL0YleyEGMyH_SaDpescek,16442
133
133
  lxml/includes/libxml/xpathInternals.h,sha256=y3F0P7awBk9qhRQmmEgtSDEHoSvbLN_Q2vIifflypSI,18419
@@ -149,12 +149,12 @@ lxml/includes/libxslt/templates.h,sha256=bnt6Jqui6KU5pNUdMNPbQZkZ5d-VTWqC0TMGkOl
149
149
  lxml/includes/libxslt/transform.h,sha256=ICT7meUV0OTAx27WaKVrKj-aUmR9LSpTNaOAJd2UStg,6311
150
150
  lxml/includes/libxslt/variables.h,sha256=cQAgPe4QCcK2uKbWg7Iz-9peM9xWGm7m3M6jQm0sjIA,3143
151
151
  lxml/includes/libxslt/xslt.h,sha256=wmFx2Q31Pd8Iq2phAQpY9J3QQatb8lWg3gABtqKFgEw,1964
152
- lxml/includes/libxslt/xsltInternals.h,sha256=VKpvlPx4gUMYYdnaTFgyzcwamcGR0oOUou0iQi8-I9Q,57894
153
- lxml/includes/libxslt/xsltconfig.h,sha256=WOkBzuTVYhVAQgY_BRw7shotMYvR1DBlQQAZmIlY_o0,3702
152
+ lxml/includes/libxslt/xsltInternals.h,sha256=2EbEKYmnYZq0HjGnUMAlpqnqZJurRXzjlgk5Js1WYaY,57949
153
+ lxml/includes/libxslt/xsltconfig.h,sha256=ghnU_Xiykccjk33jxk-SgY8vXSJML2PfHdIlsQkM3iQ,2976
154
154
  lxml/includes/libxslt/xsltexports.h,sha256=1-luH-0bCIgBAlKAXhV-dqHBfwOAQNDamiYbxIlTf0k,1124
155
155
  lxml/includes/libxslt/xsltlocale.h,sha256=ppxGEmJfZIJgwRQzCM0_77p9WNekEWq1NrdYZrQl4IE,942
156
156
  lxml/includes/libxslt/xsltutils.h,sha256=1eguYgR9-jeNOVlBUktHboaq-VLX6JXraO80TfbARKM,9085
157
- lxml/isoschematron/__init__.py,sha256=D9LF5IXdj08t7QXajHFT3LtIW3-DCbXZw1ZjJZlpn-4,13270
157
+ lxml/isoschematron/__init__.py,sha256=uauerYeKTlWFCJSqieIHhF5l6rYV2myeEJ0Imd1LzRc,13274
158
158
  lxml/isoschematron/resources/rng/iso-schematron.rng,sha256=VsWxPyi3iViJDDbjJJw0wWkEHkLrz9zoCA8zJLor9N4,18337
159
159
  lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl,sha256=ObebsB8Wt-d3uIA_U5NU85TpnQ3PxPX38TdOAqosMac,3172
160
160
  lxml/isoschematron/resources/xsl/XSD2Schtrn.xsl,sha256=QweRrIIM-zFcgg98GXA2CaWfIbgVE0XKEeYSfvv67A0,4563
@@ -164,9 +164,9 @@ lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_message.xsl
164
164
  lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_skeleton_for_xslt1.xsl,sha256=ue8q_88X4e_jsJizo31GRNBxNhdxkEE9fY20oq0Iqwk,71764
165
165
  lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_svrl_for_xslt1.xsl,sha256=BBAdsVSi5zAzeGepuN6gS1saQINDqITXKplmmj4dTWg,20382
166
166
  lxml/isoschematron/resources/xsl/iso-schematron-xslt1/readme.txt,sha256=OGLiFswuLJEW5EPYKOeoauuCJFEtVa6jyzBE1OcJI98,3310
167
- lxml-5.2.2.dist-info/LICENSE.txt,sha256=ae20RcEzWoMS1MCScYR-mVbYTw2fck0SU0DMP612eyo,1488
168
- lxml-5.2.2.dist-info/LICENSES.txt,sha256=QdSd1AaqDhVIptXyGjDWv2OLPNlutyid00jYPtLkA5I,1514
169
- lxml-5.2.2.dist-info/METADATA,sha256=G4jHFVpR1hIqq9QeteqLg7H-huSIiKf-_FKah5MaEZ0,3452
170
- lxml-5.2.2.dist-info/WHEEL,sha256=ye8A2lA8pjGNe7-ueOpggarJAhczq3EZGqnLZzzfQYQ,110
171
- lxml-5.2.2.dist-info/top_level.txt,sha256=NjD988wqaKq512nshNdLt-uDxsjkp4Bh51m6N-dhUrk,5
172
- lxml-5.2.2.dist-info/RECORD,,
167
+ lxml-5.3.1.dist-info/LICENSE.txt,sha256=ae20RcEzWoMS1MCScYR-mVbYTw2fck0SU0DMP612eyo,1488
168
+ lxml-5.3.1.dist-info/LICENSES.txt,sha256=QdSd1AaqDhVIptXyGjDWv2OLPNlutyid00jYPtLkA5I,1514
169
+ lxml-5.3.1.dist-info/METADATA,sha256=987u6YoIndVEG7GS5D-vYYzlT9jobuDkWkU_PYmbpsE,3513
170
+ lxml-5.3.1.dist-info/WHEEL,sha256=ye8A2lA8pjGNe7-ueOpggarJAhczq3EZGqnLZzzfQYQ,110
171
+ lxml-5.3.1.dist-info/top_level.txt,sha256=NjD988wqaKq512nshNdLt-uDxsjkp4Bh51m6N-dhUrk,5
172
+ lxml-5.3.1.dist-info/RECORD,,
File without changes