Files
ferro-ta/Makefile
T
Pratik Bhadane ba77fbd418 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.
2026-03-24 14:24:44 +05:30

73 lines
2.4 KiB
Makefile

# ferro-ta development Makefile
# Usage: make <target>
.PHONY: help dev build test lint typecheck fmt docs clean bench version audit prepush hooks
# Default target
help:
@echo "ferro-ta development targets:"
@echo ""
@echo " make dev Install dev dependencies (maturin + test extras)"
@echo " make build Build and install the Rust extension in dev mode"
@echo " make test Run the full Python test suite with coverage"
@echo " make lint Run ruff linter on python/ and tests/"
@echo " make fmt Run rustfmt + ruff formatter"
@echo " make typecheck Run mypy + pyright type checkers"
@echo " make docs Build the Sphinx documentation"
@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 pre-commit
build:
maturin develop --release
test: build
pytest tests/ -v --cov=ferro_ta --cov-report=term-missing --cov-fail-under=65
lint:
uv run --with ruff ruff check python/ tests/
uv run --with ruff ruff format --check python/ tests/
fmt:
cargo fmt --all
uv run --with ruff ruff format python/ tests/
typecheck:
uv run --with mypy --with numpy mypy python/ferro_ta --ignore-missing-imports --no-error-summary
uv run --with pyright pyright python/ferro_ta
docs:
pip install sphinx sphinx-rtd-theme
sphinx-build -b html docs docs/_build --keep-going
bench:
cargo bench -p ferro_ta_core
version:
@test -n "$(VERSION)" || (echo "Usage: make version VERSION=X.Y.Z" && exit 1)
python3 scripts/bump_version.py "$(VERSION)"
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
find . -type d -name __pycache__ -exec rm -rf {} + 2>/dev/null || true
find . -name "*.so" -delete 2>/dev/null || true