Skip to content

chore(deps): bump the rust-dependencies group across 1 directory with 2 updates #215

chore(deps): bump the rust-dependencies group across 1 directory with 2 updates

chore(deps): bump the rust-dependencies group across 1 directory with 2 updates #215

Workflow file for this run

# CI — every push/PR to main
#
# Full quality gate (nextest, wheel smoke, pytest) runs locally via pre-push hook:
# ./scripts/install-git-hooks.sh
#
# Pipeline:
# 1. sanity — fast metadata + doc drift checks (~1 min)
# 2. rust-gate — fmt + clippy + nextest (core/polars/backtest) when Rust sources change
# 3. python-gold — gold-vector streaming parity (Linux + macOS)
# 4. docs — mkdocs gh-pages deploy (main branch only)
#
# Release (crates.io + PyPI) is a separate workflow: release.yml on v* tags.
name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
workflow_dispatch:
concurrency:
group: ci-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
changes:
name: Detect path changes
runs-on: ubuntu-latest
outputs:
rust: ${{ steps.filter.outputs.rust }}
python_gold: ${{ steps.filter.outputs.python_gold }}
steps:
- uses: actions/checkout@v7
- uses: dorny/paths-filter@v4
id: filter
with:
filters: |
rust:
- '**/*.rs'
- '**/Cargo.toml'
- 'Cargo.lock'
- '.github/workflows/ci.yml'
python_gold:
- 'tests/python/**'
- 'tests/options_india/**'
- 'quantwave-py/**'
- 'quantwave-core/src/options_india/**'
- 'quantwave-core/tests/gold_standard/**'
- '.github/workflows/ci.yml'
sanity:
name: Doc & metadata sanity
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: actions/setup-python@v7
with:
python-version: "3.12"
- name: Metadata and documentation drift
run: |
python3 scripts/check_metadata_drift.py
python3 scripts/check_doc_drift.py
python3 scripts/check_public_metadata.py
python3 scripts/check_aeo.py
python3 scripts/check_benchmark_claims.py
python3 scripts/check_repo_hygiene.py
python3 scripts/check_indicator_parity_coverage.py
python3 scripts/check_core_safety.py
python3 scripts/check_validation_docs.py
python3 scripts/check_release_invariants.py
python3 scripts/check_bead_ids.py
python3 scripts/check_talib_map_drift.py
python3 scripts/check_api_stubs_drift.py
python3 scripts/check_doc_latex.py
python3 scripts/check_doc_links.py
rust-gate:
name: Rust quality gate
needs: [changes]
if: needs.changes.outputs.rust == 'true' || github.event_name == 'workflow_dispatch'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- uses: taiki-e/install-action@v2
with:
tool: nextest
- name: cargo fmt + clippy + nextest (core crates)
run: |
./scripts/rustfmt_check.sh
cargo clippy -p quantwave-core -p quantwave-polars -p quantwave-backtest --all-targets -- -D warnings
cargo nextest run -p quantwave-core
cargo nextest run -p quantwave-polars
cargo nextest run -p quantwave-backtest
# nextest does not run doctests, so the documented examples -- including
# the crate-level quick start -- were never compiled by CI.
cargo test --doc -p quantwave-core -p quantwave-polars -p quantwave-backtest
python-gold-parity:
name: Python gold parity (${{ matrix.os }})
needs: [changes]
if: needs.changes.outputs.python_gold == 'true' || github.event_name == 'workflow_dispatch'
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest]
steps:
- uses: actions/checkout@v7
- uses: actions/setup-python@v7
with:
python-version: "3.12"
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Create venv and install build + test deps
run: |
python -m venv .venv
source .venv/bin/activate
pip install maturin pytest numpy polars
- name: Build quantwave (editable)
run: |
source .venv/bin/activate
maturin develop --release --manifest-path quantwave-py/Cargo.toml
- name: Gold-standard streaming parity
run: |
source .venv/bin/activate
python -m pytest tests/python/test_gold_parity.py -q
- name: Polars .ta plugin surface (unified crate)
run: |
source .venv/bin/activate
python -m pytest tests/python/plugins -q
- name: Classic TA-Lib compatibility surface
run: |
source .venv/bin/activate
python -m pytest tests/python/test_talib_surface.py tests/python/test_talib_map.py -q
- name: Abstract introspection registry
run: |
source .venv/bin/activate
python -m pytest tests/python/test_abstract_api.py -q
- name: Options India analytics parity + docstrings
run: |
source .venv/bin/activate
python -m pytest tests/options_india \
--doctest-modules quantwave-py/python/quantwave/polars.py -q
deploy-docs:
name: Deploy docs
needs: [sanity]
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
permissions:
contents: write
env:
DISABLE_MKDOCS_2_WARNING: "true"
steps:
- uses: actions/checkout@v7
- uses: actions/setup-python@v7
with:
python-version: "3.12"
- uses: dtolnay/rust-toolchain@stable
- uses: actions/cache@v6
with:
path: .cache
key: mkdocs-material-${{ runner.os }}-${{ hashFiles('requirements-docs.txt') }}
restore-keys: mkdocs-material-${{ runner.os }}-
- name: Install docs dependencies
run: pip install -r requirements-docs.txt
- name: Install quantwave from PyPI (notebook export)
run: pip install quantwave || echo "PyPI wheel not yet available; notebook export may use fallbacks."
- run: cargo run --package quantwave-xtask
- run: python docs/export_notebooks.py
- run: mkdocs gh-deploy --force