Check if you haven't forgotten to bump the PyPi package version number before you merge a release pull request.
Project description
pypi-version
Getting started
What is pypi-version
pypi-version
checks if you haven't forgotten to bump the PyPi package version number
before you merge a release
pull request.
It would be useful if you:
- develop Python package,
- follow Gitflow workflow,
- upload package to the Python Package Index (PyPi),
- use the following continuous integration services: Travis CI.
Python package
Python package
is redistributed and reused couple of the Python
scripts. They exist to solve the typical problems. So if
you have common problem in your project — instead of writing own code and spend a time for it, use the package that already have required functionality. The examples of Python packages
you should know are requests and Django.
Gitflow workflow
Instead of a single master
branch, this workflow uses two branches to record the history of the project. The master
branch stores the official release history, and the develop
branch serves as an integration branch for features.
So when you complete the feature, you open the pull request from feature
branch to the develop
branch. When you complete the bunch of features, you open the pull request from develop
branch to master
branch which are going to merge this bunch of features that means you do new release. According to the changes that contains new features, you should increase your version number (e.g. from 1.0.0
to 1.1.0
) in the file called setup.py
in the same pull request (from develop
to master
) to new features and bumped version numbers become to the release branch together.
As you illustrated above, there is a pull request from develop
branch to master
branch. develop
branch contains
a couple of features and the last commit is bumping the version commit.
Upload to PyPi
When you features with increased version number have been merged to the master
branch, you are going to upload your source code to the Python Package Index
.
Being in the root of you project,
package
|
- ...
- source
- README.md
- setup.py
...
you do the following command:
$ python3 setup.py sdist
$ twine upload dist/*
And if you haven't forgotten to bump the PyPi package version number
, the upload is successful.
Continuous integration services
Continuous integration services are useful when you want add some robotic checking for your pull request changes.
For instance, you can run checking code style with flake8 and run tests with pytest to check your changes does not break existing functionality on the few version
of Python
. The configuration file example for Travis CI
is presented below.
language: python
python:
- "3.4"
- "3.5"
- "3.6"
- "3.7-dev"
install:
- pip install -r requirements-dev.txt
- pip install -r requirements-tests.txt
script:
- cat requirements-tests.txt requirements-dev.txt | safety check --stdin
- radon cc accessify -nb --total-average
- isort -rc accessify --diff && isort -rc tests --diff
- flake8 accessify
- coverage run -m pytest -vv tests
after_success:
- coverage report -m && coverage xml
- bash <(curl -s https://codecov.io/bash)
Each pull request the checking report will be presented. By clicking on the details
you will see full report.
Motivation
Python packages
have version number such as 0.1.0
or 1.3.3
. Python packages
commonly are uploaded to PyPi
.
Sometimes after adding new functionality to your package you forget to increase the version number of the package.
So when you try to upload it, you get the error message Package version number already in use
. It is okay if
you develop the package locally and alone, you just modify the version number and upload it again. But if you work
develop the package using particular development flow such as Gitflow workflow
and continuous integration
services — then you should create separated pull request to bump the version, the resources and time you will spend
on it are increasing in few times. The cost of the mistake is high.
So if you integrate the pypi-version
to your continuous integration service by checking the version using simple command line tool, it will never
allow you pull request to be merged if you forget to increase the version.
How to install
Install the pypi-package
with the following command using pip3
:
$ pip3 install pypi-version
Usage
Command line interface
To check if you haven't forgotten to bump the PyPi package version number
before you merge a release
pull request:
$ pypi-version check
To fetch the version of the pypi-version
package:
$ pypi-version --version
pypi-version, version 0.1.0
To fetch all available package commands, use the following command:
$ pypi-version --help
Usage: pypi-version [OPTIONS] COMMAND [ARGS]...
Command line interface for PyPi version checking.
Options:
--version Show the version and exit.
--help Show this message and exit.
Commands:
check Check if you haven't forgotten to bump the PyPi package version.
Configuration file
pypi-version
requires a configuration file called .pypi-verion.yml
to be located in the root of the project:
package
|
- ...
- source
- README.md
- setup.py
- .pypi-verion.yml
...
The configuration file should contains the section with your PyPi package
name that is the same with the name in the
setup.py
:
package:
name: pypi-version
The configuration file should contains name of the continuous integration service you use. Available options are: travis
.
ci:
name: travis
The configuration file should contains development
and release
branch names. In the illustration below configurations
means package version number
will be checked only when you do a pull request from develop
to master
.
branches:
development: develop
release: master
The example of the configuration file is:
package:
name: pypi-version
ci:
name: travis
branches:
development: develop
release: master
Contributing
Clone the project and install requirements:
$ git clone git@github.com:dmytrostriletskyi/pypi-version.git && cd pypi-version
$ pip3 install -r requirements.txt
$ pip3 install -r requirements-dev.txt
$ pip3 install -r requirements-tests.txt
When you will make changes, ensure your code pass the checkers and is covered by tests using pytest.
If you are new for the contribution, please read:
- Read about pull requests — https://help.github.com/en/articles/about-pull-requests
- Read how to provide pull request — https://help.github.com/en/articles/creating-a-pull-request-from-a-fork
- Also the useful article about how to contribute — https://akrabat.com/the-beginners-guide-to-contributing-to-a-github-project/
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
File details
Details for the file pypi-version-0.1.0.tar.gz
.
File metadata
- Download URL: pypi-version-0.1.0.tar.gz
- Upload date:
- Size: 9.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8c21ace9b19eada43ca8bdf5f83bb6fa130a2f2218ef563d4282081b6259c532 |
|
MD5 | 13a3981c204b37cb73bc67cc90421b3f |
|
BLAKE2b-256 | 8eab4027f630374088c4782f82e8f75f704b31d6902e35b645fae9112fcbcac5 |