Simple semantic-version bumper in python that works.
Project description
Current version: 1.1.5
Tested with Python 3.8, 3,9, 3.10 and 3.11. Code is simple. Probably works in other versions.
Pypi: https://pypi.org/project/bumpytrack/
Github: https://github.com/nandilugio/bumpytrack
BumpyTrack
Bumping the (semantic) version of your software every time a release is done can be a tedious task, if you:
- Have the version written in various files, e.g.
setup.py
or a dedicated version file. - Manage versioning with tags in GIT.
This little script automates this process for you.
Say you're using git-flow
and you've just merged a feature to your development branch. You can just checkout and pull it, and then do:
bumpytrack minor # or major if you have breaking changes, or patch if it's a simple bugfix
It will:
- Replace the version string in all relevant files (see config below).
- Commit those changes to GIT, taking care not to commit anything else (can be omitted).
- Create a GIT tag for this new version (can be omitted).
Now you're free to push, merge to master and deploy!
Unless you forgot something or bumped by mistake of course, in which case you can just undo the commit and tag created in Git by doing:
bumpytrack git-undo
For the above version string replacements we'll need some config. This example should be autoexplicative. Create a pyproject.toml
or add your config to the one you already have in the root of your repository and you're good to go.
Installation
pip install bumpytrack
Then add a pyproject.toml
to the root of your repository (if you don't already have it) and configure it like this.
Help
The script is really simple, and has a decent on-line documentation. Just do:
bumpytrack --help
Some of the available options:
--current-version CURRENT_VERSION
force current version instead using version in config
file
--new-version NEW_VERSION
force new version instead using version in config file
--git-commit Git: Commit files with version replacements
--no-git-commit
--git-tag Git: Tag this reference with the new version
--no-git-tag
--config-path CONFIG_PATH
path to config file. Defaults to pyproject.toml in
current directory
--verbose
You can also just peek at the code. Not much of it... it just adds one to some little numbers ;p
Contributing
Make sure you have the lastest pip
and pipenv
versions:
pip install --upgrade pip pipenv
To start developing, start the environment by:
pipenv shell
pipenv install -d
The installed bumpytrack
within the pipenv environment is the editable (alla pip install -e .
) version of the package, so you can manually test right away.
This tool uses both pipenv
for development and setuptools
for packaging and distribution. To this date there is not a 100% community-accepted best practice so I've taken this approach. In summary:
To add an application dependency, add it in setup.py
and leave it with a loose version definition. Then, just do pipenv install -e .
to install the dependency. Pipenv locking mecanism will work as expected, since bumpytrack itself in in the [packages]
section of Pipfile
(check Pipfile.lock
and you'll find the deps there).
To add a development dependency, add it to Pipfile
via pipenv install -d <my-dependency>
.
This way there's a single source of truth for package definition. No need to repeat the deps in setup.py
and Pipfile*
.
Tests
To test the project run pytest
inside the pipenv
. Once you have something running, run tox
to check it's compatible with all python versions supported.
IMPORTANT: in order to make tox
test with different python versions, those have to be installed. pyenv
is used for that purpose and should work out of the box. Check the required versions in tox.ini
and related files.
Dev tasks automation and publishing to PyPI
This project uses pepython
for automation. There you'll find tasks to build and publish the package to PyPI.
Check the project out and the tasks.py
file for more info.
License
This project is licensed under the MIT License - see the LICENSE
file for details.
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
File details
Details for the file bumpytrack-1.1.5.tar.gz
.
File metadata
- Download URL: bumpytrack-1.1.5.tar.gz
- Upload date:
- Size: 7.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1e883467d365c441f7dca8dacc76b16a2e81ad2825c2f3950a20c2d89dcdc1d4 |
|
MD5 | a259c7b7c247363f85fb605d29b53157 |
|
BLAKE2b-256 | f7511441c5521c37dfc24a2b9eb49b33565e4895760348dd286c80de595611ea |
Provenance
File details
Details for the file bumpytrack-1.1.5-py3-none-any.whl
.
File metadata
- Download URL: bumpytrack-1.1.5-py3-none-any.whl
- Upload date:
- Size: 7.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ab3adef6d8912cfff4a0a02dd020bf67a4000b1739e23971a0f806094e4605b6 |
|
MD5 | 41298213f585b3541ed88b2312c29050 |
|
BLAKE2b-256 | e16a558007ee2c8fb4cbe5af55641af64140d1b5e94f437e7130f5dc75e4e6f4 |