Edit Cargo.toml to bump the version (both the main version and the package versions)
Run
make lint-rsThis will update Cargo.lock, sync package.json/package-lock.json (via crates/monty-js/build.rs),
and sync the pydantic-monty metapackage's version and its exact pins on
pydantic-monty-client/pydantic-monty-runtime (via crates/monty-python/build.rs).
git checkout -b prepare-release-vX.Y.Z
git commit -am "Bump version to vX.Y.Z"
git pushOnce the PR is merged, create a release in the GitHub UI with a tag matching the version in Cargo.toml.
Once the tag is pushed, CI will:
- Build wheels for all platforms
- Publish to PyPI (
pydantic-monty-clientwheels,pydantic-monty-runtimewheels, and thepydantic-montymetapackage that pins both) - Publish to NPM (
@pydantic/monty+ the platform packages carrying the napi library, themontybinary, and the wasm build) - Publish the Rust crates to crates.io (
monty,monty-types,monty-alloc,monty-fs,monty-runtime,monty-macros,monty-proto,monty-pool,monty-type-checking,monty-typeshed) viacargo publish --workspace
crates/monty-js/scripts/assemble-packages.mjs stages the main npm package under npm/main/
and adds exact platform optionalDependencies there before packing.
The development manifest and lockfile omit these dependencies so version bumps do not need unpublished packages.
CI tests the assembled tarballs, then publishes the platform packages before the main package.
Monitor the workflow at https://github.com/pydantic/monty/actions
For pre-releases (alpha, beta, rc), use a tag like v0.0.2-beta.1:
- PyPI: Published normally
- NPM: Published with
--tag next(notlatest)