Skip to main content

A universal dependency resolver supporting multiple package ecosystems

Reason this release was yanked:

Critical bug & wrong release

Project description

Universal Dependency Resolver

Resolve dependencies across PyPI (pip), npm, Cargo, Go, and more — detect conflicts, check system compatibility, and export to any format.

udr resolve numpy@pypi torch@pypi
  → numpy 1.26.2, torch 2.1.2+cu121 (CUDA 12.1)

The Problem

Your project pulls in packages from everywhere — Python scripts call Node services, Docker images need both pip and apt packages, and your CI pipeline has to pin every transitive dependency across all of them.

Existing tools only work within one ecosystem. pip-compile handles Python. npm ls handles JavaScript. But cross-ecosystem conflicts go undetected until something breaks at runtime. And system compatibility — GPU drivers, CUDA versions, OS patches — is never checked at all.

This tool fixes that.

Quick Start

pip install ud-resolver

Install with extras for additional features:

pip install "ud-resolver[system]"       # GPU & system scanning
pip install "ud-resolver[monitoring]"   # OpenTelemetry & Sentry
pip install "ud-resolver[security]"     # Auth & JWT support
pip install "ud-resolver[postgres]"     # PostgreSQL + Redis + Celery
pip install "ud-resolver[all]"          # Everything

CLI Usage

# Start the API server
udr serve --port 8000

# Check system compatibility
udr check

# Resolve dependencies
udr resolve numpy pandas scikit-learn

# Resolve from other ecosystems
udr resolve react vue -e npm
udr resolve serde tokio -e crates

# Show system info
udr info

# Auto-detect manifests in project dir and lock all deps
udr lock

# Lock with explicit manifest
udr lock --manifest requirements.txt --manifest package.json

# Dry-run lock (no files written)
udr lock --dry-run

# Resolve with JSON output
udr resolve torch torchvision --format json

Python Library Usage

import asyncio
from backend.core.data_aggregator import DataAggregator
from backend.core.conflict_resolver import ConflictResolver
from backend.core.system_scanner import SystemScanner
from backend.manifest_detector import ManifestDetector

async def main():
    scanner = SystemScanner()
    system_info = await scanner.scan_all()
    print(system_info["platform"]["system"], system_info["cpu"]["brand"])

    aggregator = DataAggregator()
    data = await aggregator.get_package_info("torch", ecosystem="pypi",
                                              include_dependencies=True,
                                              include_versions=True)
    print(data["name"], data["versions"])

    detector = ManifestDetector("./my-project")
    manifests = detector.detect()
    packages = detector.normalize(detector.parse_all(manifests))
    print(f"{len(packages)} packages found")

asyncio.run(main())

Features

Feature What it does
Multi-ecosystem PyPI (pip), npm, Cargo, Go, Conda, Maven, NuGet, RubyGems, Linux packages, Homebrew
GPU-aware resolution Scans CUDA, cuDNN, GPU memory — resolves CUDA variants automatically
System scan Detects OS, CPU, GPU, Python, Node.js, GCC, Java
12 export formats Dockerfile, requirements.txt, package.json, docker-compose.yml, install.sh, install.bat, CMakeLists.txt, pyproject.toml, environment.yml, Cargo.toml, build.gradle, pom.xml
CI/CD ready CLI for pipelines, health check endpoint, structured logging

API Quick Reference

Endpoint Method Purpose
/api/v1/ GET API metadata
/api/v1/health GET Health check
/api/v1/packages/search GET Search across ecosystems
/api/v1/packages/ecosystems GET List supported ecosystems
/api/v1/packages/{ecosystem}/{name} GET Get package info
/api/v1/packages/{ecosystem}/{name}/details GET Rich package details with metrics
/api/v1/packages/{ecosystem}/{name}/versions GET List versions
/api/v1/packages/{ecosystem}/{name}/dependencies GET Get dependencies
/api/v1/packages/{ecosystem}/{name}/compatibility GET Compatibility info
/api/v1/packages/{ecosystem}/{name}/compatibility/report POST Submit compatibility report
/api/v1/packages/compare GET Compare packages
/api/v1/packages/resolve POST Resolve dependencies
/api/v1/packages/export POST Export to any format
/api/v1/packages/export-formats GET Available export formats
/api/v1/system/info GET System information
/api/v1/system/check-compatibility POST Check dependency-system fit
/api/v1/system/gpu/info GET GPU details
/api/v1/system/runtime/{runtime} GET Runtime version info
/api/v1/system/analyze-environment POST Analyze manifest file
/api/v1/system/benchmarks GET Run system benchmarks
/api/v1/scan/github POST Scan a GitHub repo
/api/v1/scan/upload POST Scan an uploaded archive
/api/v1/scan/local POST Scan a local directory
/api/v1/auth/* * Register, login, profile, API keys

How It Works

Your request → Fetch metadata from ecosystem registries
                   ↓
            Scan target system (OS, GPU, Python, CUDA)
                   ↓
            Resolve conflicts with SAT solver
                   ↓
            Export to 12 formats

The system runs as a FastAPI service with optional PostgreSQL and Redis.

Also available

This package is the backend component. The project also ships:

  • Web UI — a browser-based GUI (Vue.js), available as a Docker image or bundled in the desktop app
  • Desktop app — standalone cross-platform application (Windows, macOS, Linux) with backend + frontend bundled, no Python or Node.js required

See the full documentation for details.

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

ud_resolver-1.1.18.tar.gz (181.9 kB view details)

Uploaded Source

Built Distribution

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

ud_resolver-1.1.18-py3-none-any.whl (202.6 kB view details)

Uploaded Python 3

File details

Details for the file ud_resolver-1.1.18.tar.gz.

File metadata

  • Download URL: ud_resolver-1.1.18.tar.gz
  • Upload date:
  • Size: 181.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ud_resolver-1.1.18.tar.gz
Algorithm Hash digest
SHA256 7c84d9ac50a91c7cfb8e3e6971f2a213c2a32c3abfe60d5814ece1fd6c4120ba
MD5 93bceadf08167f78b769d99fadea2e3a
BLAKE2b-256 4514f8a876ff07c2b7d6badfaa534b03dcabfd98cea6b8a903646cad7c8e93cd

See more details on using hashes here.

Provenance

The following attestation bundles were made for ud_resolver-1.1.18.tar.gz:

Publisher: publish.yml on code-with-zeeshan/universal-dependency-resolver

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ud_resolver-1.1.18-py3-none-any.whl.

File metadata

  • Download URL: ud_resolver-1.1.18-py3-none-any.whl
  • Upload date:
  • Size: 202.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ud_resolver-1.1.18-py3-none-any.whl
Algorithm Hash digest
SHA256 5a52fa37e86a84679515a24863a245e5139b05724c99ef2d5cd4905f2cd7985b
MD5 0b14224a5c9aa8770467d9c6b65b2907
BLAKE2b-256 e84f254002bcf19b83d16a0944ee88c4d44ee1ad663f4d6de1bf180ef35b22bc

See more details on using hashes here.

Provenance

The following attestation bundles were made for ud_resolver-1.1.18-py3-none-any.whl:

Publisher: publish.yml on code-with-zeeshan/universal-dependency-resolver

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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