nanobot-voice-interface/scripts/check_python_quality.sh
kacper 4dfb7ca3cc
Some checks failed
CI / Backend Checks (push) Failing after 36s
CI / Frontend Checks (push) Failing after 40s
feat: unify card runtime and event-driven web ui
2026-04-06 15:42:53 -04:00

68 lines
1.5 KiB
Bash
Executable file

#!/usr/bin/env bash
set -uo pipefail
status=0
root_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
python_files=(
"app.py"
"app_dependencies.py"
"card_store.py"
"inbox_service.py"
"message_pipeline.py"
"nanobot_api_client.py"
"route_helpers.py"
"rtc_manager.py"
"session_store.py"
"tool_job_service.py"
"ui_event_bus.py"
"web_runtime.py"
"workbench_store.py"
"routes"
)
run_check() {
local label="$1"
shift
echo "==> ${label}"
if ! "$@"; then
status=1
fi
echo
}
cd "${root_dir}"
run_check \
"Ruff format" \
uv run --with "ruff>=0.15.0,<1.0.0" \
ruff format --check "${python_files[@]}"
run_check \
"Ruff lint" \
uv run --with "ruff>=0.15.0,<1.0.0" \
ruff check "${python_files[@]}"
run_check \
"Deptry" \
uv run --with "deptry>=0.24.0,<1.0.0" \
deptry . \
--requirements-files requirements.txt \
--known-first-party app,card_store,supertonic_gateway,sync_card_templates,voice_rtc,wisper \
--per-rule-ignores DEP002=uvicorn \
--extend-exclude ".*/frontend/.*" \
--extend-exclude ".*/\\.venv/.*" \
--extend-exclude ".*/__pycache__/.*"
run_check \
"Vulture" \
uv run --with "vulture>=2.15,<3.0.0" \
vulture "${python_files[@]}" --min-confidence 80
run_check \
"Card Runtime" \
python3 scripts/check_card_runtime.py
run_check \
"Card Runtime Fixture" \
node scripts/check_card_runtime_fixture.mjs
run_check \
"Backend Tests" \
.venv/bin/python -m unittest discover -s tests -p "test_*.py"
exit "${status}"