devx: add a repo-managed pre-push CI gate

Add a versioned pre-push runner that mirrors the basic required CI suites we can execute locally, including version/changelog checks, Rust fmt/clippy/core checks, Python lint/typecheck/tests, docs, and the WASM gate.

Wire the runner into pre-commit at the pre-push stage, add make prepush and make hooks for manual use and hook installation, and document the workflow in the contribution guides.

Also add pre-commit to the development dependency set and refresh uv.lock so a synced dev environment can install and run the hook reproducibly.
This commit is contained in:
Pratik Bhadane
2026-03-24 14:24:44 +05:30
parent 29c6f5cf84
commit ba77fbd418
7 changed files with 352 additions and 4 deletions
+10 -2
View File
@@ -1,7 +1,7 @@
# ferro-ta development Makefile
# Usage: make <target>
.PHONY: help dev build test lint typecheck fmt docs clean bench version
.PHONY: help dev build test lint typecheck fmt docs clean bench version audit prepush hooks
# Default target
help:
@@ -17,12 +17,14 @@ help:
@echo " make bench Run Rust criterion benchmarks (ferro_ta_core)"
@echo " make version Bump tracked version strings (set VERSION=X.Y.Z)"
@echo " make audit Run cargo-audit + pip-audit"
@echo " make prepush Run the local pre-push CI gate (set CHECKS='version rust_fmt' to scope it)"
@echo " make hooks Install pre-commit and pre-push git hooks"
@echo " make clean Remove build artefacts"
dev:
pip install uv
uv pip install --system maturin numpy pytest pytest-cov pandas polars hypothesis pyyaml \
sphinx sphinx-rtd-theme ruff mypy pyright
sphinx sphinx-rtd-theme ruff mypy pyright pre-commit
build:
maturin develop --release
@@ -57,6 +59,12 @@ audit:
cargo audit
uv run --with pip-audit pip-audit
prepush:
bash scripts/pre_push_checks.sh $(CHECKS)
hooks:
uv run --with pre-commit pre-commit install --hook-type pre-commit --hook-type pre-push
clean:
cargo clean
rm -rf dist/ docs/_build/ coverage.xml .coverage *.egg-info