release: verify_index_release.sh and 0.2.3 changelog
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Executable
+29
@@ -0,0 +1,29 @@
|
||||
#!/usr/bin/env bash
|
||||
# Install a published app_skellington from a package index into a clean venv
|
||||
# for every supported Python, then run scripts/smoke_import.py against it.
|
||||
#
|
||||
# Usage: scripts/verify_index_release.sh VERSION [INDEX_URL]
|
||||
# INDEX_URL defaults to TestPyPI. Dependencies always come from PyPI,
|
||||
# because TestPyPI hosts junk uploads under real dependency names.
|
||||
set -euo pipefail
|
||||
|
||||
version="${1:?usage: $0 VERSION [INDEX_URL]}"
|
||||
index="${2:-https://test.pypi.org/simple/}"
|
||||
here="$(cd "$(dirname "$0")" && pwd)"
|
||||
pythons=(3.8 3.9 3.10 3.11 3.12 3.13 3.14)
|
||||
|
||||
work="$(mktemp -d)"
|
||||
trap 'rm -rf "$work"' EXIT
|
||||
|
||||
for py in "${pythons[@]}"; do
|
||||
venv="$work/$py"
|
||||
uv venv -q --python "$py" "$venv"
|
||||
uv pip install -q --python "$venv" --no-cache --no-deps \
|
||||
--index-url "$index" "app_skellington==$version"
|
||||
"$venv/bin/python" -c 'import importlib.metadata as m; print("\n".join(m.requires("app_skellington") or []))' \
|
||||
> "$work/requirements.txt"
|
||||
uv pip install -q --python "$venv" -r "$work/requirements.txt"
|
||||
(cd / && "$venv/bin/python" "$here/smoke_import.py" "$version")
|
||||
done
|
||||
|
||||
echo "verified app_skellington==$version from $index on: ${pythons[*]}"
|
||||
Reference in New Issue
Block a user