Files
copilotkit__copilotkit/.github/workflows/test_unit-python-sdk.yml
Maxim 836e7c786f ci(sdk-python): add an ag-ui-langgraph 0.0.43 regression leg
The matrix covered the declared floor (0.0.42) and the newest release
(0.0.44) but skipped 0.0.43 — the only still-supported version that
reproduces the failure this PR fixes.

0.0.43's `LangGraphAgent.clone()` passes its three behavior flags to
`type(self)(...)` unconditionally, so a subclass with a closed signature
raises TypeError on the default construction path — a 500 on every
request, since the FastAPI endpoint clones per request. 0.0.44's
`clone()` is signature-aware and omits default-valued flags a subclass
cannot accept, which means the clone tests pass on 0.0.44 even with the
`**kwargs` passthrough removed. The `emit_raw_events=False` test still
guards option reachability there, but nothing in the matrix reproduced
the default-construction 500 itself.

Verified locally against 0.0.43: all four clone tests pass with the
passthrough and all four fail without it, so the leg is a real guard.

One representative Python (3.12) via `matrix.include` rather than a
third full column — the flag forwarding it exercises is not
version-specific, so this adds one leg, not five. Installed in the leg
rather than declared, so the runtime floor stays at 0.0.42 and the
effective LangGraph floor stays at >=0.3.25 for consumers.

Also corrects the `test_agui_agent_clone.py` module docstring, which
claimed CI exercised 0.0.42 and 0.0.43 while the workflow installed
0.0.42 and 0.0.44.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-02 16:22:30 +02:00

84 lines
3.0 KiB
YAML

name: test / unit / python-sdk
on:
push:
branches: [main]
paths:
- "sdk-python/**"
- ".github/workflows/test_unit-python-sdk.yml"
pull_request:
branches: [main]
paths:
- "sdk-python/**"
- ".github/workflows/test_unit-python-sdk.yml"
# Least-privilege by default. Individual jobs/steps can widen when needed.
permissions:
contents: read
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
test:
runs-on: depot-ubuntu-24.04-4
timeout-minutes: 10
permissions:
contents: read
# id-token: write is required for Depot OIDC auth (runs-on: depot-ubuntu-*).
id-token: write
strategy:
fail-fast: false
matrix:
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
# The declared floor and the newest release, across every supported
# Python. Covering the floor in CI is what lets the runtime floor stay
# at 0.0.42: raising it for test coverage alone would also raise the
# effective LangGraph floor from >=0.3.25 to >=0.6.0 for every
# consumer.
ag-ui-langgraph-version: ["0.0.42", "0.0.44"]
# 0.0.43 is the one still-supported version whose clone() forwards
# its behavior flags unconditionally, so it is the only leg that
# reproduces the default-construction 500 this shim fixes. 0.0.44's
# clone() is signature-aware and omits default-valued flags, which
# means the clone tests pass there even without the passthrough. One
# representative Python is enough for a regression leg; the flag
# forwarding it exercises is not version-specific.
include:
- python-version: "3.12"
ag-ui-langgraph-version: "0.0.43"
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
persist-credentials: false
- name: Set up Python
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
with:
python-version: ${{ matrix.python-version }}
- name: Install Poetry
uses: snok/install-poetry@a783c322200f0519c7926aa6faa857c4e23e9263 # v1.4.2
with:
version: latest
virtualenvs-create: true
virtualenvs-in-project: true
- name: Install dependencies
working-directory: sdk-python
run: poetry lock && poetry install --with dev
- name: Pin ag-ui-langgraph for this matrix leg
working-directory: sdk-python
# Installed after the lock resolve rather than by editing pyproject, so
# the declared floor stays untouched and only the installed version
# varies across legs.
run: |
poetry run pip install "ag-ui-langgraph[fastapi]==${{ matrix.ag-ui-langgraph-version }}"
poetry run python -c "import importlib.metadata as m; print('ag-ui-langgraph', m.version('ag-ui-langgraph'))"
- name: Run tests
working-directory: sdk-python
run: poetry run python -m pytest tests/ -v