Skip to content

Commit 46bb48f

Browse files
committed
Phase 1.2: Build tooling modernization for autobahn-python
- Add project header banner to justfile default recipe - Add clean-build recipe to remove build artifacts - Add verify-wheels recipe with twine check and auditwheel validation - Add docstring to docs-view recipe Part of GitHub issue #1789 (Phase 1.2 Build Tooling Modernization). Note: This work was completed with AI assistance (Claude Code).
1 parent 563b750 commit 46bb48f

1 file changed

Lines changed: 63 additions & 4 deletions

File tree

justfile

Lines changed: 63 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,34 @@ set script-interpreter := ['uv', 'run', '--script']
2020
# project base directory = directory of this justfile
2121
PROJECT_DIR := justfile_directory()
2222

23-
# Default recipe: list all recipes
23+
# Default recipe: show project header and list all recipes
2424
default:
25-
@echo ""
26-
@just --list
27-
@echo ""
25+
#!/usr/bin/env bash
26+
set -e
27+
VERSION=$(grep '^version' pyproject.toml | head -1 | sed 's/.*= *"\(.*\)"/\1/')
28+
GIT_REV=$(git rev-parse --short HEAD 2>/dev/null || echo "unknown")
29+
echo ""
30+
echo "==============================================================================="
31+
echo " Autobahn|Python "
32+
echo ""
33+
echo " WebSocket & WAMP for Python on Twisted and asyncio "
34+
echo ""
35+
echo " Python Package: autobahn "
36+
echo " Python Package Version: ${VERSION} "
37+
echo " Git Version: ${GIT_REV} "
38+
echo " Protocol Specification: https://wamp-proto.org/ "
39+
echo " Documentation: https://autobahn.readthedocs.io "
40+
echo " Package Releases: https://pypi.org/project/autobahn/ "
41+
echo " Nightly/Dev Releases: https://github.com/crossbario/autobahn-python/releases"
42+
echo " Source Code: https://github.com/crossbario/autobahn-python "
43+
echo " Copyright: typedef int GmbH (Germany/EU) "
44+
echo " License: MIT License "
45+
echo ""
46+
echo " >>> Created by The WAMP/Autobahn/Crossbar.io OSS Project <<< "
47+
echo "==============================================================================="
48+
echo ""
49+
just --list
50+
echo ""
2851

2952
# Tell uv to always copy files instead of trying to hardlink them.
3053
# set export UV_LINK_MODE := 'copy'
@@ -995,6 +1018,7 @@ docs venv="":
9951018
echo "==> Building documentation..."
9961019
"${VENV_PATH}/bin/sphinx-build" -b html docs/ docs/_build/html
9971020

1021+
# Build documentation and open in system viewer
9981022
docs-view venv="": (docs venv)
9991023
echo "==> Opening documentation in viewer ..."
10001024
open docs/_build/html/index.html
@@ -1049,6 +1073,41 @@ build-all:
10491073
done
10501074
ls -la dist/
10511075

1076+
# Clean build artifacts
1077+
clean-build:
1078+
echo "==> Cleaning build artifacts..."
1079+
rm -rf build/ dist/ *.egg-info/
1080+
echo "==> Build artifacts cleaned."
1081+
1082+
# Verify wheels using twine check and auditwheel (for native extensions)
1083+
verify-wheels venv="": (install-build-tools venv)
1084+
#!/usr/bin/env bash
1085+
set -e
1086+
VENV_NAME="{{ venv }}"
1087+
if [ -z "${VENV_NAME}" ]; then
1088+
echo "==> No venv name specified. Auto-detecting from system Python..."
1089+
VENV_NAME=$(just --quiet _get-system-venv-name)
1090+
echo "==> Defaulting to venv: '${VENV_NAME}'"
1091+
fi
1092+
VENV_PATH="{{ VENV_DIR }}/${VENV_NAME}"
1093+
1094+
echo "==> Verifying wheels with twine check..."
1095+
"${VENV_PATH}/bin/twine" check dist/*
1096+
1097+
echo ""
1098+
echo "==> Verifying wheels with auditwheel (native extension validation)..."
1099+
# Note: auditwheel is for Linux wheels with native extensions.
1100+
# Autobahn has optional NVX native extensions via CFFI.
1101+
for wheel in dist/*.whl; do
1102+
if [[ "$wheel" == *"none-any"* ]]; then
1103+
echo " Skipping pure Python wheel: $wheel"
1104+
else
1105+
echo " Checking: $wheel"
1106+
"${VENV_PATH}/bin/auditwheel" show "$wheel" || true
1107+
fi
1108+
done
1109+
echo "==> Wheel verification complete."
1110+
10521111
# Download release artifacts from GitHub and publish to PyPI
10531112
publish-pypi venv="" tag="":
10541113
#!/usr/bin/env bash

0 commit comments

Comments
 (0)