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 and its in-repository vercel-* dependencies are sourced from the fantix/workflow-encryption-write branch of vercel-py. That branch is based on the fantix/workflow-compression-write branch, so this integration workbench exercises both pending changes. uv.lock records the exact commit used by local development, CI, and Vercel builds, so updating either upstream branch 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 branch 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.