Skip to main content

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)

Source distribution for macrostrat.package_tools 2.2.0
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)

Table of built distributions (wheels) for macrostrat.package_tools 2.2.0
File Interpreter ABI Platform Actions
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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page