Distribution

This page captures the repo’s distribution and publishing paths.

Python Package

  • Package name target: ts-agents
  • Build backend: setuptools
  • Build command:
uv build

Publishing automation lives in .github/workflows/publish-pypi.yml.

The workflow is designed for GitHub Actions -> PyPI trusted publishing and runs on version tags (v*) or manual dispatch.

TestPyPI validation lives in .github/workflows/publish-testpypi.yml and is intended to be run manually before the first real release.

GitHub Release Flow

Release tags use the form vX.Y.Z.

Recommended release steps:

  1. update CHANGELOG.md
  2. run bash scripts/clean_release_artifacts.sh
  3. run bash scripts/check_release_quality.sh
  4. run uv run python -m pytest -q
  5. run uv build
  6. run uv tool run twine check dist/*
  7. run bash scripts/smoke_install_wheel.sh 3.12 dist
  8. manually dispatch publish-testpypi.yml
  9. inspect the rendered TestPyPI project page and verify the install path there
  10. create/push the git tag
  11. create the GitHub release
  12. let .github/workflows/publish-pypi.yml publish the already-validated artifact

Sandbox Container Image

The sandbox container is built from Dockerfile.sandbox.

  • Local build:
./build_docker_sandbox.sh
  • Published image target:
ghcr.io/fnauman/ts-agents-sandbox

Automation lives in .github/workflows/publish-sandbox-image.yml.

The published image is intended to give users a prebuilt sandbox backend instead of requiring a local Docker build before first use.

Notes

  • CI now builds once and smoke-tests the wheel on Python 3.11, 3.12, and 3.13.
  • CI also runs a narrow ruff + mypy quality gate over the release/package surface.
  • The publish workflow also gates real PyPI publishing on the same artifact smoke matrix.
  • The current dependency minimums intentionally track the validated 0.1.1 release stack; broader lower-bound compatibility can be widened later.
  • Before creating the real release tag, run the TestPyPI workflow and inspect the rendered page for the exact artifact you plan to publish.