Skip to content

✨ Give the filter sweep a purely spatial and a longer temporal arm #115

✨ Give the filter sweep a purely spatial and a longer temporal arm

✨ Give the filter sweep a purely spatial and a longer temporal arm #115

Workflow file for this run

name: CI
on:
push:
branches: [main]
pull_request:
workflow_call:
concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true
# This project is CUDA-core: its runtime stack (cupy-cuda13x and the cudawarped
# CUDA OpenCV build) has no CPU/macOS wheels and cannot even `import` without an
# NVIDIA driver, so a GPU-less runner cannot install the project. CI therefore
# does NOT install it, type-check, or run tests — those run locally on a CUDA
# machine (`uv run ty check`, `uv run pytest`). CI keeps only the checks that
# are cheap, deterministic, and need no GPU: ruff (static, isolated) and
# lockfile freshness.
jobs:
lint:
name: Ruff (format + lint)
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v6
- name: Set up uv
uses: astral-sh/setup-uv@v8.1.0
with:
enable-cache: true
# Run ruff in isolation (uvx): it reads [tool.ruff] from pyproject but
# needs none of the project's GPU-only dependencies installed. Pinned to
# the dev group's ruff so CI and local agree on formatting/lint rules.
- name: Ruff format check
run: uvx ruff@0.16.0 format --check .
- name: Ruff lint
run: uvx ruff@0.16.0 check .
lock:
name: Verify lockfile
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v6
- name: Set up uv
uses: astral-sh/setup-uv@v8.1.0
with:
enable-cache: true
# Metadata-only resolve against the project's real (CUDA) index — no GPU
# and no wheel downloads — so it flags a stale lock without installing.
- name: Check the committed lockfile is up to date
run: uv lock --check