Skip to content

Imputation

Imputation #189

Workflow file for this run

name: CI
on:
push:
branches: [main, develop]
pull_request:
branches: [main, develop]
types: [opened, synchronize, reopened, ready_for_review]
jobs:
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install uv
uses: astral-sh/setup-uv@v3
with:
enable-cache: true
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Run Ruff (lint + format check)
run: |
uv run ruff check .
uv run ruff format --check .
test:
name: Test (Python ${{ matrix.python-version }})
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: ["3.11", "3.12", "3.13", "3.14"]
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install uv
uses: astral-sh/setup-uv@v3
with:
enable-cache: true
- name: Install Python ${{ matrix.python-version }}
run: uv python install ${{ matrix.python-version }}
- name: Sync environment
run: uv sync --group test
- name: Run pytest with coverage
run: |
uv run pytest --cov=travel_diary_survey_tools \
--cov-report=xml \
--cov-report=term-missing
- name: Upload coverage to Codecov
if: matrix.python-version == '3.12'
uses: codecov/codecov-action@v4
with:
files: ./coverage.xml
token: ${{ secrets.CODECOV_TOKEN }}
fail_ci_if_error: false
check:
name: Check Results
needs: [lint, test]
runs-on: ubuntu-latest
if: always()
steps:
- name: Aggregate results
run: |
if [ "${{ needs.lint.result }}" != "success" ] || [ "${{ needs.test.result }}" != "success" ]; then
echo "One or more checks failed."
exit 1
fi
echo "All checks passed successfully!"
column_matrix:
name: Generate Column Matrix
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
ref: ${{ github.head_ref || github.ref }}
token: ${{ secrets.GITHUB_TOKEN }}
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Install uv
uses: astral-sh/setup-uv@v3
with:
enable-cache: true
- name: Sync environment
run: uv sync --group dev
- name: Generate Column Matrix
run: |
uv run python scripts/generate_column_matrix.py
- name: Check for changes
id: verify_diff
run: |
git diff --quiet docs/COLUMN_REQUIREMENTS.md || echo "changed=true" >> $GITHUB_OUTPUT
- name: Verify file is up-to-date (PR only)
if: steps.verify_diff.outputs.changed == 'true' && github.event_name == 'pull_request'
run: |
echo "COLUMN_REQUIREMENTS.md is out of date!"
echo "Please run 'python scripts/generate_column_matrix.py' locally and commit the changes."
echo "Or ensure pre-commit hooks are installed: 'pre-commit install'"
exit 1
- name: Commit and push if changed (push only)
if: steps.verify_diff.outputs.changed == 'true' && github.event_name == 'push'
run: |
git config --local user.email "github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
git add docs/COLUMN_REQUIREMENTS.md
git commit -m "docs: auto-update column requirements matrix [skip ci]"
git push