Versioning¶
Progfiguration core is versioned directly, by setting a version in pyproject.toml.
Progfigsite packages are versioned dynamically, by exporting a
mint_version() -> str function in the package root.
progfiguration build will run that function to mint a new version
number, and then record it into the package it builds.
See also progfigsite root members.
Progfigisite packages also must implement get_version() -> str in the root package,
which should try to retrieve a version from progfigsite.builddata.version
if that module exists,
and otherwise fall back to some arbitrary very low fallback version number, like 0.0.1a1.
The build system will create the module progfigsite.builddata.version at build time,
and include a version (generated from mint_version()) and a datestamp.
See also progfigsite root members.
The site version number should not reference core¶
When a package is built from progfiguration build, the progfigsite
version is used as the package version; the version of progfiguration
core is not part of the package version at all. If it were, you would
not be able to download progfiguration core in a new version of the
progfigsite package.
It is strongly recommended that site-specific version functions reference only the site version, and not the core version.
Customizations¶
These functions are implemented in the site to allow for customization. For instance, you might:
Retrieve a build number from CI
Automatically pull a git revision and whether it is dirty