-
Confirm you are starting from an up-to-date main:
git fetch origin
git checkout main
git status
Only proceed if the working tree is clean (ignore untracked files that are
not part of the bump).
-
Find the current version:
Read the version field under [project] in pyproject.toml. Call this
OLD_VERSION and the requested version NEW_VERSION.
-
Create the branch:
Use the <username>/chore-update-version-<NEW_VERSION> convention, e.g.
git checkout -b harrison/chore-update-version-0.11.0
-
Find every hard-coded occurrence of OLD_VERSION:
grep -rn --include="*.py" --include="*.toml" --include="*.md" \
"<OLD_VERSION>" . | grep -v "/.git/"
Review each hit. Update only strings that mean "the AIPerf version". Do NOT
touch unrelated version-like strings (dependency pins, schema_version,
sample UUIDs, etc.).
The canonical set of files (as of 0.10.0 -> 0.11.0) is:
pyproject.toml — version = "..." under [project]
tests/aiperf_mock_server/pyproject.toml — version = "..." under [project]
docs/plugins/creating-your-first-plugin.md — the Version: ... line in the
pip show example output
docs/server-metrics/server-metrics-json-schema.md — every
"aiperf_version": "..." JSON example and the (e.g., "...") description
(3 occurrences)
If the grep surfaces a NEW occurrence not in this list, update it too and add
it to this skill's canonical list in the same PR.
-
Do NOT update uv.lock:
uv.lock is gitignored and not tracked, so it is not part of the bump.
Tests that need the version import aiperf.__version__ rather than hard-coding
it; leave those alone.
-
Verify nothing stale remains:
grep -rn "<OLD_VERSION>" pyproject.toml tests/aiperf_mock_server/pyproject.toml \
docs/plugins/creating-your-first-plugin.md \
docs/server-metrics/server-metrics-json-schema.md
This must return no matches. Then confirm NEW_VERSION is present in each.
-
Run pre-commit on the staged files:
pre-commit run
Fix anything it flags before committing.
-
Commit the version bump (commit 1):
Stage only the version files explicitly (never git add -A — the working
tree may hold unrelated untracked files):
git add pyproject.toml tests/aiperf_mock_server/pyproject.toml \
docs/plugins/creating-your-first-plugin.md \
docs/server-metrics/server-metrics-json-schema.md
git commit -s -F - <<'EOF'
chore: bump aiperf version to <NEW_VERSION>
Updates the package and mock-server pyproject.toml versions and refreshes
the version strings shown in the plugin tutorial example and the
server-metrics JSON schema example output.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
EOF
-
Push the branch:
git push -u origin HEAD
-
Open the PR to main:
gh pr create \
--repo ai-dynamo/aiperf \
--base main \
--head harrison/chore-update-version-<NEW_VERSION> \
--title "chore: bump aiperf version to <NEW_VERSION>" \
--body "$(cat <<'EOF'
## Summary
- Bump AIPerf package version from `<OLD_VERSION>` to `<NEW_VERSION>`.
- Updates `pyproject.toml`, the mock-server `pyproject.toml`, and the version
strings in the plugin tutorial and server-metrics JSON schema docs.
The runtime version is read dynamically from package metadata, so
`pyproject.toml` is the source of truth; the other files are doc/example copies.
## Test plan
- `grep` confirms no `<OLD_VERSION>` strings remain in the bumped files.
- Pre-commit hooks pass.
EOF
)"
If gh is unavailable, print the manual compare URL:
https://github.com/ai-dynamo/aiperf/compare/main...harrison/chore-update-version-<NEW_VERSION>
-
Print a summary with the old/new version and the PR link.