{"id":16130153,"url":"https://github.com/lambdacasserole/dodgem","last_synced_at":"2025-10-28T00:13:30.279Z","repository":{"id":57690650,"uuid":"493775824","full_name":"lambdacasserole/dodgem","owner":"lambdacasserole","description":"Version bumper for Python.","archived":false,"fork":false,"pushed_at":"2022-09-08T18:54:44.000Z","size":31,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-13T01:07:10.468Z","etag":null,"topics":["cicd","pip","python","semver","utils","versioning"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lambdacasserole.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-05-18T18:10:46.000Z","updated_at":"2024-03-17T22:03:35.000Z","dependencies_parsed_at":"2022-09-26T20:52:38.251Z","dependency_job_id":null,"html_url":"https://github.com/lambdacasserole/dodgem","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lambdacasserole%2Fdodgem","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lambdacasserole%2Fdodgem/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lambdacasserole%2Fdodgem/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lambdacasserole%2Fdodgem/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lambdacasserole","download_url":"https://codeload.github.com/lambdacasserole/dodgem/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247492543,"owners_count":20947545,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cicd","pip","python","semver","utils","versioning"],"created_at":"2024-10-09T22:14:52.751Z","updated_at":"2025-10-28T00:13:25.246Z","avatar_url":"https://github.com/lambdacasserole.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv id=\"top\"\u003e\u003c/div\u003e\n\n\n\n\u003c!-- PROJECT SHIELDS --\u003e\n[![Contributors][contributors-shield]][contributors-url]\n[![Forks][forks-shield]][forks-url]\n[![Stargazers][stars-shield]][stars-url]\n[![Issues][issues-shield]][issues-url]\n[![MIT License][license-shield]][license-url]\n[![LinkedIn][linkedin-shield]][linkedin-url]\n\n\n\n\u003c!-- PROJECT LOGO --\u003e\n\u003cbr /\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://github.com/lambdacasserole/dodgem\"\u003e\n    \u003cimg src=\"https://raw.githubusercontent.com/lambdacasserole/dodgem/main/logo.svg\" alt=\"Logo\" width=\"128\" height=\"128\"\u003e\n  \u003c/a\u003e\n\n  \u003ch3 align=\"center\"\u003edodgem\u003c/h3\u003e\n\n  \u003cp align=\"center\"\u003e\n    Version bumper for Python project files.\n    \u003cbr /\u003e\n    \u003ca href=\"https://github.com/lambdacasserole/dodgem/issues\"\u003eReport Bug\u003c/a\u003e\n    ·\n    \u003ca href=\"https://github.com/lambdacasserole/dodgem/issues\"\u003eRequest Feature\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/div\u003e\n\n\n\n\u003c!-- TABLE OF CONTENTS --\u003e\n\u003cdetails\u003e\n  \u003csummary\u003eTable of Contents\u003c/summary\u003e\n  \u003col\u003e\n    \u003cli\u003e\n      \u003ca href=\"#about-the-project\"\u003eAbout The Project\u003c/a\u003e\n      \u003cul\u003e\n        \u003cli\u003e\u003ca href=\"#built-with\"\u003eBuilt With\u003c/a\u003e\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      \u003ca href=\"#getting-started\"\u003eGetting Started\u003c/a\u003e\n      \u003cul\u003e\n        \u003cli\u003e\u003ca href=\"#prerequisites\"\u003ePrerequisites\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#installation\"\u003eInstallation\u003c/a\u003e\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      \u003ca href=\"#usage\"\u003eUsage\u003c/a\u003e\n      \u003cul\u003e\n        \u003cli\u003e\u003ca href=\"#example-bump-minor-version\"\u003eExample: Bump Minor Version\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#example-from-commit-message\"\u003eExample: From Commit Message\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#example-custom-tags\"\u003eExample: Custom Tags\u003c/a\u003e\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#roadmap\"\u003eRoadmap\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#contributing\"\u003eContributing\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#license\"\u003eLicense\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#contact\"\u003eContact\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#acknowledgments\"\u003eAcknowledgments\u003c/a\u003e\u003c/li\u003e\n  \u003c/ol\u003e\n\u003c/details\u003e\n\n\n\n\u003c!-- ABOUT THE PROJECT --\u003e\n## About The Project\n\n![dodgem usage][product-screenshot]\n\nSometimes you need to bump the version in your Python project files automatically. For example, you might:\n\n* Have a CI/CD pipeline, and want to automatically bump the patch version of your library on merge to your `develop` branch\n* Have a workflow (e.g. on Bitbucket Pipelines, GitHub actions etc.) that allows developers to automatically perform version bumps by including tags in their commit message (e.g. `[major]`, `[minor]`)\n* Just want to reduce the chances of human error when bumping version numbers manually\n\nDodgem is a command-line utility for doing all of the above, and a bit more, aiming to eventually cover as many Python project file formats as possible, but currently supporting:\n\n* `setuptools` (`setup.py`) with the `version=` named argument\n* `pyproject.toml` managed by the [Poetry](https://python-poetry.org/) dependency manager\n\nNamed after (version) [bumper cars](https://en.wikipedia.org/wiki/Bumper_cars) which are also sometimes called dodgems in some dialects of English.\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\n\n### Built With\n\nThis project uses:\n\n* [Click](https://click.palletsprojects.com/en/8.1.x/) for its CLI\n* [Poetry](https://python-poetry.org/) for dependency management\n* [Blessings](https://github.com/erikrose/blessings) for colorized and formatted CLI output\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\n\n\u003c!-- GETTING STARTED --\u003e\n## Getting Started\n\nGetting started is straightforward. Dodgem aims to automatically detect as much as possible.\n\n### Prerequisites\n\nYou'll need Python 3.7 or newer with pip to install Dodgem.\n\n### Installation\n\nInstall Dodgem using pip or your favourite Python dependency manager and you're done.\n\n```bash\npip3 install dodgem\n```\n\nTest your installation with:\n\n```bash\ndodgem --help\n```\n\nYou should see help documentation printed.\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\n\n\u003c!-- USAGE EXAMPLES --\u003e\n## Usage\n\nYou can use `dodgem --help` for detailed information on using the utility:\n\n```\nUsage: dodgem [OPTIONS]\n\n  Bump version numbers in a project file.\n\nOptions:\n  --file TEXT              The file to parse (defaults to automatic\n                           detection).\n  --file-type TEXT         The file type to parse (defaults to automatic).\n  --file-format TEXT       The file format to parse (defaults to automatic).\n  --commit-message TEXT    The commit message to infer the version bump from.\n  --no-auto-patch          If given, disables automatic patch version bump if\n                           commit message provided.\n  --major-tag TEXT         The commit message tag indicating a major version\n                           bump.\n  --minor-tag TEXT         The commit message tag indicating a minor version\n                           bump.\n  --patch-tag TEXT         The commit message tag indicating a patch version\n                           bump.\n  --prerelease-tag TEXT    The commit message tag indicating a prerelease\n                           version bump.\n  --ignore-tag-case        Ignores capitalization in commit message tags.\n  --quiet                  Suppresses all extraneous output.\n  --pep-440                Use PEP-440 for version strings.\n  --bump-major             If given, performs a major version bump.\n  --bump-minor             If given, performs a minor version bump.\n  --bump-patch             If given, performs a patch version bump.\n  --bump-prerelease        If given, performs a prerelease version bump.\n  --bump-build             If given, performs a build version bump.\n  --prerelease-token TEXT  The prerelease token to append.\n  --build-token TEXT       The build token to append.\n  --dry                    If given, does not write the version change to\n                           disk.\n  --help                   Show this message and exit.\n```\n\n### Example: Bump Minor Version\n\nBump the minor version of your project like this:\n\n```bash\ndodgem --bump-minor\n```\n\nIf you don't want to commit the change to disk, use `--dry` like so:\n\n```bash\ndodgem --bump-minor --dry\n```\n\nIf the informational output given by the CLI is getting in the way of downstream processing, use `--quiet`:\n\n```bash\ndodgem --bump-minor --quiet\n```\n\n### Example: From Commit Message\n\nDodgem can bump your project version based on a commit message. By default.\n\n* If the message contains `[major]` then a major version bump will be performed\n* If the message contains `[minor]` then a minor version bump will be performed\n* Otherwise, a patch version bump will be performed\n\nFor example, to use your last `git` commit message to bump your projects version.\n\n```bash\ndodgem --commit-message=\"$(git log -1)\"\n```\n\n### Example: Custom Tags\n\nIf the default `[major]` and `[minor]` tags don't suit you, and you'd perfer `(major)`, `(minor)` and an _explicit_ `(patch)` tag:\n\n```bash\ndodgem --commit-message=\"$(git log -1)\" --major-tag='(major)' --minor-tag='(minor)' --patch-tag='(patch)' --no-auto-patch\n```\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\n\n\u003c!-- ROADMAP --\u003e\n## Roadmap\n\n- [x] Support `setuptools` (`setup.py`)\n- [x] Support [Poetry](https://python-poetry.org/)\n- [x] Support prerelease/build versions (shoutout to [@mitchelkoster](https://github.com/mitchelkoster) for the feature idea)\n\nSee the [open issues](https://github.com/lambdacasserole/dodgem/issues) for a full list of proposed features (and known issues).\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\n\n\u003c!-- CONTRIBUTING --\u003e\n## Contributing\n\nAny contributions are very welcome. Please fork the project and open a PR, or open an issue if you've found a bug and/or would like to suggest a feature.\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\n\n\u003c!-- LICENSE --\u003e\n## License\n\nDistributed under the MIT License. See `LICENSE.txt` for more information.\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\n\n\u003c!-- CONTACT --\u003e\n## Contact\n\nSaul Johnson - [@lambdacasserole](https://twitter.com/lambdacasserole) - saul.a.johnson@gmail.com\n\nProject Link: [https://github.com/lambdacasserole/dodgem](https://github.com/lambdacasserole/dodgem)\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\n\n\u003c!-- ACKNOWLEDGMENTS --\u003e\n## Acknowledgments\n\nThe following resources are awesome:\n\n* [Best-README-Template](https://github.com/othneildrew/Best-README-Template) was used for this readme\n* [tomlkit](https://github.com/sdispater/tomlkit/) was used for parsing TOML in a way that preserves comments, order, formatting etc.\n* [semver](https://github.com/python-semver/python-semver) was used for parsing and bumping semver numbers\n\nShoutout to [@mitchelkoster](https://github.com/mitchelkoster) for contributing a load of feature ideas, and rooting out a bunch of bugs and edge cases!\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\n\n\u003c!-- MARKDOWN LINKS \u0026 IMAGES --\u003e\n\u003c!-- https://www.markdownguide.org/basic-syntax/#reference-style-links --\u003e\n[contributors-shield]: https://img.shields.io/github/contributors/lambdacasserole/dodgem.svg?style=for-the-badge\n[contributors-url]: https://github.com/lambdacasserole/dodgem/graphs/contributors\n[forks-shield]: https://img.shields.io/github/forks/lambdacasserole/dodgem.svg?style=for-the-badge\n[forks-url]: https://github.com/lambdacasserole/dodgem/network/members\n[stars-shield]: https://img.shields.io/github/stars/lambdacasserole/dodgem.svg?style=for-the-badge\n[stars-url]: https://github.com/lambdacasserole/dodgem/stargazers\n[issues-shield]: https://img.shields.io/github/issues/lambdacasserole/dodgem.svg?style=for-the-badge\n[issues-url]: https://github.com/lambdacasserole/dodgem/issues\n[license-shield]: https://img.shields.io/github/license/lambdacasserole/dodgem.svg?style=for-the-badge\n[license-url]: https://github.com/lambdacasserole/dodgem/blob/master/LICENSE.txt\n[linkedin-shield]: https://img.shields.io/badge/-LinkedIn-black.svg?style=for-the-badge\u0026logo=linkedin\u0026colorB=555\n[linkedin-url]: https://linkedin.com/in/sauljohnson\n[product-screenshot]: https://raw.githubusercontent.com/lambdacasserole/dodgem/main/usage.svg\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flambdacasserole%2Fdodgem","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flambdacasserole%2Fdodgem","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flambdacasserole%2Fdodgem/lists"}