From 41515642efa4b031edcc4dfd3c038b5b4f646a38 Mon Sep 17 00:00:00 2001 From: Alexandru Ardelean Date: Tue, 24 Mar 2026 04:40:37 +0000 Subject: [PATCH] python-pluggy: bump to 1.6.0 Required by python-pytest >= 9.0.0, which needs pluggy >= 1.5.0. v1.5.0 added support for deprecating specific hook parameters via warn_on_impl_args (used by pytest 9.x hookspecs). Without this, pytest fails to import with: TypeError: HookspecMarker.__call__() got an unexpected keyword argument 'warn_on_impl_args' v1.6.0 changes: - Drop Python 3.8 support - Fix regression where get_result() on a failed Result caused the exception traceback to grow longer on each call - Fix StopIteration passing through hook wrappers - Fix Python 3.14 SyntaxWarning Signed-off-by: Alexandru Ardelean --- lang/python/python-pluggy/Makefile | 24 +++++++++++---- lang/python/python-pluggy/test.sh | 47 ++++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+), 5 deletions(-) create mode 100755 lang/python/python-pluggy/test.sh diff --git a/lang/python/python-pluggy/Makefile b/lang/python/python-pluggy/Makefile index 2c2816be7f..4845de97ba 100644 --- a/lang/python/python-pluggy/Makefile +++ b/lang/python/python-pluggy/Makefile @@ -8,23 +8,26 @@ include $(TOPDIR)/rules.mk PKG_NAME:=python-pluggy -PKG_VERSION:=1.3.0 +PKG_VERSION:=1.6.0 PKG_RELEASE:=1 PYPI_NAME:=pluggy -PKG_HASH:=cf61ae8f126ac6f7c451172cf30e3e43d3ca77615509771b3a984a0730651e12 +PKG_HASH:=7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3 PKG_MAINTAINER:=Jan Pavlinec , Alexandru Ardelean PKG_LICENSE:=MIT PKG_LICENSE_FILES:=LICENSE -PKG_BUILD_DEPENDS:=python-setuptools-scm/host +PKG_BUILD_DEPENDS:= \ + python3/host \ + python-setuptools/host \ + python-setuptools-scm/host HOST_BUILD_DEPENDS:= \ python3/host \ python-build/host \ python-installer/host \ - python-wheel/host \ - python-setuptools-scm/host + python-setuptools/host \ + python-wheel/host include ../pypi.mk include $(INCLUDE_DIR)/package.mk @@ -32,6 +35,17 @@ include $(INCLUDE_DIR)/host-build.mk include ../python3-package.mk include ../python3-host-build.mk +# Break circular dependency: +# pluggy/host -> setuptools-scm/host -> vcs-versioning/host -> hatchling/host -> pluggy/host +# Skip the setuptools-scm dependency check and +# set the version statically via setup.cfg fallback. +PYTHON3_HOST_BUILD_ARGS:=--skip-dependency-check + +define Host/Compile + printf '[metadata]\nversion = $(PKG_VERSION)\n' > $(HOST_BUILD_DIR)/setup.cfg + $(Py3Host/Compile) +endef + define Package/python3-pluggy SUBMENU:=Python SECTION:=lang diff --git a/lang/python/python-pluggy/test.sh b/lang/python/python-pluggy/test.sh new file mode 100755 index 0000000000..9d0e193ed2 --- /dev/null +++ b/lang/python/python-pluggy/test.sh @@ -0,0 +1,47 @@ +#!/bin/sh + +[ "$1" = "python3-pluggy" ] || exit 0 + +python3 - << EOF +import sys +import pluggy + +version = pluggy.__version__ +if version != "$2": + print("Wrong version: " + version) + sys.exit(1) + +# Define a hookspec and hookimpl +hookspec = pluggy.HookspecMarker("myproject") +hookimpl = pluggy.HookimplMarker("myproject") + +class MySpec: + @hookspec + def my_hook(self, arg): + """A hook that returns a value.""" + +class MyPlugin: + @hookimpl + def my_hook(self, arg): + return arg * 2 + +# Register and call +pm = pluggy.PluginManager("myproject") +pm.add_hookspecs(MySpec) +pm.register(MyPlugin()) + +results = pm.hook.my_hook(arg=21) +assert results == [42], f"Expected [42], got {results}" + +# Multiple plugins, results collected in LIFO order +class AnotherPlugin: + @hookimpl + def my_hook(self, arg): + return arg + 1 + +pm.register(AnotherPlugin()) +results = pm.hook.my_hook(arg=10) +assert results == [11, 20], f"Expected [11, 20], got {results}" + +sys.exit(0) +EOF