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/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
- c_prefix = tree.xmlDictExists(c_dict, _xcstr(prefix_utf), len(prefix_utf))
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
- params[i] = <const_char*>tree.xmlDictLookup(c_dict, _xcstr(k), len(k))
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
- params[i] = <const_char*>tree.xmlDictLookup(c_dict, _xcstr(v), len(v))
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, compression, &c_buffer, close=False)
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=K-so7SOYN41ZBfkU5o9OpsmfWZOFzCfexXSRiRg--eI,596
3
- lxml/_elementpath.cp38-win32.pyd,sha256=SQd1IfhqSzrgPKoZaqP5F_iMwzSMuA6wHWq2POOLxYA,129024
4
- lxml/_elementpath.py,sha256=waZwwmgKbOlNaztLRUOXWBnHnZdQwDWwv7M0GgHwJ44,11229
5
- lxml/apihelpers.pxi,sha256=4S__cOXO4gq5tsr453GJPeRdbqI5B830SFYsxyUPok0,65403
6
- lxml/builder.cp38-win32.pyd,sha256=l-otbHxaXvPyUgX1FZMNfflYCdL4_8v_fQBI5zNby7Q,71168
7
- lxml/builder.py,sha256=5P0LKYgwJws2fmKAZOr9gkqsBtY-lUC9LDF2W5B5Aik,8332
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=HdUEKw8hU1Wzz4nO3hheqrauZlPATsv7N4QPQxCdth4,3372
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=8A-xXc62ef75Hx9Yzg5x1OPVZBRRPaCTTj5o0LykNOI,3475456
16
- lxml/etree.h,sha256=rrJ2b-3YWpNtCL_j2Wd2VhXtcv9EbDT6Ju3ldIb8fyQ,9912
17
- lxml/etree.pyx,sha256=PtHstVcD9V2S0EO8F5ZvJL8L_qAF0vCWvqzTsxrUftM,138249
18
- lxml/etree_api.h,sha256=8qTtQmUdvNqy2grAE8N4BSn-gIMPpiyoe5C4Geo5KzU,17063
19
- lxml/extensions.pxi,sha256=s3IkovN6q7I1lvAEs3rh7F-8TtTjTGXRSkptYV9012I,32921
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=r4YsdJ2NXeFAvntYcLJnam5a3A33G_PaPMD6kzBKyXE,10160
22
- lxml/lxml.etree_api.h,sha256=uPFmASmuydIVaFANd1WhYAsiLPRamC4gxuRlV7u4-g0,17263
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=kngLw5AW3KbHQXf4NBx1hABxaSwPPc5lhTwMq9Ow8m4,1576960
25
- lxml/objectify.pyx,sha256=IngqdSCtxUav_NklHutFR92AuuNfr9nYchEY3Zprchc,77880
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=ZvW9H2aa96jnMDG0_lsbkwijRnOYqVUfiveji_EF7KM,84040
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=t7xLBgPSBnnpZUzT0LE9jaB7B3N0nPk89Mm6nUCGk-U,111616
35
- lxml/sax.py,sha256=8YlAeeVyPL-ksvIDkOZ7HlXSvwByoiMaIujzN4nTjQw,9578
36
- lxml/saxparser.pxi,sha256=HWkubajdSI7_SwKO1vu0uOHTljXU6NZhhBfEdEd06R8,34197
37
- lxml/schematron.pxi,sha256=STQpiSEjL81MVePjobPhhWYJEH2KucWW519NFiWpSG8,6076
38
- lxml/serializer.pxi,sha256=YbLINzPWp3KeshHc0R5R-FoHBLT2Eu7zqF6byr0HOwE,67534
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=WtlZ2izr9g6-lrejYZV0tQKDqN-dQVBzAE4YEhls-Ac,36973
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=FAipGsw63JJBS4YHDorF5OQTWotfgUYM1695bFw44Wo,66225
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=X4-ZNqczoi9h035AN-4BmfSYDfsVyKpXXGsYPUFAh48,4625
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=w_8kGoMweUNZxTjQ9UlMeUo8wyTTvzjDG4ub24j8RRg,4371
55
- lxml/html/diff.cp38-win32.pyd,sha256=0lOVDNMED1FE5tGpb7GVrN4rxU9hhRfO1nQ7MmAjwUo,256000
56
- lxml/html/diff.py,sha256=Nygvg_a29fblqyj07CeCtl9_OV3AWPFTBjwqEOk8-PM,31271
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=XXz1CliDqEBPvxGNtnmYEwE6D1Xtdib1sMk9JvvkHDM,14624
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=HS2mBCCldzoEzmgNN-S217hznVp_H8UpoC30LcWr2Hs,74
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=Uo6hPybaSgh6P9YdQfpr0mftCrSyYZ_w_Z0FyCtOr1c,20885
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=1TlqfcESIvW9vTo9UYi6Ddvr8LY7mEBWxTNxuMYvuy8,11699
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-5.3.2.dist-info/LICENSE.txt,sha256=tircdrXghpYNqK2q-tqeBOMqrzXhzLFM71dCQFqu0nw,1517
171
- lxml-5.3.2.dist-info/LICENSES.txt,sha256=zlP1CNDLiL20Yh4jbKNIgaP6GAX5ffzPOJYBKKTi6tk,1543
172
- lxml-5.3.2.dist-info/METADATA,sha256=sXlReLdp6N0SA5_8V9kdm9Z6JCkT5o8JxKk3tKALvjo,3401
173
- lxml-5.3.2.dist-info/WHEEL,sha256=BsoMMMHJGneA25n2FDquZW143lDYOuIAMJ0po_3Su94,95
174
- lxml-5.3.2.dist-info/top_level.txt,sha256=NjD988wqaKq512nshNdLt-uDxsjkp4Bh51m6N-dhUrk,5
175
- lxml-5.3.2.dist-info/RECORD,,
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,,
@@ -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