@@ -20,11 +20,34 @@ set script-interpreter := ['uv', 'run', '--script']
2020# project base directory = directory of this justfile
2121PROJECT_DIR := justfile_directory ()
2222
23- # Default recipe: list all recipes
23+ # Default recipe: show project header and list all recipes
2424default :
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
9981022docs-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
10531112publish-pypi venv = " " tag = " ":
10541113 #!/usr/bin/env bash
0 commit comments