#  yabs
> Test, Build, Deliver!
[](https://travis-ci.com/github/mar10/yabs)
[](https://pypi.python.org/pypi/yabs/)
[](https://github.com/mar10/yabs/blob/master/LICENSE.txt)
[](https://yabs.readthedocs.io/)
[](https://coveralls.io/github/mar10/yabs?branch=master)
[](https://github.com/ambv/black)
[](https://github.com/mar10/yabs)
[](https://stackoverflow.com/questions/tagged/yabs)
## Overview
Build and deployment automation for Python projects.
A typical release workflow may look like this:
1. Check preconditions: *Is the workspace clean, anything to commit?*,
*Is GitHub reachable?*, *Are we on the correct branch?*, ...
2. Make sure static code linters and unit tests pass.
3. Bump the project's version number (major, minor, or patch, according to
[Semantic Versioning](https://semver.org)). <br>
Then patch the version string into the respective Python module or text file.
4. Build *sdist*, *wheel* and *msi installer* assets.
5. Tag the version, commit, and push.
6. Upload distribution to [PyPI](https://pypi.org).
7. Create a new release on [GitHub](https://github.com) and upload assets.
8. Create a new release on the
[Windows Package Manager Repository](https://github.com/microsoft/winget-pkgs).
9. Bump, tag, commit, and push for post-release.
Custom tasks may be added using the plugin framework.
[Read the documentation](https://yabs.readthedocs.io/en/latest/ug_tutorial.html)
for details.
## Preconditions
- Use [git](https://git-scm.com), [PyPI](https://pypi.org),
and [GitHub](https://github.com).
- Version numbers follow roughly the [Semantic Versioning](https://semver.org)
pattern.
- The project's version number is maintained in
[one of the supported locations](https://yabs.readthedocs.io/)
(See [grunt-yabs](https://github.com/mar10/grunt-yabs) for a node.js variant
if you have a JavaScript based development stack.)
<!-- [](https://asciinema.org/a/6jPN5JTNBt2LT52C6R8HZEK1g) -->
<!--  -->


Raw data
{
"_id": null,
"home_page": "https://github.com/mar10/yabs",
"name": "yabs",
"maintainer": "Martin Wendt",
"docs_url": null,
"requires_python": null,
"maintainer_email": "yabs@wwwendt.de",
"keywords": "build, setup, ci, workflow, automation",
"author": "Martin Wendt",
"author_email": "yabs@wwwendt.de",
"download_url": "https://files.pythonhosted.org/packages/38/3c/e7c37e43c24e566e77bf9e540c9a760e554ab27462b7a288ecdf356ac532/yabs-0.6.1.tar.gz",
"platform": null,
"description": "#  yabs\r\n\r\n> Test, Build, Deliver!\r\n\r\n[](https://travis-ci.com/github/mar10/yabs)\r\n[](https://pypi.python.org/pypi/yabs/)\r\n[](https://github.com/mar10/yabs/blob/master/LICENSE.txt)\r\n[](https://yabs.readthedocs.io/)\r\n[](https://coveralls.io/github/mar10/yabs?branch=master)\r\n[](https://github.com/ambv/black)\r\n[](https://github.com/mar10/yabs)\r\n[](https://stackoverflow.com/questions/tagged/yabs)\r\n\r\n\r\n## Overview\r\n\r\nBuild and deployment automation for Python projects.\r\n\r\nA typical release workflow may look like this:\r\n\r\n1. Check preconditions: *Is the workspace clean, anything to commit?*,\r\n *Is GitHub reachable?*, *Are we on the correct branch?*, ...\r\n2. Make sure static code linters and unit tests pass.\r\n3. Bump the project's version number (major, minor, or patch, according to\r\n [Semantic Versioning](https://semver.org)). <br>\r\n Then patch the version string into the respective Python module or text file.\r\n4. Build *sdist*, *wheel* and *msi installer* assets.\r\n5. Tag the version, commit, and push.\r\n6. Upload distribution to [PyPI](https://pypi.org).\r\n7. Create a new release on [GitHub](https://github.com) and upload assets.\r\n8. Create a new release on the \r\n [Windows Package Manager Repository](https://github.com/microsoft/winget-pkgs).\r\n9. Bump, tag, commit, and push for post-release.\r\n\r\nCustom tasks may be added using the plugin framework.\r\n\r\n[Read the documentation](https://yabs.readthedocs.io/en/latest/ug_tutorial.html)\r\nfor details.\r\n\r\n\r\n## Preconditions\r\n\r\n- Use [git](https://git-scm.com), [PyPI](https://pypi.org),\r\n and [GitHub](https://github.com).\r\n- Version numbers follow roughly the [Semantic Versioning](https://semver.org) \r\n pattern.\r\n- The project's version number is maintained in\r\n [one of the supported locations](https://yabs.readthedocs.io/)\r\n\r\n(See [grunt-yabs](https://github.com/mar10/grunt-yabs) for a node.js variant\r\nif you have a JavaScript based development stack.)\r\n\r\n<!-- [](https://asciinema.org/a/6jPN5JTNBt2LT52C6R8HZEK1g) -->\r\n\r\n<!--  -->\r\n\r\n\r\n\r\n\r\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Yet Another Build Script",
"version": "0.6.1",
"project_urls": {
"Bug Tracker": "https://github.com/mar10/yabs/issues",
"Documentation": "https://yabs.readthedocs.io",
"Download": "https://github.com/mar10/yabs/releases/latest",
"Homepage": "https://github.com/mar10/yabs",
"Source Code": "https://github.com/mar10/yabs"
},
"split_keywords": [
"build",
" setup",
" ci",
" workflow",
" automation"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "d31c192ee982f2bfe696324761c20e9ad05607fee11bcbc5572b75e63290b66d",
"md5": "20dea587195b89a5b8b26501c2a14642",
"sha256": "8000f1c61695d6c554b353e2249a66de3027467585ca482f9292f0aca3f06afd"
},
"downloads": -1,
"filename": "yabs-0.6.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "20dea587195b89a5b8b26501c2a14642",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 55949,
"upload_time": "2024-03-24T11:55:22",
"upload_time_iso_8601": "2024-03-24T11:55:22.828557Z",
"url": "https://files.pythonhosted.org/packages/d3/1c/192ee982f2bfe696324761c20e9ad05607fee11bcbc5572b75e63290b66d/yabs-0.6.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "383ce7c37e43c24e566e77bf9e540c9a760e554ab27462b7a288ecdf356ac532",
"md5": "f93fb3818dd0da4b96c9d9bfb7d1c86a",
"sha256": "275e0e8b75779f0b5e76e84d1e59f84b8cc9d76b099cf1dccbd55956b421b6ff"
},
"downloads": -1,
"filename": "yabs-0.6.1.tar.gz",
"has_sig": false,
"md5_digest": "f93fb3818dd0da4b96c9d9bfb7d1c86a",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 46905,
"upload_time": "2024-03-24T11:55:20",
"upload_time_iso_8601": "2024-03-24T11:55:20.398334Z",
"url": "https://files.pythonhosted.org/packages/38/3c/e7c37e43c24e566e77bf9e540c9a760e554ab27462b7a288ecdf356ac532/yabs-0.6.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-03-24 11:55:20",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "mar10",
"github_project": "yabs",
"travis_ci": true,
"coveralls": false,
"github_actions": false,
"tox": true,
"lcname": "yabs"
}