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