Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-zope.hookable for 
openSUSE:Factory checked in at 2026-03-30 18:31:33
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-zope.hookable (Old)
 and      /work/SRC/openSUSE:Factory/.python-zope.hookable.new.1999 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-zope.hookable"

Mon Mar 30 18:31:33 2026 rev:22 rq:1343541 version:8.2

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/python-zope.hookable/python-zope.hookable.changes    
    2025-04-10 22:00:32.251830166 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-zope.hookable.new.1999/python-zope.hookable.changes
      2026-03-30 18:34:53.812082523 +0200
@@ -1,0 +2,13 @@
+Sun Mar 29 20:18:14 UTC 2026 - Dirk Müller <[email protected]>
+
+- update to 8.2:
+  * Move all supported package metadata into pyproject.toml.
+  * Remove unnecessary setuptools runtime dependency.
+  * Drop support for Python 3.9.
+  * Add support for Python 3.14.
+  * Replace pkg_resources namespace with PEP 420 native
+    namespace.
+  * Drop support for Python 3.8.
+  * Add preliminary support for Python 3.14.
+
+-------------------------------------------------------------------

Old:
----
  zope_hookable-7.0.tar.gz

New:
----
  zope_hookable-8.2.tar.gz

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

Other differences:
------------------
++++++ python-zope.hookable.spec ++++++
--- /var/tmp/diff_new_pack.yJwyBJ/_old  2026-03-30 18:34:54.404107275 +0200
+++ /var/tmp/diff_new_pack.yJwyBJ/_new  2026-03-30 18:34:54.408107441 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package python-zope.hookable
 #
-# Copyright (c) 2025 SUSE LLC
+# Copyright (c) 2026 SUSE LLC and contributors
 # Copyright (c) 2013-2022 LISA GmbH, Bingen, Germany.
 #
 # All modifications and additions to the file contributed by third parties
@@ -27,26 +27,27 @@
 %endif
 %{?sle15_python_module_pythons}
 Name:           python-zope.hookable%{psuffix}
-Version:        7.0
+Version:        8.2
 Release:        0
 Summary:        Zope hookable
 License:        ZPL-2.1
 URL:            https://github.com/zopefoundation/zope.hookable
 Source:         
https://files.pythonhosted.org/packages/source/z/zope.hookable/zope_hookable-%{version}.tar.gz
-BuildRequires:  %{python_module devel}
+BuildRequires:  %{python_module devel >= 3.10}
 BuildRequires:  %{python_module pip}
 BuildRequires:  %{python_module setuptools}
 BuildRequires:  %{python_module wheel}
 BuildRequires:  fdupes
 BuildRequires:  python-rpm-macros
 # SECTION documentation requirements
+BuildRequires:  %{python_module furo}
 BuildRequires:  python3-Sphinx
-BuildRequires:  python3-sphinx_rtd_theme
 # /SECTION
 # SECTION testing requirements
 %if %{with test}
 BuildRequires:  %{python_module zope.hookable}
 BuildRequires:  %{python_module zope.testing}
+BuildRequires:  %{python_module zope.testrunner >= 6.4}
 %endif
 # /SECTION
 %python_subpackages
@@ -72,7 +73,7 @@
 
 %prep
 %autosetup -p1 -n zope_hookable-%{version}
-rm -rf zope.hookable.egg-info
+rm -rf src/zope.hookable.egg-info
 
 %build
 %if !%{with test}
@@ -91,6 +92,7 @@
 %check
 %if %{with test}
 pushd src
+export PURE_PYTHON=1
 %pyunittest 'zope.hookable.tests.test_hookable.test_suite'
 %endif
 
@@ -101,7 +103,6 @@
 %dir %{python_sitearch}/zope
 %{python_sitearch}/zope/hookable
 %{python_sitearch}/zope[_.]hookable-%{version}.dist-info
-%{python_sitearch}/zope.hookable-%{version}*-nspkg.pth
 %endif
 
 %if !%{with test}

++++++ zope_hookable-7.0.tar.gz -> zope_hookable-8.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/zope_hookable-7.0/.manylinux-install.sh 
new/zope_hookable-8.2/.manylinux-install.sh
--- old/zope_hookable-7.0/.manylinux-install.sh 2024-09-17 08:22:15.000000000 
+0200
+++ new/zope_hookable-8.2/.manylinux-install.sh 2025-11-17 08:27:32.000000000 
+0100
@@ -28,12 +28,12 @@
 
 tox_env_map() {
     case $1 in
-        *"cp38"*) echo 'py38';;
-        *"cp39"*) echo 'py39';;
         *"cp310"*) echo 'py310';;
         *"cp311"*) echo 'py311';;
         *"cp312"*) echo 'py312';;
         *"cp313"*) echo 'py313';;
+        *"cp314"*) echo 'py314';;
+        *"cp315"*) echo 'py315';;
         *) echo 'py';;
     esac
 }
@@ -41,14 +41,19 @@
 # Compile wheels
 for PYBIN in /opt/python/*/bin; do
     if \
-       [[ "${PYBIN}" == *"cp38/"* ]] || \
-       [[ "${PYBIN}" == *"cp39/"* ]] || \
        [[ "${PYBIN}" == *"cp310/"* ]] || \
        [[ "${PYBIN}" == *"cp311/"* ]] || \
        [[ "${PYBIN}" == *"cp312/"* ]] || \
-       [[ "${PYBIN}" == *"cp313/"* ]] ; then
-        "${PYBIN}/pip" install -e /io/
-        "${PYBIN}/pip" wheel /io/ -w wheelhouse/
+       [[ "${PYBIN}" == *"cp313/"* ]] || \
+       [[ "${PYBIN}" == *"cp314/"* ]] || \
+       [[ "${PYBIN}" == *"cp315/"* ]] ; then
+        if [[ "${PYBIN}" == *"cp315/"* ]] ; then
+            "${PYBIN}/pip" install --pre -e /io/
+            "${PYBIN}/pip" wheel /io/ --pre -w wheelhouse/
+        else
+            "${PYBIN}/pip" install -e /io/
+            "${PYBIN}/pip" wheel /io/ -w wheelhouse/
+        fi
         if [ `uname -m` == 'aarch64' ]; then
           cd /io/
           ${PYBIN}/pip install tox
@@ -60,7 +65,10 @@
     fi
 done
 
+# Show what wheels we have
+echo "Fixing up the following wheels:"
+ls -l wheelhouse/zope?hookable*.whl
 # Bundle external shared libraries into the wheels
-for whl in wheelhouse/zope.hookable*.whl; do
+for whl in wheelhouse/zope?hookable*.whl; do
     auditwheel repair "$whl" -w /io/wheelhouse/
 done
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/zope_hookable-7.0/.pre-commit-config.yaml 
new/zope_hookable-8.2/.pre-commit-config.yaml
--- old/zope_hookable-7.0/.pre-commit-config.yaml       2024-09-17 
08:22:15.000000000 +0200
+++ new/zope_hookable-8.2/.pre-commit-config.yaml       2025-11-17 
08:27:32.000000000 +0100
@@ -3,25 +3,25 @@
 minimum_pre_commit_version: '3.6'
 repos:
   - repo: https://github.com/pycqa/isort
-    rev: "5.13.2"
+    rev: "7.0.0"
     hooks:
     - id: isort
   - repo: https://github.com/hhatto/autopep8
-    rev: "v2.3.1"
+    rev: "v2.3.2"
     hooks:
     - id: autopep8
       args: [--in-place, --aggressive, --aggressive]
   - repo: https://github.com/asottile/pyupgrade
-    rev: v3.17.0
+    rev: v3.21.0
     hooks:
     - id: pyupgrade
-      args: [--py38-plus]
+      args: [--py310-plus]
   - repo: https://github.com/isidentical/teyit
     rev: 0.4.3
     hooks:
     - id: teyit
   - repo: https://github.com/PyCQA/flake8
-    rev: "7.1.1"
+    rev: "7.3.0"
     hooks:
     - id: flake8
       additional_dependencies:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/zope_hookable-7.0/CHANGES.rst 
new/zope_hookable-8.2/CHANGES.rst
--- old/zope_hookable-7.0/CHANGES.rst   2024-09-17 08:23:29.000000000 +0200
+++ new/zope_hookable-8.2/CHANGES.rst   2025-11-18 09:25:55.000000000 +0100
@@ -1,9 +1,34 @@
-=========
- Changes
-=========
+Change log
+==========
+
+8.2 (2025-11-18)
+----------------
+
+- Move all supported package metadata into ``pyproject.toml``.
+
+
+8.1 (2025-10-28)
+----------------
+
+- Remove unnecessary ``setuptools`` runtime dependency.
+
+- Drop support for Python 3.9.
+
+- Add support for Python 3.14.
+
+
+8.0 (2025-09-12)
+----------------
+
+- Replace ``pkg_resources`` namespace with PEP 420 native namespace.
+
+- Drop support for Python 3.8.
+
+- Add preliminary support for Python 3.14.
+
 
 7.0 (2024-09-17)
-================
+----------------
 
 - C extension now enables multi-phase module initialization (PEP 489).
   For CPython >= 3.11, the ``hookable`` type is now a heap-allocated
@@ -16,8 +41,9 @@
 
 - Build windows wheels on GHA.
 
+
 6.0 (2023-10-05)
-================
+----------------
 
 - Drop support for Python 2.7, 3.5, 3.6.
 
@@ -25,19 +51,19 @@
 
 
 5.4 (2022-11-17)
-================
+----------------
 
 - Add support for building arm64 wheels on macOS.
 
 
 5.3 (2022-11-03)
-================
+----------------
 
 - Add support for the final release of Python 3.11.
 
 
 5.2 (2022-09-13)
-================
+----------------
 
 - Add support for Python 3.10 and 3.11 (as of 3.11.0rc1).
 
@@ -46,7 +72,7 @@
 
 
 5.1.0 (2021-07-20)
-==================
+------------------
 
 - Add support for Python 3.9.
 
@@ -54,7 +80,7 @@
 
 
 5.0.1 (2020-03-10)
-==================
+------------------
 
 - Stop using the setuptools ``Feature`` class, allowing this
   project to be built from source with newer versions of setuptools
@@ -62,7 +88,7 @@
 
 
 5.0.0 (2019-11-12)
-==================
+------------------
 
 - Add support for Python 3.7 and 3.8.
 
@@ -70,7 +96,7 @@
 
 
 4.2.0 (2017-11-07)
-==================
+------------------
 
 - Expose the ``__doc__`` (and, where applicable, ``__bases__`` and
   ``__dict__``) of the hooked object. This lets Sphinx document them.
@@ -83,39 +109,44 @@
 
 
 4.1.0 (2017-07-26)
-==================
+------------------
 
 - Drop support for Python 2.6, 3.2 and 3.3.
 
 - Add support for Python 3.5 and 3.6.
 
+
 4.0.4 (2014-03-19)
-==================
+------------------
 
 - Add support for Python 3.4.
 
+
 4.0.3 (2014-03-17)
-==================
+------------------
 
 - Update ``boostrap.py`` to version 2.2.
 
 - Fix extension compilation on Py3k.
 
+
 4.0.2 (2012-12-31)
-==================
+------------------
 
 - Flesh out PyPI Trove classifiers.
 
+
 4.0.1 (2012-11-21)
-==================
+------------------
 
 - Add support for Python 3.3.
 
 - Avoid building the C extension explicitly (use the "feature" indirection
   instead).  https://bugs.launchpad.net/zope.hookable/+bug/1025470
 
+
 4.0.0 (2012-06-04)
-==================
+------------------
 
 - Add support for PyPy.
 
@@ -138,14 +169,16 @@
 
 - Add Python 3 support.
 
+
 3.4.1 (2009-04-05)
-==================
+------------------
 
 - Update for compatibility with Python 2.6 traceback formats.
 
 - Use Jython-compatible ``bootstrap.py``.
 
+
 3.4.0 (2007-07-20)
-==================
+------------------
 
 - Initial release as a separate project.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/zope_hookable-7.0/CONTRIBUTING.md 
new/zope_hookable-8.2/CONTRIBUTING.md
--- old/zope_hookable-7.0/CONTRIBUTING.md       2024-09-17 08:22:15.000000000 
+0200
+++ new/zope_hookable-8.2/CONTRIBUTING.md       2025-11-17 08:27:32.000000000 
+0100
@@ -1,7 +1,7 @@
 <!--
 Generated from:
 https://github.com/zopefoundation/meta/tree/master/config/c-code
---> 
+-->
 # Contributing to zopefoundation projects
 
 The projects under the zopefoundation GitHub organization are open source and
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/zope_hookable-7.0/PKG-INFO 
new/zope_hookable-8.2/PKG-INFO
--- old/zope_hookable-7.0/PKG-INFO      2024-09-17 08:36:18.764593800 +0200
+++ new/zope_hookable-8.2/PKG-INFO      2025-11-18 10:18:35.902117700 +0100
@@ -1,41 +1,43 @@
-Metadata-Version: 2.1
+Metadata-Version: 2.4
 Name: zope.hookable
-Version: 7.0
+Version: 8.2
 Summary: Zope hookable
-Home-page: http://github.com/zopefoundation/zope.hookable
-Author: Zope Foundation and Contributors
-Author-email: [email protected]
-License: ZPL 2.1
-Keywords: function hook replacement loose coupled
+Author-email: Zope Foundation and contributors <[email protected]>
+Maintainer-email: Plone Foundation and contributors <[email protected]>
+License-Expression: ZPL-2.1
+Project-URL: Documentation, https://zopehookable.readthedocs.io
+Project-URL: Issues, https://github.com/zopefoundation/zope.hookable/issues
+Project-URL: Source, https://github.com/zopefoundation/zope.hookable
+Project-URL: Changelog, 
https://github.com/zopefoundation/zope.hookable/blob/master/CHANGES.rst
+Keywords: zope,function,hook,replacement,loose,coupled
 Classifier: Development Status :: 5 - Production/Stable
+Classifier: Framework :: Zope :: 3
 Classifier: Intended Audience :: Developers
-Classifier: License :: OSI Approved :: Zope Public License
 Classifier: Operating System :: OS Independent
 Classifier: Programming Language :: Python
 Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.8
-Classifier: Programming Language :: Python :: 3.9
+Classifier: Programming Language :: Python :: 3 :: Only
 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: Programming Language :: Python :: Implementation :: CPython
 Classifier: Programming Language :: Python :: Implementation :: PyPy
-Classifier: Framework :: Zope :: 3
-Classifier: Topic :: Software Development :: Libraries :: Python Modules
-Requires-Python: >=3.8
+Requires-Python: >=3.10
+Description-Content-Type: text/x-rst
 License-File: LICENSE.txt
-Requires-Dist: setuptools
 Provides-Extra: docs
 Requires-Dist: Sphinx; extra == "docs"
-Requires-Dist: sphinx_rtd_theme; extra == "docs"
-Provides-Extra: testing
-Requires-Dist: zope.testing; extra == "testing"
-Requires-Dist: zope.testrunner; extra == "testing"
-Requires-Dist: coverage; extra == "testing"
+Requires-Dist: furo; extra == "docs"
 Provides-Extra: test
 Requires-Dist: zope.testing; extra == "test"
-Requires-Dist: zope.testrunner; extra == "test"
+Requires-Dist: zope.testrunner>=6.4; extra == "test"
+Provides-Extra: testing
+Requires-Dist: coverage; extra == "testing"
+Requires-Dist: zope.testing; extra == "testing"
+Requires-Dist: zope.testrunner>=6.4; extra == "testing"
+Dynamic: license-file
 
 ===============
  zope.hookable
@@ -69,156 +71,3 @@
 that imported it, will see the change.
 
 Documentation is hosted at https://zopehookable.readthedocs.io
-
-
-=========
- Changes
-=========
-
-7.0 (2024-09-17)
-================
-
-- C extension now enables multi-phase module initialization (PEP 489).
-  For CPython >= 3.11, the ``hookable`` type is now a heap-allocated
-  type.  See:
-  https://docs.python.org/3.13/howto/isolating-extensions.html
-
-- Drop support for Python 3.7.
-
-- Add support for Python 3.13.
-
-- Build windows wheels on GHA.
-
-6.0 (2023-10-05)
-================
-
-- Drop support for Python 2.7, 3.5, 3.6.
-
-- Add support for Python 3.12.
-
-
-5.4 (2022-11-17)
-================
-
-- Add support for building arm64 wheels on macOS.
-
-
-5.3 (2022-11-03)
-================
-
-- Add support for the final release of Python 3.11.
-
-
-5.2 (2022-09-13)
-================
-
-- Add support for Python 3.10 and 3.11 (as of 3.11.0rc1).
-
-- Disable unsafe math optimizations in C code.  See `pull request 25
-  <https://github.com/zopefoundation/zope.hookable/pull/25>`_.
-
-
-5.1.0 (2021-07-20)
-==================
-
-- Add support for Python 3.9.
-
-- Create Linux aarch64 wheels.
-
-
-5.0.1 (2020-03-10)
-==================
-
-- Stop using the setuptools ``Feature`` class, allowing this
-  project to be built from source with newer versions of setuptools
-  that remove that functionality.
-
-
-5.0.0 (2019-11-12)
-==================
-
-- Add support for Python 3.7 and 3.8.
-
-- Drop support for Python 3.4.
-
-
-4.2.0 (2017-11-07)
-==================
-
-- Expose the ``__doc__`` (and, where applicable, ``__bases__`` and
-  ``__dict__``) of the hooked object. This lets Sphinx document them.
-  See `issue 6 <https://github.com/zopefoundation/zope.hookable/issues/6>`_.
-
-- Respect ``PURE_PYTHON`` at runtime. At build time, always try to
-  build the C extensions on supported platforms, but allow it to fail.
-  See `issue 7
-  <https://github.com/zopefoundation/zope.hookable/issues/7>`_.
-
-
-4.1.0 (2017-07-26)
-==================
-
-- Drop support for Python 2.6, 3.2 and 3.3.
-
-- Add support for Python 3.5 and 3.6.
-
-4.0.4 (2014-03-19)
-==================
-
-- Add support for Python 3.4.
-
-4.0.3 (2014-03-17)
-==================
-
-- Update ``boostrap.py`` to version 2.2.
-
-- Fix extension compilation on Py3k.
-
-4.0.2 (2012-12-31)
-==================
-
-- Flesh out PyPI Trove classifiers.
-
-4.0.1 (2012-11-21)
-==================
-
-- Add support for Python 3.3.
-
-- Avoid building the C extension explicitly (use the "feature" indirection
-  instead).  https://bugs.launchpad.net/zope.hookable/+bug/1025470
-
-4.0.0 (2012-06-04)
-==================
-
-- Add support for PyPy.
-
-- Add support for continuous integration using ``tox`` and ``jenkins``.
-
-- Add a pure-Python reference implementation.
-
-- Move doctests to Sphinx documentation.
-
-- Bring unit test coverage to 100%.
-
-- Add 'setup.py docs' alias (installs ``Sphinx`` and dependencies).
-
-- Add 'setup.py dev' alias (runs ``setup.py develop`` plus installs
-  ``nose`` and ``coverage``).
-
-- Drop support for Python 2.4 / 2.5.
-
-- Remove of 'zope.testing.doctestunit' in favor of stdlib's 'doctest.
-
-- Add Python 3 support.
-
-3.4.1 (2009-04-05)
-==================
-
-- Update for compatibility with Python 2.6 traceback formats.
-
-- Use Jython-compatible ``bootstrap.py``.
-
-3.4.0 (2007-07-20)
-==================
-
-- Initial release as a separate project.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/zope_hookable-7.0/docs/_build/doctest/output.txt 
new/zope_hookable-8.2/docs/_build/doctest/output.txt
--- old/zope_hookable-7.0/docs/_build/doctest/output.txt        2024-09-17 
08:22:56.000000000 +0200
+++ new/zope_hookable-8.2/docs/_build/doctest/output.txt        1970-01-01 
01:00:00.000000000 +0100
@@ -1,17 +0,0 @@
-Results of doctest builder run on 2024-09-17 08:22:56
-=====================================================
-
-Document: narr
---------------
-1 items passed all tests:
-  13 tests in default
-13 tests in 1 items.
-13 passed and 0 failed.
-Test passed.
-
-Doctest summary
-===============
-   13 tests
-    0 failures in tests
-    0 failures in setup code
-    0 failures in cleanup code
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/zope_hookable-7.0/docs/_build/html/_sources/api.rst.txt 
new/zope_hookable-8.2/docs/_build/html/_sources/api.rst.txt
--- old/zope_hookable-7.0/docs/_build/html/_sources/api.rst.txt 2022-11-03 
15:29:45.000000000 +0100
+++ new/zope_hookable-8.2/docs/_build/html/_sources/api.rst.txt 1970-01-01 
01:00:00.000000000 +0100
@@ -1,5 +0,0 @@
-:mod:`zope.hookable` API
-========================
-
-.. automodule:: zope.hookable
-   :members:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/zope_hookable-7.0/docs/_build/html/_sources/hacking.rst.txt 
new/zope_hookable-8.2/docs/_build/html/_sources/hacking.rst.txt
--- old/zope_hookable-7.0/docs/_build/html/_sources/hacking.rst.txt     
2023-10-05 11:12:13.000000000 +0200
+++ new/zope_hookable-8.2/docs/_build/html/_sources/hacking.rst.txt     
1970-01-01 01:00:00.000000000 +0100
@@ -1,113 +0,0 @@
-Hacking on :mod:`zope.hookable`
-================================
-
-Getting the Code
-################
-
-The main repository for :mod:`zope.hookable` is in the Zope Foundation
-Github repository:
-
-  https://github.com/zopefoundation/zope.hookable
-
-You can get a read-only checkout from there:
-
-.. code-block:: sh
-
-   $ git clone https://github.com/zopefoundation/zope.hookable.git
-
-or fork it and get a writeable checkout of your fork:
-
-.. code-block:: sh
-
-   $ git clone [email protected]/jrandom/zope.hookable.git
-
-
-Using :mod:`tox`
-################
-
-Running Tests on Multiple Python Versions
------------------------------------------
-
-`tox <http://tox.testrun.org/latest/>`_ is a Python-based test automation
-tool designed to run tests against multiple Python versions.  It creates
-a ``virtualenv`` for each configured version, installs the current package
-and configured dependencies into each ``virtualenv``, and then runs the
-configured commands.
-
-:mod:`zope.hookable` configures the following :mod:`tox` environments via
-its ``tox.ini`` file:
-
-- The defined Python environments build a ``virtualenv/venv``, install
-  :mod:`zope.hookable` and dependencies, and run the tests via
-  ``zope.testrunner`` There are environments both for with and without using
-  the C code extension.
-
-- The ``coverage`` environment builds a ``virtualenv``,
-  installs :mod:`zope.hookable` and dependencies, installs
-  :mod:`coverage`, and runs the tests with coverage.
-
-- The ``docs`` environment builds a virtualenv installs :mod:`zope.hookable`
-  and dependencies, installs ``Sphinx`` and dependencies, and then builds the
-  docs and exercises the doctest snippets.
-
-This example requires that you have a working ``python3.11`` on your path,
-as well as an installed ``tox``:
-
-.. code-block:: sh
-
-   $ tox -e py311
-
-Running ``tox`` with no arguments runs all the configured environments,
-including building the docs and testing their snippets:
-
-.. code-block:: sh
-
-   $ tox
-
-To run the tests in parallel use:
-
-.. code-block:: sh
-
-   $ tox -p auto
-
-To see the coverage output:
-
-.. code-block:: sh
-
-   $ tox -e coverage
-
-Building the documentation
---------------------------
-
-:mod:`zope.hookable` uses the nifty :mod:`Sphinx` documentation system
-for building its docs.
-
-.. code-block:: sh
-
-   $ tox -e docs
-
-It also tests the code snippets in the documentation.
-
-Contributing to :mod:`zope.hookable`
-####################################
-
-Submitting a Bug Report
------------------------
-
-:mod:`zope.hookable` tracks its bugs on Github:
-
-
-  https://github.com/zopefoundation/zope.hookable/issues
-
-Please submit bug reports and feature requests there.
-
-
-Sharing Your Changes
---------------------
-
-If have made a change you would like to share, the best route is to fork
-the GitHub repository, check out your fork, make your changes on a branch
-in your fork, and push it.  You can then submit a pull request from your
-branch:
-
-  https://github.com/zopefoundation/zope.hookable/pulls
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/zope_hookable-7.0/docs/_build/html/_sources/index.rst.txt 
new/zope_hookable-8.2/docs/_build/html/_sources/index.rst.txt
--- old/zope_hookable-7.0/docs/_build/html/_sources/index.rst.txt       
2022-11-03 15:29:45.000000000 +0100
+++ new/zope_hookable-8.2/docs/_build/html/_sources/index.rst.txt       
1970-01-01 01:00:00.000000000 +0100
@@ -1,20 +0,0 @@
-:mod:`zope.hookable`
-====================
-
-Contents:
-
-.. toctree::
-   :maxdepth: 2
-
-   narr
-   api
-   hacking
-
-
-Indices and tables
-==================
-
-* :ref:`genindex`
-* :ref:`modindex`
-* :ref:`search`
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/zope_hookable-7.0/docs/_build/html/_sources/narr.rst.txt 
new/zope_hookable-8.2/docs/_build/html/_sources/narr.rst.txt
--- old/zope_hookable-7.0/docs/_build/html/_sources/narr.rst.txt        
2022-11-03 15:29:45.000000000 +0100
+++ new/zope_hookable-8.2/docs/_build/html/_sources/narr.rst.txt        
1970-01-01 01:00:00.000000000 +0100
@@ -1,48 +0,0 @@
-Hookable Object Support
-=======================
-
-:mod:`zope.hookable` supports the efficient creation of hookable objects,
-which are callable objects that are meant to be replaced by other callables,
-at least optionally.
-
-The idea is to create a function that does some default thing and
-make it hookable. Later, someone can modify what it does by calling
-its sethook method and changing its implementation.  All users of
-the function, including those that imported it, will see the
-change.
-
-.. doctest::
-
-   >>> from zope.hookable import hookable
-   >>> def f41():
-   ...     return 41
-   >>> f = hookable(f41)
-   >>> f.implementation is f.original
-   True
-   >>> f()
-   41
-
-We can replace the implementation, without replacing ``f``:  this means
-that modules which have already imported ``f`` will see the hooked version.
-
-.. doctest::
-
-   >>> old = f.sethook(lambda: 42)
-   >>> f.implementation is f.original
-   False
-   >>> old is f41
-   True
-   >>> f()
-   42
-   >>> f.original()
-   41
-   >>> f.implementation()
-   42
-
-We can undo the hook by calling ``reset``.
-
-.. doctest::
-
-   >>> f.reset()
-   >>> f()
-   41
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/zope_hookable-7.0/docs/conf.py 
new/zope_hookable-8.2/docs/conf.py
--- old/zope_hookable-7.0/docs/conf.py  2024-09-16 08:10:15.000000000 +0200
+++ new/zope_hookable-8.2/docs/conf.py  2025-11-18 09:25:41.000000000 +0100
@@ -30,7 +30,7 @@
 # -- Options for HTML output -------------------------------------------------
 # 
https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output
 
-html_theme = 'sphinx_rtd_theme'
+html_theme = 'furo'
 html_static_path = ['_static']
 
 # Example configuration for intersphinx: refer to the Python standard library.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/zope_hookable-7.0/docs/requirements.txt 
new/zope_hookable-8.2/docs/requirements.txt
--- old/zope_hookable-7.0/docs/requirements.txt 2023-10-05 14:05:48.000000000 
+0200
+++ new/zope_hookable-8.2/docs/requirements.txt 2025-11-18 09:25:41.000000000 
+0100
@@ -1,3 +1,2 @@
 Sphinx
-sphinx_rtd_theme>1
-docutils<0.19
+furo
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/zope_hookable-7.0/pyproject.toml 
new/zope_hookable-8.2/pyproject.toml
--- old/zope_hookable-7.0/pyproject.toml        2024-09-17 08:22:15.000000000 
+0200
+++ new/zope_hookable-8.2/pyproject.toml        2025-11-18 09:26:04.000000000 
+0100
@@ -3,9 +3,66 @@
 # https://github.com/zopefoundation/meta/tree/master/config/c-code
 
 [build-system]
-requires = ["setuptools<74"]
+requires = [
+    "setuptools",
+    "wheel",
+]
 build-backend = "setuptools.build_meta"
 
+[project]
+name = "zope.hookable"
+version = "8.2"
+description = "Zope hookable"
+keywords = ["zope", "function", "hook", "replacement", "loose", "coupled"]
+readme = "README.rst"
+requires-python = ">=3.10"
+license = "ZPL-2.1"
+authors = [
+  { name = "Zope Foundation and contributors", email = "[email protected]" },
+]
+maintainers = [
+  { name = "Plone Foundation and contributors", email = "[email protected]" },
+]
+classifiers = [
+  "Development Status :: 5 - Production/Stable",
+  "Framework :: Zope :: 3",
+  "Intended Audience :: Developers",
+  "Operating System :: OS Independent",
+  "Programming Language :: Python",
+  "Programming Language :: Python :: 3",
+  "Programming Language :: Python :: 3 :: Only",
+  "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",
+  "Programming Language :: Python :: Implementation :: CPython",
+  "Programming Language :: Python :: Implementation :: PyPy",
+]
+dependencies = []
+
+[project.optional-dependencies]
+docs = [
+  "Sphinx",
+  "furo",
+]
+test = [
+  "zope.testing",
+  "zope.testrunner >= 6.4",
+]
+testing = [
+  "coverage",
+  "zope.testing",
+  "zope.testrunner >= 6.4",
+]
+
+
+[project.urls]
+Documentation = "https://zopehookable.readthedocs.io";
+Issues = "https://github.com/zopefoundation/zope.hookable/issues";
+Source = "https://github.com/zopefoundation/zope.hookable";
+Changelog = 
"https://github.com/zopefoundation/zope.hookable/blob/master/CHANGES.rst";
+
 [tool.coverage.run]
 branch = true
 source = ["zope.hookable"]
@@ -16,10 +73,23 @@
 precision = 2
 ignore_errors = true
 show_missing = true
-exclude_lines = ["pragma: no cover", "pragma: nocover", "except ImportError:", 
"raise NotImplementedError", "if __name__ == '__main__':", "self.fail", "raise 
AssertionError", "raise unittest.Skip"]
+exclude_lines = [
+    "pragma: no cover",
+    "pragma: nocover",
+    "except ImportError:",
+    "raise NotImplementedError",
+    "if __name__ == '__main__':",
+    "self.fail",
+    "raise AssertionError",
+    "raise unittest.Skip",
+]
 
 [tool.coverage.html]
 directory = "parts/htmlcov"
 
 [tool.coverage.paths]
-source = ["src/", ".tox/*/lib/python*/site-packages/", 
".tox/pypy*/site-packages/"]
+source = [
+    "src/",
+    ".tox/*/lib/python*/site-packages/",
+    ".tox/pypy*/site-packages/",
+]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/zope_hookable-7.0/setup.py 
new/zope_hookable-8.2/setup.py
--- old/zope_hookable-7.0/setup.py      2024-09-17 08:23:42.000000000 +0200
+++ new/zope_hookable-8.2/setup.py      2025-11-18 09:25:41.000000000 +0100
@@ -25,7 +25,6 @@
 from distutils.errors import DistutilsPlatformError
 
 from setuptools import Extension
-from setuptools import find_packages
 from setuptools import setup
 from setuptools.command.build_ext import build_ext
 
@@ -57,11 +56,6 @@
         print('*' * 80)
 
 
-def read(*rnames):
-    with open(os.path.join(os.path.dirname(__file__), *rnames)) as f:
-        return f.read()
-
-
 codeoptimization = [
     Extension(
         "zope.hookable._zope_hookable",
@@ -79,55 +73,5 @@
 else:
     ext_modules = codeoptimization
 
-TESTS_REQUIRE = [
-    'zope.testing',
-    'zope.testrunner',
-]
-
-setup(name='zope.hookable',
-      version='7.0',
-      url='http://github.com/zopefoundation/zope.hookable',
-      license='ZPL 2.1',
-      description='Zope hookable',
-      keywords='function hook replacement loose coupled',
-      author='Zope Foundation and Contributors',
-      author_email='[email protected]',
-      long_description=(read('README.rst') + '\n\n' +
-                        read('CHANGES.rst')),
-      classifiers=[
-          "Development Status :: 5 - Production/Stable",
-          "Intended Audience :: Developers",
-          "License :: OSI Approved :: Zope Public License",
-          "Operating System :: OS Independent",
-          "Programming Language :: Python",
-          "Programming Language :: Python :: 3",
-          "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",
-          "Programming Language :: Python :: 3.13",
-          "Programming Language :: Python :: Implementation :: CPython",
-          "Programming Language :: Python :: Implementation :: PyPy",
-          "Framework :: Zope :: 3",
-          "Topic :: Software Development :: Libraries :: Python Modules",
-      ],
-      ext_modules=ext_modules,
-      cmdclass={
-          'build_ext': optional_build_ext,
-      },
-      packages=find_packages('src'),
-      package_dir={'': 'src'},
-      namespace_packages=['zope'],
-      install_requires=[
-          'setuptools',
-      ],
-      include_package_data=True,
-      zip_safe=False,
-      extras_require={
-          'docs': ['Sphinx', 'sphinx_rtd_theme'],
-          'testing': TESTS_REQUIRE + ['coverage'],
-          'test': TESTS_REQUIRE,
-      },
-      python_requires='>=3.8',
-      )
+setup(ext_modules=ext_modules,
+      cmdclass={'build_ext': optional_build_ext})
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/zope_hookable-7.0/src/zope/__init__.py 
new/zope_hookable-8.2/src/zope/__init__.py
--- old/zope_hookable-7.0/src/zope/__init__.py  2022-11-03 15:29:45.000000000 
+0100
+++ new/zope_hookable-8.2/src/zope/__init__.py  1970-01-01 01:00:00.000000000 
+0100
@@ -1 +0,0 @@
-__import__('pkg_resources').declare_namespace(__name__)  # pragma: no cover
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/zope_hookable-7.0/src/zope/hookable/__init__.py 
new/zope_hookable-8.2/src/zope/hookable/__init__.py
--- old/zope_hookable-7.0/src/zope/hookable/__init__.py 2024-06-12 
16:36:55.000000000 +0200
+++ new/zope_hookable-8.2/src/zope/hookable/__init__.py 2025-10-04 
09:20:03.000000000 +0200
@@ -70,7 +70,7 @@
 
 try:
     from zope.hookable._zope_hookable import hookable as _c_hookable
-except ImportError:  # pragma: no cover
+except ModuleNotFoundError:  # pragma: no cover
     _c_hookable = None
 
 if _PYPY_OR_JAVA or _PURE_PYTHON or _c_hookable is None:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/zope_hookable-7.0/src/zope.hookable.egg-info/PKG-INFO 
new/zope_hookable-8.2/src/zope.hookable.egg-info/PKG-INFO
--- old/zope_hookable-7.0/src/zope.hookable.egg-info/PKG-INFO   2024-09-17 
08:36:18.000000000 +0200
+++ new/zope_hookable-8.2/src/zope.hookable.egg-info/PKG-INFO   2025-11-18 
10:18:35.000000000 +0100
@@ -1,41 +1,43 @@
-Metadata-Version: 2.1
+Metadata-Version: 2.4
 Name: zope.hookable
-Version: 7.0
+Version: 8.2
 Summary: Zope hookable
-Home-page: http://github.com/zopefoundation/zope.hookable
-Author: Zope Foundation and Contributors
-Author-email: [email protected]
-License: ZPL 2.1
-Keywords: function hook replacement loose coupled
+Author-email: Zope Foundation and contributors <[email protected]>
+Maintainer-email: Plone Foundation and contributors <[email protected]>
+License-Expression: ZPL-2.1
+Project-URL: Documentation, https://zopehookable.readthedocs.io
+Project-URL: Issues, https://github.com/zopefoundation/zope.hookable/issues
+Project-URL: Source, https://github.com/zopefoundation/zope.hookable
+Project-URL: Changelog, 
https://github.com/zopefoundation/zope.hookable/blob/master/CHANGES.rst
+Keywords: zope,function,hook,replacement,loose,coupled
 Classifier: Development Status :: 5 - Production/Stable
+Classifier: Framework :: Zope :: 3
 Classifier: Intended Audience :: Developers
-Classifier: License :: OSI Approved :: Zope Public License
 Classifier: Operating System :: OS Independent
 Classifier: Programming Language :: Python
 Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.8
-Classifier: Programming Language :: Python :: 3.9
+Classifier: Programming Language :: Python :: 3 :: Only
 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: Programming Language :: Python :: Implementation :: CPython
 Classifier: Programming Language :: Python :: Implementation :: PyPy
-Classifier: Framework :: Zope :: 3
-Classifier: Topic :: Software Development :: Libraries :: Python Modules
-Requires-Python: >=3.8
+Requires-Python: >=3.10
+Description-Content-Type: text/x-rst
 License-File: LICENSE.txt
-Requires-Dist: setuptools
 Provides-Extra: docs
 Requires-Dist: Sphinx; extra == "docs"
-Requires-Dist: sphinx_rtd_theme; extra == "docs"
-Provides-Extra: testing
-Requires-Dist: zope.testing; extra == "testing"
-Requires-Dist: zope.testrunner; extra == "testing"
-Requires-Dist: coverage; extra == "testing"
+Requires-Dist: furo; extra == "docs"
 Provides-Extra: test
 Requires-Dist: zope.testing; extra == "test"
-Requires-Dist: zope.testrunner; extra == "test"
+Requires-Dist: zope.testrunner>=6.4; extra == "test"
+Provides-Extra: testing
+Requires-Dist: coverage; extra == "testing"
+Requires-Dist: zope.testing; extra == "testing"
+Requires-Dist: zope.testrunner>=6.4; extra == "testing"
+Dynamic: license-file
 
 ===============
  zope.hookable
@@ -69,156 +71,3 @@
 that imported it, will see the change.
 
 Documentation is hosted at https://zopehookable.readthedocs.io
-
-
-=========
- Changes
-=========
-
-7.0 (2024-09-17)
-================
-
-- C extension now enables multi-phase module initialization (PEP 489).
-  For CPython >= 3.11, the ``hookable`` type is now a heap-allocated
-  type.  See:
-  https://docs.python.org/3.13/howto/isolating-extensions.html
-
-- Drop support for Python 3.7.
-
-- Add support for Python 3.13.
-
-- Build windows wheels on GHA.
-
-6.0 (2023-10-05)
-================
-
-- Drop support for Python 2.7, 3.5, 3.6.
-
-- Add support for Python 3.12.
-
-
-5.4 (2022-11-17)
-================
-
-- Add support for building arm64 wheels on macOS.
-
-
-5.3 (2022-11-03)
-================
-
-- Add support for the final release of Python 3.11.
-
-
-5.2 (2022-09-13)
-================
-
-- Add support for Python 3.10 and 3.11 (as of 3.11.0rc1).
-
-- Disable unsafe math optimizations in C code.  See `pull request 25
-  <https://github.com/zopefoundation/zope.hookable/pull/25>`_.
-
-
-5.1.0 (2021-07-20)
-==================
-
-- Add support for Python 3.9.
-
-- Create Linux aarch64 wheels.
-
-
-5.0.1 (2020-03-10)
-==================
-
-- Stop using the setuptools ``Feature`` class, allowing this
-  project to be built from source with newer versions of setuptools
-  that remove that functionality.
-
-
-5.0.0 (2019-11-12)
-==================
-
-- Add support for Python 3.7 and 3.8.
-
-- Drop support for Python 3.4.
-
-
-4.2.0 (2017-11-07)
-==================
-
-- Expose the ``__doc__`` (and, where applicable, ``__bases__`` and
-  ``__dict__``) of the hooked object. This lets Sphinx document them.
-  See `issue 6 <https://github.com/zopefoundation/zope.hookable/issues/6>`_.
-
-- Respect ``PURE_PYTHON`` at runtime. At build time, always try to
-  build the C extensions on supported platforms, but allow it to fail.
-  See `issue 7
-  <https://github.com/zopefoundation/zope.hookable/issues/7>`_.
-
-
-4.1.0 (2017-07-26)
-==================
-
-- Drop support for Python 2.6, 3.2 and 3.3.
-
-- Add support for Python 3.5 and 3.6.
-
-4.0.4 (2014-03-19)
-==================
-
-- Add support for Python 3.4.
-
-4.0.3 (2014-03-17)
-==================
-
-- Update ``boostrap.py`` to version 2.2.
-
-- Fix extension compilation on Py3k.
-
-4.0.2 (2012-12-31)
-==================
-
-- Flesh out PyPI Trove classifiers.
-
-4.0.1 (2012-11-21)
-==================
-
-- Add support for Python 3.3.
-
-- Avoid building the C extension explicitly (use the "feature" indirection
-  instead).  https://bugs.launchpad.net/zope.hookable/+bug/1025470
-
-4.0.0 (2012-06-04)
-==================
-
-- Add support for PyPy.
-
-- Add support for continuous integration using ``tox`` and ``jenkins``.
-
-- Add a pure-Python reference implementation.
-
-- Move doctests to Sphinx documentation.
-
-- Bring unit test coverage to 100%.
-
-- Add 'setup.py docs' alias (installs ``Sphinx`` and dependencies).
-
-- Add 'setup.py dev' alias (runs ``setup.py develop`` plus installs
-  ``nose`` and ``coverage``).
-
-- Drop support for Python 2.4 / 2.5.
-
-- Remove of 'zope.testing.doctestunit' in favor of stdlib's 'doctest.
-
-- Add Python 3 support.
-
-3.4.1 (2009-04-05)
-==================
-
-- Update for compatibility with Python 2.6 traceback formats.
-
-- Use Jython-compatible ``bootstrap.py``.
-
-3.4.0 (2007-07-20)
-==================
-
-- Initial release as a separate project.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/zope_hookable-7.0/src/zope.hookable.egg-info/SOURCES.txt 
new/zope_hookable-8.2/src/zope.hookable.egg-info/SOURCES.txt
--- old/zope_hookable-7.0/src/zope.hookable.egg-info/SOURCES.txt        
2024-09-17 08:36:18.000000000 +0200
+++ new/zope_hookable-8.2/src/zope.hookable.egg-info/SOURCES.txt        
2025-11-18 10:18:35.000000000 +0100
@@ -21,17 +21,9 @@
 docs/make.bat
 docs/narr.rst
 docs/requirements.txt
-docs/_build/doctest/output.txt
-docs/_build/html/_sources/api.rst.txt
-docs/_build/html/_sources/hacking.rst.txt
-docs/_build/html/_sources/index.rst.txt
-docs/_build/html/_sources/narr.rst.txt
-src/zope/__init__.py
 src/zope.hookable.egg-info/PKG-INFO
 src/zope.hookable.egg-info/SOURCES.txt
 src/zope.hookable.egg-info/dependency_links.txt
-src/zope.hookable.egg-info/namespace_packages.txt
-src/zope.hookable.egg-info/not-zip-safe
 src/zope.hookable.egg-info/requires.txt
 src/zope.hookable.egg-info/top_level.txt
 src/zope/hookable/__init__.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/zope_hookable-7.0/src/zope.hookable.egg-info/namespace_packages.txt 
new/zope_hookable-8.2/src/zope.hookable.egg-info/namespace_packages.txt
--- old/zope_hookable-7.0/src/zope.hookable.egg-info/namespace_packages.txt     
2024-09-17 08:36:18.000000000 +0200
+++ new/zope_hookable-8.2/src/zope.hookable.egg-info/namespace_packages.txt     
1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-zope
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/zope_hookable-7.0/src/zope.hookable.egg-info/not-zip-safe 
new/zope_hookable-8.2/src/zope.hookable.egg-info/not-zip-safe
--- old/zope_hookable-7.0/src/zope.hookable.egg-info/not-zip-safe       
2022-11-03 15:31:57.000000000 +0100
+++ new/zope_hookable-8.2/src/zope.hookable.egg-info/not-zip-safe       
1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/zope_hookable-7.0/src/zope.hookable.egg-info/requires.txt 
new/zope_hookable-8.2/src/zope.hookable.egg-info/requires.txt
--- old/zope_hookable-7.0/src/zope.hookable.egg-info/requires.txt       
2024-09-17 08:36:18.000000000 +0200
+++ new/zope_hookable-8.2/src/zope.hookable.egg-info/requires.txt       
2025-11-18 10:18:35.000000000 +0100
@@ -1,14 +1,13 @@
-setuptools
 
 [docs]
 Sphinx
-sphinx_rtd_theme
+furo
 
 [test]
 zope.testing
-zope.testrunner
+zope.testrunner>=6.4
 
 [testing]
-zope.testing
-zope.testrunner
 coverage
+zope.testing
+zope.testrunner>=6.4
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/zope_hookable-7.0/tox.ini 
new/zope_hookable-8.2/tox.ini
--- old/zope_hookable-7.0/tox.ini       2024-09-17 08:22:15.000000000 +0200
+++ new/zope_hookable-8.2/tox.ini       2025-11-18 09:25:41.000000000 +0100
@@ -3,20 +3,23 @@
 [tox]
 minversion = 4.0
 envlist =
+    release-check
     lint
-    py38,py38-pure
-    py39,py39-pure
     py310,py310-pure
     py311,py311-pure
     py312,py312-pure
     py313,py313-pure
+    py314,py314-pure
+    py315,py315-pure
     pypy3
     docs
     coverage
 
 [testenv]
+pip_pre = py315: true
 deps =
-    setuptools  <74
+    setuptools >= 78.1.1,< 81
+    Sphinx
 setenv =
     pure: PURE_PYTHON=1
     !pure-!pypy3: PURE_PYTHON=0
@@ -52,7 +55,8 @@
 basepython = python3
 skip_install = true
 deps =
-    setuptools <74
+    setuptools
+    wheel
     twine
     build
     check-manifest
@@ -61,7 +65,7 @@
 commands_pre =
 commands =
     check-manifest
-    check-python-versions --only setup.py,tox.ini,.github/workflows/tests.yml
+    check-python-versions --only 
pyproject.toml,setup.py,tox.ini,.github/workflows/tests.yml
     python -m build --sdist --no-isolation
     twine check dist/*
 

Reply via email to