<div align="center">
<img alt="logo" src="https://github.com/pivoshenko/uv-plugin-up/blob/main/assets/logo.svg?raw=True" height=200>
</div>
<br>
<p align="center">
<a href="https://opensource.org/licenses/MIT">
<img alt="License" src="https://img.shields.io/pypi/l/uv-plugin-up?style=flat-square&logo=opensourceinitiative&logoColor=white&color=0A6847&label=License">
</a>
<a href="https://pypi.org/project/uv-plugin-up">
<img alt="Python" src="https://img.shields.io/pypi/pyversions/uv-plugin-up?style=flat-square&logo=python&logoColor=white&color=4856CD&label=Python">
</a>
<a href="https://pypi.org/project/uv-plugin-up">
<img alt="PyPI" src="https://img.shields.io/pypi/v/uv-plugin-up?style=flat-square&logo=pypi&logoColor=white&color=4856CD&label=PyPI">
</a>
<a href="https://github.com/pivoshenko/uv-plugin-up/releases">
<img alt="Release" src="https://img.shields.io/github/v/release/pivoshenko/uv-plugin-up?style=flat-square&logo=github&logoColor=white&color=4856CD&label=Release">
</a>
</p>
<p align="center">
<a href="https://semantic-release.gitbook.io">
<img alt="Semantic_Release" src="https://img.shields.io/badge/Semantic_Release-angular-e10079?style=flat-square&logo=semanticrelease&logoColor=white&color=D83A56">
</a>
<a href="https://pycqa.github.io/isort">
<img alt="Imports" src="https://img.shields.io/badge/Imports-isort-black.svg?style=flat-square&logo=improvmx&logoColor=white&color=637A9F&">
</a>
<a href="https://docs.astral.sh/ruff">
<img alt="Ruff" src="https://img.shields.io/badge/Style-ruff-black.svg?style=flat-square&logo=ruff&logoColor=white&color=D7FF64">
</a>
<a href="https://mypy.readthedocs.io/en/stable/index.html">
<img alt="mypy" src="https://img.shields.io/badge/mypy-checked-success.svg?style=flat-square&logo=pypy&logoColor=white&color=0A6847">
</a>
</p>
<p align="center">
<a href="https://github.com/pivoshenko/uv-plugin-up/actions/workflows/tests.yaml">
<img alt="Tests" src="https://img.shields.io/github/actions/workflow/status/pivoshenko/uv-plugin-up/tests.yaml?label=Tests&style=flat-square&logo=pytest&logoColor=white&color=0A6847">
</a>
<a href="https://github.com/pivoshenko/uv-plugin-up/actions/workflows/linters.yaml">
<img alt="Linters" src="https://img.shields.io/github/actions/workflow/status/pivoshenko/uv-plugin-up/linters.yaml?label=Linters&style=flat-square&logo=lintcode&logoColor=white&color=0A6847">
</a>
<a href="https://github.com/pivoshenko/uv-plugin-up/actions/workflows/release.yaml">
<img alt="Release" src="https://img.shields.io/github/actions/workflow/status/pivoshenko/uv-plugin-up/release.yaml?label=Release&style=flat-square&logo=pypi&logoColor=white&color=0A6847">
</a>
<a href="https://codecov.io/gh/pivoshenko/uv-plugin-up" >
<img alt="Codecov" src="https://img.shields.io/codecov/c/gh/pivoshenko/uv-plugin-up?token=cqRQxVnDR6&style=flat-square&logo=codecov&logoColor=white&color=0A6847&label=Coverage"/>
</a>
</p>
<p align="center">
<a href="https://pypi.org/project/uv-plugin-up">
<img alt="Downloads" src="https://img.shields.io/pypi/dm/uv-plugin-up?style=flat-square&logo=pythonanywhere&logoColor=white&color=4856CD&label=Downloads">
</a>
<a href="https://github.com/pivoshenko/uv-plugin-up">
<img alt="Stars" src="https://img.shields.io/github/stars/pivoshenko/uv-plugin-up?style=flat-square&logo=apachespark&logoColor=white&color=4856CD&label=Stars">
</a>
</p>
<p align="center">
<a href="https://stand-with-ukraine.pp.ua">
<img alt="StandWithUkraine" src="https://img.shields.io/badge/Support-Ukraine-FFC93C?style=flat-square&labelColor=07689F">
</a>
</p>
## Overview
`uv-plugin-up` - is a plugin for automated dependency updates and version bumping in `pyproject.toml` files.
### Features
- Fully type-safe
- Automatically updates dependencies to their latest versions from PyPI
- Multiple dependency groups support - handles `project.dependencies`, `project.optional-dependencies`, and `dependency-groups`
- Selective updates - exclude specific packages from being updated
- Dry-run mode - preview changes without modifying files
- Safe updates - automatically runs `uv lock` after updates and rolls back on failure
## Installation
```bash
uv add --dev uv-plugin-up
# or
uv add uv-plugin-up --group dev
```
## Usage and Configuration
By default, the plugin updates all dependencies in the `pyproject.toml`:
```bash
uv-plugin-up
```
### Command-line Options
#### `filepath`
**Type**: `Path`
**Default**: `./pyproject.toml`
**Short flag**: `-f`
Specifies the path to the `pyproject.toml` file. If your project file is located elsewhere or has a different name, you can set this parameter.
#### `exclude`
**Type**: `str`
**Default**: `()`
**Multiple values**: `allowed`
Specifies packages to exclude from updating. You can provide multiple package names to prevent them from being updated.
#### `dry-run`
**Type**: `bool`
**Default**: `false`
Enables preview mode where changes are displayed without modifying the `pyproject.toml` file. This is useful for reviewing what would be updated before applying changes.
## Examples
```bash
uv-plugin-up --exclude click
# Updating dependencies in 'project' group
# Skipping 'click>=8.1.8' (excluded)
# Skipping 'httpx>=0.28.1' (no new version available)
# Skipping 'tomlkit>=0.13.3' (no new version available)
# Updating dependencies in 'dependency-groups' group
# Skipping 'python-semantic-release~=10.4.1' (no new version available)
# Skipping 'poethepoet>=0.37.0' (no new version available)
# Skipping 'pyupgrade>=3.21.0' (no new version available)
# Skipping 'ruff>=0.14.0' (no new version available)
# Skipping 'commitizen>=4.9.1' (no new version available)
# Skipping 'mypy>=1.18.2' (no new version available)
# Skipping 'ruff>=0.14.0' (no new version available)
# Skipping 'coverage[toml]>=7.10.7' (no new version available)
# Excluding dependency 'pytest'
# Skipping 'pytest==7.4.4' (no new version available)
# Skipping 'pytest-cov>=7.0.0' (no new version available)
# Skipping 'pytest-lazy-fixture>=0.6.3' (no new version available)
# Skipping 'pytest-mock>=3.15.1' (no new version available)
# Skipping 'pytest-sugar>=1.1.1' (no new version available)
# Skipping 'sh>=2.2.2' (no new version available)
# Skipping 'xdoctest>=1.3.0' (no new version available)
```
Raw data
{
"_id": null,
"home_page": null,
"name": "uv-plugin-up",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": "Volodymyr Pivoshenko <volodymyr.pivoshenko@gmail.com>",
"keywords": "cross-platform, dependencies, dependencies-management, dependencies-update, dependencies-upgrade, dependency, hacktoberfest, packaging, packaging-management, packaging-update, packaging-upgrade, plugin, plugins, pypi, python, uv, uv-plugin, uv-plugins",
"author": null,
"author_email": "Volodymyr Pivoshenko <volodymyr.pivoshenko@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/7f/f0/125040e3023a6ec955b102027a5e8f73c98416358de7cca87162ecb1366a/uv_plugin_up-1.1.2.tar.gz",
"platform": null,
"description": "<div align=\"center\">\n <img alt=\"logo\" src=\"https://github.com/pivoshenko/uv-plugin-up/blob/main/assets/logo.svg?raw=True\" height=200>\n</div>\n\n<br>\n\n<p align=\"center\">\n <a href=\"https://opensource.org/licenses/MIT\">\n <img alt=\"License\" src=\"https://img.shields.io/pypi/l/uv-plugin-up?style=flat-square&logo=opensourceinitiative&logoColor=white&color=0A6847&label=License\">\n </a>\n <a href=\"https://pypi.org/project/uv-plugin-up\">\n <img alt=\"Python\" src=\"https://img.shields.io/pypi/pyversions/uv-plugin-up?style=flat-square&logo=python&logoColor=white&color=4856CD&label=Python\">\n </a>\n <a href=\"https://pypi.org/project/uv-plugin-up\">\n <img alt=\"PyPI\" src=\"https://img.shields.io/pypi/v/uv-plugin-up?style=flat-square&logo=pypi&logoColor=white&color=4856CD&label=PyPI\">\n </a>\n <a href=\"https://github.com/pivoshenko/uv-plugin-up/releases\">\n <img alt=\"Release\" src=\"https://img.shields.io/github/v/release/pivoshenko/uv-plugin-up?style=flat-square&logo=github&logoColor=white&color=4856CD&label=Release\">\n </a>\n</p>\n\n<p align=\"center\">\n <a href=\"https://semantic-release.gitbook.io\">\n <img alt=\"Semantic_Release\" src=\"https://img.shields.io/badge/Semantic_Release-angular-e10079?style=flat-square&logo=semanticrelease&logoColor=white&color=D83A56\">\n </a>\n <a href=\"https://pycqa.github.io/isort\">\n <img alt=\"Imports\" src=\"https://img.shields.io/badge/Imports-isort-black.svg?style=flat-square&logo=improvmx&logoColor=white&color=637A9F&\">\n </a>\n <a href=\"https://docs.astral.sh/ruff\">\n <img alt=\"Ruff\" src=\"https://img.shields.io/badge/Style-ruff-black.svg?style=flat-square&logo=ruff&logoColor=white&color=D7FF64\">\n </a>\n <a href=\"https://mypy.readthedocs.io/en/stable/index.html\">\n <img alt=\"mypy\" src=\"https://img.shields.io/badge/mypy-checked-success.svg?style=flat-square&logo=pypy&logoColor=white&color=0A6847\">\n </a>\n</p>\n\n<p align=\"center\">\n <a href=\"https://github.com/pivoshenko/uv-plugin-up/actions/workflows/tests.yaml\">\n <img alt=\"Tests\" src=\"https://img.shields.io/github/actions/workflow/status/pivoshenko/uv-plugin-up/tests.yaml?label=Tests&style=flat-square&logo=pytest&logoColor=white&color=0A6847\">\n </a>\n <a href=\"https://github.com/pivoshenko/uv-plugin-up/actions/workflows/linters.yaml\">\n <img alt=\"Linters\" src=\"https://img.shields.io/github/actions/workflow/status/pivoshenko/uv-plugin-up/linters.yaml?label=Linters&style=flat-square&logo=lintcode&logoColor=white&color=0A6847\">\n </a>\n <a href=\"https://github.com/pivoshenko/uv-plugin-up/actions/workflows/release.yaml\">\n <img alt=\"Release\" src=\"https://img.shields.io/github/actions/workflow/status/pivoshenko/uv-plugin-up/release.yaml?label=Release&style=flat-square&logo=pypi&logoColor=white&color=0A6847\">\n </a>\n <a href=\"https://codecov.io/gh/pivoshenko/uv-plugin-up\" >\n <img alt=\"Codecov\" src=\"https://img.shields.io/codecov/c/gh/pivoshenko/uv-plugin-up?token=cqRQxVnDR6&style=flat-square&logo=codecov&logoColor=white&color=0A6847&label=Coverage\"/>\n </a>\n</p>\n\n<p align=\"center\">\n <a href=\"https://pypi.org/project/uv-plugin-up\">\n <img alt=\"Downloads\" src=\"https://img.shields.io/pypi/dm/uv-plugin-up?style=flat-square&logo=pythonanywhere&logoColor=white&color=4856CD&label=Downloads\">\n </a>\n <a href=\"https://github.com/pivoshenko/uv-plugin-up\">\n <img alt=\"Stars\" src=\"https://img.shields.io/github/stars/pivoshenko/uv-plugin-up?style=flat-square&logo=apachespark&logoColor=white&color=4856CD&label=Stars\">\n </a>\n</p>\n\n<p align=\"center\">\n <a href=\"https://stand-with-ukraine.pp.ua\">\n <img alt=\"StandWithUkraine\" src=\"https://img.shields.io/badge/Support-Ukraine-FFC93C?style=flat-square&labelColor=07689F\">\n </a>\n</p>\n\n## Overview\n\n`uv-plugin-up` - is a plugin for automated dependency updates and version bumping in `pyproject.toml` files.\n\n### Features\n\n- Fully type-safe\n- Automatically updates dependencies to their latest versions from PyPI\n- Multiple dependency groups support - handles `project.dependencies`, `project.optional-dependencies`, and `dependency-groups`\n- Selective updates - exclude specific packages from being updated\n- Dry-run mode - preview changes without modifying files\n- Safe updates - automatically runs `uv lock` after updates and rolls back on failure\n\n## Installation\n\n```bash\nuv add --dev uv-plugin-up\n# or\nuv add uv-plugin-up --group dev\n```\n\n## Usage and Configuration\n\nBy default, the plugin updates all dependencies in the `pyproject.toml`:\n\n```bash\nuv-plugin-up\n```\n\n### Command-line Options\n\n#### `filepath`\n\n**Type**: `Path`\n\n**Default**: `./pyproject.toml`\n\n**Short flag**: `-f`\n\nSpecifies the path to the `pyproject.toml` file. If your project file is located elsewhere or has a different name, you can set this parameter.\n\n#### `exclude`\n\n**Type**: `str`\n\n**Default**: `()`\n\n**Multiple values**: `allowed`\n\nSpecifies packages to exclude from updating. You can provide multiple package names to prevent them from being updated.\n\n#### `dry-run`\n\n**Type**: `bool`\n\n**Default**: `false`\n\nEnables preview mode where changes are displayed without modifying the `pyproject.toml` file. This is useful for reviewing what would be updated before applying changes.\n\n## Examples\n\n```bash\nuv-plugin-up --exclude click\n\n# Updating dependencies in 'project' group\n# Skipping 'click>=8.1.8' (excluded)\n# Skipping 'httpx>=0.28.1' (no new version available)\n# Skipping 'tomlkit>=0.13.3' (no new version available)\n# Updating dependencies in 'dependency-groups' group\n# Skipping 'python-semantic-release~=10.4.1' (no new version available)\n# Skipping 'poethepoet>=0.37.0' (no new version available)\n# Skipping 'pyupgrade>=3.21.0' (no new version available)\n# Skipping 'ruff>=0.14.0' (no new version available)\n# Skipping 'commitizen>=4.9.1' (no new version available)\n# Skipping 'mypy>=1.18.2' (no new version available)\n# Skipping 'ruff>=0.14.0' (no new version available)\n# Skipping 'coverage[toml]>=7.10.7' (no new version available)\n# Excluding dependency 'pytest'\n# Skipping 'pytest==7.4.4' (no new version available)\n# Skipping 'pytest-cov>=7.0.0' (no new version available)\n# Skipping 'pytest-lazy-fixture>=0.6.3' (no new version available)\n# Skipping 'pytest-mock>=3.15.1' (no new version available)\n# Skipping 'pytest-sugar>=1.1.1' (no new version available)\n# Skipping 'sh>=2.2.2' (no new version available)\n# Skipping 'xdoctest>=1.3.0' (no new version available)\n```\n",
"bugtrack_url": null,
"license": null,
"summary": "uv-plugin-up - is a plugin for automated dependency updates and version bumping in pyproject.toml files.",
"version": "1.1.2",
"project_urls": {
"Homepage": "https://github.com/pivoshenko/uv-plugin-up",
"Repository": "https://github.com/pivoshenko/uv-plugin-up"
},
"split_keywords": [
"cross-platform",
" dependencies",
" dependencies-management",
" dependencies-update",
" dependencies-upgrade",
" dependency",
" hacktoberfest",
" packaging",
" packaging-management",
" packaging-update",
" packaging-upgrade",
" plugin",
" plugins",
" pypi",
" python",
" uv",
" uv-plugin",
" uv-plugins"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "51fe0f28d6ba4cb548de09c51ca46ca681892d6cbb442b6020e5a957c125ed00",
"md5": "9b41eb6aad8736c6375910e9a0dccb32",
"sha256": "bcbdfc54d8e968579c24ecbfb410592ef33c5f732c8d67dc3f601adce4fe14dc"
},
"downloads": -1,
"filename": "uv_plugin_up-1.1.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "9b41eb6aad8736c6375910e9a0dccb32",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 10138,
"upload_time": "2025-10-11T18:08:59",
"upload_time_iso_8601": "2025-10-11T18:08:59.527054Z",
"url": "https://files.pythonhosted.org/packages/51/fe/0f28d6ba4cb548de09c51ca46ca681892d6cbb442b6020e5a957c125ed00/uv_plugin_up-1.1.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "7ff0125040e3023a6ec955b102027a5e8f73c98416358de7cca87162ecb1366a",
"md5": "84a004088956e22c114f16f071355825",
"sha256": "3c87845fcea5472aa3fbf399020566372c79f6465fdb9f49e08f875d1ec8feac"
},
"downloads": -1,
"filename": "uv_plugin_up-1.1.2.tar.gz",
"has_sig": false,
"md5_digest": "84a004088956e22c114f16f071355825",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 91594,
"upload_time": "2025-10-11T18:09:00",
"upload_time_iso_8601": "2025-10-11T18:09:00.280097Z",
"url": "https://files.pythonhosted.org/packages/7f/f0/125040e3023a6ec955b102027a5e8f73c98416358de7cca87162ecb1366a/uv_plugin_up-1.1.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-10-11 18:09:00",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "pivoshenko",
"github_project": "uv-plugin-up",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "uv-plugin-up"
}