Macrostrat Package Tools
Tools for managing packages in a Python monorepo: version changes, release
status, and publishing to PyPI. Requires uv (version 2.0.0 and later).
The mono command operates on the packages listed in the root
pyproject.toml's [tool.uv.sources], or on the directories matched by
[tool.mono] packages (see Service repositories).
| Command | What it does |
|---|---|
mono install |
Lock and install every package into the root environment |
mono changeset |
Record a pending version change in .changes/ |
mono version |
Apply pending changes: versions, dependencies, changelogs |
mono status |
Show the release plan; --check fails on problems |
mono build |
Build every package that is not yet published |
mono publish |
Build, upload and tag every unpublished package |
Change fragments
A fragment is a markdown file in .changes/ naming the packages it affects and
how far each should move:
---
macrostrat.database: minor
---
- Add `copy_settings` to `template_database`.
mono version collects every fragment, takes the largest level per package,
and cascades to packages that depend on one being released — raising their
>= dependency floors and moving them by the level set in
[tool.mono] update-internal-dependencies (default patch, or none to leave
dependents alone).
Publishing
mono publish builds, uploads and tags. It deliberately does not commit or
regenerate lock files, so it behaves identically on a laptop and in CI. In
GitHub Actions with id-token: write, uv publish authenticates through PyPI
trusted publishing and needs no token; locally, set UV_PUBLISH_TOKEN.
Prereleases
mono version --pre makes prereleases, labelled by [tool.mono] prerelease-label (default beta): a minor change on 3.2.1 gives
3.3.0-beta.1, and further changes give 3.3.0-beta.2 unless they need a larger
jump. mono version -p <name> releases a package at a prerelease as stable;
-p also limits any run to the named packages, leaving other fragment entries
in place.
Service repositories
A repository of deployed services, released by CI tagging <name>-vX.Y.Z on
merge rather than by publishing, is configured like this:
[tool.mono]
packages = ["services/*"] # each named by its directory
released-by = "tag" # `mono status` reads release tags; no `mono publish`
update-internal-dependencies = "none"
changelog = "unreleased" # prereleases collect under ## [Unreleased]
[tool.mono.overrides.api-v2]
changelog = "versions" # a heading for every release, prereleases too
A package may keep its version in package.json instead of pyproject.toml.
Changelog headings link to a tag comparison only when [tool.mono] repository
is set.
Metadata
Release files for macrostrat.package_tools 2.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| macrostrat_package_tools-2.2.0.tar.gz | 13.3 kB | Without provenance | Details for macrostrat_package_tools-2.2.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| macrostrat_package_tools-2.2.0-py3-none-any.whl | Python 3 | none | any | Details for macrostrat_package_tools-2.2.0-py3-none-any.whl |
Total release size: 30.2 kB
Release files / macrostrat_package_tools-2.2.0.tar.gz
| Download URL | macrostrat_package_tools-2.2.0.tar.gz |
|---|---|
| Size | 13.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9be67a1785c8444bd7b365834b7af6d3c49d1ba875842b842242f5b489a1bc83
|
|
BLAKE2b-256 checksum How to use checksums |
6f5a11553b97789e4b20afa4093a678eadb392445f54e9b45e4fdeaad8661933
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.13.3 {"installer":{"name":"uv","version":"0.13.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / macrostrat_package_tools-2.2.0-py3-none-any.whl
| Download URL | macrostrat_package_tools-2.2.0-py3-none-any.whl |
|---|---|
| Size | 17.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
448fc84add7d1e32c206c42c15903b88eb9273f05f4b557efa00e7b5aa501f92
|
|
BLAKE2b-256 checksum How to use checksums |
9b891b1700f592343314ae2800b910b6040da440247bae5e5dc006c543311494
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.13.3 {"installer":{"name":"uv","version":"0.13.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Security for macrostrat.package_tools 2.2.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.