Skip to main content

pipeline status coverage report

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.10.5

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

Source distribution (sdist)

Source distribution for bump-release 0.10.5
File Size Uploaded
bump_release-0.10.5.tar.gz 11.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for bump-release 0.10.5
File Interpreter ABI Platform
bump_release-0.10.5-py3-none-any.whl Python 3 none any Details

Total release size: 21.6 kB

Release files / bump_release-0.10.5.tar.gz

Download URL bump_release-0.10.5.tar.gz
Size 11.1 kB
Tags Source
SHA-256 checksum
How to use checksums
494f00d58466858ee28a1f0ce5217f2a54da5036de41b08a979482efde6943f0
BLAKE2b-256 checksum
How to use checksums
cfdfea38d7b26b8e911d83a1dcff463670d5754672dbc3ee9f9a7903b7df7825
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.13

Release files / bump_release-0.10.5-py3-none-any.whl

Download URL bump_release-0.10.5-py3-none-any.whl
Size 10.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b4e4feaf4eebcf9f6436ad5edc1df6b28f7fdeb2b1df0da0e56179052e9919e8
BLAKE2b-256 checksum
How to use checksums
78fa88c611d92e8f11b3326615134955d616df6c0d165a255c8638335c4f6743
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.13

Release history Release notifications | RSS feed

0.10.6

2 release files

This release

0.10.5 This release

2 release files

0.10.3

2 release files

0.10.2

2 release files

0.9.9

2 release files

0.9.7

1 release file

0.9.6

2 release files

0.9.5

2 release files

0.9.3

2 release files

0.9.1

2 release files

0.8.2

2 release files

0.8.1

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.2

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.9

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.2

2 release files

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