From e8adc039459ddf6df29047bb7aa5748316372b82 Mon Sep 17 00:00:00 2001
From: Marcel Telka <marcel@telka.sk>
Date: Fri, 05 Apr 2024 16:22:21 +0200
Subject: [PATCH] python/lxml: update to 5.2.1

---
 components/python/lxml/Makefile                      |   20 +++++++++-
 components/python/lxml/test/results-all.master       |   42 ++++----------------
 components/python/lxml/python-integrate-project.conf |   15 +++++++
 components/python/lxml/lxml-PYVER.p5m                |    1 
 components/python/lxml/manifests/sample-manifest.p5m |    1 
 5 files changed, 42 insertions(+), 37 deletions(-)

diff --git a/components/python/lxml/Makefile b/components/python/lxml/Makefile
index ac1243d..b236bf2 100644
--- a/components/python/lxml/Makefile
+++ b/components/python/lxml/Makefile
@@ -19,17 +19,28 @@
 include ../../../make-rules/shared-macros.mk
 
 COMPONENT_NAME =		lxml
-HUMAN_VERSION =			5.1.1
+HUMAN_VERSION =			5.2.1
 COMPONENT_SUMMARY =		lxml - Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API.
 COMPONENT_PROJECT_URL =		https://lxml.de/
 COMPONENT_ARCHIVE_HASH =	\
-	sha256:42a8aa957e98bd8b884a8142175ec24ce4ef0a57760e8879f193bfe64b757ca9
+	sha256:3f7765e69bbce0906a7c74d5fe46d2c7a7596147318dbc08e4a2431f3060e306
 COMPONENT_LICENSE =		BSD-3-Clause
 COMPONENT_LICENSE_FILE =	LICENSE.txt
 
 # This project uses custom test style.
 # See project's Makefile.
 TEST_STYLE = custom
+
+#
+# Following dependency loops were detected (where 'A --> B' means 'A needs B to
+# run tests', and 'A ==> B' means 'A needs B for build and/or run'):
+#
+# lxml --> lxml_html_clean ==> lxml
+#
+# To break loops we need to allow this project to integrate without testing in
+# a case the required projects are not available yet (bootstrap).
+#
+PYTHON_TEST_BOOTSTRAP = yes
 
 include $(WS_MAKE_RULES)/common.mk
 
@@ -54,6 +65,10 @@
 		$(CAT) \
 	)"
 
+# This project does not support tox so we need to provide test requirements
+# manually.
+TEST_REQUIREMENTS_EXTRAS += html-clean
+
 # Auto-generated dependencies
 PYTHON_REQUIRED_PACKAGES += library/python/cython
 PYTHON_REQUIRED_PACKAGES += library/python/setuptools
@@ -62,3 +77,4 @@
 REQUIRED_PACKAGES += library/libxml2
 REQUIRED_PACKAGES += library/libxslt
 REQUIRED_PACKAGES += system/library
+TEST_REQUIRED_PACKAGES.python += library/python/lxml-html-clean
diff --git a/components/python/lxml/lxml-PYVER.p5m b/components/python/lxml/lxml-PYVER.p5m
index bea5ada..c95c1a5 100644
--- a/components/python/lxml/lxml-PYVER.p5m
+++ b/components/python/lxml/lxml-PYVER.p5m
@@ -53,7 +53,6 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/lxml/html/_html5builder.py
 file path=usr/lib/python$(PYVER)/vendor-packages/lxml/html/_setmixin.py
 file path=usr/lib/python$(PYVER)/vendor-packages/lxml/html/builder.py
-file path=usr/lib/python$(PYVER)/vendor-packages/lxml/html/clean.cpython-$(PYV).so
 file path=usr/lib/python$(PYVER)/vendor-packages/lxml/html/clean.py
 file path=usr/lib/python$(PYVER)/vendor-packages/lxml/html/defs.py
 file path=usr/lib/python$(PYVER)/vendor-packages/lxml/html/diff.cpython-$(PYV).so
diff --git a/components/python/lxml/manifests/sample-manifest.p5m b/components/python/lxml/manifests/sample-manifest.p5m
index beea124..b8eebab 100644
--- a/components/python/lxml/manifests/sample-manifest.p5m
+++ b/components/python/lxml/manifests/sample-manifest.p5m
@@ -53,7 +53,6 @@
 file path=usr/lib/python$(PYVER)/vendor-packages/lxml/html/_html5builder.py
 file path=usr/lib/python$(PYVER)/vendor-packages/lxml/html/_setmixin.py
 file path=usr/lib/python$(PYVER)/vendor-packages/lxml/html/builder.py
-file path=usr/lib/python$(PYVER)/vendor-packages/lxml/html/clean.cpython-$(PYV).so
 file path=usr/lib/python$(PYVER)/vendor-packages/lxml/html/clean.py
 file path=usr/lib/python$(PYVER)/vendor-packages/lxml/html/defs.py
 file path=usr/lib/python$(PYVER)/vendor-packages/lxml/html/diff.cpython-$(PYV).so
diff --git a/components/python/lxml/python-integrate-project.conf b/components/python/lxml/python-integrate-project.conf
index a0350c8..8f5d3e7 100644
--- a/components/python/lxml/python-integrate-project.conf
+++ b/components/python/lxml/python-integrate-project.conf
@@ -17,6 +17,17 @@
 # This project uses custom test style.
 # See project's Makefile.
 TEST_STYLE = custom
+
+#
+# Following dependency loops were detected (where 'A --> B' means 'A needs B to
+# run tests', and 'A ==> B' means 'A needs B for build and/or run'):
+#
+# lxml --> lxml_html_clean ==> lxml
+#
+# To break loops we need to allow this project to integrate without testing in
+# a case the required projects are not available yet (bootstrap).
+#
+PYTHON_TEST_BOOTSTRAP = yes
 %include-3%
 # This project uses custom test style.
 # See project's Makefile.
@@ -38,3 +49,7 @@
 		$(GSED) -u -e '/^$$/Q' | $(SORT) | $(NAWK) '{print}END{if(NR>0)printf(\"\\\\n\")}' ; \
 		$(CAT) \
 	)"
+
+# This project does not support tox so we need to provide test requirements
+# manually.
+TEST_REQUIREMENTS_EXTRAS += html-clean
diff --git a/components/python/lxml/test/results-all.master b/components/python/lxml/test/results-all.master
index 32d276d..9d2f17b 100644
--- a/components/python/lxml/test/results-all.master
+++ b/components/python/lxml/test/results-all.master
@@ -62,10 +62,7 @@
 $(@D)/src/lxml/html/tests/hackers-org-data/style-url-js.data ... ok
 $(@D)/src/lxml/html/tests/hackers-org-data/xml-data-island.data ... ok
 $(@D)/src/lxml/html/tests/hackers-org-data/xml-embedded-js.data ... ok
-$(@D)/src/lxml/html/tests/test_autolink.txt
 $(@D)/src/lxml/html/tests/test_basic.txt
-$(@D)/src/lxml/html/tests/test_clean.txt
-$(@D)/src/lxml/html/tests/test_clean_embed.txt
 $(@D)/src/lxml/html/tests/test_diff.txt
 $(@D)/src/lxml/html/tests/test_formfill.txt
 $(@D)/src/lxml/html/tests/test_forms.txt
@@ -85,7 +82,7 @@
 Doctest: lxml.etree.Schematron ... ok
 Doctest: lxml.etree.XML ... ok
 Doctest: lxml.etree.__test__.FunctionNamespace (line 207) ... ok
-Doctest: lxml.etree.__test__.XML (line 3240) ... ok
+Doctest: lxml.etree.__test__.XML (line 3241) ... ok
 Doctest: lxml.html.Classes ... ok
 Doctest: lxml.html.HtmlMixin.drop_tag ... ok
 Doctest: lxml.html.XHTMLParser ... ok
@@ -128,10 +125,7 @@
 Doctest: parsing.txt ... ok
 Doctest: resolvers.txt ... ok
 Doctest: sax.txt ... ok
-Doctest: test_autolink.txt ... ok
 Doctest: test_basic.txt ... ok
-Doctest: test_clean.txt ... ok
-Doctest: test_clean_embed.txt ... ok
 Doctest: test_diff.txt ... ok
 Doctest: test_formfill.txt ... ok
 Doctest: test_forms.txt ... ok
@@ -153,11 +147,11 @@
 Regression test to fix memory allocation issues (use 3+ inclusive NS spaces) ... ok
 Schematron (lxml.etree)
 Schematron (lxml.isoschematron)
-Test find methods (including xpath syntax). ... $(@D)/src/lxml/tests/test_elementpath.py:276: FutureWarning: This search incorrectly ignores the root element, and will be fixed in a future version.  If you rely on the current behaviour, change it to './tag'
-Test find methods (including xpath syntax). ... $(@D)/src/lxml/tests/test_elementpath.py:276: FutureWarning: This search incorrectly ignores the root element, and will be fixed in a future version.  If you rely on the current behaviour, change it to './tag'
+Test find methods (including xpath syntax). ... $(@D)/src/lxml/tests/test_elementpath.py:271: FutureWarning: This search incorrectly ignores the root element, and will be fixed in a future version.  If you rely on the current behaviour, change it to './tag'
+Test find methods (including xpath syntax). ... $(@D)/src/lxml/tests/test_elementpath.py:271: FutureWarning: This search incorrectly ignores the root element, and will be fixed in a future version.  If you rely on the current behaviour, change it to './tag'
 We don't have a guarantee that there will always be a path ... ok
 XHTMLParser (lxml.html)
-XML (line 3240) (lxml.etree.__test__)
+XML (line 3241) (lxml.etree.__test__)
 XML (lxml.etree)
 attrib (lxml.tests.selftest2)
 bad_find (lxml.tests.selftest)
@@ -303,8 +297,6 @@
 test_addprevious_root_pi (lxml.tests.test_etree.ETreeOnlyTestCase) ... ok
 test_addprevious_tails (lxml.tests.test_etree.ETreeOnlyTestCase) ... ok
 test_addprevious_with_tail (lxml.tests.test_etree.ETreeOnlyTestCase) ... ok
-test_allow_and_remove (lxml.html.tests.test_clean.CleanerTest) ... ok
-test_allow_tags (lxml.html.tests.test_clean.CleanerTest) ... ok
 test_anonymous_namespace (lxml.tests.test_incremental_xmlfile.BytesIOXmlFileTestCase) ... ok
 test_anonymous_namespace (lxml.tests.test_incremental_xmlfile.HtmlFileTestCase) ... ok
 test_anonymous_namespace (lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase) ... ok
@@ -495,8 +487,6 @@
 test_class_parse_unamed_fileobject (lxml.tests.test_io.ETreeIOTestCase) ... ok
 test_class_parse_unamed_fileobject (lxml.tests.test_io.ElementTreeIOTestCase) ... ok
 test_clean_doctype (lxml.tests.test_dtd.ETreeDtdTestCase) ... ok
-test_clean_invalid_root_tag (lxml.html.tests.test_clean.CleanerTest) ... ok
-test_clean_with_comments (lxml.html.tests.test_clean.CleanerTest) ... ok
 test_clear (lxml.tests.test_elementtree.ETreeTestCase) ... ok
 test_clear (lxml.tests.test_elementtree.ElementTreeTestCase) ... ok
 test_clear_keep_tail (lxml.tests.test_etree.ETreeOnlyTestCase) ... ok
@@ -941,6 +931,8 @@
 test_filelike_not_closing (lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase) ... ok
 test_find (lxml.tests.test_elementpath.ElementTreeElementPathTestCase)
 test_find (lxml.tests.test_elementpath.EtreeElementPathTestCase)
+test_find_warning (lxml.tests.test_elementpath.ElementTreeElementPathTestCase) ... ok
+test_find_warning (lxml.tests.test_elementpath.EtreeElementPathTestCase) ... ok
 test_findall (lxml.tests.test_elementtree.ETreeTestCase) ... ok
 test_findall (lxml.tests.test_elementtree.ElementTreeTestCase) ... ok
 test_findall (lxml.tests.test_objectify.ObjectifyTestCase) ... ok
@@ -958,7 +950,6 @@
 test_flush (lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase) ... ok
 test_flush (lxml.tests.test_incremental_xmlfile.TempPathXmlFileTestCase) ... skipped 'temp file behaviour is too platform specific here'
 test_flush (lxml.tests.test_incremental_xmlfile.TempXmlFileTestCase) ... ok
-test_formaction_attribute_in_button_input (lxml.html.tests.test_clean.CleanerTest) ... ok
 test_fromstring (lxml.tests.test_elementtree.ETreeTestCase) ... ok
 test_fromstring (lxml.tests.test_elementtree.ElementTreeTestCase) ... ok
 test_fromstringlist (lxml.tests.test_elementtree.ETreeTestCase) ... ok
@@ -1016,10 +1007,6 @@
 test_guess_charset_not_used_for_unicode (lxml.html.tests.test_html5parser.Test_document_fromstring) ... skipped 'html5lib is not installed'
 test_guess_charset_not_used_for_unicode (lxml.html.tests.test_html5parser.Test_fragments_fromstring) ... skipped 'html5lib is not installed'
 test_head_body (lxml.html.tests.test_elementsoup.SoupParserTestCase) ... ok
-test_host_whitelist_invalid (lxml.html.tests.test_clean.CleanerTest) ... ok
-test_host_whitelist_slash_type_confusion (lxml.html.tests.test_clean.CleanerTest) ... ok
-test_host_whitelist_sneaky_userinfo (lxml.html.tests.test_clean.CleanerTest) ... ok
-test_host_whitelist_valid (lxml.html.tests.test_clean.CleanerTest) ... ok
 test_html5_doctype (lxml.tests.test_htmlparser.HtmlParserTestCase) ... ok
 test_html_base (lxml.tests.test_etree.ETreeOnlyTestCase) ... ok
 test_html_base_tag (lxml.tests.test_etree.ETreeOnlyTestCase) ... ok
@@ -1062,8 +1049,6 @@
 test_ietf_decl (lxml.tests.test_htmlparser.HtmlParserTestCase) ... ok
 test_illegal_utf8 (lxml.tests.test_unicode.EncodingsTestCase) ... ok
 test_illegal_utf8_recover (lxml.tests.test_unicode.EncodingsTestCase) ... ok
-test_image_data_links (lxml.html.tests.test_clean.CleanerTest) ... ok
-test_image_data_links_in_style (lxml.html.tests.test_clean.CleanerTest) ... ok
 test_include_paths (lxml.tests.test_etree.ETreeOnlyTestCase) ... ok
 test_indent (lxml.tests.test_etree.ETreeOnlyTestCase) ... ok
 test_indent_level (lxml.tests.test_etree.ETreeOnlyTestCase) ... ok
@@ -1570,7 +1555,6 @@
 test_remove_ns (lxml.tests.test_elementtree.ElementTreeTestCase) ... ok
 test_remove_tail (lxml.tests.test_elementtree.ETreeTestCase) ... ok
 test_remove_tail (lxml.tests.test_elementtree.ElementTreeTestCase) ... ok
-test_remove_unknown_tags (lxml.html.tests.test_clean.CleanerTest) ... ok
 test_remove_while_iterating (lxml.tests.test_elementtree.ETreeTestCase) ... ok
 test_remove_while_iterating (lxml.tests.test_elementtree.ElementTreeTestCase) ... ok
 test_replace (lxml.tests.test_etree.ETreeOnlyTestCase) ... ok
@@ -1595,8 +1579,6 @@
 test_returns_whole_doc_if_input_contains_html_tag (lxml.html.tests.test_html5parser.Test_fromstring) ... skipped 'html5lib is not installed'
 test_returns_whole_doc_if_input_is_encoded (lxml.html.tests.test_html5parser.Test_fromstring) ... skipped 'html5lib is not installed'
 test_root (lxml.tests.test_objectify.ObjectifyTestCase) ... ok
-test_safe_attrs_excluded (lxml.html.tests.test_clean.CleanerTest) ... ok
-test_safe_attrs_included (lxml.html.tests.test_clean.CleanerTest) ... ok
 test_sax_to_pulldom (lxml.tests.test_sax.ETreeSaxTestCase) ... ok
 test_sax_to_pulldom_multiple_namespaces (lxml.tests.test_sax.ETreeSaxTestCase) ... ok
 test_schema_types (lxml.tests.test_objectify.ObjectifyTestCase) ... ok
@@ -1731,11 +1713,6 @@
 test_single_select_value_multiple_selected_options (lxml.html.tests.test_select.SelectTest) ... ok
 test_single_select_value_no_options (lxml.html.tests.test_select.SelectTest) ... ok
 test_single_select_value_no_selected_option (lxml.html.tests.test_select.SelectTest) ... ok
-test_sneaky_import_in_style (lxml.html.tests.test_clean.CleanerTest) ... ok
-test_sneaky_js_in_math_style (lxml.html.tests.test_clean.CleanerTest) ... ok
-test_sneaky_noscript_in_style (lxml.html.tests.test_clean.CleanerTest) ... ok
-test_sneaky_schemes_in_style (lxml.html.tests.test_clean.CleanerTest) ... ok
-test_sneaky_urls_in_style (lxml.html.tests.test_clean.CleanerTest) ... ok
 test_sourceline_XML (lxml.tests.test_etree.ETreeOnlyTestCase) ... ok
 test_sourceline_element (lxml.tests.test_etree.ETreeOnlyTestCase) ... ok
 test_sourceline_iterparse_end (lxml.tests.test_etree.ETreeOnlyTestCase) ... ok
@@ -1778,7 +1755,6 @@
 test_subelement_with_attributes_ns (lxml.tests.test_elementtree.ETreeTestCase) ... ok
 test_subelement_with_attributes_ns (lxml.tests.test_elementtree.ElementTreeTestCase) ... ok
 test_subtree_copy_thread (lxml.tests.test_threading.ThreadingTestCase) ... ok
-test_svg_data_links (lxml.html.tests.test_clean.CleanerTest) ... ok
 test_tag_reset_ns (lxml.tests.test_elementtree.ETreeTestCase) ... ok
 test_tag_reset_ns (lxml.tests.test_elementtree.ElementTreeTestCase) ... ok
 test_tag_reset_root_ns (lxml.tests.test_elementtree.ETreeTestCase) ... ok
@@ -2170,14 +2146,14 @@
 xpath_tokenizer (lxml.tests.selftest)
 
 ----------------------------------------------------------------------
-Ran 2011 tests
+Ran 1990 tests
 
 OK
 Comparing with ElementTree 1.3.0
 
-TESTED VERSION: 5.1.1
+TESTED VERSION: 5.2.1
     Python:           sys.version_info(major=3, minor=9, micro=19, releaselevel='final', serial=0)
-    lxml.etree:       (5, 1, 1, 0)
+    lxml.etree:       (5, 2, 1, 0)
     libxml used:      (2, 12, 6)
     libxml compiled:  (2, 12, 6)
     libxslt used:     (1, 1, 39)

--
Gitblit v1.9.3