This directory contains scripts for managing versions across all Python packages in the monorepo.
The versioning process is split into three phases:
- Updates the core
coinbase-agentkitpackage version - Consumes changelogs and determines new version
- Updates version in all relevant files (pyproject.toml, docs, version.py)
- Builds and updates CHANGELOG.md
-
Framework Extensions:
- Checks for dependency updates against core package
- Creates changelog entries for dependency updates
- Processes any framework-specific changelogs
- Updates versions and builds CHANGELOG.md files
-
Utility Packages:
- Checks for dependency updates against core and framework packages
- Creates changelog entries for dependency updates
- Processes any utility-specific changelogs
- Updates versions and builds CHANGELOG.md files
- Reads current versions of all updated packages
- Creates git tags in the format
package-name@vx.y.z - Can be run in dry-run mode (default) or production mode with
--prodflag
From the python directory:
- Run Phase 1:
# Dry run - only processes versions
./scripts/version_phase_1.sh
# Production run - creates branch, commits changes, opens PR
./scripts/version_phase_1.sh --prodAfter running phase 1 with --prod:
- Review the draft PR titled "chore: version python core package"
- Get PR reviewed and merge to main
- Release the package to pypi
- Run Phase 2:
# Dry run - only processes versions
./scripts/version_phase_2.sh
# Production run - creates branch, commits changes, opens PR
./scripts/version_phase_2.sh --prodAfter running phase 2 with --prod:
- Review the draft PR titled "chore: version python packages"
- Get PR reviewed and merge to main
- Release the packages to pypi
- Run Phase 3:
# Dry run (shows what would be done)
./scripts/version_phase_3.sh
# Production run (actually creates and pushes tags)
./scripts/version_phase_3.sh --prodThe test directory contains scripts for testing each phase:
Tests core package versioning by:
- Creating a test changelog entry
- Running phase 1
- Verifying version updates and changelog generation
Tests framework and utility package versioning by:
- Creating test changelog entries in framework packages
- Creating test changelog entries in utility packages
- Running phase 2
- Verifying dependency updates and changelog generation
Note: Phase 2 testing requires careful setup of dependency versions, as it depends on the results of Phase 1.
Tests release tagging by:
- Running phase 3 in dry-run mode
- Verifying tag format and version detection
Package definitions are centralized in utils/package_definitions.py. Each package configuration includes:
name: The package identifierpackage_name: The name used in dependenciespath: Path to the package's pyproject.tomlfiles: List of files to update versions inpath: File pathversion_key: Key to update in the file
templates: (Optional) List of template files for dependency updatessubtitle: Description of the templatepath: Template file pathversion_key: Key to update in the file