A fast dependency updater for Python and Node.js projects
Project description
upd
A fast dependency updater for Python, Node.js, Rust, and Go projects, written in Rust.
Features
- Multi-ecosystem: Python, Node.js, Rust, and Go dependencies
- Fast: Parallel registry requests for all dependencies
- Constraint-aware: Respects version constraints like
>=2.0,<3 - Smart caching: 24-hour version cache for faster subsequent runs
- Update filters: Filter by
--major,--minor, or--patchupdates - Major warnings: Highlights breaking changes with
(MAJOR) - Format-preserving: Keeps formatting, comments, and structure
- Pre-release aware: Updates pre-releases to newer pre-releases
- Gitignore-aware: Respects
.gitignorewhen discovering files
Installation
From crates.io
cargo install upd
From PyPI
pip install upd-cli
# or with uv
uv pip install upd-cli
From source
git clone https://github.com/rvben/upd
cd upd
cargo install --path .
Usage
# Update all dependency files in current directory
upd
# Update specific files or directories
upd requirements.txt pyproject.toml
# Dry-run mode (preview changes without writing)
upd -n
upd --dry-run
# Verbose output
upd -v
upd --verbose
# Disable colored output
upd --no-color
# Disable caching (force fresh lookups)
upd --no-cache
# Filter by update type
upd --major # Show only major (breaking) updates
upd --minor # Show only minor updates
upd --patch # Show only patch updates
# Combine filters
upd --major --minor # Show major and minor updates only
Commands
# Show version
upd version
# Check for upd updates
upd self-update
# Clear version cache
upd clean-cache
Supported Files
Python
requirements.txt,requirements-dev.txt,requirements-*.txtrequirements.in,requirements-dev.in,requirements-*.indev-requirements.txt,*-requirements.txt,*_requirements.txtpyproject.toml(PEP 621 and Poetry formats)
Node.js
package.json(dependenciesanddevDependencies)
Rust
Cargo.toml([dependencies],[dev-dependencies],[build-dependencies])
Go
go.mod(requireblocks)
Example Output
pyproject.toml
Would update requests 2.28.0 → 2.31.0
Would update flask 2.2.0 → 3.0.0 (MAJOR)
Cargo.toml
Would update serde 1.0.180 → 1.0.200
Would update tokio 1.28.0 → 1.35.0
Would update 4 package(s) in 2 file(s), 15 up to date
Version Constraints
upd respects version constraints in your dependency files:
| Constraint | Behavior |
|---|---|
>=2.0,<3 |
Updates within 2.x range only |
^2.0.0 |
Updates within 2.x range (npm/Cargo) |
~2.0.0 |
Updates within 2.0.x range (npm) |
>=2.0 |
Updates to any version >= 2.0 |
==2.0.0 |
No updates (pinned) |
Caching
Version lookups are cached for 24 hours in:
- macOS:
~/Library/Caches/upd/versions.json - Linux:
~/.cache/upd/versions.json - Windows:
%LOCALAPPDATA%\upd\versions.json
Use upd clean-cache to clear the cache, or upd --no-cache to bypass it.
Environment Variables
| Variable | Description |
|---|---|
UV_INDEX_URL |
Custom PyPI index URL |
PIP_INDEX_URL |
Custom PyPI index URL (fallback) |
NPM_REGISTRY |
Custom npm registry URL |
GOPROXY |
Custom Go module proxy URL |
UPD_CACHE_DIR |
Custom cache directory |
Development
# Build
make build
# Run tests
make test
# Lint
make lint
# Format
make fmt
# All checks
make check
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file upd_cli-0.0.4.tar.gz.
File metadata
- Download URL: upd_cli-0.0.4.tar.gz
- Upload date:
- Size: 45.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f352fd09182c163a22feaae88addf5b3f423748ae6aeea5d5d1a9c7d80df9a06
|
|
| MD5 |
2b792cc7ae770aa52c6cf2b25a16dc5f
|
|
| BLAKE2b-256 |
4cc64b1a44c11d6d409443bf8559a5b20f99e3d3644e518f86087c7362cc304b
|
File details
Details for the file upd_cli-0.0.4-py3-none-win_amd64.whl.
File metadata
- Download URL: upd_cli-0.0.4-py3-none-win_amd64.whl
- Upload date:
- Size: 2.8 MB
- Tags: Python 3, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
200c6f01bbd7eb9fd23455790042490cefa035e44b284021d7518be968704519
|
|
| MD5 |
27ae5e7fb29dcb86fcb50964284a5433
|
|
| BLAKE2b-256 |
7e97af01361fc7bae37f65e5298c36c03b3a23e401443630a8a31fa13c7bb135
|
File details
Details for the file upd_cli-0.0.4-py3-none-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: upd_cli-0.0.4-py3-none-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 2.8 MB
- Tags: Python 3, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bacadaef5ae72da44520a861bae6ecc1d26fa010e629783cdc12dfca38f71a8e
|
|
| MD5 |
5c107fec24433377f02bb1f9ac037ee2
|
|
| BLAKE2b-256 |
bc2395cfc892081a2004f6e3439c79534b7898b6844d123ed3e1965cd964fef0
|
File details
Details for the file upd_cli-0.0.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: upd_cli-0.0.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 2.8 MB
- Tags: Python 3, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5341c311bc6c3363e090ae4b100c3620c3d907fb07fea4ddbc02bafdeb20d6b0
|
|
| MD5 |
fd602f548b514abec274dd06b343c4f6
|
|
| BLAKE2b-256 |
0397e660dbcbdfcb0d2b717c31f74e41e3320488670c8b2217e027bc99da75ea
|
File details
Details for the file upd_cli-0.0.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: upd_cli-0.0.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 2.6 MB
- Tags: Python 3, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
862595f15b00a59a5768c8ca4d78b0c52146c68db667a83d304f4d9b526a98af
|
|
| MD5 |
adc67b48e681de64729a55dc907d526c
|
|
| BLAKE2b-256 |
af3dc6dc7cd48c0bea164eeba505d2872f4acc401485610e12a9c170cd025e0c
|
File details
Details for the file upd_cli-0.0.4-py3-none-macosx_11_0_arm64.whl.
File metadata
- Download URL: upd_cli-0.0.4-py3-none-macosx_11_0_arm64.whl
- Upload date:
- Size: 2.5 MB
- Tags: Python 3, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ab6c55571c602a46595b78c44aee698125ccb7450469dd9bbabf602fb6190f02
|
|
| MD5 |
eec0da39003215bdd6eac167d7631ae1
|
|
| BLAKE2b-256 |
e866588f085e072a5e4355ec456ba76c36d5ea688c84c29a6537bd98ec5d8880
|
File details
Details for the file upd_cli-0.0.4-py3-none-macosx_10_12_x86_64.whl.
File metadata
- Download URL: upd_cli-0.0.4-py3-none-macosx_10_12_x86_64.whl
- Upload date:
- Size: 2.7 MB
- Tags: Python 3, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2d58505cf64244b11a64587ca435f6f44951757be5e8e42d1a2f7558f593c0a6
|
|
| MD5 |
9d8d16bc8985e0a1670505b7b5e834fd
|
|
| BLAKE2b-256 |
fa55c6b906f561ae5587a7ab9a5d8fcaa42e02c22fb3f8862ae1382c17372861
|