Updates the release numbers for a projects
This script uses the release.ini file placed at the root of the project, and replaces the version or release number in various files.
$ cd <project_root>
$ ls -al
...
release.ini
...
$ bump_release <major>.<minor>.<release>
Installation
Simple install (without pyproject.tml support)
On linux, the best place to install it is for the user:
$ pip install --user bump-release
Assume to have ~/.local/bin in the $PATH.
You can use pipx too for the same purpose:
$ pipx install bump-release
Install with pyproject.tml support
For pyproject.toml, you can use the pipx command:
$ pip install --user bump-release[toml]
or with pipx:
$ pipx install bump-release[toml]
This will install the bump-release package and the toml dependencies:
- tomli
- tomli-w
These libs are the one used by setuptools for pyproject.toml file parsing / updating.
Version numbers that can be updated
- main project version
- node package.json
- sonar properties
- sphinx docs
- ansible variables in a vars file
- setup.py
- setup.cfg
- pyproject.toml
release.ini
The .ini file provides path, patterns and templates to update files.
If a section is not present, no action if performed for this section.
The application provides some "standard" patterns and templates (aka. the ones I use in my projects). If you provide some patterns and templates, you have to enclose them with double-quotes. Due to configparser limitations, all strings are parsed as raw strings.
The application removes those double-quotes through a :
pattern = config["<section>"].get("pattern") or DEFAULT_PATTERN
pattern = pattern.strip('"')
Example ini file:
[DEFAULT]
; Current version of the projects, will be updated by the script
current_release = 0.1.0
[main_project]
path = <project>/settings/base.py
; Optional pattern, default is...
pattern = "^__version__\s*=\s*VERSION\s*=\s*['\"][.\d\w]+['\"]$"
; Optional template, default is...
template = "__version__ = VERSION = '{major}.{minor}.{release}'"
[node_module]
path = <project>/assets/package.json
; Optional key, default is...
key = "version"
[sonar]
path = ./sonar-project.properties
; Optional pattern, default is...
pattern = "^sonar.projectVersion=([.\d\w]+)$"
; Optional template, default is...
template = "sonar.projectVersion={major}.{minor}"
[docs]
path = <project>/../docs/source/conf.py
; Optional pattern, default is...
version_pattern = "^version\s+=\s+[\"']([.\d\w]+)[\"']$"
; Optional template, default is...
version_format = "version = '{major}.{minor}'"
; Optional pattern, default is...
release_pattern = "^release\s+=\s+[\"']([.\d\w]+)[\"']$"
; Optional template, default is...
release_format = "release = '{major}.{minor}.{release}'"
[ansible]
path = <project>/../ansible/prod/vars/vars.yml
; Optional key - The script searches for the "git" root key, and then for "version" sub-key
key = "git.version"
[setup]
path = <project>/setup.py
; Optional pattern, default is...
pattern = "^\s*version=['\"]([.\d\w]+)['\"],$"
; Optional template, default is...
template = " version='{major}.{minor}.{release}',"
[setup_cfg]
path = <project>/setup.cfg
; Optional pattern, default is...
pattern = "^version = ([.\d\w]+)$"
; Optional template, default is...
template = "version = {major}.{minor}.{release}"
[pyproject]
path = <project>/pyproject.toml
; Optional key, default is...
key = "project.version"
Usage
$ cd <project_root>
$ cat release.ini
[DEFAULT]
current_release = 0.0.1
[main_project]
path = "foo/__init__.py"
[sonar]
path = "sonar-project.properties"
...
$ cat foo/__init__.py
...
__version__ = VERSION = "0.0.1"
...
$ bump_release 0.0.2
...
$ cat release.ini
[DEFAULT]
current_release = 0.0.2
...
$ cat foo/__init__.py
...
__version__ = VERSION = "0.0.2"
...
Metadata
Release files for bump-release 0.9.9
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| bump_release-0.9.9.tar.gz | 12.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| bump_release-0.9.9-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 26.0 kB
Release files / bump_release-0.9.9.tar.gz
| Download URL | bump_release-0.9.9.tar.gz |
|---|---|
| Size | 12.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
549a3868d2b9e9a71880f8231c3eef9e8b93db9a79542df853e7e53a572cb0d9
|
|
BLAKE2b-256 checksum How to use checksums |
10c8668074e720761c8f0716dcac7dc2515dd3b8211efe5a9564fc2c66281e9e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.0 CPython/3.9.12
|
Release files / bump_release-0.9.9-py3-none-any.whl
| Download URL | bump_release-0.9.9-py3-none-any.whl |
|---|---|
| Size | 13.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c651e11360493ac5525d1beb412790145795bcb16a62e1e49afde3521331ab42
|
|
BLAKE2b-256 checksum How to use checksums |
fb143c05a1d95a8dee83e4e27f408f12485551db68f794d0d797d8131a798967
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.0 CPython/3.9.12
|