# ============================================================================= # QWHPI — Quebec Weekly Housing Price Index # Author : Simon-Pierre Boucher # Contact : contact@spboucher.ai # File : ops/ci/ci.yml # Purpose : CI pipeline — headers, lint, type-check, tests, smoke pipeline. # (Symlink/copy to .github/workflows/ci.yml when hosted on GitHub.) # ============================================================================= name: qwhpi-ci on: [push, pull_request] jobs: checks: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: { python-version: "3.12" } - uses: actions/setup-node@v4 with: { node-version: "22" } - name: Install engine + api deps run: | pip install polars pandas numpy pyarrow scipy statsmodels pyfixest \ fastapi uvicorn pydantic pytest httpx ruff mypy - name: Header check (mandatory) run: python scripts/check_headers.py - name: Ruff lint run: ruff check engine api scripts ops - name: Mypy (engine core) run: mypy engine/src/qwhpi --ignore-missing-imports || true - name: Engine unit tests run: cd engine && python -m pytest tests -q - name: Smoke pipeline (synthetic small sample) run: cd engine && python -m pytest tests/test_smoke_pipeline.py -q - name: TypeScript check run: cd web && npm ci && npx tsc --noEmit