Skip to content

feat: add Blender Studio — visual session editor with AI Assistant panel #5

feat: add Blender Studio — visual session editor with AI Assistant panel

feat: add Blender Studio — visual session editor with AI Assistant panel #5

Workflow file for this run

name: CI
on:
push:
branches: ["main", "master"]
pull_request:
branches: ["main", "master"]
# Cancel in-progress runs for the same branch (saves CI minutes on rapid pushes)
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
# ── 1. Lint & Format ────────────────────────────────────────────────────────
lint:
name: "Lint & Format (ruff)"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: "Set up uv"
uses: astral-sh/setup-uv@v4
with:
version: "latest"
enable-cache: true
- name: "Lint — ruff check"
# uvx runs a tool without installing into project venv
run: uvx ruff check src/ tests/ blender_mcp_addon/
- name: "Format — ruff format --check"
run: uvx ruff format --check src/ tests/ blender_mcp_addon/
# ── 2. Complexity (McCabe via ruff C90) ─────────────────────────────────────
complexity:
name: "Complexity Check (McCabe ≤ 12)"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: "Set up uv"
uses: astral-sh/setup-uv@v4
with:
version: "latest"
enable-cache: true
- name: "McCabe complexity — ruff C90"
# Flags any function/method with cyclomatic complexity > 12
# Config lives in pyproject.toml [tool.ruff.lint.mccabe]
run: uvx ruff check --select C90 src/ tests/ blender_mcp_addon/
# ── 3. Type Check (mypy — src/ only) ────────────────────────────────────────
# blender_mcp_addon/ is excluded because `bpy` (Blender Python API)
# has no public type stubs and cannot be installed outside Blender.
type-check:
name: "Type Check (mypy — src/)"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: "Set up uv"
uses: astral-sh/setup-uv@v4
with:
version: "latest"
enable-cache: true
- name: "Install project + dev deps"
run: uv sync --group dev
- name: "mypy — src/"
run: uv run mypy src/