Co-authored-by: Clément Drouin <clement.drouin@mistral.ai> Co-authored-by: Corentin André <corentin.andre@mistral.ai> Co-authored-by: Guillaume LE GOFF <guillaume.lgf@gmail.com> Co-authored-by: Kim-Adeline Miguel <51720070+kimadeline@users.noreply.github.com> Co-authored-by: Maxime Dolores <maxime.dolores@ext.mistral.ai> Co-authored-by: Nelson PROIA <144663685+Nelson-PROIA@users.noreply.github.com> Co-authored-by: Peter Evers <pevers90@gmail.com> Co-authored-by: Pierre Rossinès <pierre.rossines@mistral.ai> Co-authored-by: Quentin <quentin.torroba@mistral.ai> Co-authored-by: Vincent G <10739306+VinceOPS@users.noreply.github.com> Co-authored-by: MichisGitIsKing <MichisGitIsKing@users.noreply.github.com> Co-authored-by: Mistral Vibe <vibe@mistral.ai>
1.8 KiB
Project Management Scripts
This directory contains scripts that support project versioning and deployment workflows.
Versioning
Usage
# Bump major version (1.0.0 -> 2.0.0)
uv run scripts/bump_version.py major
# Bump minor version (1.0.0 -> 1.1.0)
uv run scripts/bump_version.py minor
# Bump patch/micro version (1.0.0 -> 1.0.1)
uv run scripts/bump_version.py micro
# or
uv run scripts/bump_version.py patch
Releasing
prepare_release.py builds the release branch from the previous public release tag, cherry-picks commits from the matching -private tags, and (by default) squashes them into a single release commit.
As part of release branch creation, the script freezes the full transitive dependency graph into both [project].dependencies and [dependency-groups].build of pyproject.toml using the current uv.lock:
uv export --no-hashes --no-dev --no-emit-project --frozen --format requirements.txt
uv export --only-group build --no-emit-project --no-hashes --frozen --format requirements.txt
The pinned [project].dependencies is what uv build reads in .github/workflows/release.yml, so the wheel published to PyPI carries Requires-Dist: entries pinned to exact versions (with environment markers preserved). End users installing mistral-vibe from PyPI get the same dependency set the team tested against.
The pinned [dependency-groups].build is what uv sync --no-dev --group build reads in .github/workflows/build-and-upload.yml, so the PyInstaller binaries on each release tag are built against the exact same PyInstaller / truststore versions every time.
main keeps >= ranges, so day-to-day upgrades on main (uv lock --upgrade-package …, Renovate PRs, etc.) are unaffected. Each new release re-snapshots uv.lock — there is no hand-maintained pin list.