Project Manager Versioning is a PEP-440 compliant tool for automating project versions using conventional commits.
pip install proman-versioning
This tool is designed to work with any textfile using a templating pattern and path to the file.
Configuration can be performed with either the .versioning
or pyproject.toml
files.
Specific types of releases can be disabled by setting the respective release to false.
Disable development releases:
enable_devreleases = false
Disable pre-releases:
enable_prereleases = false
Disable post-releases:
enable_postreleases = false
Use different version compatibiliy type:
compat = "semver"
Update only the release version for a configuration:
release_only = true
The .versioning
config is a non-specfile based project file using TOML. This is the
preferred configuration for non-python projects that may use this tool.
[proman]
version = "1.2.3"
[proman.versioning]
disable_devreleases = true
[[proman.versioning.files]]
filepath = "pyproject.toml"
pattern = "version = \"${version}\""
[[proman.versioning.files]]
filepath = "example/__init__.py"
pattern = "__version__ = '${version}'"
[[tool.proman.versioning.files]]
filepath = "chart/Chart.yaml"
compat = "semver"
patterns = [
"version = \"${version}\"",
"appVersion = \"${version}\""
]
[tool.proman]
version = "1.2.3"
[tool.proman.versioning]
[[tool.proman.versioning.files]]
filepath = "pyproject.toml"
pattern = "version = \"${version}\""
[[tool.proman.versioning.files]]
filepath = "example/__init__.py"
pattern = "__version__ = '${version}'"
[[tool.proman.versioning.files]]
filepath = "chart/Chart.yaml"
compat = "semver"
patterns = [
"version = \"${version}\"",
"appVersion = \"${version}\""
]
Setuptools allows setup.cfg
to pull the version from the application. This
should be used in tandem with either of the above configurations to control
versions for a project.
[metadata]
name = example
version = attr: src.VERSION
...