include $(TOPDIR)/rules.mk
PKG_NAME:=python-decorator
-PKG_VERSION:=4.4.2
+PKG_VERSION:=5.2.1
PKG_RELEASE:=1
PKG_MAINTAINER:=Josef Schlehofer <pepe.schlehofer@gmail.com>
PKG_CPE_ID:=cpe:/a:python:decorator
PYPI_NAME:=decorator
-PKG_HASH:=e3a62f0520172440ca0dcc823749319382e377f37f140a0b99ef45fecb84bfe7
+PKG_HASH:=65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360
+
+PKG_BUILD_DEPENDS:=python-setuptools/host
include ../pypi.mk
include $(INCLUDE_DIR)/package.mk
--- /dev/null
+#!/bin/sh
+
+[ "$1" = "python3-decorator" ] || exit 0
+
+python3 - << EOF
+import sys
+import decorator
+
+if decorator.__version__ != "$2":
+ print("Wrong version: " + decorator.__version__)
+ sys.exit(1)
+
+from decorator import decorator as dec, decorate
+
+# Basic usage: preserve function signature
+@dec
+def trace(f, *args, **kw):
+ result = f(*args, **kw)
+ return result
+
+def greet(name, greeting="Hello"):
+ return f"{greeting}, {name}"
+
+traced = trace(greet)
+assert traced("Alice") == "Hello, Alice"
+assert traced("Bob", greeting="Hi") == "Hi, Bob"
+
+# Signature is preserved
+import inspect
+sig = inspect.signature(traced)
+assert "name" in sig.parameters
+assert "greeting" in sig.parameters
+
+# Works with classes (dispatch-style)
+@dec
+def noop(f, *args, **kw):
+ return f(*args, **kw)
+
+class MyClass:
+ @noop
+ def method(self, x):
+ return x * 2
+
+obj = MyClass()
+assert obj.method(3) == 6
+
+sys.exit(0)
+EOF