Skip to content

⬆ Bump astral-sh/setup-uv from 8.2.0 to 8.3.0 #121

⬆ Bump astral-sh/setup-uv from 8.2.0 to 8.3.0

⬆ Bump astral-sh/setup-uv from 8.2.0 to 8.3.0 #121

Workflow file for this run

name: Benchmarks
on:
pull_request:
# Only run when a PR is (re)labeled; the job below gates on the 'benchmark' label
# so benchmarks stay off the default per-PR path (noisy on shared runners).
types: [labeled]
branches:
- "master"
paths:
- "agent_assembly/**/*.py"
- "test/bench/**/*.py"
- ".github/workflows/benchmarks.yml"
- "pyproject.toml"
- "uv.lock"
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
# AAASM-3993: least-privilege default token — this workflow only checks out and
# runs tests/builds; no job pushes, comments, or deploys.
permissions:
contents: read
jobs:
benchmark:
name: Run performance benchmarks
if: contains(github.event.pull_request.labels.*.name, 'benchmark')
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
- name: Install uv
uses: astral-sh/setup-uv@d31148d669074a8d0a63714ba94f3201e7020bc3 # v8.3.0
with:
enable-cache: true
- name: Set up Python
run: uv python install 3.13
- name: Install dependencies
run: uv sync --group dev
- name: Run benchmark suite
run: |
uv run pytest test/bench/ \
--benchmark-only \
--benchmark-disable-gc \
--benchmark-json=benchmark-results.json \
-v
- name: Run latency contract tests
run: |
uv run pytest test/bench/test_latency_contracts.py \
--benchmark-disable \
-v
- name: Upload benchmark results
if: always()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
name: benchmark-results
path: benchmark-results.json
retention-days: 30