Changes since 23.1.0:
- attrs 24.1.0: add __attrs_init__ customization via on_setattr
- attrs 24.2.0: improve type annotations, deprecate older APIs
- attrs 25.1.0: Python 3.13 support, drop Python 3.7
- attrs 25.3.0: further type annotation improvements
- attrs 25.4.0: bug fixes and maintenance
Signed-off-by: Alexandru Ardelean <redacted>
include $(TOPDIR)/rules.mk
PKG_NAME:=python-attrs
-PKG_VERSION:=23.1.0
+PKG_VERSION:=25.4.0
PKG_RELEASE:=1
PYPI_NAME:=attrs
-PKG_HASH:=6279836d581513a26f1bf235f9acd333bc9115683f14f7e8fae46c98fc50e015
+PKG_HASH:=16d5969b87f0859ef33a48b35d55ac1be6e42ae49d5e853b597db70c35c57e11
PKG_LICENSE:=MIT
PKG_LICENSE_FILES:=LICENSE
SUBMENU:=Python
TITLE:=Classes Without Boilerplate
URL:=https://www.attrs.org/
- DEPENDS:=+python3-light
+ DEPENDS:=+python3-light +python3-codecs
endef
define Package/python3-attrs/description
--- /dev/null
+#!/bin/sh
+
+[ "$1" = python3-attrs ] || exit 0
+
+python3 - <<'EOF'
+import attr
+import attrs
+
+# Define a class with attrs
+@attr.s
+class Point:
+ x = attr.ib()
+ y = attr.ib(default=0)
+
+p = Point(1, 2)
+assert p.x == 1
+assert p.y == 2
+
+p2 = Point(3)
+assert p2.y == 0
+
+# Equality
+assert Point(1, 2) == Point(1, 2)
+assert Point(1, 2) != Point(1, 3)
+
+# attrs.define (modern API)
+@attrs.define
+class Circle:
+ radius: float
+ color: str = "red"
+
+c = Circle(5.0)
+assert c.radius == 5.0
+assert c.color == "red"
+
+c2 = Circle(radius=3.0, color="blue")
+assert c2.color == "blue"
+
+# asdict
+d = attr.asdict(p)
+assert d == {"x": 1, "y": 2}
+
+print("python-attrs OK")
+EOF