Skip to main content

autocalver

Tired of "bumping versions"? Sick of commits, pull requests, tags, and a lot of manual work just to release the code that is already in the main branch?

The autocalver package is here to automatically generate "calendar versions", and chew gum, and it's all out of gum.

It automatically produces a calver based on a commit log. The version depends on the time of the commit, not the time of the build. The version format is <year>.<month>.<day>.<seconds from beginning of day>. The time is always converted to UTC first.

Configuration

The right way to make sure autocalver is installed is to require it in pyproject.toml:

[build-system]
requires = ["setuptools>=45", "wheel", "autocalver"]

Note that autocalver will not run any version-control commands. Before using autocalver, run a command to pull a prefix of the commit log, and save it to a file. For example, with git, you can use

git log -n 1 --date=iso > git-log-head

One advantage of separating the stages like that is that it is possible to have the package builder itself running in an environent that does not have access to the version control metadata, only the source files and the prefix of the commit log. Failing to produce the log will cause the package build to fail.

The tool overrides the version in the setup.cfg. Configuration is done via pyproject.toml. For example, a configuration appropriate to pipeline CI might be:

[tool.autocalver]
use = true
log = "git-log-head"
is_main_var = "BUILD_BRANCH_REF"
is_main_match = ".*/main$"

Note that if you use the [project] entry in pyproject.toml, it must:

  • Not have version
  • Explicitly declare dynamic = ["version"]

Building packages

Based on the given environment variable and its value the version is produced as development, rc, or a full-release. This allows checking against a release-system's environment variables for the branch, pull request, or workflow name.

With this configuration, the following versions will be produced (asssuming the time of the latest commit is October 10, 2021, 8:39:44 in Pacific time).

Local build:

$ python -m build -n --wheel 2>& 1| tail -1
Successfully built fake_package-2021.10.10.56384.dev1-py3-none-any.whl

Note that the version has a dev1 in its name.

Simulate tagged build:

$ GITHUB_REF=refs/tags/test-fix-PROJ-121 python -m build -n --wheel 2>& 1| tail -1
Successfully built fake_package-2021.10.10.56384rc1-py3-none-any.whl

This version has an rc1 in the name, marking it as a pre-release. This allows pushing tags to produce packages and test fixes. However, since tag pushes are not reviewed, these do not produce releases.

Simulate merge to main:

$ GITHUB_REF=refs/heads/main python -m build -n --wheel 2>& 1| tail -1
Successfully built fake_package-2021.10.10.56384-py3-none-any.whl

Note that without use = true, the tool will not replace the version. If use = true is there, missing any of the other variables will cause an error during the build, as a non-existing build is better than a broken when.

Metadata

Release files for autocalver 2023.4.27.46180

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for autocalver 2023.4.27.46180
File Size Uploaded
autocalver-2023.4.27.46180.tar.gz 6.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for autocalver 2023.4.27.46180
File Interpreter ABI Platform
autocalver-2023.4.27.46180-py3-none-any.whl Python 3 none any Details

Total release size: 11.6 kB

Release files / autocalver-2023.4.27.46180.tar.gz

Download URL autocalver-2023.4.27.46180.tar.gz
Size 6.3 kB
Tags Source
SHA-256 checksum
How to use checksums
93b547133a87ef58f0d056f3d79601769ba71106a10a11e122ad8e0bdb9ab65c
BLAKE2b-256 checksum
How to use checksums
4991546ea34f8878fc376b8d66e01009bab417b2f51ed6b8534bd39e793df67c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/4.0.1 CPython/3.11.3

Release files / autocalver-2023.4.27.46180-py3-none-any.whl

Download URL autocalver-2023.4.27.46180-py3-none-any.whl
Size 5.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6f30110cc23b6190e163cc61be3098d2ff9cd24978760db760ae2fdf18d9902b
BLAKE2b-256 checksum
How to use checksums
58989eec29a9f01205cbf9ee16317dd8b14a649cc6861a24292c3e974ca40e32
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/4.0.1 CPython/3.11.3
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