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 2026-03-10 17:56:47
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-uritools (Old)
 and      /work/SRC/openSUSE:Factory/.python-uritools.new.8177 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-uritools"

Tue Mar 10 17:56:47 2026 rev:6 rq:1337898 version:6.0.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-uritools/python-uritools.changes  
2024-06-10 17:37:58.471710485 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-uritools.new.8177/python-uritools.changes    
    2026-03-10 18:01:07.810894813 +0100
@@ -1,0 +2,12 @@
+Tue Mar 10 08:16:55 UTC 2026 - Dirk Müller <[email protected]>
+
+- update to 6.0.1:
+  * Require Python >= 3.10 (fixup).
+  * Drop Python 3.9 support (breaking change).
+  * Add support for Python 3.14.
+  * Minor improvements from GitHub Copilot code review.
+  * Modernize build environment.
+  * Update CI environment.
+  * Require Python 3.9 or later (breaking change).
+
+-------------------------------------------------------------------

Old:
----
  uritools-4.0.3.tar.gz

New:
----
  uritools-6.0.1.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-uritools.spec ++++++
--- /var/tmp/diff_new_pack.3sWOPY/_old  2026-03-10 18:01:09.862979183 +0100
+++ /var/tmp/diff_new_pack.3sWOPY/_new  2026-03-10 18:01:09.866979347 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package python-uritools
 #
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2026 SUSE LLC and contributors
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
 
 %{?sle15_python_module_pythons}
 Name:           python-uritools
-Version:        4.0.3
+Version:        6.0.1
 Release:        0
 Summary:        URI parsing, classification and composition
 License:        MIT

++++++ uritools-4.0.3.tar.gz -> uritools-6.0.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/uritools-4.0.3/CHANGELOG.rst 
new/uritools-6.0.1/CHANGELOG.rst
--- old/uritools-4.0.3/CHANGELOG.rst    2024-05-28 20:03:50.000000000 +0200
+++ new/uritools-6.0.1/CHANGELOG.rst    2025-12-21 19:57:35.000000000 +0100
@@ -1,3 +1,31 @@
+v6.0.1 (2025-12-21)
+===================
+
+- Require Python >= 3.10 (fixup).
+
+
+v6.0.0 (2025-12-21)
+===================
+
+- Drop Python 3.9 support (breaking change).
+
+- Add support for Python 3.14.
+
+- Minor improvements from GitHub Copilot code review.
+
+- Modernize build environment.
+
+- Update CI environment.
+
+
+v5.0.0 (2025-05-02)
+===================
+
+- Require Python 3.9 or later (breaking change).
+
+- Update CI environment.
+
+
 v4.0.3 (2024-05-28)
 ===================
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/uritools-4.0.3/LICENSE new/uritools-6.0.1/LICENSE
--- old/uritools-4.0.3/LICENSE  2024-05-28 20:03:31.000000000 +0200
+++ new/uritools-6.0.1/LICENSE  2025-05-02 15:05:47.000000000 +0200
@@ -1,6 +1,6 @@
 The MIT License (MIT)
 
-Copyright (c) 2014-2024 Thomas Kemmer
+Copyright (c) 2014-2025 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.3/PKG-INFO new/uritools-6.0.1/PKG-INFO
--- old/uritools-4.0.3/PKG-INFO 2024-05-28 20:05:22.811203200 +0200
+++ new/uritools-6.0.1/PKG-INFO 2025-12-21 19:58:40.898700000 +0100
@@ -1,27 +1,26 @@
-Metadata-Version: 2.1
+Metadata-Version: 2.4
 Name: uritools
-Version: 4.0.3
+Version: 6.0.1
 Summary: URI parsing, classification and composition
-Home-page: https://github.com/tkem/uritools/
-Author: Thomas Kemmer
-Author-email: [email protected]
-License: MIT
+Author-email: Thomas Kemmer <[email protected]>
+Maintainer-email: Thomas Kemmer <[email protected]>
+License-Expression: MIT
+Project-URL: Homepage, https://github.com/tkem/uritools/
 Classifier: Development Status :: 5 - Production/Stable
-Classifier: Environment :: Other Environment
 Classifier: Intended Audience :: Developers
-Classifier: License :: OSI Approved :: MIT License
 Classifier: Operating System :: OS Independent
 Classifier: Programming Language :: Python
 Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.7
-Classifier: Programming Language :: Python :: 3.8
-Classifier: Programming Language :: Python :: 3.9
 Classifier: Programming Language :: Python :: 3.10
 Classifier: Programming Language :: Python :: 3.11
 Classifier: Programming Language :: Python :: 3.12
+Classifier: Programming Language :: Python :: 3.13
+Classifier: Programming Language :: Python :: 3.14
 Classifier: Topic :: Software Development :: Libraries :: Python Modules
-Requires-Python: >=3.7
+Requires-Python: >=3.10
+Description-Content-Type: text/x-rst
 License-File: LICENSE
+Dynamic: license-file
 
 uritools
 ========================================================================
@@ -54,6 +53,7 @@
    :target: https://github.com/psf/black
    :alt: Code style: black
 
+
 This module provides RFC 3986 compliant functions for parsing,
 classifying and composing URIs and URI references, largely replacing
 the Python Standard Library's ``urllib.parse`` module.
@@ -84,7 +84,7 @@
 For various reasons, ``urllib.parse`` and its Python 2 predecessor
 ``urlparse`` are not compliant with current Internet standards.  As
 stated in `Lib/urllib/parse.py
-<https://github.com/python/cpython/blob/3.8/Lib/urllib/parse.py>`_:
+<https://github.com/python/cpython/blob/main/Lib/urllib/parse.py#L22>`_:
 
     RFC 3986 is considered the current standard and any future changes
     to urlparse module should conform with it.  The urlparse module is
@@ -116,10 +116,19 @@
 - `Change log`_
 
 
+Related Projects
+------------------------------------------------------------------------
+
+- rfc3986_: A Python implementation of RFC 3986 including validation
+  and authority parsing.
+- rfc3987_: Parsing and validation of URIs (RFC 3896) and IRIs (RFC
+  3987).
+
+
 License
 ------------------------------------------------------------------------
 
-Copyright (c) 2014-2023 Thomas Kemmer.
+Copyright (c) 2014-2025 Thomas Kemmer.
 
 Licensed under the `MIT License`_.
 
@@ -130,3 +139,6 @@
 .. _Source code: https://github.com/tkem/uritools/
 .. _Change log: https://github.com/tkem/uritools/blob/master/CHANGELOG.rst
 .. _MIT License: https://raw.github.com/tkem/uritools/master/LICENSE
+
+.. _rfc3986: https://pypi.org/project/rfc3986/
+.. _rfc3987: https://pypi.org/project/rfc3987/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/uritools-4.0.3/README.rst 
new/uritools-6.0.1/README.rst
--- old/uritools-4.0.3/README.rst       2023-01-08 21:41:16.000000000 +0100
+++ new/uritools-6.0.1/README.rst       2025-05-02 15:51:45.000000000 +0200
@@ -29,6 +29,7 @@
    :target: https://github.com/psf/black
    :alt: Code style: black
 
+
 This module provides RFC 3986 compliant functions for parsing,
 classifying and composing URIs and URI references, largely replacing
 the Python Standard Library's ``urllib.parse`` module.
@@ -59,7 +60,7 @@
 For various reasons, ``urllib.parse`` and its Python 2 predecessor
 ``urlparse`` are not compliant with current Internet standards.  As
 stated in `Lib/urllib/parse.py
-<https://github.com/python/cpython/blob/3.8/Lib/urllib/parse.py>`_:
+<https://github.com/python/cpython/blob/main/Lib/urllib/parse.py#L22>`_:
 
     RFC 3986 is considered the current standard and any future changes
     to urlparse module should conform with it.  The urlparse module is
@@ -91,10 +92,19 @@
 - `Change log`_
 
 
+Related Projects
+------------------------------------------------------------------------
+
+- rfc3986_: A Python implementation of RFC 3986 including validation
+  and authority parsing.
+- rfc3987_: Parsing and validation of URIs (RFC 3896) and IRIs (RFC
+  3987).
+
+
 License
 ------------------------------------------------------------------------
 
-Copyright (c) 2014-2023 Thomas Kemmer.
+Copyright (c) 2014-2025 Thomas Kemmer.
 
 Licensed under the `MIT License`_.
 
@@ -105,3 +115,6 @@
 .. _Source code: https://github.com/tkem/uritools/
 .. _Change log: https://github.com/tkem/uritools/blob/master/CHANGELOG.rst
 .. _MIT License: https://raw.github.com/tkem/uritools/master/LICENSE
+
+.. _rfc3986: https://pypi.org/project/rfc3986/
+.. _rfc3987: https://pypi.org/project/rfc3987/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/uritools-4.0.3/docs/Makefile 
new/uritools-6.0.1/docs/Makefile
--- old/uritools-4.0.3/docs/Makefile    2020-08-10 19:35:07.000000000 +0200
+++ new/uritools-6.0.1/docs/Makefile    1970-01-01 01:00:00.000000000 +0100
@@ -1,153 +0,0 @@
-# Makefile for Sphinx documentation
-#
-
-# You can set these variables from the command line.
-SPHINXOPTS    =
-SPHINXBUILD   = sphinx-build
-PAPER         =
-BUILDDIR      = _build
-
-# Internal variables.
-PAPEROPT_a4     = -D latex_paper_size=a4
-PAPEROPT_letter = -D latex_paper_size=letter
-ALLSPHINXOPTS   = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
-# the i18n builder cannot share the environment and doctrees with the others
-I18NSPHINXOPTS  = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
-
-.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp 
epub latex latexpdf text man changes linkcheck doctest gettext
-
-help:
-       @echo "Please use \`make <target>' where <target> is one of"
-       @echo "  html       to make standalone HTML files"
-       @echo "  dirhtml    to make HTML files named index.html in directories"
-       @echo "  singlehtml to make a single large HTML file"
-       @echo "  pickle     to make pickle files"
-       @echo "  json       to make JSON files"
-       @echo "  htmlhelp   to make HTML files and a HTML help project"
-       @echo "  qthelp     to make HTML files and a qthelp project"
-       @echo "  devhelp    to make HTML files and a Devhelp project"
-       @echo "  epub       to make an epub"
-       @echo "  latex      to make LaTeX files, you can set PAPER=a4 or 
PAPER=letter"
-       @echo "  latexpdf   to make LaTeX files and run them through pdflatex"
-       @echo "  text       to make text files"
-       @echo "  man        to make manual pages"
-       @echo "  texinfo    to make Texinfo files"
-       @echo "  info       to make Texinfo files and run them through makeinfo"
-       @echo "  gettext    to make PO message catalogs"
-       @echo "  changes    to make an overview of all changed/added/deprecated 
items"
-       @echo "  linkcheck  to check all external links for integrity"
-       @echo "  doctest    to run all doctests embedded in the documentation 
(if enabled)"
-
-clean:
-       -rm -rf $(BUILDDIR)/*
-
-html:
-       $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
-       @echo
-       @echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
-
-dirhtml:
-       $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
-       @echo
-       @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
-
-singlehtml:
-       $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
-       @echo
-       @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
-
-pickle:
-       $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
-       @echo
-       @echo "Build finished; now you can process the pickle files."
-
-json:
-       $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
-       @echo
-       @echo "Build finished; now you can process the JSON files."
-
-htmlhelp:
-       $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
-       @echo
-       @echo "Build finished; now you can run HTML Help Workshop with the" \
-             ".hhp project file in $(BUILDDIR)/htmlhelp."
-
-qthelp:
-       $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
-       @echo
-       @echo "Build finished; now you can run "qcollectiongenerator" with the" 
\
-             ".qhcp project file in $(BUILDDIR)/qthelp, like this:"
-       @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/uritools.qhcp"
-       @echo "To view the help file:"
-       @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/uritools.qhc"
-
-devhelp:
-       $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
-       @echo
-       @echo "Build finished."
-       @echo "To view the help file:"
-       @echo "# mkdir -p $$HOME/.local/share/devhelp/uritools"
-       @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/uritools"
-       @echo "# devhelp"
-
-epub:
-       $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
-       @echo
-       @echo "Build finished. The epub file is in $(BUILDDIR)/epub."
-
-latex:
-       $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
-       @echo
-       @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
-       @echo "Run \`make' in that directory to run these through (pdf)latex" \
-             "(use \`make latexpdf' here to do that automatically)."
-
-latexpdf:
-       $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
-       @echo "Running LaTeX files through pdflatex..."
-       $(MAKE) -C $(BUILDDIR)/latex all-pdf
-       @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
-
-text:
-       $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
-       @echo
-       @echo "Build finished. The text files are in $(BUILDDIR)/text."
-
-man:
-       $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
-       @echo
-       @echo "Build finished. The manual pages are in $(BUILDDIR)/man."
-
-texinfo:
-       $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
-       @echo
-       @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
-       @echo "Run \`make' in that directory to run these through makeinfo" \
-             "(use \`make info' here to do that automatically)."
-
-info:
-       $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
-       @echo "Running Texinfo files through makeinfo..."
-       make -C $(BUILDDIR)/texinfo info
-       @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
-
-gettext:
-       $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
-       @echo
-       @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
-
-changes:
-       $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
-       @echo
-       @echo "The overview file is in $(BUILDDIR)/changes."
-
-linkcheck:
-       $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
-       @echo
-       @echo "Link check complete; look for any errors in the above output " \
-             "or in $(BUILDDIR)/linkcheck/output.txt."
-
-doctest:
-       $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
-       @echo "Testing of doctests in the sources finished, look at the " \
-             "results in $(BUILDDIR)/doctest/output.txt."
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/uritools-4.0.3/docs/conf.py 
new/uritools-6.0.1/docs/conf.py
--- old/uritools-4.0.3/docs/conf.py     2024-05-28 20:03:31.000000000 +0200
+++ new/uritools-6.0.1/docs/conf.py     2025-05-02 15:05:47.000000000 +0200
@@ -19,15 +19,17 @@
 
 
 project = "uritools"
-copyright = "2014-2024 Thomas Kemmer"
+copyright = "2014-2025 Thomas Kemmer"
 release, version = get_version()
 
 extensions = [
     "sphinx.ext.autodoc",
     "sphinx.ext.coverage",
     "sphinx.ext.doctest",
+    "sphinx.ext.intersphinx",
     "sphinx.ext.todo",
 ]
 exclude_patterns = ["_build"]
 master_doc = "index"
 html_theme = "classic"
+intersphinx_mapping = {"python": ("https://docs.python.org/3";, None)}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/uritools-4.0.3/docs/index.rst 
new/uritools-6.0.1/docs/index.rst
--- old/uritools-4.0.3/docs/index.rst   2020-08-10 19:35:07.000000000 +0200
+++ new/uritools-6.0.1/docs/index.rst   2025-05-02 15:51:45.000000000 +0200
@@ -34,7 +34,7 @@
 For various reasons, :mod:`urllib.parse` and its Python 2 predecessor
 :mod:`urlparse` are not compliant with current Internet standards.  As
 stated in `Lib/urllib/parse.py
-<https://github.com/python/cpython/blob/3.8/Lib/urllib/parse.py>`_:
+<https://github.com/python/cpython/blob/main/Lib/urllib/parse.py#L22>`_:
 
     RFC 3986 is considered the current standard and any future changes
     to urlparse module should conform with it.  The urlparse module is
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/uritools-4.0.3/pyproject.toml 
new/uritools-6.0.1/pyproject.toml
--- old/uritools-4.0.3/pyproject.toml   2021-10-11 20:18:34.000000000 +0200
+++ new/uritools-6.0.1/pyproject.toml   2025-12-21 19:53:22.000000000 +0100
@@ -1,3 +1,51 @@
 [build-system]
-requires = ["setuptools >= 46.4.0", "wheel"]
+requires = ["setuptools >= 61.0.0", "wheel"]
 build-backend = "setuptools.build_meta"
+
+[project]
+name = "uritools"
+dynamic = ["version"]
+description = "URI parsing, classification and composition"
+authors = [
+    {name = "Thomas Kemmer", email = "[email protected]"}
+]
+maintainers = [
+    {name = "Thomas Kemmer", email = "[email protected]"}
+]
+readme = "README.rst"
+license = "MIT"
+license-files = ["LICENSE"]
+requires-python = ">= 3.10"
+classifiers = [
+    "Development Status :: 5 - Production/Stable",
+    "Intended Audience :: Developers",
+    "Operating System :: OS Independent",
+    "Programming Language :: Python",
+    "Programming Language :: Python :: 3",
+    "Programming Language :: Python :: 3.10",
+    "Programming Language :: Python :: 3.11",
+    "Programming Language :: Python :: 3.12",
+    "Programming Language :: Python :: 3.13",
+    "Programming Language :: Python :: 3.14",
+    "Topic :: Software Development :: Libraries :: Python Modules",
+]
+
+[project.urls]
+Homepage = "https://github.com/tkem/uritools/";
+
+[tool.setuptools]
+package-dir = {"" = "src"}
+
+[tool.setuptools.packages.find]
+where = ["src"]
+
+[tool.setuptools.dynamic]
+version = {attr = "uritools.__version__"}
+
+[tool.flake8]
+max-line-length = 80
+exclude = [".git", ".tox", "build"]
+select = ["C", "E", "F", "W", "B", "B950", "I", "N"]
+# E501: line too long (black)
+# W503 line break before binary operator (black)
+ignore = ["E501", "W503"]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/uritools-4.0.3/setup.cfg new/uritools-6.0.1/setup.cfg
--- old/uritools-4.0.3/setup.cfg        2024-05-28 20:05:22.811203200 +0200
+++ new/uritools-6.0.1/setup.cfg        2025-12-21 19:58:40.898700000 +0100
@@ -1,49 +1,3 @@
-[metadata]
-name = uritools
-version = attr: uritools.__version__
-url = https://github.com/tkem/uritools/
-author = Thomas Kemmer
-author_email = [email protected]
-license = MIT
-license_files = LICENSE
-description = URI parsing, classification and composition
-long_description = file: README.rst
-classifiers = 
-       Development Status :: 5 - Production/Stable
-       Environment :: Other Environment
-       Intended Audience :: Developers
-       License :: OSI Approved :: MIT License
-       Operating System :: OS Independent
-       Programming Language :: Python
-       Programming Language :: Python :: 3
-       Programming Language :: Python :: 3.7
-       Programming Language :: Python :: 3.8
-       Programming Language :: Python :: 3.9
-       Programming Language :: Python :: 3.10
-       Programming Language :: Python :: 3.11
-       Programming Language :: Python :: 3.12
-       Topic :: Software Development :: Libraries :: Python Modules
-
-[options]
-package_dir = 
-       = src
-packages = find:
-python_requires = >= 3.7
-
-[options.packages.find]
-where = src
-
-[flake8]
-max-line-length = 80
-exclude = .git, .tox, build
-select = C, E, F, W, B, B950, I, N
-ignore = E501, W503
-
-[build_sphinx]
-source-dir = docs/
-build-dir = docs/_build
-all_files = 1
-
 [egg_info]
 tag_build = 
 tag_date = 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/uritools-4.0.3/setup.py new/uritools-6.0.1/setup.py
--- old/uritools-4.0.3/setup.py 2020-08-10 19:35:07.000000000 +0200
+++ new/uritools-6.0.1/setup.py 1970-01-01 01:00:00.000000000 +0100
@@ -1,3 +0,0 @@
-from setuptools import setup
-
-setup()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/uritools-4.0.3/src/uritools/__init__.py 
new/uritools-6.0.1/src/uritools/__init__.py
--- old/uritools-4.0.3/src/uritools/__init__.py 2024-05-28 20:03:31.000000000 
+0200
+++ new/uritools-6.0.1/src/uritools/__init__.py 2025-12-21 19:57:35.000000000 
+0100
@@ -34,7 +34,7 @@
     "uriunsplit",
 )
 
-__version__ = "4.0.3"
+__version__ = "6.0.1"
 
 
 # RFC 3986 2.2.  Reserved Characters
@@ -54,9 +54,7 @@
 #
 #   unreserved  = ALPHA / DIGIT / "-" / "." / "_" / "~"
 #
-UNRESERVED = (
-    "ABCDEFGHIJKLMNOPQRSTUVWXYZ" "abcdefghijklmnopqrstuvwxyz" "0123456789" 
"-._~"
-)
+UNRESERVED = 
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~"
 
 _unreserved = frozenset(UNRESERVED.encode())
 
@@ -250,7 +248,7 @@
         elif host.startswith(self.LBRACKET) and host.endswith(self.RBRACKET):
             return self.__parse_ip_literal(host[1:-1])
         elif host.startswith(self.LBRACKET) or host.endswith(self.RBRACKET):
-            raise ValueError("Invalid host %r" % host)
+            raise ValueError("Invalid host %r: mismatched brackets" % host)
         # TODO: faster check for IPv4 address?
         try:
             if isinstance(host, bytes):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/uritools-4.0.3/src/uritools.egg-info/PKG-INFO 
new/uritools-6.0.1/src/uritools.egg-info/PKG-INFO
--- old/uritools-4.0.3/src/uritools.egg-info/PKG-INFO   2024-05-28 
20:05:22.000000000 +0200
+++ new/uritools-6.0.1/src/uritools.egg-info/PKG-INFO   2025-12-21 
19:58:40.000000000 +0100
@@ -1,27 +1,26 @@
-Metadata-Version: 2.1
+Metadata-Version: 2.4
 Name: uritools
-Version: 4.0.3
+Version: 6.0.1
 Summary: URI parsing, classification and composition
-Home-page: https://github.com/tkem/uritools/
-Author: Thomas Kemmer
-Author-email: [email protected]
-License: MIT
+Author-email: Thomas Kemmer <[email protected]>
+Maintainer-email: Thomas Kemmer <[email protected]>
+License-Expression: MIT
+Project-URL: Homepage, https://github.com/tkem/uritools/
 Classifier: Development Status :: 5 - Production/Stable
-Classifier: Environment :: Other Environment
 Classifier: Intended Audience :: Developers
-Classifier: License :: OSI Approved :: MIT License
 Classifier: Operating System :: OS Independent
 Classifier: Programming Language :: Python
 Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.7
-Classifier: Programming Language :: Python :: 3.8
-Classifier: Programming Language :: Python :: 3.9
 Classifier: Programming Language :: Python :: 3.10
 Classifier: Programming Language :: Python :: 3.11
 Classifier: Programming Language :: Python :: 3.12
+Classifier: Programming Language :: Python :: 3.13
+Classifier: Programming Language :: Python :: 3.14
 Classifier: Topic :: Software Development :: Libraries :: Python Modules
-Requires-Python: >=3.7
+Requires-Python: >=3.10
+Description-Content-Type: text/x-rst
 License-File: LICENSE
+Dynamic: license-file
 
 uritools
 ========================================================================
@@ -54,6 +53,7 @@
    :target: https://github.com/psf/black
    :alt: Code style: black
 
+
 This module provides RFC 3986 compliant functions for parsing,
 classifying and composing URIs and URI references, largely replacing
 the Python Standard Library's ``urllib.parse`` module.
@@ -84,7 +84,7 @@
 For various reasons, ``urllib.parse`` and its Python 2 predecessor
 ``urlparse`` are not compliant with current Internet standards.  As
 stated in `Lib/urllib/parse.py
-<https://github.com/python/cpython/blob/3.8/Lib/urllib/parse.py>`_:
+<https://github.com/python/cpython/blob/main/Lib/urllib/parse.py#L22>`_:
 
     RFC 3986 is considered the current standard and any future changes
     to urlparse module should conform with it.  The urlparse module is
@@ -116,10 +116,19 @@
 - `Change log`_
 
 
+Related Projects
+------------------------------------------------------------------------
+
+- rfc3986_: A Python implementation of RFC 3986 including validation
+  and authority parsing.
+- rfc3987_: Parsing and validation of URIs (RFC 3896) and IRIs (RFC
+  3987).
+
+
 License
 ------------------------------------------------------------------------
 
-Copyright (c) 2014-2023 Thomas Kemmer.
+Copyright (c) 2014-2025 Thomas Kemmer.
 
 Licensed under the `MIT License`_.
 
@@ -130,3 +139,6 @@
 .. _Source code: https://github.com/tkem/uritools/
 .. _Change log: https://github.com/tkem/uritools/blob/master/CHANGELOG.rst
 .. _MIT License: https://raw.github.com/tkem/uritools/master/LICENSE
+
+.. _rfc3986: https://pypi.org/project/rfc3986/
+.. _rfc3987: https://pypi.org/project/rfc3987/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/uritools-4.0.3/src/uritools.egg-info/SOURCES.txt 
new/uritools-6.0.1/src/uritools.egg-info/SOURCES.txt
--- old/uritools-4.0.3/src/uritools.egg-info/SOURCES.txt        2024-05-28 
20:05:22.000000000 +0200
+++ new/uritools-6.0.1/src/uritools.egg-info/SOURCES.txt        2025-12-21 
19:58:40.000000000 +0100
@@ -3,11 +3,8 @@
 MANIFEST.in
 README.rst
 pyproject.toml
-setup.cfg
-setup.py
 tox.ini
 docs/.gitignore
-docs/Makefile
 docs/conf.py
 docs/index.rst
 src/uritools/__init__.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/uritools-4.0.3/tests/test_join.py 
new/uritools-6.0.1/tests/test_join.py
--- old/uritools-4.0.3/tests/test_join.py       2023-08-30 21:31:51.000000000 
+0200
+++ new/uritools-6.0.1/tests/test_join.py       2025-12-21 19:41:35.000000000 
+0100
@@ -94,3 +94,6 @@
         self.check("../", "../bar", "../../bar")
         self.check("../foo", "../bar", "../../bar")
         self.check("../foo/", "../bar", "../bar")
+
+    def test_path_traversal_limits(self):
+        self.assertEqual(urijoin("http://a/";, "../" * 100), "http://a/";)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/uritools-4.0.3/tests/test_split.py 
new/uritools-6.0.1/tests/test_split.py
--- old/uritools-4.0.3/tests/test_split.py      2024-05-28 20:03:31.000000000 
+0200
+++ new/uritools-6.0.1/tests/test_split.py      2025-12-21 19:41:35.000000000 
+0100
@@ -245,6 +245,16 @@
                 ("userinfo", IPv6Address("::1"), 5432),
             ),
             (
+                "http://@host/";,
+                None,
+                ("", "host", None),
+            ),
+            (
+                "http://user@domain@host:80/";,
+                None,
+                ("user@domain", "host", 80),
+            ),
+            (
                 "urn:example:animal:ferret:nose",
                 ("nobody", "localhost", 42),
                 ("nobody", "localhost", 42),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/uritools-4.0.3/tox.ini new/uritools-6.0.1/tox.ini
--- old/uritools-4.0.3/tox.ini  2024-05-28 20:03:31.000000000 +0200
+++ new/uritools-6.0.1/tox.ini  2025-12-21 19:41:35.000000000 +0100
@@ -6,12 +6,11 @@
     pytest
     pytest-cov
 commands =
-    py.test --basetemp={envtmpdir} --cov=uritools {posargs}
+    py.test --basetemp={envtmpdir} --cov=uritools --cov-report term-missing 
{posargs}
 
 [testenv:check-manifest]
 deps =
-    check-manifest==0.44; python_version < "3.8"
-    check-manifest; python_version >= "3.8"
+    check-manifest
 commands =
     check-manifest
 skip_install = true
@@ -31,9 +30,10 @@
 [testenv:flake8]
 deps =
     flake8
-    flake8-black; implementation_name == "cpython"
+    flake8-black
     flake8-bugbear
     flake8-import-order
+    flake8-pyproject
 commands =
     flake8
 skip_install = true

Reply via email to