Skip to content

docs(guide): add per-component design page with mermaid diagrams #52

docs(guide): add per-component design page with mermaid diagrams

docs(guide): add per-component design page with mermaid diagrams #52

Workflow file for this run

name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
# Cancel an in-flight run of the same workflow on the same branch
# when a new push arrives — prevents the queue from piling up when
# the developer pushes several commits in a row and keeps the
# actions-minute budget in check.
concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: actions/setup-python@v6
with:
python-version: "3.12"
- run: pip install "ruff==0.15.10" # pinned to pre-commit hook version
- run: ruff check .
- run: ruff format --check .
test:
runs-on: ubuntu-latest
# Only run the full 4-version Python matrix on PRs; the lint job
# plus the single-version CI wheel build is enough for each push
# to main. Saves ~15 runner-minutes per merge.
if: github.event_name == 'pull_request'
strategy:
# One failing Python version shouldn't kill the other three —
# we want to see the full picture on a PR.
fail-fast: false
matrix:
python-version: ["3.10", "3.11", "3.12", "3.13"]
steps:
- uses: actions/checkout@v5
- uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- name: Install system deps
run: sudo apt-get update && sudo apt-get install -y libsndfile1 portaudio19-dev
- name: Install package with dev extras
run: pip install -e ".[dev]"
- run: pytest -m "not integration"
build:
runs-on: ubuntu-latest
needs: [lint, test]
# ``test`` is skipped on pushes to main — treat a skipped result
# as success so the wheel build isn't transitively blocked.
if: |
!cancelled() &&
needs.lint.result == 'success' &&
(needs.test.result == 'success' || needs.test.result == 'skipped')
steps:
- uses: actions/checkout@v5
- uses: actions/setup-python@v6
with:
python-version: "3.12"
- run: pip install build
- run: python -m build
- uses: actions/upload-artifact@v6
with:
name: dist
path: dist/