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.

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

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

# 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
  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 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.5.tar.gz (56.9 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.5-py3-none-win_amd64.whl (2.8 MB view details)

Uploaded Python 3Windows x86-64

upd_cli-0.0.5-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.5-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.5-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.5-py3-none-macosx_11_0_arm64.whl (2.5 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

upd_cli-0.0.5-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.5.tar.gz.

File metadata

  • Download URL: upd_cli-0.0.5.tar.gz
  • Upload date:
  • Size: 56.9 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.5.tar.gz
Algorithm Hash digest
SHA256 98af4ce17600f3a8253c84ed03f40949ca1a8ddf168cd0335d6da19072ba03b3
MD5 575f7cb6086bed290657e3385639e4eb
BLAKE2b-256 90eda64cdd85819896c1ae2a8f8ec696a8fd05b7e33069112ca40cdb15d4b137

See more details on using hashes here.

File details

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

File metadata

  • Download URL: upd_cli-0.0.5-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.5-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 5ae63626338c23cf1aaf47eff9549746ec4a970e363fe9f02737ec1464dcb652
MD5 bc860c8a02aa16797441fbdd8465a5f1
BLAKE2b-256 4e6bd9a60a5150cf6aa29d0b4a074c12b41ceacc683899c849c2c7095eb56c2c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for upd_cli-0.0.5-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a5689a494a5ec88b391f15e4eab23dfcd82a16a89b0429cb41eec6de9d4e6a96
MD5 b9d0ed1de50de3b847b107ac57137092
BLAKE2b-256 6ed1a884d2824f0e42cc5c1f5cf2f0a38ce0de98bcfe84eac1ddb32a91d9c376

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for upd_cli-0.0.5-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f13e38d7d7f1317421d2251785c6808ae1b4e593c89f8cc21875a9ba57cabcc2
MD5 8cafd873992bddc4cfb4be346719bb3c
BLAKE2b-256 f02e8cf80ca8ae76127f0a051d6e2e3fb4e3f26152aeeda4c596013d79033096

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for upd_cli-0.0.5-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d894a78c93fde60258959c1bc07b927763be30b1f3ac72bc45e0ef7de26a8d6f
MD5 ebec1c74b9dd295b1f176dd038662336
BLAKE2b-256 65664f1f058ec741f47fe0425e755024904225b92b5daee0e2121054d2702669

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for upd_cli-0.0.5-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 445270524d490d362ccab52a421fec26afd9e10b17806e4dbb989f5164c0b4fd
MD5 b5c8f7653ae8db8bc52794dddb7b4ee2
BLAKE2b-256 59dd6c4fb67af49011d604c50b1de64cdc5d0a0fc8fc9dac052b58852d5f55cb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for upd_cli-0.0.5-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 4f89986d83f2a633b5a3ab39c1ab0e5e72c72229fc70e3c1736283927c9a5c61
MD5 b5b2f02875242a76cfb49c08f4f7da68
BLAKE2b-256 0faff2f6a67146a9c159a623a3ae85eb94041449107abb339f89687d514736f6

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