From ae913f38ba2ecd1b0958a46fec193309a7c903fe Mon Sep 17 00:00:00 2001 From: Kevin Deldycke Date: Tue, 28 Jul 2026 14:12:20 +0400 Subject: [PATCH 1/7] python3-boltons: update to 25.0.0. --- .../python3-boltons/patches/py39-test.patch | 62 ------------------- srcpkgs/python3-boltons/template | 12 ++-- 2 files changed, 6 insertions(+), 68 deletions(-) delete mode 100644 srcpkgs/python3-boltons/patches/py39-test.patch diff --git a/srcpkgs/python3-boltons/patches/py39-test.patch b/srcpkgs/python3-boltons/patches/py39-test.patch deleted file mode 100644 index 45df36723a9c43..00000000000000 --- a/srcpkgs/python3-boltons/patches/py39-test.patch +++ /dev/null @@ -1,62 +0,0 @@ -From 754afddf141ea26956c88c7e13fe5e7ca7942654 Mon Sep 17 00:00:00 2001 -From: Karthikeyan Singaravelan -Date: Mon, 23 Nov 2020 11:23:49 +0530 -Subject: [PATCH] Fix Python 3.9 compatibility for FrozenDict due to PEP 584 - implementation. (#271) - ---- - boltons/dictutils.py | 2 +- - tests/test_dictutils.py | 12 ++++++++++++ - 2 files changed, 13 insertions(+), 1 deletion(-) - -diff --git boltons/dictutils.py boltons/dictutils.py -index ce5884c..8d1a4e7 100644 ---- a/boltons/dictutils.py -+++ b/boltons/dictutils.py -@@ -1076,7 +1076,7 @@ def _raise_frozen_typeerror(self, *a, **kw): - "raises a TypeError, because FrozenDicts are immutable" - raise TypeError('%s object is immutable' % self.__class__.__name__) - -- __setitem__ = __delitem__ = update = _raise_frozen_typeerror -+ __ior__ = __setitem__ = __delitem__ = update = _raise_frozen_typeerror - setdefault = pop = popitem = clear = _raise_frozen_typeerror - - del _raise_frozen_typeerror -diff --git tests/test_dictutils.py tests/test_dictutils.py -index b6873a8..6eac812 100644 ---- a/tests/test_dictutils.py -+++ b/tests/test_dictutils.py -@@ -1,5 +1,6 @@ - # -*- coding: utf-8 -*- - -+import sys - import pytest - - from boltons.dictutils import OMD, OneToOne, ManyToMany, FrozenDict, subdict, FrozenHashError -@@ -432,6 +433,15 @@ def test_frozendict(): - return - - -+@pytest.mark.skipif(sys.version_info < (3, 9), reason="requires python3.9 or higher") -+def test_frozendict_ior(): -+ data = {'a': 'A', 'b': 'B'} -+ fd = FrozenDict(data) -+ -+ with pytest.raises(TypeError, match=".*FrozenDicts are immutable.*"): -+ fd |= fd -+ -+ - def test_frozendict_api(): - # all the read-only methods that are fine - through_methods = ['__class__', -@@ -452,8 +462,10 @@ def test_frozendict_api(): - '__lt__', - '__ne__', - '__new__', -+ '__or__', - '__reduce__', - '__reversed__', -+ '__ror__', - '__setattr__', - '__sizeof__', - '__str__', diff --git a/srcpkgs/python3-boltons/template b/srcpkgs/python3-boltons/template index 5120462fdb5e09..556479a47ef320 100644 --- a/srcpkgs/python3-boltons/template +++ b/srcpkgs/python3-boltons/template @@ -1,17 +1,17 @@ # Template file for 'python3-boltons' pkgname=python3-boltons -version=20.2.1 -revision=6 -build_style=python3-module -hostmakedepends="python3-setuptools" +version=25.0.0 +revision=1 +build_style=python3-pep517 +hostmakedepends="python3-flit_core" depends="python3" checkdepends="python3-pytest" short_desc="Collection of functionality to be bolted on the standard lib" -maintainer="Orphaned " +maintainer="Kevin Deldycke " license="BSD-3-Clause" homepage="https://github.com/mahmoud/boltons" distfiles="https://github.com/mahmoud/boltons/archive/${version}.tar.gz" -checksum=f5b63fba62bed021c5086e43b4cfdaf6c8396a3ae1ccdcb549b4eb2f36f8a794 +checksum=7c9e47f2ca1c1f704950e913bf518c6c599dc4a01bc5feffffce2c3bf3c878ee post_install() { vlicense LICENSE From 6475e7874f86f615da2a7c01688d4e68c2fd5e54 Mon Sep 17 00:00:00 2001 From: Kevin Deldycke Date: Wed, 29 Jul 2026 14:47:04 +0400 Subject: [PATCH 2/7] New package: python3-cloup-3.1.0 --- srcpkgs/python3-cloup/template | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 srcpkgs/python3-cloup/template diff --git a/srcpkgs/python3-cloup/template b/srcpkgs/python3-cloup/template new file mode 100644 index 00000000000000..4998c4535797e6 --- /dev/null +++ b/srcpkgs/python3-cloup/template @@ -0,0 +1,26 @@ +# Template file for 'python3-cloup' +pkgname=python3-cloup +version=3.1.0 +revision=1 +build_style=python3-module +hostmakedepends="python3-setuptools python3-wheel python3-setuptools_scm" +depends="python3-click" +checkdepends="${depends} python3-pytest" +short_desc="Click extension: option groups, constraints, aliases and themed help" +maintainer="Kevin Deldycke " +license="MIT" +homepage="https://github.com/janluke/cloup" +distfiles="${PYPI_SITE}/c/cloup/cloup-3.1.0.tar.gz" +checksum=637c1e628fe98f3f20a5e44da591a72b42bf54d7d4527190bf39ed5f64af7585 + +post_extract() { + # Cloup pins ``setuptools_scm<10`` via legacy ``setup_requires`` which + # triggers a network fetch inside the build sandbox. Void ships + # setuptools_scm 10.x, so widen the constraint to use the host package. + vsed -i -e "s/setuptools_scm<10/setuptools_scm/" setup.py +} + +post_install() { + vlicense LICENSE 2>/dev/null || vlicense LICENSE.txt 2>/dev/null \ + || vlicense COPYING 2>/dev/null || : +} From aab5a30654584e4e672454ad4bfa597b6d9a4ed9 Mon Sep 17 00:00:00 2001 From: Kevin Deldycke Date: Wed, 29 Jul 2026 14:47:07 +0400 Subject: [PATCH 3/7] New package: python3-deepmerge-2.0 --- srcpkgs/python3-deepmerge/template | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 srcpkgs/python3-deepmerge/template diff --git a/srcpkgs/python3-deepmerge/template b/srcpkgs/python3-deepmerge/template new file mode 100644 index 00000000000000..fc29a53b60fdfa --- /dev/null +++ b/srcpkgs/python3-deepmerge/template @@ -0,0 +1,19 @@ +# Template file for 'python3-deepmerge' +pkgname=python3-deepmerge +version=2.0 +revision=1 +build_style=python3-pep517 +hostmakedepends="python3-setuptools python3-wheel python3-setuptools_scm" +depends="python3" +checkdepends="${depends} python3-pytest" +short_desc="Tools to handle merging of nested data structures in Python" +maintainer="Kevin Deldycke " +license="MIT" +homepage="https://github.com/toumorokoshi/deepmerge" +distfiles="${PYPI_SITE}/d/deepmerge/deepmerge-2.0.tar.gz" +checksum=5c3d86081fbebd04dd5de03626a0607b809a98fb6ccba5770b62466fe940ff20 + +post_install() { + vlicense LICENSE 2>/dev/null || vlicense LICENSE.txt 2>/dev/null \ + || vlicense COPYING 2>/dev/null || : +} From 5d005420f99c616d7e4c8c798d4938deb960a2b5 Mon Sep 17 00:00:00 2001 From: Kevin Deldycke Date: Wed, 29 Jul 2026 14:47:10 +0400 Subject: [PATCH 4/7] New package: python3-packageurl-python-0.17.6 --- srcpkgs/python3-packageurl-python/template | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 srcpkgs/python3-packageurl-python/template diff --git a/srcpkgs/python3-packageurl-python/template b/srcpkgs/python3-packageurl-python/template new file mode 100644 index 00000000000000..c36a5710a4c612 --- /dev/null +++ b/srcpkgs/python3-packageurl-python/template @@ -0,0 +1,21 @@ +# Template file for 'python3-packageurl-python' +pkgname=python3-packageurl-python +version=0.17.6 +revision=1 +build_style=python3-module +# test_purl_spec.py needs a git submodule absent from the sdist. +make_check_args="--ignore tests/test_purl_spec.py" +hostmakedepends="python3-setuptools python3-wheel" +depends="python3" +checkdepends="${depends} python3-pytest" +short_desc="Package URL (purl) parser and builder" +maintainer="Kevin Deldycke " +license="MIT" +homepage="https://github.com/package-url/packageurl-python" +distfiles="${PYPI_SITE}/p/packageurl-python/packageurl_python-0.17.6.tar.gz" +checksum=1252ce3a102372ca6f86eb968e16f9014c4ba511c5c37d95a7f023e2ca6e5c25 + +post_install() { + vlicense LICENSE 2>/dev/null || vlicense LICENSE.txt 2>/dev/null \ + || vlicense COPYING 2>/dev/null || : +} From 7b0b0a7405493e0d91a864c2c70c61137c9eb118 Mon Sep 17 00:00:00 2001 From: Kevin Deldycke Date: Wed, 29 Jul 2026 14:47:12 +0400 Subject: [PATCH 5/7] New package: python3-extra-platforms-13.5.1 --- srcpkgs/python3-extra-platforms/template | 26 ++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 srcpkgs/python3-extra-platforms/template diff --git a/srcpkgs/python3-extra-platforms/template b/srcpkgs/python3-extra-platforms/template new file mode 100644 index 00000000000000..588b9266e4e2b8 --- /dev/null +++ b/srcpkgs/python3-extra-platforms/template @@ -0,0 +1,26 @@ +# Template file for 'python3-extra-platforms' +pkgname=python3-extra-platforms +version=13.5.1 +revision=1 +build_style=python3-pep517 +hostmakedepends="uv-build" +depends="python3" +checkdepends="${depends} python3-pytest" +short_desc="Detect architectures, platforms, shells, terminals, CI systems and agents" +maintainer="Kevin Deldycke " +license="Apache-2.0" +homepage="https://github.com/kdeldycke/extra-platforms" +distfiles="${PYPI_SITE}/e/extra-platforms/extra_platforms-13.5.1.tar.gz" +checksum=89100acdf8aa28f8c589981b653e9f42a5bd68ce932c33cbd6faa7a81731c7c6 + +do_check() { + python3 -m venv --system-site-packages venv + venv/bin/python3 -m installer --overwrite-existing dist/*.whl + # Skip tests requiring network access. + venv/bin/python3 -m pytest -m "not network" +} + +post_install() { + vlicense LICENSE 2>/dev/null || vlicense LICENSE.txt 2>/dev/null \ + || vlicense COPYING 2>/dev/null || : +} From 832b6b0ee51109bf2df15eca66c45e73e067a67d Mon Sep 17 00:00:00 2001 From: Kevin Deldycke Date: Wed, 29 Jul 2026 14:47:13 +0400 Subject: [PATCH 6/7] New package: python3-click-extra-8.6.2 --- srcpkgs/python3-click-extra/template | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 srcpkgs/python3-click-extra/template diff --git a/srcpkgs/python3-click-extra/template b/srcpkgs/python3-click-extra/template new file mode 100644 index 00000000000000..4d1883e49f2899 --- /dev/null +++ b/srcpkgs/python3-click-extra/template @@ -0,0 +1,26 @@ +# Template file for 'python3-click-extra' +pkgname=python3-click-extra +version=8.6.2 +revision=1 +build_style=python3-pep517 +hostmakedepends="uv-build" +depends="python3-boltons python3-click python3-cloup python3-deepmerge python3-extra-platforms python3-tabulate python3-wcwidth python3-wcmatch" +checkdepends="${depends} git python3-hjson python3-jsonschema python3-myst-parser python3-Pygments python3-pytest python3-pytest-httpserver python3-requests python3-sphinx python3-tomlkit python3-xmltodict python3-yaml" +short_desc="Drop-in replacement for Click to build colorful, user-friendly CLIs" +maintainer="Kevin Deldycke " +license="GPL-2.0-or-later" +homepage="https://github.com/kdeldycke/click-extra" +distfiles="${PYPI_SITE}/c/click-extra/click_extra-8.6.2.tar.gz" +checksum=f21ec082021c09a2977e3320ff2c189ac2216e1a6f71a3297f4d0347582b53e0 + +do_check() { + python3 -m venv --system-site-packages venv + venv/bin/python3 -m installer --overwrite-existing dist/*.whl + # Skip tests requiring network access. + venv/bin/python3 -m pytest -m "not network" +} + +post_install() { + vlicense LICENSE 2>/dev/null || vlicense LICENSE.txt 2>/dev/null \ + || vlicense COPYING 2>/dev/null || : +} From 7e988310f2472affffaac7cdc65550442bf288af Mon Sep 17 00:00:00 2001 From: Kevin Deldycke Date: Wed, 29 Jul 2026 14:47:14 +0400 Subject: [PATCH 7/7] New package: mpm-7.4.1 --- srcpkgs/mpm/template | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 srcpkgs/mpm/template diff --git a/srcpkgs/mpm/template b/srcpkgs/mpm/template new file mode 100644 index 00000000000000..3740363e5ae7bb --- /dev/null +++ b/srcpkgs/mpm/template @@ -0,0 +1,26 @@ +# Template file for 'mpm' +pkgname=mpm +version=7.4.1 +revision=1 +build_style=python3-pep517 +hostmakedepends="uv-build" +depends="python3-boltons python3-click-extra python3-extra-platforms python3-packageurl-python python3-tomli-w python3-xmltodict" +checkdepends="${depends} python3-pytest python3-tomlkit python3-yaml" +short_desc="CLI that wraps all package managers behind a unifying interface" +maintainer="Kevin Deldycke " +license="GPL-2.0-or-later" +homepage="https://github.com/kdeldycke/meta-package-manager" +distfiles="${PYPI_SITE}/m/meta-package-manager/meta_package_manager-7.4.1.tar.gz" +checksum=b3ff8c1d9f27bcec3432c58797aa83816d7a53d53fd1cf73ea2d1275403f4e18 + +do_check() { + python3 -m venv --system-site-packages venv + venv/bin/python3 -m installer --overwrite-existing dist/*.whl + # Skip the "integration" tests, which drive real package managers. + venv/bin/python3 -m pytest -m "not integration" +} + +post_install() { + vlicense LICENSE 2>/dev/null || vlicense LICENSE.txt 2>/dev/null \ + || vlicense COPYING 2>/dev/null || : +}