Test, Build, Deliver!
Build and deployment automation for Python projects.
A typical release workflow may look like this:
- Check preconditions: Is the workspace clean, anything to commit?, Is GitHub reachable?, Are we on the correct branch?, ...
 - Make sure static code linters and unit tests pass.
 - Bump the project's version number (major, minor, or patch, according to
Semantic Versioning). 
Then patch the version string into the respective Python module or text file. - Build sdist, wheel and msi installer assets.
 - Tag the version, commit, and push.
 - Upload distribution to PyPI.
 - Create a new release on GitHub and upload assets.
 - Create a new release on the Windows Package Manager Repository.
 - Bump, tag, commit, and push for post-release.
 
Custom tasks may be added using the plugin framework.
Read the documentation for details.
- Use git, PyPI, and GitHub.
 - Version numbers follow roughly the Semantic Versioning pattern.
 - The project's version number is maintained in one of the supported locations
 
(See grunt-yabs for a node.js variant if you have a JavaScript based development stack.)

