Welcome to version.py’s documentation!¶
Version: 0.2
Documentation: https://versionpy.readthedocs.io
Source: https://github.com/gregschmit/version.py
PyPI: https://pypi.org/project/version-py/
The Problem: Versioning Python packages can be a pain in the ass, especially when building distributions.
The Solution: Include this script and hook it into your setup.py
workflow
and when you do setup.py sdist bdist_wheel
, versioning will be automatically
included in your distributions and the get_version
hook is smart enough to
look for the VERSION_STAMP
first before trying to get the version from git.
Installation¶
pip install version-py
Verbiage: MAJOR.MINOR.PATCH
To start versioning at 0.1.x, just do git tag -a v0.1 -m 'version 0.1'
. Each
commit will increment the PATCH level by 1 according to this module’s
get_version()
. When you want to increment the MINOR, just do
git tag -a v0.2 -m 'version 0.2'
.
In your setup.py
you should stamp the directory so when you generate your
package sdist/bdist, the VERSION_STAMP
exists (since your sdist/bdist won’t
have the .git
directory telling the user which version they have):
from my_module_name import version
version.stamp_directory('./my_module_name')
You should also get the version from get_version
and ensure your
VERSION_STAMP
gets included in your sdists/bdists, like:
...
setup(
name='my-module-name',
version=version.get_version(),
packages=find_packages(),
include_package_data=True,
package_data={'my_module_name': ['VERSION_STAMP']},
...
)
At the end of your setup.py
you should un-stamp the directory:
...
version.unstamp_directory('./my_module_name')
Finally, source distributions don’t listen to package_data
instructions, so
you need to include the following in a MANIFEST.in
file in the same
directory as setup.py
:
include */VERSION_STAMP
Contributing¶
Email gschmi4@uic.edu if you want to contribute. You must only contribute code that you have authored or otherwise hold the copyright to, and you must make any contributions to this project available under the MIT license.
To collaborators: don’t push using the --force
option.