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 <jan.pavlinec1@gmail.com>, Alexandru Ardelean <ardeleanalex@gmail.com>
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
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
--- /dev/null
+#!/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