File size: 3,624 Bytes
d35fb72
 
8c55ea1
 
 
d35fb72
8c55ea1
d35fb72
 
 
 
 
8c55ea1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
---
title: Python Dependency Compatibility Board
emoji: 🐍
colorFrom: blue
colorTo: purple
sdk: gradio
sdk_version: 4.0.0
app_file: app.py
pinned: false
license: mit
---

# 🐍 Python Dependency Compatibility Board

A powerful tool to analyze and resolve Python package dependencies. Check for version conflicts, compatibility issues, and generate clean `requirements.txt` files.

## ✨ Features

- **Multiple Input Methods**: Library list, requirements.txt paste, or file upload
- **Conflict Detection**: Automatically detects version conflicts and compatibility issues
- **Dependency Resolution**: Uses pip's resolver to find compatible versions
- **Environment Aware**: Configure Python version, device (CPU/GPU), and OS
- **Analysis Modes**: Quick (top-level) or Deep (with transitive dependencies)
- **Resolution Strategies**: Latest compatible, stable/pinned, keep existing, or minimal changes

## πŸš€ How to Use

### Input Your Dependencies

You can provide dependencies in three ways:

1. **Library List**: Enter package names one per line
   ```
   pandas
   torch
   langchain
   fastapi
   ```

2. **Requirements Text**: Paste your existing requirements.txt
   ```
   pandas==2.0.3
   torch>=2.0.0
   langchain==0.1.0
   ```

3. **File Upload**: Upload a requirements.txt file directly

### Configure Environment

- **Python Version**: Select your target Python version (3.8-3.12)
- **Device**: CPU only, NVIDIA GPU (CUDA), Apple Silicon (MPS), or Custom
- **Operating System**: Any, Linux, Windows, or macOS

### Analysis & Resolution

1. Choose **Analysis Mode**:
   - **Quick**: Fast analysis of top-level dependencies
   - **Deep**: Complete dependency tree with transitive dependencies

2. Select **Resolution Strategy**:
   - **latest_compatible**: Resolve to latest compatible versions
   - **stable/pinned**: Prefer stable, pinned versions
   - **keep_existing_pins**: Preserve your existing version pins
   - **minimal_changes**: Make minimal changes to resolve conflicts

3. Click **"Analyze & Resolve Dependencies"**

4. Review the results and download your resolved `requirements.txt`

## πŸ” What It Detects

The tool automatically detects:

- **Duplicate Packages**: Same package specified multiple times with conflicting versions
- **PyTorch Compatibility**: Ensures pytorch-lightning>=2.0 works with torch>=2.0
- **FastAPI/Pydantic**: Checks version compatibility (e.g., fastapi 0.78.x requires pydantic v1)
- **TensorFlow/Keras**: Validates TensorFlow/Keras version pairs
- **Version Conflicts**: Identifies incompatible version specifications

## πŸ“‹ Example

**Input:**
```
torch==1.8.0
pytorch-lightning==2.2.0
pandas==2.0.3
```

**Output:**
```
⚠️ Compatibility Issues Found:
- pytorch-lightning>=2.0 requires torch>=2.0, but torch<2.0 is specified

Resolved requirements.txt:
torch==2.1.0
pytorch-lightning==2.2.0
pandas==2.0.3
...
```

## πŸ› οΈ Technical Details

- Built with [Gradio](https://gradio.app/)
- Uses `packaging` library for version parsing
- Leverages pip's dependency resolver
- Supports PEP 508 requirement specifications

## πŸ“ Notes

- Full dependency resolution requires pip >= 22.2
- Deep mode may take longer for large dependency sets
- The tool works best with packages available on PyPI
- Platform-specific dependencies (e.g., CUDA) are detected but resolution may vary

## 🀝 Contributing

Feel free to test the tool and report any issues! This tool is designed to help developers manage Python dependencies more effectively.

## πŸ“„ License

MIT License - feel free to use and modify as needed.

---

**Made with ❀️ for the Python community**