Files

Python conformance workbench

This app runs the shared Workflow SDK e2e suite against the Python runtime. The test driver and assertions remain in packages/core/e2e/e2e.test.ts; this workbench supplies equivalent Python fixtures and exposes them through the same manifest and workflow protocols as the JavaScript workbenches.

vercel-workflow is sourced from the main branch of vercel-py. uv.lock records the exact commit used by local development, CI, and Vercel builds, so updating upstream does not change this workbench until the lockfile is refreshed.

Layout

  • workflows/99_e2e.py contains the Python fixtures.
  • e2e-conformance.json declares which fixtures and tests Python supports. It is a ratchet: a declared capability that disappears fails the suite instead of silently becoming skipped.
  • The 99_e2e module and its camelCase fixture functions intentionally match the TypeScript fixture path and exported names.
  • app.py adapts the SDK's public HTTP handlers to bare ASGI.
  • pyproject.toml selects the SDK source and the Vercel web/workflow entrypoints.
  • vercel.json selects the platform Python builder and exposes the manifest.

Run locally

Install the locked Python environment and start the app:

cd workbench/python
uv sync --locked
WORKFLOW_PUBLIC_MANIFEST=1 pnpm dev

Then run the shared suite from the repository root:

DEPLOYMENT_URL="http://localhost:3000" APP_NAME="python" \
  pnpm vitest run packages/core/e2e/e2e.test.ts

The app and TypeScript driver share the local World data directory, so the TypeScript CLI can inspect runs created by Python:

cd workbench/python
node ./node_modules/workflow/bin/run.js inspect --json runs

Update the Python SDK

Regenerate the lockfile to update the pinned vercel-py/main revision, then rerun the suite:

cd workbench/python
rm uv.lock
uv lock
uv sync --locked

Remove uv.lock instead of using --upgrade-package due to a uv bug that can switch transitive vercel-* dependencies from the vercel-py Git repository to their PyPI releases during an incremental lock update.

Vercel deployment

The workbench-python-workflow Vercel project is rooted at this directory and is included in the e2e-vercel-prod matrix.

vercel.json selects the Python builder, while pyproject.toml declares the ASGI web entrypoint and workflow registry. .python-version selects the deployed Python version. Preview deployments use VERCEL_WORKFLOW_SERVER_URL to target the same workflow server as the test driver.