Skip to main content

Multi-language dependency wizard - check, audit, and update dependencies across Python, Rust, Dart, and JavaScript ecosystems

Project description

depswiz

Dependency Wizard - A multi-language dependency management CLI tool for modern development workflows.

PyPI version Python 3.13+ License: MIT CI Documentation

Features

  • Multi-Language Support: Python, Rust, Dart/Flutter, JavaScript/TypeScript
  • Vulnerability Scanning: Integrated with OSV, GitHub Advisories, RustSec
  • License Compliance: SPDX-based license checking with configurable policies
  • SBOM Generation: CycloneDX 1.6 and SPDX 3.0 formats
  • Monorepo Support: Auto-detect workspaces across all ecosystems
  • Development Tools Checking: Check if Node, Python, Rust, Dart, Flutter, uv, etc. are up to date
  • AI-Powered Suggestions: Claude Code integration for intelligent upgrade strategies
  • Beautiful CLI: Rich output with tables, progress bars, and colors
  • Plugin Architecture: Extensible via Python entry points

Installation

# Using pip
pip install depswiz

# Using uv (recommended)
uv add depswiz

# From source
git clone https://github.com/moinsen-dev/depswiz.git
cd depswiz
pip install -e .

Quick Start

# Check for outdated dependencies
depswiz check

# Scan for vulnerabilities
depswiz audit

# Check license compliance
depswiz licenses

# Generate SBOM
depswiz sbom -o sbom.json

# Update dependencies interactively
depswiz update

# Check development tools for updates
depswiz tools

# Get AI-powered upgrade suggestions (requires Claude Code)
depswiz suggest

Commands

depswiz check

Check dependencies for available updates.

depswiz check                      # Check current directory
depswiz check --workspace          # Check all workspace members
depswiz check -l python -l rust    # Check only Python and Rust
depswiz check --format json        # Output as JSON
depswiz check --fail-outdated      # Exit 1 if outdated packages found

depswiz audit

Scan dependencies for known vulnerabilities.

depswiz audit                      # Audit current directory
depswiz audit --severity high      # Only show high+ severity
depswiz audit --fail-on critical   # Fail on critical vulnerabilities
depswiz audit --ignore CVE-2024-XXX  # Ignore specific vulnerability

depswiz licenses

Check license compliance.

depswiz licenses                   # List all licenses
depswiz licenses --summary         # License distribution only
depswiz licenses --deny GPL-3.0    # Fail on GPL-3.0 licensed packages

depswiz sbom

Generate Software Bill of Materials.

depswiz sbom -o sbom.json          # CycloneDX format (default)
depswiz sbom --format spdx -o sbom.spdx.json
depswiz sbom --include-transitive  # Include transitive dependencies

depswiz update

Update dependencies interactively.

depswiz update                     # Interactive update
depswiz update --dry-run           # Preview changes
depswiz update --strategy patch    # Only patch updates
depswiz update -y                  # Auto-confirm

depswiz tools

Check development tools for updates.

depswiz tools                      # Auto-detect and check relevant tools
depswiz tools --all                # Check all 15 supported tools
depswiz tools -t node -t python    # Check specific tools
depswiz tools --updates-only       # Only show tools with updates
depswiz tools --format json        # JSON output for CI
depswiz tools --upgrade            # Use Claude Code to upgrade tools

Supported Tools: Node.js, npm, pnpm, Yarn, Bun, Deno, Python, uv, pip, Rust, Cargo, Dart, Flutter, Go, Docker

depswiz suggest

Get AI-powered upgrade suggestions using Claude Code.

depswiz suggest                    # Full upgrade strategy
depswiz suggest --focus security   # Focus on security vulnerabilities
depswiz suggest --focus quick      # Quick health summary
depswiz suggest --focus toolchain  # Analyze development tools

Note: Requires Claude Code CLI to be installed.

Configuration

Create a depswiz.toml in your project root:

[depswiz]
default_format = "cli"

[languages]
enabled = ["python", "rust", "dart", "javascript"]

[check]
recursive = false
workspace = true
strategy = "all"
warn_breaking = true

[audit]
severity_threshold = "low"
fail_on = "high"
sources = ["osv"]

[licenses]
policy_mode = "allow"
allowed = ["MIT", "Apache-2.0", "BSD-3-Clause", "ISC"]
denied = ["GPL-3.0", "AGPL-3.0"]
warn_copyleft = true

[sbom]
format = "cyclonedx"
include_transitive = true

Or add to your pyproject.toml:

[tool.depswiz]
default_format = "cli"

[tool.depswiz.audit]
fail_on = "high"

Supported Languages

Language Manifest Lockfile Registry
Python pyproject.toml, requirements.txt uv.lock, poetry.lock PyPI
Rust Cargo.toml Cargo.lock crates.io
Dart/Flutter pubspec.yaml pubspec.lock pub.dev
JavaScript/TypeScript package.json package-lock.json, yarn.lock npm

Output Formats

  • cli (default): Rich terminal output with colors and tables
  • json: Machine-readable JSON
  • markdown: GitHub-compatible markdown
  • html: Self-contained HTML report
  • cyclonedx: CycloneDX 1.6 SBOM
  • spdx: SPDX 3.0 SBOM

Plugin Development

Create a new language plugin by implementing LanguagePlugin:

from depswiz.plugins.base import LanguagePlugin

class MyPlugin(LanguagePlugin):
    @property
    def name(self) -> str:
        return "mylang"

    @property
    def manifest_patterns(self) -> list[str]:
        return ["myproject.toml"]

    # ... implement other required methods

Register via pyproject.toml:

[project.entry-points."depswiz.languages"]
mylang = "my_package:MyPlugin"

CI/CD Integration

GitHub Actions

- name: Security Audit
  run: depswiz audit --fail-on high

- name: License Check
  run: depswiz licenses --fail-on-unknown

- name: Generate SBOM
  run: depswiz sbom -o sbom.json

Exit Codes

  • 0: Success
  • 1: Vulnerabilities or violations found (when using --fail-* options)

Development

# Clone and install
git clone https://github.com/moinsen-dev/depswiz.git
cd depswiz
pip install -e ".[dev]"

# Run tests
pytest

# Type checking
mypy src/depswiz

# Linting
ruff check src/depswiz

Contributing

Contributions are welcome! Please read our Contributing Guide for details.

License

MIT License - see LICENSE for details.

Acknowledgments

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

depswiz-0.2.0.tar.gz (140.9 kB view details)

Uploaded Source

Built Distribution

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

depswiz-0.2.0-py3-none-any.whl (81.2 kB view details)

Uploaded Python 3

File details

Details for the file depswiz-0.2.0.tar.gz.

File metadata

  • Download URL: depswiz-0.2.0.tar.gz
  • Upload date:
  • Size: 140.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for depswiz-0.2.0.tar.gz
Algorithm Hash digest
SHA256 fe956498b014eb2c9b89593ebd4284cc2b73b19a904110630276ec032c67c7d6
MD5 813e8bffc2785dc98d184028a7ae9cb2
BLAKE2b-256 bcd1a75041959c4b32f17c9c5ffa34ebe4caf09d42f8869196b29de7d15473a6

See more details on using hashes here.

File details

Details for the file depswiz-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: depswiz-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 81.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for depswiz-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 fed34a62548da3157c9b56e7e758b3ae91a78813e186ff4a5a3af4179f9f1b46
MD5 e3bef27b863906b692443f6aa2ec354f
BLAKE2b-256 455f1fdd95041a3ebbdf673d0016a2f56b48a530028acd7f065762ae8499536a

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