lxml 5.3.2__cp38-cp38-win32.whl → 6.0.0__cp38-cp38-win32.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 +1 -1
- lxml/_elementpath.cp38-win32.pyd +0 -0
- lxml/_elementpath.py +3 -1
- lxml/apihelpers.pxi +25 -17
- lxml/builder.cp38-win32.pyd +0 -0
- lxml/builder.py +11 -0
- lxml/debug.pxi +0 -54
- lxml/etree.cp38-win32.pyd +0 -0
- lxml/etree.h +244 -248
- lxml/etree.pyx +154 -33
- lxml/etree_api.h +204 -195
- lxml/extensions.pxi +3 -6
- lxml/html/__init__.py +7 -3
- lxml/html/_difflib.cp38-win32.pyd +0 -0
- lxml/html/_difflib.py +2106 -0
- lxml/html/builder.py +40 -0
- lxml/html/defs.py +3 -3
- lxml/html/diff.cp38-win32.pyd +0 -0
- lxml/html/diff.py +406 -312
- lxml/includes/etree_defs.h +6 -6
- lxml/includes/lxml-version.h +1 -1
- lxml/includes/tree.pxd +10 -12
- lxml/includes/xmlparser.pxd +46 -8
- lxml/lxml.etree.h +24 -28
- lxml/lxml.etree_api.h +59 -50
- lxml/objectify.cp38-win32.pyd +0 -0
- lxml/objectify.pyx +11 -7
- lxml/parser.pxi +106 -47
- lxml/sax.cp38-win32.pyd +0 -0
- lxml/sax.py +11 -0
- lxml/saxparser.pxi +14 -14
- lxml/schematron.pxi +8 -3
- lxml/serializer.pxi +71 -3
- lxml/xslt.pxi +10 -3
- {lxml-5.3.2.dist-info → lxml-6.0.0.dist-info}/LICENSE.txt +3 -1
- lxml-6.0.0.dist-info/METADATA +150 -0
- {lxml-5.3.2.dist-info → lxml-6.0.0.dist-info}/RECORD +40 -38
- lxml-5.3.2.dist-info/METADATA +0 -87
- {lxml-5.3.2.dist-info → lxml-6.0.0.dist-info}/LICENSES.txt +0 -0
- {lxml-5.3.2.dist-info → lxml-6.0.0.dist-info}/WHEEL +0 -0
- {lxml-5.3.2.dist-info → lxml-6.0.0.dist-info}/top_level.txt +0 -0
lxml/serializer.pxi
CHANGED
@@ -476,6 +476,50 @@ cdef _write_attr_string(tree.xmlOutputBuffer* buf, const char *string):
|
|
476
476
|
tree.xmlOutputBufferWrite(buf, cur - base, base)
|
477
477
|
|
478
478
|
|
479
|
+
cdef void _write_cdata_section(tree.xmlOutputBuffer* buf, const char* c_data, const char* c_end):
|
480
|
+
tree.xmlOutputBufferWrite(buf, 9, "<![CDATA[")
|
481
|
+
while c_end - c_data > limits.INT_MAX:
|
482
|
+
tree.xmlOutputBufferWrite(buf, limits.INT_MAX, c_data)
|
483
|
+
c_data += limits.INT_MAX
|
484
|
+
tree.xmlOutputBufferWrite(buf, c_end - c_data, c_data)
|
485
|
+
tree.xmlOutputBufferWrite(buf, 3, "]]>")
|
486
|
+
|
487
|
+
|
488
|
+
cdef _write_cdata_string(tree.xmlOutputBuffer* buf, bytes bstring):
|
489
|
+
cdef const char* c_data = bstring
|
490
|
+
cdef const char* c_end = c_data + len(bstring)
|
491
|
+
cdef const char* c_pos = c_data
|
492
|
+
cdef bint nothing_written = True
|
493
|
+
|
494
|
+
while True:
|
495
|
+
c_pos = <const char*> cstring_h.memchr(c_pos, b']', c_end - c_pos)
|
496
|
+
if not c_pos:
|
497
|
+
break
|
498
|
+
c_pos += 1
|
499
|
+
next_char = c_pos[0]
|
500
|
+
c_pos += 1
|
501
|
+
if next_char != b']':
|
502
|
+
continue
|
503
|
+
# Found ']]', c_pos points to next character.
|
504
|
+
while c_pos[0] == b']':
|
505
|
+
c_pos += 1
|
506
|
+
if c_pos[0] != b'>':
|
507
|
+
if c_pos == c_end:
|
508
|
+
break
|
509
|
+
# c_pos[0] is neither ']' nor '>', continue with next character.
|
510
|
+
c_pos += 1
|
511
|
+
continue
|
512
|
+
|
513
|
+
# Write section up to ']]' and start next block at trailing '>'.
|
514
|
+
_write_cdata_section(buf, c_data, c_pos)
|
515
|
+
nothing_written = False
|
516
|
+
c_data = c_pos
|
517
|
+
c_pos += 1
|
518
|
+
|
519
|
+
if nothing_written or c_data < c_end:
|
520
|
+
_write_cdata_section(buf, c_data, c_end)
|
521
|
+
|
522
|
+
|
479
523
|
############################################################
|
480
524
|
# output to file-like objects
|
481
525
|
|
@@ -519,6 +563,7 @@ cdef class _FilelikeWriter:
|
|
519
563
|
cdef object _close_filelike
|
520
564
|
cdef _ExceptionContext _exc_context
|
521
565
|
cdef _ErrorLog error_log
|
566
|
+
|
522
567
|
def __cinit__(self, filelike, exc_context=None, compression=None, close=False):
|
523
568
|
if compression is not None and compression > 0:
|
524
569
|
filelike = GzipFile(
|
@@ -659,6 +704,12 @@ cdef _FilelikeWriter _create_output_buffer(
|
|
659
704
|
f"unknown encoding: '{c_enc.decode('UTF-8') if c_enc is not NULL else u''}'")
|
660
705
|
try:
|
661
706
|
f = _getFSPathOrObject(f)
|
707
|
+
|
708
|
+
if c_compression and not HAS_ZLIB_COMPRESSION and _isString(f):
|
709
|
+
# Let "_FilelikeWriter" fall back to Python's GzipFile.
|
710
|
+
f = open(f, mode="wb")
|
711
|
+
close = True
|
712
|
+
|
662
713
|
if _isString(f):
|
663
714
|
filename8 = _encodeFilename(f)
|
664
715
|
if b'%' in filename8 and (
|
@@ -695,7 +746,10 @@ cdef xmlChar **_convert_ns_prefixes(tree.xmlDict* c_dict, ns_prefixes) except NU
|
|
695
746
|
try:
|
696
747
|
for prefix in ns_prefixes:
|
697
748
|
prefix_utf = _utf8(prefix)
|
698
|
-
|
749
|
+
c_prefix_len = len(prefix_utf)
|
750
|
+
if c_prefix_len > limits.INT_MAX:
|
751
|
+
raise ValueError("Prefix too long")
|
752
|
+
c_prefix = tree.xmlDictExists(c_dict, _xcstr(prefix_utf), <int> c_prefix_len)
|
699
753
|
if c_prefix:
|
700
754
|
# unknown prefixes do not need to get serialised
|
701
755
|
c_ns_prefixes[i] = <xmlChar*>c_prefix
|
@@ -725,6 +779,13 @@ cdef _tofilelikeC14N(f, _Element element, bint exclusive, bint with_comments,
|
|
725
779
|
if inclusive_ns_prefixes else NULL)
|
726
780
|
|
727
781
|
f = _getFSPathOrObject(f)
|
782
|
+
|
783
|
+
close = False
|
784
|
+
if compression and not HAS_ZLIB_COMPRESSION and _isString(f):
|
785
|
+
# Let "_FilelikeWriter" fall back to Python's GzipFile.
|
786
|
+
f = open(f, mode="wb")
|
787
|
+
close = True
|
788
|
+
|
728
789
|
if _isString(f):
|
729
790
|
filename8 = _encodeFilename(f)
|
730
791
|
c_filename = _cstr(filename8)
|
@@ -733,7 +794,7 @@ cdef _tofilelikeC14N(f, _Element element, bint exclusive, bint with_comments,
|
|
733
794
|
c_doc, NULL, exclusive, c_inclusive_ns_prefixes,
|
734
795
|
with_comments, c_filename, compression)
|
735
796
|
elif hasattr(f, 'write'):
|
736
|
-
writer = _FilelikeWriter(f, compression=compression)
|
797
|
+
writer = _FilelikeWriter(f, compression=compression, close=close)
|
737
798
|
c_buffer = writer._createOutputBuffer(NULL)
|
738
799
|
try:
|
739
800
|
with writer.error_log:
|
@@ -1556,6 +1617,11 @@ cdef class _IncrementalFileWriter:
|
|
1556
1617
|
else:
|
1557
1618
|
tree.xmlOutputBufferWriteEscape(self._c_out, _xcstr(bstring), NULL)
|
1558
1619
|
|
1620
|
+
elif isinstance(content, CDATA):
|
1621
|
+
if self._status > WRITER_IN_ELEMENT:
|
1622
|
+
raise LxmlSyntaxError("not in an element")
|
1623
|
+
_write_cdata_string(self._c_out, (<CDATA>content)._utf8_data)
|
1624
|
+
|
1559
1625
|
elif iselement(content):
|
1560
1626
|
if self._status > WRITER_IN_ELEMENT:
|
1561
1627
|
raise LxmlSyntaxError("cannot append trailing element to complete XML document")
|
@@ -1568,8 +1634,10 @@ cdef class _IncrementalFileWriter:
|
|
1568
1634
|
|
1569
1635
|
elif content is not None:
|
1570
1636
|
raise TypeError(
|
1571
|
-
f"got invalid input value of type {type(content)}, expected string or Element")
|
1637
|
+
f"got invalid input value of type {type(content)}, expected string, CDATA or Element")
|
1638
|
+
|
1572
1639
|
self._handle_error(self._c_out.error)
|
1640
|
+
|
1573
1641
|
if not self._buffered:
|
1574
1642
|
tree.xmlOutputBufferFlush(self._c_out)
|
1575
1643
|
self._handle_error(self._c_out.error)
|
lxml/xslt.pxi
CHANGED
@@ -664,9 +664,16 @@ cdef _convert_xslt_parameters(xslt.xsltTransformContext* transform_ctxt,
|
|
664
664
|
v = (<XPath>value)._path
|
665
665
|
else:
|
666
666
|
v = _utf8(value)
|
667
|
-
|
667
|
+
|
668
|
+
c_len = len(k)
|
669
|
+
if c_len > limits.INT_MAX:
|
670
|
+
raise ValueError("Parameter name too long")
|
671
|
+
params[i] = <const_char*> tree.xmlDictLookup(c_dict, _xcstr(k), <int> c_len)
|
668
672
|
i += 1
|
669
|
-
|
673
|
+
c_len = len(v)
|
674
|
+
if c_len > limits.INT_MAX:
|
675
|
+
raise ValueError("Parameter value too long")
|
676
|
+
params[i] = <const_char*> tree.xmlDictLookup(c_dict, _xcstr(v), <int> c_len)
|
670
677
|
i += 1
|
671
678
|
except:
|
672
679
|
python.lxml_free(params)
|
@@ -732,7 +739,7 @@ cdef class _XSLTResultTree(_ElementTree):
|
|
732
739
|
raise XSLTSaveError("No document to serialise")
|
733
740
|
c_compression = compression or 0
|
734
741
|
xslt.LXML_GET_XSLT_ENCODING(c_encoding, self._xslt._c_style)
|
735
|
-
writer = _create_output_buffer(file, <const_char*>c_encoding,
|
742
|
+
writer = _create_output_buffer(file, <const_char*>c_encoding, c_compression, &c_buffer, close=False)
|
736
743
|
if writer is None:
|
737
744
|
with nogil:
|
738
745
|
r = xslt.xsltSaveResultTo(c_buffer, doc._c_doc, self._xslt._c_style)
|
@@ -1,3 +1,5 @@
|
|
1
|
+
BSD 3-Clause License
|
2
|
+
|
1
3
|
Copyright (c) 2004 Infrae. All rights reserved.
|
2
4
|
|
3
5
|
Redistribution and use in source and binary forms, with or without
|
@@ -6,7 +8,7 @@ met:
|
|
6
8
|
|
7
9
|
1. Redistributions of source code must retain the above copyright
|
8
10
|
notice, this list of conditions and the following disclaimer.
|
9
|
-
|
11
|
+
|
10
12
|
2. Redistributions in binary form must reproduce the above copyright
|
11
13
|
notice, this list of conditions and the following disclaimer in
|
12
14
|
the documentation and/or other materials provided with the
|
@@ -0,0 +1,150 @@
|
|
1
|
+
Metadata-Version: 2.1
|
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: cssselect
|
34
|
+
Requires-Dist: cssselect>=0.7; extra == "cssselect"
|
35
|
+
Provides-Extra: html5
|
36
|
+
Requires-Dist: html5lib; extra == "html5"
|
37
|
+
Provides-Extra: html_clean
|
38
|
+
Requires-Dist: lxml-html-clean; extra == "html-clean"
|
39
|
+
Provides-Extra: htmlsoup
|
40
|
+
Requires-Dist: BeautifulSoup4; extra == "htmlsoup"
|
41
|
+
Provides-Extra: source
|
42
|
+
|
43
|
+
lxml is a Pythonic, mature binding for the libxml2 and libxslt libraries.
|
44
|
+
It provides safe and convenient access to these libraries using the
|
45
|
+
ElementTree API.
|
46
|
+
|
47
|
+
It extends the ElementTree API significantly to offer support for XPath,
|
48
|
+
RelaxNG, XML Schema, XSLT, C14N and much more.
|
49
|
+
|
50
|
+
To contact the project, go to the `project home page <https://lxml.de/>`_
|
51
|
+
or see our bug tracker at https://launchpad.net/lxml
|
52
|
+
|
53
|
+
In case you want to use the current in-development version of lxml,
|
54
|
+
you can get it from the github repository at
|
55
|
+
https://github.com/lxml/lxml . Note that this requires Cython to
|
56
|
+
build the sources, see the build instructions on the project home page.
|
57
|
+
|
58
|
+
|
59
|
+
After an official release of a new stable series, bug fixes may become available at
|
60
|
+
https://github.com/lxml/lxml/tree/lxml-6.0 .
|
61
|
+
Running ``pip install https://github.com/lxml/lxml/archive/refs/heads/lxml-6.0.tar.gz``
|
62
|
+
will install the unreleased branch state as soon as a maintenance branch has been established.
|
63
|
+
Note that this requires Cython to be installed at an appropriate version for the build.
|
64
|
+
|
65
|
+
6.0.0 (2025-06-26)
|
66
|
+
==================
|
67
|
+
|
68
|
+
Features added
|
69
|
+
--------------
|
70
|
+
|
71
|
+
* GH#463: ``lxml.html.diff`` is faster and provides structurally better diffs.
|
72
|
+
Original patch by Steven Fernandez.
|
73
|
+
|
74
|
+
* GH#405: The factories ``Element`` and ``ElementTree`` can now be used in type hints.
|
75
|
+
|
76
|
+
* GH#448: Parsing from ``memoryview`` and other buffers is supported to allow zero-copy parsing.
|
77
|
+
|
78
|
+
* GH#437: ``lxml.html.builder`` was missing several HTML5 tag names.
|
79
|
+
Patch by Nick Tarleton.
|
80
|
+
|
81
|
+
* GH#458: ``CDATA`` can now be written into the incremental ``xmlfile()`` writer.
|
82
|
+
Original patch by Lane Shaw.
|
83
|
+
|
84
|
+
* A new parser option ``decompress=False`` was added that controls the automatic
|
85
|
+
input decompression when using libxml2 2.15.0 or later. Disabling this option
|
86
|
+
by default will effectively prevent decompression bombs when handling untrusted
|
87
|
+
input. Code that depends on automatic decompression must enable this option.
|
88
|
+
Note that libxml2 2.15.0 was not released yet, so this option currently has no
|
89
|
+
effect but can already be used.
|
90
|
+
|
91
|
+
* The set of compile time / runtime supported libxml2 feature names is available as
|
92
|
+
``etree.LIBXML_COMPILED_FEATURES`` and ``etree.LIBXML_FEATURES``.
|
93
|
+
This currently includes
|
94
|
+
``catalog``, ``ftp``, ``html``, ``http``, ``iconv``, ``icu``,
|
95
|
+
``lzma``, ``regexp``, ``schematron``, ``xmlschema``, ``xpath``, ``zlib``.
|
96
|
+
|
97
|
+
Bugs fixed
|
98
|
+
----------
|
99
|
+
|
100
|
+
* GH#353: Predicates in ``.find*()`` could mishandle tag indices if a default namespace is provided.
|
101
|
+
Original patch by Luise K.
|
102
|
+
|
103
|
+
* GH#272: The ``head`` and ``body`` properties of ``lxml.html`` elements failed if no such element
|
104
|
+
was found. They now return ``None`` instead.
|
105
|
+
Original patch by FVolral.
|
106
|
+
|
107
|
+
* Tag names provided by code (API, not data) that are longer than ``INT_MAX``
|
108
|
+
could be truncated or mishandled in other ways.
|
109
|
+
|
110
|
+
* ``.text_content()`` on ``lxml.html`` elements accidentally returned a "smart string"
|
111
|
+
without additional information. It now returns a plain string.
|
112
|
+
|
113
|
+
* LP#2109931: When building lxml with coverage reporting, it now disables the ``sys.monitoring``
|
114
|
+
support due to the lack of support in https://github.com/nedbat/coveragepy/issues/1790
|
115
|
+
|
116
|
+
Other changes
|
117
|
+
-------------
|
118
|
+
|
119
|
+
* Support for Python < 3.8 was removed.
|
120
|
+
|
121
|
+
* Parsing directly from zlib (or lzma) compressed data is now considered an optional
|
122
|
+
feature in lxml. It may get removed from libxml2 at some point for security reasons
|
123
|
+
(compression bombs) and is therefore no longer guaranteed to be available in lxml.
|
124
|
+
|
125
|
+
As of this release, zlib support is still normally available in the binary wheels
|
126
|
+
but may get disabled or removed in later (x.y.0) releases. To test the availability,
|
127
|
+
use ``"zlib" in etree.LIBXML_FEATURES``.
|
128
|
+
|
129
|
+
* The ``Schematron`` class is deprecated and will become non-functional in a future lxml version.
|
130
|
+
The feature will soon be removed from libxml2 and stop being available.
|
131
|
+
|
132
|
+
* GH#438: Wheels include the ``arm7l`` target.
|
133
|
+
|
134
|
+
* GH#465: Windows wheels include the ``arm64`` target.
|
135
|
+
Patch by Finn Womack.
|
136
|
+
|
137
|
+
* Binary wheels use the library versions libxml2 2.14.4 and libxslt 1.1.43.
|
138
|
+
Note that this disables direct HTTP and FTP support for parsing from URLs.
|
139
|
+
Use Python URL request tools instead (which usually also support HTTPS).
|
140
|
+
To test the availability, use ``"http" in etree.LIBXML_FEATURES``.
|
141
|
+
|
142
|
+
* Windows binary wheels use the library versions libxml2 2.11.9, libxslt 1.1.39 and libiconv 1.17.
|
143
|
+
They are now based on VS-2022.
|
144
|
+
|
145
|
+
* Built using Cython 3.1.2.
|
146
|
+
|
147
|
+
* The debug methods ``MemDebug.dump()`` and ``MemDebug.show()`` were removed completely.
|
148
|
+
libxml2 2.13.0 discarded this feature.
|
149
|
+
|
150
|
+
|
@@ -1,59 +1,61 @@
|
|
1
1
|
lxml/ElementInclude.py,sha256=pEvLKSyhNWtZTRr6liUJD-1mIqmbxbcurxcqZv7vNHg,8804
|
2
|
-
lxml/__init__.py,sha256=
|
3
|
-
lxml/_elementpath.cp38-win32.pyd,sha256=
|
4
|
-
lxml/_elementpath.py,sha256=
|
5
|
-
lxml/apihelpers.pxi,sha256=
|
6
|
-
lxml/builder.cp38-win32.pyd,sha256=
|
7
|
-
lxml/builder.py,sha256=
|
2
|
+
lxml/__init__.py,sha256=vjSKhgde8rQYlZy8A4qikKQVqZgCm78PvHqcA8OOnSM,596
|
3
|
+
lxml/_elementpath.cp38-win32.pyd,sha256=aDKMAnHR8S0NXzpXfz_Ouc2-9TszbLzYy-VuLRc9ryA,126464
|
4
|
+
lxml/_elementpath.py,sha256=mphn7HDGhJyfqIXhWLELWIVxf9wC5udI1H53KqkRgAk,11302
|
5
|
+
lxml/apihelpers.pxi,sha256=IG8UL8pWMa5sJtgdcdwLcxMv2xYz2Es6HGcBhc0Jq8g,65682
|
6
|
+
lxml/builder.cp38-win32.pyd,sha256=nn_z5M-gqDe_jgeuEHLCsxLF-mkku-sVWt1HagbfNOo,73728
|
7
|
+
lxml/builder.py,sha256=zq0o6ZtT5OrV2NQ_TqXz8eolBZ-1qAJYBtTKMO1Duu8,8728
|
8
8
|
lxml/classlookup.pxi,sha256=rRtWHz9AajMqkm7RiG_PkOCsaQTRkgK757pRj3RvCxA,23015
|
9
9
|
lxml/cleanup.pxi,sha256=Zll_xQcmMBkUQtkWugiJ7TDQWPR0IHKjD5OesmQ0dB8,8669
|
10
10
|
lxml/cssselect.py,sha256=ur77NVsTk24-t_1AFo5EjfEqyheuw01BRG-_Ob5DDQY,3407
|
11
|
-
lxml/debug.pxi,sha256=
|
11
|
+
lxml/debug.pxi,sha256=qton7wZ25ha0KnuCEPrEvcPoww72yIYac4uCwGqSEWM,1161
|
12
12
|
lxml/docloader.pxi,sha256=tP6b_zZ5s0-Zj2kf2mFksI8U5whArwOVDOVuaZcbgtM,5950
|
13
13
|
lxml/doctestcompare.py,sha256=1r23O3Ki1BypqzkVWh97FEdRq-ENvmFEWuABOWdE0Lo,18219
|
14
14
|
lxml/dtd.pxi,sha256=hO4U0Ql3xzpqtV8XDZXkJncNEbb_ML8QkaYL8SBDTD0,15760
|
15
|
-
lxml/etree.cp38-win32.pyd,sha256=
|
16
|
-
lxml/etree.h,sha256=
|
17
|
-
lxml/etree.pyx,sha256=
|
18
|
-
lxml/etree_api.h,sha256=
|
19
|
-
lxml/extensions.pxi,sha256=
|
15
|
+
lxml/etree.cp38-win32.pyd,sha256=SKM1U5wuGF4WAram5qLhP4Ahtc0YAp3PfRmI1Zn0rUg,3413504
|
16
|
+
lxml/etree.h,sha256=ZwSty1M1Nzhx0jvNOINUA5yCnnKv-wvzxPitsYQ6FZw,10036
|
17
|
+
lxml/etree.pyx,sha256=JyXwuM8s_Eobs8jUPpwNUS13l_y7T9aT8ItqZ708Ap0,141867
|
18
|
+
lxml/etree_api.h,sha256=_Jlnm1UpjFHvvAbl1xi65GeABj2Tfo8eVJkG4an1b3s,17576
|
19
|
+
lxml/extensions.pxi,sha256=zxV_5xs3RXOzU8TbGsklZxJaoeqI5Jk_0MX9-de319Y,32852
|
20
20
|
lxml/iterparse.pxi,sha256=Nd26kE2NVAg2_eyhlBVleWH69rdXK6dZkR4AgpkDsys,16959
|
21
|
-
lxml/lxml.etree.h,sha256=
|
22
|
-
lxml/lxml.etree_api.h,sha256=
|
21
|
+
lxml/lxml.etree.h,sha256=ZwSty1M1Nzhx0jvNOINUA5yCnnKv-wvzxPitsYQ6FZw,10036
|
22
|
+
lxml/lxml.etree_api.h,sha256=vYwK-SVatk3bE1hJfxQnIO_VzQKn4711JNUHJZOgl5E,17581
|
23
23
|
lxml/nsclasses.pxi,sha256=9TiZjPbP73H8VN0Xu1RmuRB7G-D0pTTSqLPbdTJQt5U,9410
|
24
|
-
lxml/objectify.cp38-win32.pyd,sha256=
|
25
|
-
lxml/objectify.pyx,sha256=
|
24
|
+
lxml/objectify.cp38-win32.pyd,sha256=6qo3qFboRdTFNpaHhdWyIIgdA007LvVahbn9Dl1o9kI,1562624
|
25
|
+
lxml/objectify.pyx,sha256=AcFYhuhFZjEzLhjF5SjINLxgD2YcC-fCKSgeixSAGAs,77972
|
26
26
|
lxml/objectpath.pxi,sha256=og7LX-a88RrgJI3lUAtuJ8Hvx4RpNf57k7pmafzCuCA,11782
|
27
|
-
lxml/parser.pxi,sha256=
|
27
|
+
lxml/parser.pxi,sha256=T10fH8f6CEZL91s7Uz0eGMJDEfLZ8F5GIdEGzvlWBwI,86847
|
28
28
|
lxml/parsertarget.pxi,sha256=0gZ5eLJ2hQ8tSApFEQx1PfzaiPqRuaRxD_GwKODIzEc,6506
|
29
29
|
lxml/proxy.pxi,sha256=phoeHZwmrN6LF3W57V5J-72ZPhGxdpI0TxgzVlD5pyU,24316
|
30
30
|
lxml/public-api.pxi,sha256=NT9BUTPhf0ZxLKm61xKT4SVmWxbb5aImmNIeTJdXNRs,6844
|
31
31
|
lxml/pyclasslookup.py,sha256=jDGYrbxuKE3Hl07PbILX_ptLkQaXYrpJSgvil4hIs3s,95
|
32
32
|
lxml/readonlytree.pxi,sha256=W3RXFM2aUGM8ZswTBP5EUW-wT1n6x7fpEGloQQa5cPE,19541
|
33
33
|
lxml/relaxng.pxi,sha256=rjTfl-rBYlHqQv4nfxVK8KZR59KqKWQp9lZv3aKYXVk,6504
|
34
|
-
lxml/sax.cp38-win32.pyd,sha256=
|
35
|
-
lxml/sax.py,sha256=
|
36
|
-
lxml/saxparser.pxi,sha256=
|
37
|
-
lxml/schematron.pxi,sha256=
|
38
|
-
lxml/serializer.pxi,sha256=
|
34
|
+
lxml/sax.cp38-win32.pyd,sha256=UB9POPy5XAqRhCTbe2MCJ08wsMZzrkFUSS4UzSaAmpA,106496
|
35
|
+
lxml/sax.py,sha256=yq72BKeO59j8ex3Wd-Nu-FBXmyqGSXJwfTj8F6ZeoXU,9991
|
36
|
+
lxml/saxparser.pxi,sha256=MwBoXK30lySZVoM6LIWd2JyhPIW74a68Em35qJvn04Y,34404
|
37
|
+
lxml/schematron.pxi,sha256=FF22Q0KoJuX2Qcb26rL1YO9QpFTnmqRSS6k8R_G5j28,6237
|
38
|
+
lxml/serializer.pxi,sha256=BolXyyQquQEMJIG-LsFNtc_cckGHK_txvzRt30N5i5o,69912
|
39
39
|
lxml/usedoctest.py,sha256=cn3rXeL3F-ISj-HXNL9g4EwciH60b9NcZjXIRAF31iM,243
|
40
40
|
lxml/xinclude.pxi,sha256=DTre_KYISt1rzbf_qS75ix-ZbruSBnefIfNs4AqvF-M,2523
|
41
41
|
lxml/xmlerror.pxi,sha256=VFEO6Tn2RMVjKF9SXE15piak23lMaNrvE2pqT0hxfFw,51508
|
42
42
|
lxml/xmlid.pxi,sha256=Ng7Wifv0XXknjPMO6kldgrOHfCsII46UBPCkUTk96Qk,6252
|
43
43
|
lxml/xmlschema.pxi,sha256=sJumEEbkuR-vj2vDAE8vDvbjBhgzt_LRX-IwQRFgLTU,8705
|
44
44
|
lxml/xpath.pxi,sha256=iT1S7CBo2dBn19y926ktwPgAKGRC5WFnRgrncA6GwpM,19619
|
45
|
-
lxml/xslt.pxi,sha256=
|
45
|
+
lxml/xslt.pxi,sha256=YqZ4otfou0aEFQdCRM6q9XF5o4bOHw3Lk5yC_m3MpZc,37272
|
46
46
|
lxml/xsltext.pxi,sha256=syKkmI6GMwE_f-XPYC8rGFXJ5F9KeQigxz52CsbF4PA,11330
|
47
47
|
lxml/html/ElementSoup.py,sha256=dQSpzuzUT3LKCGh71H4rccB5RCwoMpyayRY-qbtWBM0,330
|
48
|
-
lxml/html/__init__.py,sha256=
|
48
|
+
lxml/html/__init__.py,sha256=zQZwgKH8c_QBYFXzuq8S-KugBFLqLFt7vQAOseHRIRo,66352
|
49
49
|
lxml/html/_diffcommand.py,sha256=MfccaYAAKCtzCRe_MCXihC3vnuPUKiJbmOx85Dt37To,2167
|
50
|
+
lxml/html/_difflib.cp38-win32.pyd,sha256=7DMUswLfvu281DFwivPJhmZRld_CptoFM8pp7eE7aZE,337408
|
51
|
+
lxml/html/_difflib.py,sha256=rFGk4ObTaICAgduVo4TAJyVdicB6WuUXgjH3xpm0_iQ,87060
|
50
52
|
lxml/html/_html5builder.py,sha256=XfqNFDQ5HUOWTqubeOe1m5qmIut6I_3Egye75wer7tE,3330
|
51
53
|
lxml/html/_setmixin.py,sha256=6cUyIeiMIn5zUytcWHsdWZXyMJXVsfJVVQoAIIe9h7Q,1244
|
52
|
-
lxml/html/builder.py,sha256=
|
54
|
+
lxml/html/builder.py,sha256=q-BZ14j-sqSXL_F1nQnzxB1zBhCdR3aJ7F--LxGMYhY,6360
|
53
55
|
lxml/html/clean.py,sha256=B_rsm3Mz7pn_Z8LnkXeSocL257--sqWJGaxBp2LlmB8,524
|
54
|
-
lxml/html/defs.py,sha256=
|
55
|
-
lxml/html/diff.cp38-win32.pyd,sha256=
|
56
|
-
lxml/html/diff.py,sha256=
|
56
|
+
lxml/html/defs.py,sha256=2H4v1QZnfFcf6oa9sDq8hl-sJQpqwq7VE-VknKIb854,4385
|
57
|
+
lxml/html/diff.cp38-win32.pyd,sha256=Hp4jKXuRbSY2Ds_GSKKrVTb6q6qMjtYWSC9I3TH5TCQ,214016
|
58
|
+
lxml/html/diff.py,sha256=7Rah6HTCeWcRIH_aIzTwXf5WII1cxPiQ1fdIjewl5cI,33961
|
57
59
|
lxml/html/formfill.py,sha256=8yXFIO4DNVY-HG8q4O4OtxIQ8qmLpXYQ8T1rFUTkK8c,9980
|
58
60
|
lxml/html/html5parser.py,sha256=iupCVDO_6I1PNWstkE6omdDh-rEc0KMaIXo1OCP9noM,8894
|
59
61
|
lxml/html/soupparser.py,sha256=fQ_ZjWcXwKTrbPD8lsPe9YNPsQmk2o9zCd1fJGFX0zY,10511
|
@@ -63,17 +65,17 @@ lxml/includes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
63
65
|
lxml/includes/c14n.pxd,sha256=sO2g4HgndNGlhsSmMI767T8KfZcNtjpFilzZ3OD4eqU,1135
|
64
66
|
lxml/includes/config.pxd,sha256=ECKwhEax5IW2KFn1BQdwR2M0FbWciVRFMJW7pHxJSqI,99
|
65
67
|
lxml/includes/dtdvalid.pxd,sha256=VOt94bqe417bxvfkfbtbsd5kVnwQj4oYSHMfnV2pcsM,707
|
66
|
-
lxml/includes/etree_defs.h,sha256=
|
68
|
+
lxml/includes/etree_defs.h,sha256=AFSLdqAdrcZ58FT2ba8xGLj-Eod_epF646KNGJjn5fU,14603
|
67
69
|
lxml/includes/etreepublic.pxd,sha256=s2HRJSuZhwlDi3oHsSBPChA4dgTnWjWWMzBb3VxrtJw,10421
|
68
70
|
lxml/includes/htmlparser.pxd,sha256=UEV2wIp8RHekwUAcPWMQe8KBfEv39u0c3LHOsdvRr0k,2858
|
69
|
-
lxml/includes/lxml-version.h,sha256=
|
71
|
+
lxml/includes/lxml-version.h,sha256=iOrzpY1hJfHYzFK_qTTAxnHVnvzCJP9Du_KnuIs8QoI,74
|
70
72
|
lxml/includes/relaxng.pxd,sha256=H5W5XObI5YtRpULeiRy6K6ldUZC0tDQauAFZ7PJSqE4,2679
|
71
73
|
lxml/includes/schematron.pxd,sha256=JmKDG9ElNPXJ7rZzOpQjPaIdzIZ1pzMEOT_GjZRK98U,1638
|
72
|
-
lxml/includes/tree.pxd,sha256=
|
74
|
+
lxml/includes/tree.pxd,sha256=4_ttQTighQJiPxt3Fa9FJ8-BhxMtZHVw4DPrdaZ6kKE,20671
|
73
75
|
lxml/includes/uri.pxd,sha256=UbTG4fvHaq6jkNkwLyx6aMbbCCXGDmrE3KjPirCtW30,150
|
74
76
|
lxml/includes/xinclude.pxd,sha256=n3SdzxwdcwJxeX8TQIRZ_6ozABwg6mrMEOXDFzs5f50,826
|
75
77
|
lxml/includes/xmlerror.pxd,sha256=cVZruvjdntAoE8jy2XFxSG1l6kvsY8u9BK2MkE8GFLs,58868
|
76
|
-
lxml/includes/xmlparser.pxd,sha256=
|
78
|
+
lxml/includes/xmlparser.pxd,sha256=lZhgz45V_j5YSSh4CxjxuMdTZKVIuWa7BVm03hdTqoY,12797
|
77
79
|
lxml/includes/xmlschema.pxd,sha256=q6cHPJpi3uhkf2MLUUd2h3nCDB_4a1B8cei8aTHbN84,1737
|
78
80
|
lxml/includes/xpath.pxd,sha256=LsDoWjO5xJUB-z0_BdsItEWHhLgLpX40IdNmbYzpdv4,5739
|
79
81
|
lxml/includes/xslt.pxd,sha256=GM_Hkk7vGnWMlWlLM9YCpkUeGgWk8Lvmr1KUy5kbZ-4,8431
|
@@ -167,9 +169,9 @@ lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_message.xsl
|
|
167
169
|
lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_skeleton_for_xslt1.xsl,sha256=Vo1F576odRkdLBmuEEWrLa5LF3SMTX9B6EEGnxUbv_8,73560
|
168
170
|
lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_svrl_for_xslt1.xsl,sha256=UI7xHx0leNXS9BaU6cyQ4CHeflufKmAE-zjOrihuH-E,20970
|
169
171
|
lxml/isoschematron/resources/xsl/iso-schematron-xslt1/readme.txt,sha256=OGLiFswuLJEW5EPYKOeoauuCJFEtVa6jyzBE1OcJI98,3310
|
170
|
-
lxml-
|
171
|
-
lxml-
|
172
|
-
lxml-
|
173
|
-
lxml-
|
174
|
-
lxml-
|
175
|
-
lxml-
|
172
|
+
lxml-6.0.0.dist-info/LICENSE.txt,sha256=58POjXYzGwEBzEZ5CrQ5WOqQo2S8-WLth2PVqBg0Dmk,1538
|
173
|
+
lxml-6.0.0.dist-info/LICENSES.txt,sha256=zlP1CNDLiL20Yh4jbKNIgaP6GAX5ffzPOJYBKKTi6tk,1543
|
174
|
+
lxml-6.0.0.dist-info/METADATA,sha256=QGAAe3-qJmaMs7DqVLRbdhAyMxq5NVqXk5tdYpYqcNk,6480
|
175
|
+
lxml-6.0.0.dist-info/WHEEL,sha256=BsoMMMHJGneA25n2FDquZW143lDYOuIAMJ0po_3Su94,95
|
176
|
+
lxml-6.0.0.dist-info/top_level.txt,sha256=NjD988wqaKq512nshNdLt-uDxsjkp4Bh51m6N-dhUrk,5
|
177
|
+
lxml-6.0.0.dist-info/RECORD,,
|
lxml-5.3.2.dist-info/METADATA
DELETED
@@ -1,87 +0,0 @@
|
|
1
|
-
Metadata-Version: 2.1
|
2
|
-
Name: lxml
|
3
|
-
Version: 5.3.2
|
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
|
-
Classifier: Development Status :: 5 - Production/Stable
|
13
|
-
Classifier: Intended Audience :: Developers
|
14
|
-
Classifier: Intended Audience :: Information Technology
|
15
|
-
Classifier: License :: OSI Approved :: BSD License
|
16
|
-
Classifier: Programming Language :: Cython
|
17
|
-
Classifier: Programming Language :: Python :: 3
|
18
|
-
Classifier: Programming Language :: Python :: 3.6
|
19
|
-
Classifier: Programming Language :: Python :: 3.7
|
20
|
-
Classifier: Programming Language :: Python :: 3.8
|
21
|
-
Classifier: Programming Language :: Python :: 3.9
|
22
|
-
Classifier: Programming Language :: Python :: 3.10
|
23
|
-
Classifier: Programming Language :: Python :: 3.11
|
24
|
-
Classifier: Programming Language :: Python :: 3.12
|
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.6
|
31
|
-
License-File: LICENSE.txt
|
32
|
-
License-File: LICENSES.txt
|
33
|
-
Provides-Extra: cssselect
|
34
|
-
Requires-Dist: cssselect>=0.7; extra == "cssselect"
|
35
|
-
Provides-Extra: html5
|
36
|
-
Requires-Dist: html5lib; extra == "html5"
|
37
|
-
Provides-Extra: html_clean
|
38
|
-
Requires-Dist: lxml-html-clean; extra == "html-clean"
|
39
|
-
Provides-Extra: htmlsoup
|
40
|
-
Requires-Dist: BeautifulSoup4; extra == "htmlsoup"
|
41
|
-
Provides-Extra: source
|
42
|
-
Requires-Dist: Cython<3.1.0,>=3.0.11; extra == "source"
|
43
|
-
|
44
|
-
lxml is a Pythonic, mature binding for the libxml2 and libxslt libraries. It
|
45
|
-
provides safe and convenient access to these libraries using the ElementTree
|
46
|
-
API.
|
47
|
-
|
48
|
-
It extends the ElementTree API significantly to offer support for XPath,
|
49
|
-
RelaxNG, XML Schema, XSLT, C14N and much more.
|
50
|
-
|
51
|
-
To contact the project, go to the `project home page
|
52
|
-
<https://lxml.de/>`_ or see our bug tracker at
|
53
|
-
https://launchpad.net/lxml
|
54
|
-
|
55
|
-
In case you want to use the current in-development version of lxml,
|
56
|
-
you can get it from the github repository at
|
57
|
-
https://github.com/lxml/lxml . Note that this requires Cython to
|
58
|
-
build the sources, see the build instructions on the project home
|
59
|
-
page. To the same end, running ``easy_install lxml==dev`` will
|
60
|
-
install lxml from
|
61
|
-
https://github.com/lxml/lxml/tarball/master#egg=lxml-dev if you have
|
62
|
-
an appropriate version of Cython installed.
|
63
|
-
|
64
|
-
|
65
|
-
After an official release of a new stable series, bug fixes may become
|
66
|
-
available at
|
67
|
-
https://github.com/lxml/lxml/tree/lxml-5.3 .
|
68
|
-
Running ``easy_install lxml==5.3bugfix`` will install
|
69
|
-
the unreleased branch state from
|
70
|
-
https://github.com/lxml/lxml/tarball/lxml-5.3#egg=lxml-5.3bugfix
|
71
|
-
as soon as a maintenance branch has been established. Note that this
|
72
|
-
requires Cython to be installed at an appropriate version for the build.
|
73
|
-
|
74
|
-
5.3.2 (2025-04-05)
|
75
|
-
==================
|
76
|
-
|
77
|
-
This release resolves CVE-2025-24928 as described in
|
78
|
-
https://gitlab.gnome.org/GNOME/libxml2/-/issues/847
|
79
|
-
|
80
|
-
Bugs fixed
|
81
|
-
----------
|
82
|
-
|
83
|
-
* Binary wheels use libxml2 2.12.10 and libxslt 1.1.42.
|
84
|
-
|
85
|
-
* Binary wheels for Windows use a patched libxml2 2.11.9 and libxslt 1.1.39.
|
86
|
-
|
87
|
-
|
File without changes
|
File without changes
|
File without changes
|