spb/qwhpi Public
QHPI — Quebec Housing Price Index: quality-adjusted, hierarchically pooled housing price indexes.
Python 63.9%
TypeScript 25.4%
CSS 5.5%
TeX 3.5%
SQL 0.8%
Makefile 0.5%
Dockerfile 0.5%
1# =============================================================================2# QWHPI — Quebec Weekly Housing Price Index3# Author : Simon-Pierre Boucher4# Contact : contact@spboucher.ai5# File : ops/ci/ci.yml6# Purpose : CI pipeline — headers, lint, type-check, tests, smoke pipeline.7# (Symlink/copy to .github/workflows/ci.yml when hosted on GitHub.)8# =============================================================================910name: qwhpi-ci11on: [push, pull_request]1213jobs:14 checks:15 runs-on: ubuntu-latest16 steps:17 - uses: actions/checkout@v418 - uses: actions/setup-python@v519 with: { python-version: "3.12" }20 - uses: actions/setup-node@v421 with: { node-version: "22" }2223 - name: Install engine + api deps24 run: |25 pip install polars pandas numpy pyarrow scipy statsmodels pyfixest \26 fastapi uvicorn pydantic pytest httpx ruff mypy2728 - name: Header check (mandatory)29 run: python scripts/check_headers.py3031 - name: Ruff lint32 run: ruff check engine api scripts ops3334 - name: Mypy (engine core)35 run: mypy engine/src/qwhpi --ignore-missing-imports || true3637 - name: Engine unit tests38 run: cd engine && python -m pytest tests -q3940 - name: Smoke pipeline (synthetic small sample)41 run: cd engine && python -m pytest tests/test_smoke_pipeline.py -q4243 - name: TypeScript check44 run: cd web && npm ci && npx tsc --noEmit45