Skip to main content

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.

Quick Start

# Run without installing (using uv)
uvx upd-cli

# Or with pipx
pipx run upd-cli

# Preview changes without modifying files
uvx upd-cli -n

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 --patch updates
  • 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 .gitignore when discovering files

Installation

From crates.io

cargo install upd

# or with cargo-binstall (faster, pre-built binary)
cargo binstall 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

# Filter by language/ecosystem
upd --lang python           # Update only Python dependencies
upd -l rust                 # Short form
upd --lang python --lang go # Update Python and Go only

# Version precision
upd --full-precision  # Output full versions (e.g., 3.1.5 instead of 3.1)

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-*.txt
  • requirements.in, requirements-dev.in, requirements-*.in
  • dev-requirements.txt, *-requirements.txt, *_requirements.txt
  • pyproject.toml (PEP 621 and Poetry formats)

Node.js

  • package.json (dependencies and devDependencies)

Rust

  • Cargo.toml ([dependencies], [dev-dependencies], [build-dependencies])

Go

  • go.mod (require blocks)

Example Output

pyproject.toml:12: Would update requests 2.28.0 → 2.31.0
pyproject.toml:13: Would update flask 2.2.0 → 3.0.0 (MAJOR)
Cargo.toml:8: Would update serde 1.0.180 → 1.0.200
Cargo.toml:9: Would update tokio 1.28.0 → 1.35.0

Would update 4 package(s) in 2 file(s), 15 up to date

Output includes clickable file:line: locations (recognized by VS Code, iTerm2, and modern terminals).

Version Precision

By default, upd preserves version precision from the original file:

# Original file has 2-component versions
flask>=2.0        →  flask>=3.1        (not 3.1.5)
django>=4         →  django>=6         (not 6.0.0)

# Original file has 3-component versions
requests>=2.0.0   →  requests>=2.32.5

Use --full-precision to always output full semver versions:

upd --full-precision
flask>=2.0        →  flask>=3.1.5
django>=4         →  django>=6.0.0
requests>=2.0.0   →  requests>=2.32.5

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

upd_cli-0.0.6.tar.gz (58.2 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

upd_cli-0.0.6-py3-none-win_amd64.whl (2.8 MB view details)

Uploaded Python 3Windows x86-64

upd_cli-0.0.6-py3-none-musllinux_1_2_x86_64.whl (2.8 MB view details)

Uploaded Python 3musllinux: musl 1.2+ x86-64

upd_cli-0.0.6-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.8 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

upd_cli-0.0.6-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.6 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

upd_cli-0.0.6-py3-none-macosx_11_0_arm64.whl (2.5 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

upd_cli-0.0.6-py3-none-macosx_10_12_x86_64.whl (2.7 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

Details for the file upd_cli-0.0.6.tar.gz.

File metadata

  • Download URL: upd_cli-0.0.6.tar.gz
  • Upload date:
  • Size: 58.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for upd_cli-0.0.6.tar.gz
Algorithm Hash digest
SHA256 f50c5bbb83668f1d3af9c8475cae26cfed3144c442f5a41b8aee0278b4c40bfa
MD5 1decf4ebbe288d09f14af362b8fe020b
BLAKE2b-256 fc7711841e5d25848bd344542338e926694af7e811ff932f0f1ed57784e4aa78

See more details on using hashes here.

File details

Details for the file upd_cli-0.0.6-py3-none-win_amd64.whl.

File metadata

  • Download URL: upd_cli-0.0.6-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

Hashes for upd_cli-0.0.6-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 d2f515fa96b4be8646c0a5a8447c894adf40229e0d2329dc5216ef004903241c
MD5 d21a3a5d014d03bf250cad28dbcf49e0
BLAKE2b-256 2471e08c190a413d71ffcbcacd9b8c55d9359da10f96e66359c2fecd612052b0

See more details on using hashes here.

File details

Details for the file upd_cli-0.0.6-py3-none-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for upd_cli-0.0.6-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3b47037fb1dd288ca86966e9c4223998299b00739516bf5c824596ce3626bfee
MD5 ef33f24e409f1bba8d7f6bb71abcedad
BLAKE2b-256 557d51eb32f81a8f3e7528eb595fc40d2030c83252bff4d15cb3ac1f264d9e02

See more details on using hashes here.

File details

Details for the file upd_cli-0.0.6-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for upd_cli-0.0.6-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 11a703d126959c4f4d91284b380e10b3aa38c23b4a6bf4e2828d7c15e4080b1a
MD5 ea77dcf9340cd6569fac94bb6cff2d5d
BLAKE2b-256 2d6d4d1ff2def60ff7db2cf75075ed9fe88e0d441bbf189f07a1c2d9dca6ee87

See more details on using hashes here.

File details

Details for the file upd_cli-0.0.6-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for upd_cli-0.0.6-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 43b94664f2125145b3a37be410cca3b3b638340809a394c92c9bd1d3c6c3b671
MD5 38d5898f52b4b09f76dbe02b4cd159a4
BLAKE2b-256 87bd7ac47fe2a860753758c0ac4d56ab72ede29da2db736692fa4b1fdc81d18d

See more details on using hashes here.

File details

Details for the file upd_cli-0.0.6-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for upd_cli-0.0.6-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f77f02fc4a8b6eeb4ab132300ac2adf1a81b25907e62bde62bd44c3708f3df88
MD5 8220e874877dc9dfca34f60f138806f0
BLAKE2b-256 d113fe38256b132081f3e7d11337d1b4478179b3e2f7f3da3f42f8fe78531c3b

See more details on using hashes here.

File details

Details for the file upd_cli-0.0.6-py3-none-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for upd_cli-0.0.6-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 ae0917f0984f3d7f0b58538874f8b7ba9505e91f854821e21c8ae89dce9003e2
MD5 48ac9551f0f1d9259a4df2fa59a96a96
BLAKE2b-256 d3b96666a3805612eed9a3ce72d8981b393b35b5147ab39fe1db09e48a6499f5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page