# jiggle_version
Version bumper that finds version numbers in source code and increases the build number by modifying source.
With jiggle-version, the source code is authoritative, as compared to some tools where the source control tag is authoritative, or the pyproject.toml is authoritative.
This tool was written before pyproject.toml was a well-supported standard. You should consider instead
using `poetry version patch` and looking up the `__version__` from the package metadata and not storing the version
anywhere in source code.
Special attention to making sure you don't have to write regex or do complex configuration.
```bash
# This is just a command line tool, keep your venv clean using pipx
pipx install jiggle-version
# bump version
jiggle-version here
# bump version of specific module
jiggle_version here --module=my_module
# just find version
git --tag $(jiggle-version find)
```
Badges
------
![Libraries.io dependency status for latest release](https://img.shields.io/librariesio/release/pypi/jiggle-version) [![Downloads](https://pepy.tech/badge/jiggle-version/month)](https://pepy.tech/project/jiggle-version/month)
[![Coverage Status](https://coveralls.io/repos/github/matthewdeanmartin/jiggle_version/badge.svg?branch=master)](https://coveralls.io/github/matthewdeanmartin/jiggle_version?branch=master)
[![CodeFactor](https://www.codefactor.io/repository/github/matthewdeanmartin/jiggle_version/badge)](https://www.codefactor.io/repository/github/matthewdeanmartin/jiggle_version)
Python Versions Supported
-------------------------
3.6, 3.7, 3.8, and forward. Pypi still hosts the old version that supported python 2 and earlier.
Opinionated
-----------
A library should have one working, no-options, no questions asked scenario, e.g.
```bash
jiggle-version here
# find, bump & update version strings in source code
```
An opinionated library has an opinion about the right way to do it. That said, if the library can discover existing
conventions, it should discover them and use them. If you don't like it, see the end for competing opinionated libraries
and their philosophy, such as vcs-tag-only, regex-more-regex-all-day-regex.
The following constraints enable "drop in and go"
No Config, No Regex
-------------------
If the config is more complex than re-writing the code from scratch, there is something wrong with a library. Forcing
the developer to write regex to use a utility is a colossal cop-out.
Security
--------
Jiggle version will not execute python code other than `ast.literal_eval`. Some package versions stored in source code
can only be handled by executing `setup.py` or executing the file with dunder version. Those scenarios are not handled.
Documentation
-------------
- [Design Philosophy](docs/design_philosophy.md)
- [Prior Art](docs/prior_art.md)
- [TODO](docs/todo.md)
- [Authors](docs/AUTHORS)
- [ChangeLog](docs/ChangeLog)
- [Code of Conduct](docs/CODE_OF_CONDUCT.md)
Raw data
{
"_id": null,
"home_page": "https://github.com/matthewdeanmartin/jiggle_version",
"name": "jiggle-version",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.6",
"maintainer_email": "",
"keywords": "bump version,version",
"author": "Matthew Martin",
"author_email": "matthewdeanmartin@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/d2/46/2f3e472d2982c20d0ab6f713bfd2cb3f04886220e7173c803e5e49345a6f/jiggle_version-1.1.0.tar.gz",
"platform": null,
"description": "# jiggle_version\n\nVersion bumper that finds version numbers in source code and increases the build number by modifying source.\n\nWith jiggle-version, the source code is authoritative, as compared to some tools where the source control tag is authoritative, or the pyproject.toml is authoritative.\n\nThis tool was written before pyproject.toml was a well-supported standard. You should consider instead\nusing `poetry version patch` and looking up the `__version__` from the package metadata and not storing the version\nanywhere in source code.\n\nSpecial attention to making sure you don't have to write regex or do complex configuration.\n\n```bash\n# This is just a command line tool, keep your venv clean using pipx\npipx install jiggle-version\n \n# bump version\njiggle-version here\n\n# bump version of specific module\njiggle_version here --module=my_module\n\n# just find version\ngit --tag $(jiggle-version find)\n```\n\nBadges\n------\n\n![Libraries.io dependency status for latest release](https://img.shields.io/librariesio/release/pypi/jiggle-version) [![Downloads](https://pepy.tech/badge/jiggle-version/month)](https://pepy.tech/project/jiggle-version/month)\n\n[![Coverage Status](https://coveralls.io/repos/github/matthewdeanmartin/jiggle_version/badge.svg?branch=master)](https://coveralls.io/github/matthewdeanmartin/jiggle_version?branch=master)\n[![CodeFactor](https://www.codefactor.io/repository/github/matthewdeanmartin/jiggle_version/badge)](https://www.codefactor.io/repository/github/matthewdeanmartin/jiggle_version)\n\nPython Versions Supported\n-------------------------\n3.6, 3.7, 3.8, and forward. Pypi still hosts the old version that supported python 2 and earlier.\n\n\nOpinionated\n-----------\nA library should have one working, no-options, no questions asked scenario, e.g.\n\n```bash\njiggle-version here\n# find, bump & update version strings in source code\n```\n\nAn opinionated library has an opinion about the right way to do it. That said, if the library can discover existing\nconventions, it should discover them and use them. If you don't like it, see the end for competing opinionated libraries\nand their philosophy, such as vcs-tag-only, regex-more-regex-all-day-regex.\n\nThe following constraints enable \"drop in and go\"\n\nNo Config, No Regex\n-------------------\nIf the config is more complex than re-writing the code from scratch, there is something wrong with a library. Forcing\nthe developer to write regex to use a utility is a colossal cop-out.\n\nSecurity\n--------\nJiggle version will not execute python code other than `ast.literal_eval`. Some package versions stored in source code\ncan only be handled by executing `setup.py` or executing the file with dunder version. Those scenarios are not handled.\n\nDocumentation\n-------------\n\n- [Design Philosophy](docs/design_philosophy.md)\n- [Prior Art](docs/prior_art.md)\n- [TODO](docs/todo.md)\n- [Authors](docs/AUTHORS)\n- [ChangeLog](docs/ChangeLog)\n- [Code of Conduct](docs/CODE_OF_CONDUCT.md)\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Bump version by modifying source code. No regex needed from user.",
"version": "1.1.0",
"project_urls": {
"Bug Tracker": "https://github.com/matthewdeanmartin/jiggle_version/issues",
"Change Log": "https://github.com/matthewdeanmartin/jiggle_version/blob/main/CHANGES.md",
"Documentation": "https://github.com/matthewdeanmartin/jiggle_version",
"Homepage": "https://github.com/matthewdeanmartin/jiggle_version",
"Repository": "https://github.com/matthewdeanmartin/jiggle_version"
},
"split_keywords": [
"bump version",
"version"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "db63978272ad31dba55a8d945c10a830b538586fc6b391c142614bb2beb99f20",
"md5": "72bf760012267118571c42d91039c48a",
"sha256": "565105a733ce6495e2cd352ba313c93b7aa1d9dfd18a5a303222aa11dbb9a673"
},
"downloads": -1,
"filename": "jiggle_version-1.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "72bf760012267118571c42d91039c48a",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.6",
"size": 32979,
"upload_time": "2023-05-28T20:11:26",
"upload_time_iso_8601": "2023-05-28T20:11:26.590387Z",
"url": "https://files.pythonhosted.org/packages/db/63/978272ad31dba55a8d945c10a830b538586fc6b391c142614bb2beb99f20/jiggle_version-1.1.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "d2462f3e472d2982c20d0ab6f713bfd2cb3f04886220e7173c803e5e49345a6f",
"md5": "616625befe1cec2337208252dc50532c",
"sha256": "1bff41bf623d30e31127af0442e7e588fbf8b03026fc6293ff7be8a082c2985d"
},
"downloads": -1,
"filename": "jiggle_version-1.1.0.tar.gz",
"has_sig": false,
"md5_digest": "616625befe1cec2337208252dc50532c",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6",
"size": 25081,
"upload_time": "2023-05-28T20:11:27",
"upload_time_iso_8601": "2023-05-28T20:11:27.869153Z",
"url": "https://files.pythonhosted.org/packages/d2/46/2f3e472d2982c20d0ab6f713bfd2cb3f04886220e7173c803e5e49345a6f/jiggle_version-1.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-05-28 20:11:27",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "matthewdeanmartin",
"github_project": "jiggle_version",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"tox": true,
"lcname": "jiggle-version"
}