Skip to main content

Updates various version numbers for python projects

Project description

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

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.

Version numbers that can be updated

  • main project version
  • node package.json
  • sonar properties
  • sphinx docs
  • ansible variables in a vars file
  • setup.py

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('"')

Exemple ini file:

[DEFAULT]
current_release = 0.1.0  # Current version of the projects, will be updated by the script

[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]+)$"
# 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]+)[\"']$"
# Optional template, default is...
version_format = "version = '{major}.{minor}'"
# Optional pattern, default is...
release_pattern = "^release\s+=\s+[\"']([.\d]+)[\"']$"
# 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]+)['\"],$"
# Optional template, default is...
template = "    version='{major}.{minor}.{release}',"

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for bump-release, version 0.9.6
Filename, size File type Python version Upload date Hashes
Filename, size bump_release-0.9.6-py3-none-any.whl (12.1 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size bump_release-0.9.6.tar.gz (9.3 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page