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/*