Metadata-Version: 2.4
Name: ud-resolver
Version: 1.2.4
Summary: A universal dependency resolver supporting multiple package ecosystems
Author-email: Universal Dependency Resolver Team <team@udr.example.com>
License: MIT
Project-URL: Homepage, https://github.com/code-with-zeeshan/universal-dependency-resolver
Project-URL: Repository, https://github.com/code-with-zeeshan/universal-dependency-resolver
Project-URL: Documentation, https://github.com/code-with-zeeshan/universal-dependency-resolver
Keywords: dependency,resolver,package-manager,compatibility
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Software Development :: Build Tools
Requires-Python: <4.0,>=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: fastapi<0.137,>=0.115.0
Requires-Dist: uvicorn<0.50,>=0.24
Requires-Dist: pydantic<3,>=2.5.0
Requires-Dist: aiohttp<4,>=3.9
Requires-Dist: beautifulsoup4<5,>=4.12
Requires-Dist: packaging<27,>=23.2
Requires-Dist: pyyaml<7,>=6.0.1
Requires-Dist: networkx<4,>=3.2.1
Requires-Dist: z3-solver<4.15.5,>=4.12
Requires-Dist: sqlalchemy<3,>=2.0.23
Requires-Dist: rich<14,>=13.7
Requires-Dist: slowapi<1,>=0.1.9
Requires-Dist: python-multipart<1,>=0.0.6
Requires-Dist: jinja2<4,>=3.1.2
Requires-Dist: structlog<25,>=24.1
Requires-Dist: prometheus-fastapi-instrumentator<7,>=6.1
Requires-Dist: python-jose[cryptography]<4,>=3.3
Requires-Dist: passlib[bcrypt]<2,>=1.7.4
Requires-Dist: bcrypt<5
Provides-Extra: system
Requires-Dist: psutil<6,>=5.9.6; extra == "system"
Requires-Dist: py-cpuinfo<10,>=9.0; extra == "system"
Requires-Dist: distro<2,>=1.8; extra == "system"
Requires-Dist: gputil<2,>=1.4; extra == "system"
Requires-Dist: nvidia-ml-py<13,>=12.535; extra == "system"
Provides-Extra: dev
Requires-Dist: pytest<8,>=7.4; extra == "dev"
Requires-Dist: pytest-asyncio<1,>=0.21; extra == "dev"
Requires-Dist: pytest-cov<6,>=4.1; extra == "dev"
Requires-Dist: httpx<1,>=0.25; extra == "dev"
Requires-Dist: ruff<1,>=0.6; extra == "dev"
Requires-Dist: mypy<2,>=1.7; extra == "dev"
Requires-Dist: email-validator<3,>=2.1; extra == "dev"
Provides-Extra: postgres
Requires-Dist: psycopg2-binary<3,>=2.9.9; extra == "postgres"
Requires-Dist: redis<6,>=5.0.1; extra == "postgres"
Requires-Dist: celery<6,>=5.3.4; extra == "postgres"
Requires-Dist: aiocache<1,>=0.12.2; extra == "postgres"
Provides-Extra: monitoring
Requires-Dist: opentelemetry-api<2,>=1.22; extra == "monitoring"
Requires-Dist: opentelemetry-sdk<2,>=1.22; extra == "monitoring"
Requires-Dist: opentelemetry-instrumentation-fastapi>=0.43b0; extra == "monitoring"
Requires-Dist: opentelemetry-instrumentation-httpx>=0.43b0; extra == "monitoring"
Requires-Dist: opentelemetry-exporter-otlp-proto-http<2,>=1.22; extra == "monitoring"
Requires-Dist: sentry-sdk[fastapi]<2,>=1.39; extra == "monitoring"
Requires-Dist: python-socketio<6,>=5.11; extra == "monitoring"
Requires-Dist: prometheus-client<1,>=0.19; extra == "monitoring"
Provides-Extra: all
Requires-Dist: psutil<6,>=5.9.6; extra == "all"
Requires-Dist: py-cpuinfo<10,>=9.0; extra == "all"
Requires-Dist: gputil<2,>=1.4; extra == "all"
Requires-Dist: wmi<2,>=1.5.1; platform_system == "Windows" and extra == "all"
Requires-Dist: httpx<1,>=0.26; extra == "all"
Requires-Dist: asyncpg<1,>=0.29; extra == "all"
Requires-Dist: psycopg2-binary<3,>=2.9; extra == "all"
Requires-Dist: sqlalchemy[asyncio]<3,>=2.0.23; extra == "all"
Requires-Dist: redis[hiredis]<6,>=5.0; extra == "all"
Requires-Dist: celery[redis]<6,>=5.3; extra == "all"
Requires-Dist: flower<3,>=2.0; extra == "all"
Requires-Dist: opentelemetry-api<2,>=1.22; extra == "all"
Requires-Dist: opentelemetry-sdk<2,>=1.22; extra == "all"
Requires-Dist: opentelemetry-instrumentation<1,>=0.43b0; extra == "all"
Requires-Dist: opentelemetry-instrumentation-fastapi<1,>=0.43b0; extra == "all"
Requires-Dist: opentelemetry-instrumentation-sqlalchemy<1,>=0.43b0; extra == "all"
Requires-Dist: opentelemetry-instrumentation-httpx<1,>=0.43b0; extra == "all"
Requires-Dist: opentelemetry-exporter-otlp-proto-http<2,>=1.22; extra == "all"
Requires-Dist: sentry-sdk[fastapi]<2,>=1.39; extra == "all"
Requires-Dist: python-socketio<6,>=5.11; extra == "all"
Requires-Dist: prometheus-client<1,>=0.19; extra == "all"
Dynamic: license-file

# Universal Dependency Resolver

Resolve dependencies across **PyPI**, **npm**, **Cargo**, **Go**, **Conda**, **Maven**, and more — detect conflicts, check system compatibility, and export to any format.

```
udr resolve numpy pandas scikit-learn
udr resolve react vue -e npm
```

## Install

```bash
pip install ud-resolver
```

With extras:

| Install flag | Adds |
|---|---|
| `[system]` | GPU & system scanning (`psutil`, `pynvml`, `cpuinfo`) |
| `[postgres]` | PostgreSQL support (`psycopg2-binary`, `asyncpg`) |
| `[monitoring]` | OpenTelemetry & Sentry instrumentation |
| `[all]` | Everything |

## Quick Start

```bash
# Resolve dependencies
udr resolve numpy pandas scikit-learn
udr resolve react vue -e npm

# Lock a project's dependencies
udr lock
udr lock --manifest requirements.txt --manifest package.json

# Check system compatibility
udr check
udr info

# Start API server
udr serve --port 8000
```

## Python Library

```python
import asyncio
from backend.core.data_aggregator import DataAggregator
from backend.core.conflict_resolver import ConflictResolver

async def main():
    aggregator = DataAggregator()
    info = await aggregator.get_package_info("flask", ecosystem="pypi")
    print(info["versions"])

    resolver = ConflictResolver()
    result = resolver.resolve([{"name": "flask", "version": ">=2.0"}])

asyncio.run(main())
```

## Features

| Feature | What it does |
|---|---|
| **13 ecosystems** | PyPI, npm, Cargo, Go, Conda, Maven, NuGet, RubyGems, Packagist, Homebrew, APT, APK, CocoaPods |
| **SAT-solver resolution** | Z3-based conflict resolver for complex version constraints |
| **System scanning** | OS, CPU, GPU, CUDA, Python, Node.js, GCC, Java detection |
| **GPU-aware resolution** | Automatically resolves CUDA variants |
| **12 export formats** | requirements.txt, package.json, Dockerfile, docker-compose.yml, pyproject.toml, environment.yml, Cargo.toml, build.gradle, pom.xml, CMakeLists.txt, install.sh, install.bat |
| **CLI + API** | 9 CLI commands + 24 REST API endpoints |
| **Desktop app** | Standalone GUI (download from GitHub Releases) |
| **SAT conflict resolution** | Z3 theorem prover for dependency solving |

## How It Works

```
Your request → Fetch metadata from registry APIs
                   ↓
            Scan target system (OS, GPU, CUDA)
                   ↓
            Resolve conflicts with Z3 SAT solver
                   ↓
            Export to 12 formats
```

## Links

Full documentation at [github.com/code-with-zeeshan/universal-dependency-resolver](https://github.com/code-with-zeeshan/universal-dependency-resolver)
