Updates various version numbers for python projects
Project description
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" ...
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for bump_release-0.10.6-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d1e2dad0deb967ad0c97e9848f3bcfb165a0bddd03f4b22d4bf032f311f2e7e0 |
|
MD5 | a97ceb8d6fe01622138124968238a426 |
|
BLAKE2-256 | 6233c83c43a309d3eea6b11380b09ff30ba0e6a4b12d22d9633233439055cac4 |