dev-python/prefab-ui: new package, add 0.14.1

Signed-off-by: Florian Albrechtskirchinger <falbrechtskirchinger@gmail.com>
This commit is contained in:
Florian Albrechtskirchinger
2026-03-28 15:48:44 +01:00
parent a8abdbc481
commit 86bb6d4c91
3 changed files with 117 additions and 0 deletions

View File

@@ -0,0 +1,3 @@
DIST prefab_ui-0.14.1.tar.gz 3897953 BLAKE2B 7a873dbe6a592d9a37eea6b393e44abb1e30e08599099dfb712ab422955455f4c0a69fe1b6c81b6e8bfd82ac2917bcd32b88b4622142dc8cfaeadbf9860b149a SHA512 f31063972d65d3f7b3c3ab6fe66b40a037712cf5cdd7c553f2d8c2a7ee61d4da74b1b1885664438202c50cb7aa595a29e973f4ab39215a4f2cd883f1bbbc0aac
DIST prefab_ui-pyodide-v2026.03.28.sha256 437 BLAKE2B d314f804ae6b0b099f4336cc3adbe1df7951015dbaac2f12aa07d9308361f7a2a419169d4d0544fa439b755dd0f79b6234b4918d49328e7a3266ff1f577506b7 SHA512 4f3fec7775aecba2a1d67b0a9b4961ee9f09e95dd945c4e65cdb1786a97bb763337b4340e0734a7ef7f1c89394d5c6e73171068fc3504f867018d1baf59909a8
DIST prefab_ui-sandbox-v2026.03.28.tar.xz 6024436 BLAKE2B 27d83d72cf356715d96bce53853399624cef59a215e8a2ca42a54e79586e2a7c8ffd8fa9585236ec4be99eb0617ea725fc6b45302d3420633fc72f6aa8d4ab8a SHA512 c10e0ce3bc2f7052b17767054037ba97cf8faab0b6eab0d1099fb2a2cff43053bcbaa032b76e1da966dbf14e8715bc1152e063f62df71e9945978d23f0425ea8

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="person">
<email>falbrechtskirchinger@gmail.com</email>
<name>Florian Albrechtskirchinger</name>
</maintainer>
<upstream>
<remote-id type="pypi">prefab-ui</remote-id>
<remote-id type="github">PrefectHQ/prefab</remote-id>
</upstream>
</pkgmetadata>

View File

@@ -0,0 +1,102 @@
# Copyright 2026 Gentoo Authors
# Distributed under the terms of the Apache License 2.0
EAPI=8
PYTHON_COMPAT=( python3_{12..14} )
DISTUTILS_USE_PEP517=hatchling
inherit distutils-r1 pypi
DESCRIPTION="The agentic frontend framework that even humans can use"
HOMEPAGE="
https://prefab.prefect.io/
https://github.com/PrefectHQ/prefab
https://pypi.org/project/prefab-ui/
"
# prefab-ui uses Pyodide (Wasm CPython) within Deno for its sandbox.
# We vendor both the Deno runtime dependencies and the Wasm Python wheels
# to allow the test suite to execute inside the Portage network sandbox.
#
# Sandbox vendor tarball contents and checksums generated via:
# src/prefab_ui/sandbox $ deno cache --vendor --lock=deno.lock runner.js
# ... and:
# $ u="https://cdn.jsdelivr.net/pyodide/v0.27.4/full"; \
# mkdir pyodide_packages && cd pyodide_packages && wget -q "$u/pyodide-lock.json" && \
# python -c 'import json, sys; pkgs=set(sys.argv[1].split()); f=sys.stderr; \
# [(print(v["file_name"]), f.write(v["sha256"] + " " + v["file_name"] + "\n")) \
# for k, v in json.load(sys.stdin)["packages"].items() if k in pkgs]' \
# "annotated-types pydantic pydantic-core typing-extensions" \
# <pyodide-lock.json 2>../checksums.sha256 | xargs -I {} wget -q "$u/{}"
# Vendored test dependencies
VD_TAG=2026.03.28.0
VD_BASE_URI="https://github.com/falbrechtskirchinger/overlay-assets/releases/download"
SRC_URI+="
test? (
${VD_BASE_URI}/v${VD_TAG}/${PN//-/_}-sandbox-v${VD_TAG%.*}.tar.xz
${VD_BASE_URI}/v${VD_TAG}/${PN//-/_}-pyodide-v${VD_TAG%.*}.sha256
)
"
LICENSE="Apache-2.0"
SLOT="0"
KEYWORDS="~amd64 ~arm64"
RDEPEND="
dev-lang/deno-bin
>=dev-python/pydantic-2.11[${PYTHON_USEDEP}]
>=dev-python/cyclopts-4[${PYTHON_USEDEP}]
>=dev-python/rich-13[${PYTHON_USEDEP}]
"
BDEPEND="
test? (
dev-python/jsonschema[${PYTHON_USEDEP}]
)
"
EPYTEST_PLUGINS=( pytest-{asyncio,timeout} )
EPYTEST_XDIST=1
distutils_enable_tests pytest
src_test() {
local -x DENO_NO_REMOTE=1
# Check cache completness
pushd ..>/dev/null || die
echo '{"vendor": true}' >deno.json || die
deno cache --lock=deno.lock --frozen \
"${S}/src/prefab_ui/sandbox/runner.js" || die
popd >/dev/null || die
# Verify vendored wheels
pushd "${WORKDIR}/pyodide_packages" >/dev/null || die
sha256sum -c "${DISTDIR}/${PN//-/_}-pyodide-v${VD_TAG%.*}.sha256" || die
popd >/dev/null || die
distutils-r1_src_test
}
python_test() {
cp -a "${BUILD_DIR}"/{install,test} || die
local -x PATH=${BUILD_DIR}/test/usr/bin:${PATH}
local base_dir="${BUILD_DIR}/test/usr/lib/${EPYTHON}"
local sandbox_dir="${base_dir}/site-packages/prefab_ui/sandbox"
cp -a "${S}/skills" "${base_dir}" || die
# Copy vendored Deno dependencies
cp -a \
"${WORKDIR}/deno."{lock,json} \
"${WORKDIR}/node_modules" \
"${WORKDIR}/vendor" "${sandbox_dir}/" || die
# Copy vendored wheels
cp -a "${WORKDIR}/pyodide_packages/"* "${sandbox_dir}/node_modules/pyodide/" || die
# Show full error messages from Pyodide
sed -i 's/err\[-1000:\]/err/' "${sandbox_dir}/_pyodide.py" || die
local -x DENO_NO_REMOTE=1
epytest
}