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

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.3
File Size Uploaded
bump_release-0.10.3.tar.gz 13.1 kB Details

Built distribution (wheel)

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

Total release size: 26.8 kB

Release files / bump_release-0.10.3.tar.gz

Download URL bump_release-0.10.3.tar.gz
Size 13.1 kB
Tags Source
SHA-256 checksum
How to use checksums
9e1ba7f67de20c77ba26b0fee9e8d7024281ee569ddb2675323c3f2cd31410c2
BLAKE2b-256 checksum
How to use checksums
b54e2b58c01a95fa370e4d26e3825b94d32ac454c5a49a3ed402b744e9663ba5
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.10.3-py3-none-any.whl

Download URL bump_release-0.10.3-py3-none-any.whl
Size 13.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
589c7ad813feaaa27a34e26e9a4f19bad82877915e62698cafd2385730742d9b
BLAKE2b-256 checksum
How to use checksums
ab95c63cd1bd1a24faeb99bc1e12c8050dc8c231a47200fec1078efec01d106e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.0 CPython/3.9.12

Release history Release notifications | RSS feed

0.10.6

2 release files

This release

0.10.3 This release

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