Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-uritools for openSUSE:Factory checked in at 2024-06-10 17:37:45 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-uritools (Old) and /work/SRC/openSUSE:Factory/.python-uritools.new.19518 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-uritools" Mon Jun 10 17:37:45 2024 rev:5 rq:1179633 version:4.0.3 Changes: -------- --- /work/SRC/openSUSE:Factory/python-uritools/python-uritools.changes 2023-12-04 23:02:21.053477188 +0100 +++ /work/SRC/openSUSE:Factory/.python-uritools.new.19518/python-uritools.changes 2024-06-10 17:37:58.471710485 +0200 @@ -1,0 +2,7 @@ +Mon Jun 10 07:47:32 UTC 2024 - Dirk Müller <dmuel...@suse.com> + +- update to 4.0.3: + * Prepare for Python 3.13. +- use PEP 517 build + +------------------------------------------------------------------- Old: ---- uritools-4.0.2.tar.gz New: ---- uritools-4.0.3.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-uritools.spec ++++++ --- /var/tmp/diff_new_pack.GHmExA/_old 2024-06-10 17:37:59.399744814 +0200 +++ /var/tmp/diff_new_pack.GHmExA/_new 2024-06-10 17:37:59.399744814 +0200 @@ -1,7 +1,7 @@ # # spec file for package python-uritools # -# Copyright (c) 2023 SUSE LLC +# Copyright (c) 2024 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -18,14 +18,16 @@ %{?sle15_python_module_pythons} Name: python-uritools -Version: 4.0.2 +Version: 4.0.3 Release: 0 Summary: URI parsing, classification and composition License: MIT Group: Development/Languages/Python URL: https://github.com/tkem/uritools/ Source: https://files.pythonhosted.org/packages/source/u/uritools/uritools-%{version}.tar.gz +BuildRequires: %{python_module pip} BuildRequires: %{python_module setuptools} +BuildRequires: %{python_module wheel} BuildRequires: fdupes BuildRequires: python-rpm-macros BuildArch: noarch @@ -38,10 +40,10 @@ %setup -q -n uritools-%{version} %build -%python_build +%pyproject_wheel %install -%python_install +%pyproject_install %python_expand %fdupes %{buildroot}%{$python_sitelib} %check @@ -50,5 +52,6 @@ %files %{python_files} %doc CHANGELOG.rst README.rst %license LICENSE -%{python_sitelib}/* +%{python_sitelib}/uritools +%{python_sitelib}/uritools-%{version}.dist-info ++++++ uritools-4.0.2.tar.gz -> uritools-4.0.3.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/uritools-4.0.2/CHANGELOG.rst new/uritools-4.0.3/CHANGELOG.rst --- old/uritools-4.0.2/CHANGELOG.rst 2023-08-30 21:31:51.000000000 +0200 +++ new/uritools-4.0.3/CHANGELOG.rst 2024-05-28 20:03:50.000000000 +0200 @@ -1,3 +1,9 @@ +v4.0.3 (2024-05-28) +=================== + +- Prepare for Python 3.13. + + v4.0.2 (2023-08-30) =================== diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/uritools-4.0.2/LICENSE new/uritools-4.0.3/LICENSE --- old/uritools-4.0.2/LICENSE 2022-01-02 11:31:17.000000000 +0100 +++ new/uritools-4.0.3/LICENSE 2024-05-28 20:03:31.000000000 +0200 @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2014-2022 Thomas Kemmer +Copyright (c) 2014-2024 Thomas Kemmer Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/uritools-4.0.2/MANIFEST.in new/uritools-4.0.3/MANIFEST.in --- old/uritools-4.0.2/MANIFEST.in 2020-08-10 19:35:07.000000000 +0200 +++ new/uritools-4.0.3/MANIFEST.in 2024-05-01 20:41:31.000000000 +0200 @@ -3,6 +3,7 @@ include MANIFEST.in include README.rst include tox.ini +exclude .readthedocs.yaml recursive-include docs * prune docs/_build diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/uritools-4.0.2/PKG-INFO new/uritools-4.0.3/PKG-INFO --- old/uritools-4.0.2/PKG-INFO 2023-08-30 21:34:03.441240300 +0200 +++ new/uritools-4.0.3/PKG-INFO 2024-05-28 20:05:22.811203200 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: uritools -Version: 4.0.2 +Version: 4.0.3 Summary: URI parsing, classification and composition Home-page: https://github.com/tkem/uritools/ Author: Thomas Kemmer diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/uritools-4.0.2/docs/conf.py new/uritools-4.0.3/docs/conf.py --- old/uritools-4.0.2/docs/conf.py 2023-08-30 21:31:51.000000000 +0200 +++ new/uritools-4.0.3/docs/conf.py 2024-05-28 20:03:31.000000000 +0200 @@ -1,7 +1,26 @@ +import pathlib +import sys + +src_directory = (pathlib.Path(__file__).parent.parent / "src").resolve() +sys.path.insert(0, str(src_directory)) + + +# Extract the current version from the source. +def get_version(): + """Get the version and release from the source code.""" + + text = (src_directory / "uritools/__init__.py").read_text() + for line in text.splitlines(): + if not line.strip().startswith("__version__"): + continue + full_version = line.partition("=")[2].strip().strip("\"'") + partial_version = ".".join(full_version.split(".")[:2]) + return full_version, partial_version + + project = "uritools" -copyright = "2014-2023 Thomas Kemmer" -version = "4.0" -release = "4.0.2" +copyright = "2014-2024 Thomas Kemmer" +release, version = get_version() extensions = [ "sphinx.ext.autodoc", @@ -11,4 +30,4 @@ ] exclude_patterns = ["_build"] master_doc = "index" -html_theme = "default" +html_theme = "classic" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/uritools-4.0.2/setup.cfg new/uritools-4.0.3/setup.cfg --- old/uritools-4.0.2/setup.cfg 2023-08-30 21:34:03.441240300 +0200 +++ new/uritools-4.0.3/setup.cfg 2024-05-28 20:05:22.811203200 +0200 @@ -5,7 +5,7 @@ author = Thomas Kemmer author_email = tkem...@computer.org license = MIT -license_file = LICENSE +license_files = LICENSE description = URI parsing, classification and composition long_description = file: README.rst classifiers = diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/uritools-4.0.2/src/uritools/__init__.py new/uritools-4.0.3/src/uritools/__init__.py --- old/uritools-4.0.2/src/uritools/__init__.py 2023-08-30 21:31:51.000000000 +0200 +++ new/uritools-4.0.3/src/uritools/__init__.py 2024-05-28 20:03:31.000000000 +0200 @@ -34,7 +34,7 @@ "uriunsplit", ) -__version__ = "4.0.2" +__version__ = "4.0.3" # RFC 3986 2.2. Reserved Characters diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/uritools-4.0.2/src/uritools.egg-info/PKG-INFO new/uritools-4.0.3/src/uritools.egg-info/PKG-INFO --- old/uritools-4.0.2/src/uritools.egg-info/PKG-INFO 2023-08-30 21:34:03.000000000 +0200 +++ new/uritools-4.0.3/src/uritools.egg-info/PKG-INFO 2024-05-28 20:05:22.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: uritools -Version: 4.0.2 +Version: 4.0.3 Summary: URI parsing, classification and composition Home-page: https://github.com/tkem/uritools/ Author: Thomas Kemmer diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/uritools-4.0.2/tests/test_split.py new/uritools-4.0.3/tests/test_split.py --- old/uritools-4.0.2/tests/test_split.py 2021-10-11 20:18:34.000000000 +0200 +++ new/uritools-4.0.3/tests/test_split.py 2024-05-28 20:03:31.000000000 +0200 @@ -406,52 +406,133 @@ "Error parsing query list for %r" % query, ) - def test_ip_literal(self): + def test_ipv4_literal(self): cases = [ - ("http://Test.python.org:5432/foo/", "test.python.org", 5432), + ("http://12.34.56.78/foo/", "12.34.56.78", None), + ("http://12.34.56.78:/foo/", "12.34.56.78", None), ("http://12.34.56.78:5432/foo/", "12.34.56.78", 5432), - ("http://[::1]:5432/foo/", "::1", 5432), - ("http://[dead:beef::1]:5432/foo/", "dead:beef::1", 5432), - ("http://[dead:beef::]:5432/foo/", "dead:beef::", 5432), + ] + for uri, host, port in cases: + for parts in (urisplit(uri), urisplit(uri.encode("ascii"))): + self.assertEqual(host, str(parts.gethost())) + self.assertEqual(port, parts.getport()) + + def test_ipv6_literal(self): + cases = [ + ("http://[::1]:5432/foo/", "0000:0000:0000:0000:0000:0000:0000:0001", 5432), + ( + "http://[dead:beef::1]:5432/foo/", + "dead:beef:0000:0000:0000:0000:0000:0001", + 5432, + ), + ( + "http://[dead:beef::]:5432/foo/", + "dead:beef:0000:0000:0000:0000:0000:0000", + 5432, + ), ( "http://[dead:beef:cafe:5417:affe:8FA3:deaf:feed]:5432/foo/", "dead:beef:cafe:5417:affe:8fa3:deaf:feed", 5432, ), - ("http://[::12.34.56.78]:5432/foo/", "::c22:384e", 5432), - ("http://[::ffff:12.34.56.78]:5432/foo/", "::ffff:c22:384e", 5432), - ("http://Test.python.org/foo/", "test.python.org", None), - ("http://12.34.56.78/foo/", "12.34.56.78", None), - ("http://[::1]/foo/", "::1", None), - ("http://[dead:beef::1]/foo/", "dead:beef::1", None), - ("http://[dead:beef::]/foo/", "dead:beef::", None), + ("http://[::1]/foo/", "0000:0000:0000:0000:0000:0000:0000:0001", None), + ( + "http://[dead:beef::1]/foo/", + "dead:beef:0000:0000:0000:0000:0000:0001", + None, + ), + ( + "http://[dead:beef::]/foo/", + "dead:beef:0000:0000:0000:0000:0000:0000", + None, + ), ( "http://[dead:beef:cafe:5417:affe:8FA3:deaf:feed]/foo/", "dead:beef:cafe:5417:affe:8fa3:deaf:feed", None, ), - ("http://[::12.34.56.78]/foo/", "::c22:384e", None), - ("http://[::ffff:12.34.56.78]/foo/", "::ffff:c22:384e", None), - ("http://Test.python.org:/foo/", "test.python.org", None), - ("http://12.34.56.78:/foo/", "12.34.56.78", None), - ("http://[::1]:/foo/", "::1", None), - ("http://[dead:beef::1]:/foo/", "dead:beef::1", None), - ("http://[dead:beef::]:/foo/", "dead:beef::", None), + ("http://[::1]:/foo/", "0000:0000:0000:0000:0000:0000:0000:0001", None), + ( + "http://[dead:beef::1]:/foo/", + "dead:beef:0000:0000:0000:0000:0000:0001", + None, + ), + ( + "http://[dead:beef::]:/foo/", + "dead:beef:0000:0000:0000:0000:0000:0000", + None, + ), ( "http://[dead:beef:cafe:5417:affe:8FA3:deaf:feed]:/foo/", "dead:beef:cafe:5417:affe:8fa3:deaf:feed", None, ), - ("http://[::12.34.56.78]:/foo/", "::c22:384e", None), - ("http://[::ffff:12.34.56.78]:/foo/", "::ffff:c22:384e", None), ] for uri, host, port in cases: + for parts in (urisplit(uri), urisplit(uri.encode("ascii"))): + self.assertEqual(host, parts.gethost().exploded) + self.assertEqual(port, parts.getport()) + + def test_ipv4_mapped_literal(self): + # since Python 3.13, the "alternative form" is used for + # IPv4-mapped addresses, see RFC 4291 2.2 p.3 + cases = [ + ( + "http://[::12.34.56.78]:5432/foo/", + [ + "0000:0000:0000:0000:0000:0000:0c22:384e", + "0000:0000:0000:0000:0000:0000:12.34.56.78", + ], + 5432, + ), + ( + "http://[::ffff:12.34.56.78]:5432/foo/", + [ + "0000:0000:0000:0000:0000:ffff:0c22:384e", + "0000:0000:0000:0000:0000:ffff:12.34.56.78", + ], + 5432, + ), + ( + "http://[::12.34.56.78]/foo/", + [ + "0000:0000:0000:0000:0000:0000:0c22:384e", + "0000:0000:0000:0000:0000:0000:12.34.56.78", + ], + None, + ), + ( + "http://[::ffff:12.34.56.78]/foo/", + [ + "0000:0000:0000:0000:0000:ffff:0c22:384e", + "0000:0000:0000:0000:0000:ffff:12.34.56.78", + ], + None, + ), + ( + "http://[::12.34.56.78]:/foo/", + [ + "0000:0000:0000:0000:0000:0000:0c22:384e", + "0000:0000:0000:0000:0000:0000:12.34.56.78", + ], + None, + ), + ( + "http://[::ffff:12.34.56.78]:/foo/", + [ + "0000:0000:0000:0000:0000:ffff:0c22:384e", + "0000:0000:0000:0000:0000:ffff:12.34.56.78", + ], + None, + ), + ] + for uri, hosts, port in cases: parts = urisplit(uri) - self.assertEqual(host, str(parts.gethost())) - self.assertEqual(port, parts.getport()) + self.assertIn(parts.gethost().exploded, hosts) + self.assertEqual(parts.getport(), port) parts = urisplit(uri.encode("ascii")) - self.assertEqual(host, str(parts.gethost())) - self.assertEqual(port, parts.getport()) + self.assertIn(parts.gethost().exploded, hosts) + self.assertEqual(parts.getport(), port) def test_invalid_ip_literal(self): uris = [ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/uritools-4.0.2/tox.ini new/uritools-4.0.3/tox.ini --- old/uritools-4.0.2/tox.ini 2021-10-11 20:18:34.000000000 +0200 +++ new/uritools-4.0.3/tox.ini 2024-05-28 20:03:31.000000000 +0200 @@ -3,7 +3,6 @@ [testenv] deps = - coverage pytest pytest-cov commands =