upd
A fast dependency updater for Python and Node.js projects, written in Rust.
Features
- Multi-format support: Updates
requirements.txt,pyproject.toml, andpackage.json - Constraint-aware: Respects version constraints (e.g.,
>=2.0,<3won't update to v3.x) - Major version warnings: Highlights breaking changes with
(MAJOR)indicator - Format-preserving: Keeps your file formatting, comments, and structure intact
- Pre-release filtering: Excludes alpha, beta, and release candidate versions
- Gitignore-aware: Respects
.gitignorepatterns when discovering files - Fast: Async HTTP requests with caching for quick subsequent runs
Installation
From PyPI
# or with uv
From crates.io
From source
Usage
# Update all dependency files in current directory
# Update specific files or directories
# Dry-run mode (preview changes without writing)
# Verbose output
# Disable colored output
# Disable caching
Commands
# Show version
# Check for upd updates
# Clear version cache
Supported Files
Python
requirements.txt,requirements-dev.txt,requirements-*.txtrequirements.in,requirements-dev.in,requirements-*.indev-requirements.txt,*-requirements.txt,*_requirements.txtpyproject.toml([project.dependencies]and[project.optional-dependencies])
Node.js
package.json(dependenciesanddevDependencies)
Example Output
pyproject.toml
Would update requests 2.28.0 → 2.31.0
Would update flask 2.2.0 → 3.0.0 (MAJOR)
requirements.txt
Would update pytest 7.2.0 → 7.4.3
Would update black 23.1.0 → 23.12.1
Would update 4 package(s) (1 major, 2 minor, 1 patch) 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) |
~2.0.0 |
Updates within 2.0.x range (npm) |
>=2.0 |
Updates to any version >= 2.0 |
==2.0.0 |
No updates (pinned) |
Development
# Build
# Run tests
# Lint
# Format
# All checks
License
MIT