Yash Sakhale
commited on
Commit
·
1d39202
1
Parent(s):
553d7ca
Initial deployment of Python Dependency Compatibility Board
Browse filesThis view is limited to 50 files because it contains too many changes.
See raw diff
- .gitignore +44 -0
- README.md +118 -5
- Synthetic data.py +162 -0
- app.py +517 -0
- synthetic_requirements_dataset.json +722 -0
- synthetic_requirements_txt/requirements_001_valid.txt +10 -0
- synthetic_requirements_txt/requirements_002_invalid.txt +7 -0
- synthetic_requirements_txt/requirements_003_valid.txt +5 -0
- synthetic_requirements_txt/requirements_004_invalid.txt +9 -0
- synthetic_requirements_txt/requirements_005_valid.txt +10 -0
- synthetic_requirements_txt/requirements_006_invalid.txt +8 -0
- synthetic_requirements_txt/requirements_007_valid.txt +6 -0
- synthetic_requirements_txt/requirements_008_invalid.txt +9 -0
- synthetic_requirements_txt/requirements_009_valid.txt +6 -0
- synthetic_requirements_txt/requirements_010_invalid.txt +6 -0
- synthetic_requirements_txt/requirements_011_valid.txt +8 -0
- synthetic_requirements_txt/requirements_012_invalid.txt +9 -0
- synthetic_requirements_txt/requirements_013_valid.txt +9 -0
- synthetic_requirements_txt/requirements_014_invalid.txt +9 -0
- synthetic_requirements_txt/requirements_015_valid.txt +7 -0
- synthetic_requirements_txt/requirements_016_invalid.txt +7 -0
- synthetic_requirements_txt/requirements_017_valid.txt +8 -0
- synthetic_requirements_txt/requirements_018_invalid.txt +6 -0
- synthetic_requirements_txt/requirements_019_valid.txt +4 -0
- synthetic_requirements_txt/requirements_020_invalid.txt +9 -0
- synthetic_requirements_txt/requirements_021_valid.txt +6 -0
- synthetic_requirements_txt/requirements_022_invalid.txt +6 -0
- synthetic_requirements_txt/requirements_023_valid.txt +5 -0
- synthetic_requirements_txt/requirements_024_invalid.txt +11 -0
- synthetic_requirements_txt/requirements_025_valid.txt +10 -0
- synthetic_requirements_txt/requirements_026_invalid.txt +5 -0
- synthetic_requirements_txt/requirements_027_valid.txt +6 -0
- synthetic_requirements_txt/requirements_028_invalid.txt +10 -0
- synthetic_requirements_txt/requirements_029_valid.txt +6 -0
- synthetic_requirements_txt/requirements_030_invalid.txt +11 -0
- synthetic_requirements_txt/requirements_031_valid.txt +6 -0
- synthetic_requirements_txt/requirements_032_invalid.txt +10 -0
- synthetic_requirements_txt/requirements_033_valid.txt +9 -0
- synthetic_requirements_txt/requirements_034_invalid.txt +7 -0
- synthetic_requirements_txt/requirements_035_valid.txt +10 -0
- synthetic_requirements_txt/requirements_036_invalid.txt +7 -0
- synthetic_requirements_txt/requirements_037_valid.txt +10 -0
- synthetic_requirements_txt/requirements_038_invalid.txt +8 -0
- synthetic_requirements_txt/requirements_039_valid.txt +5 -0
- synthetic_requirements_txt/requirements_040_invalid.txt +5 -0
- synthetic_requirements_txt/requirements_041_valid.txt +7 -0
- synthetic_requirements_txt/requirements_042_invalid.txt +9 -0
- synthetic_requirements_txt/requirements_043_valid.txt +6 -0
- synthetic_requirements_txt/requirements_044_invalid.txt +10 -0
- synthetic_requirements_txt/requirements_045_valid.txt +7 -0
.gitignore
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Python
|
| 2 |
+
__pycache__/
|
| 3 |
+
*.py[cod]
|
| 4 |
+
*$py.class
|
| 5 |
+
*.so
|
| 6 |
+
.Python
|
| 7 |
+
env/
|
| 8 |
+
venv/
|
| 9 |
+
ENV/
|
| 10 |
+
build/
|
| 11 |
+
develop-eggs/
|
| 12 |
+
dist/
|
| 13 |
+
downloads/
|
| 14 |
+
eggs/
|
| 15 |
+
.eggs/
|
| 16 |
+
lib/
|
| 17 |
+
lib64/
|
| 18 |
+
parts/
|
| 19 |
+
sdist/
|
| 20 |
+
var/
|
| 21 |
+
wheels/
|
| 22 |
+
*.egg-info/
|
| 23 |
+
.installed.cfg
|
| 24 |
+
*.egg
|
| 25 |
+
|
| 26 |
+
# Gradio
|
| 27 |
+
flagged/
|
| 28 |
+
gradio_cached_examples/
|
| 29 |
+
|
| 30 |
+
# IDE
|
| 31 |
+
.vscode/
|
| 32 |
+
.idea/
|
| 33 |
+
*.swp
|
| 34 |
+
*.swo
|
| 35 |
+
*~
|
| 36 |
+
|
| 37 |
+
# OS
|
| 38 |
+
.DS_Store
|
| 39 |
+
Thumbs.db
|
| 40 |
+
|
| 41 |
+
# Temporary files
|
| 42 |
+
*.tmp
|
| 43 |
+
*.log
|
| 44 |
+
|
README.md
CHANGED
|
@@ -1,13 +1,126 @@
|
|
| 1 |
---
|
| 2 |
title: Python Dependency Compatibility Board
|
| 3 |
-
emoji:
|
| 4 |
-
colorFrom:
|
| 5 |
-
colorTo:
|
| 6 |
sdk: gradio
|
| 7 |
-
sdk_version:
|
| 8 |
app_file: app.py
|
| 9 |
pinned: false
|
| 10 |
license: mit
|
| 11 |
---
|
| 12 |
|
| 13 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
---
|
| 2 |
title: Python Dependency Compatibility Board
|
| 3 |
+
emoji: 🐍
|
| 4 |
+
colorFrom: blue
|
| 5 |
+
colorTo: purple
|
| 6 |
sdk: gradio
|
| 7 |
+
sdk_version: 4.0.0
|
| 8 |
app_file: app.py
|
| 9 |
pinned: false
|
| 10 |
license: mit
|
| 11 |
---
|
| 12 |
|
| 13 |
+
# 🐍 Python Dependency Compatibility Board
|
| 14 |
+
|
| 15 |
+
A powerful tool to analyze and resolve Python package dependencies. Check for version conflicts, compatibility issues, and generate clean `requirements.txt` files.
|
| 16 |
+
|
| 17 |
+
## ✨ Features
|
| 18 |
+
|
| 19 |
+
- **Multiple Input Methods**: Library list, requirements.txt paste, or file upload
|
| 20 |
+
- **Conflict Detection**: Automatically detects version conflicts and compatibility issues
|
| 21 |
+
- **Dependency Resolution**: Uses pip's resolver to find compatible versions
|
| 22 |
+
- **Environment Aware**: Configure Python version, device (CPU/GPU), and OS
|
| 23 |
+
- **Analysis Modes**: Quick (top-level) or Deep (with transitive dependencies)
|
| 24 |
+
- **Resolution Strategies**: Latest compatible, stable/pinned, keep existing, or minimal changes
|
| 25 |
+
|
| 26 |
+
## 🚀 How to Use
|
| 27 |
+
|
| 28 |
+
### Input Your Dependencies
|
| 29 |
+
|
| 30 |
+
You can provide dependencies in three ways:
|
| 31 |
+
|
| 32 |
+
1. **Library List**: Enter package names one per line
|
| 33 |
+
```
|
| 34 |
+
pandas
|
| 35 |
+
torch
|
| 36 |
+
langchain
|
| 37 |
+
fastapi
|
| 38 |
+
```
|
| 39 |
+
|
| 40 |
+
2. **Requirements Text**: Paste your existing requirements.txt
|
| 41 |
+
```
|
| 42 |
+
pandas==2.0.3
|
| 43 |
+
torch>=2.0.0
|
| 44 |
+
langchain==0.1.0
|
| 45 |
+
```
|
| 46 |
+
|
| 47 |
+
3. **File Upload**: Upload a requirements.txt file directly
|
| 48 |
+
|
| 49 |
+
### Configure Environment
|
| 50 |
+
|
| 51 |
+
- **Python Version**: Select your target Python version (3.8-3.12)
|
| 52 |
+
- **Device**: CPU only, NVIDIA GPU (CUDA), Apple Silicon (MPS), or Custom
|
| 53 |
+
- **Operating System**: Any, Linux, Windows, or macOS
|
| 54 |
+
|
| 55 |
+
### Analysis & Resolution
|
| 56 |
+
|
| 57 |
+
1. Choose **Analysis Mode**:
|
| 58 |
+
- **Quick**: Fast analysis of top-level dependencies
|
| 59 |
+
- **Deep**: Complete dependency tree with transitive dependencies
|
| 60 |
+
|
| 61 |
+
2. Select **Resolution Strategy**:
|
| 62 |
+
- **latest_compatible**: Resolve to latest compatible versions
|
| 63 |
+
- **stable/pinned**: Prefer stable, pinned versions
|
| 64 |
+
- **keep_existing_pins**: Preserve your existing version pins
|
| 65 |
+
- **minimal_changes**: Make minimal changes to resolve conflicts
|
| 66 |
+
|
| 67 |
+
3. Click **"Analyze & Resolve Dependencies"**
|
| 68 |
+
|
| 69 |
+
4. Review the results and download your resolved `requirements.txt`
|
| 70 |
+
|
| 71 |
+
## 🔍 What It Detects
|
| 72 |
+
|
| 73 |
+
The tool automatically detects:
|
| 74 |
+
|
| 75 |
+
- **Duplicate Packages**: Same package specified multiple times with conflicting versions
|
| 76 |
+
- **PyTorch Compatibility**: Ensures pytorch-lightning>=2.0 works with torch>=2.0
|
| 77 |
+
- **FastAPI/Pydantic**: Checks version compatibility (e.g., fastapi 0.78.x requires pydantic v1)
|
| 78 |
+
- **TensorFlow/Keras**: Validates TensorFlow/Keras version pairs
|
| 79 |
+
- **Version Conflicts**: Identifies incompatible version specifications
|
| 80 |
+
|
| 81 |
+
## 📋 Example
|
| 82 |
+
|
| 83 |
+
**Input:**
|
| 84 |
+
```
|
| 85 |
+
torch==1.8.0
|
| 86 |
+
pytorch-lightning==2.2.0
|
| 87 |
+
pandas==2.0.3
|
| 88 |
+
```
|
| 89 |
+
|
| 90 |
+
**Output:**
|
| 91 |
+
```
|
| 92 |
+
⚠️ Compatibility Issues Found:
|
| 93 |
+
- pytorch-lightning>=2.0 requires torch>=2.0, but torch<2.0 is specified
|
| 94 |
+
|
| 95 |
+
Resolved requirements.txt:
|
| 96 |
+
torch==2.1.0
|
| 97 |
+
pytorch-lightning==2.2.0
|
| 98 |
+
pandas==2.0.3
|
| 99 |
+
...
|
| 100 |
+
```
|
| 101 |
+
|
| 102 |
+
## 🛠️ Technical Details
|
| 103 |
+
|
| 104 |
+
- Built with [Gradio](https://gradio.app/)
|
| 105 |
+
- Uses `packaging` library for version parsing
|
| 106 |
+
- Leverages pip's dependency resolver
|
| 107 |
+
- Supports PEP 508 requirement specifications
|
| 108 |
+
|
| 109 |
+
## 📝 Notes
|
| 110 |
+
|
| 111 |
+
- Full dependency resolution requires pip >= 22.2
|
| 112 |
+
- Deep mode may take longer for large dependency sets
|
| 113 |
+
- The tool works best with packages available on PyPI
|
| 114 |
+
- Platform-specific dependencies (e.g., CUDA) are detected but resolution may vary
|
| 115 |
+
|
| 116 |
+
## 🤝 Contributing
|
| 117 |
+
|
| 118 |
+
Feel free to test the tool and report any issues! This tool is designed to help developers manage Python dependencies more effectively.
|
| 119 |
+
|
| 120 |
+
## 📄 License
|
| 121 |
+
|
| 122 |
+
MIT License - feel free to use and modify as needed.
|
| 123 |
+
|
| 124 |
+
---
|
| 125 |
+
|
| 126 |
+
**Made with ❤️ for the Python community**
|
Synthetic data.py
ADDED
|
@@ -0,0 +1,162 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import json
|
| 2 |
+
import random
|
| 3 |
+
from pathlib import Path
|
| 4 |
+
|
| 5 |
+
random.seed(0)
|
| 6 |
+
|
| 7 |
+
# Simple package + version catalog
|
| 8 |
+
PKG_VERSIONS = {
|
| 9 |
+
"numpy": ["1.21.0", "1.22.0", "1.23.5"],
|
| 10 |
+
"pandas": ["1.3.5", "1.4.4", "2.0.3"],
|
| 11 |
+
"scipy": ["1.7.3", "1.8.1", "1.10.0"],
|
| 12 |
+
"scikit-learn": ["0.24.2", "1.0.2", "1.2.2"],
|
| 13 |
+
"torch": ["1.8.0", "1.13.1", "2.1.0"],
|
| 14 |
+
"torchvision": ["0.9.0", "0.14.1", "0.16.0"],
|
| 15 |
+
"torchaudio": ["0.8.0", "0.13.1", "2.1.0"],
|
| 16 |
+
"pytorch-lightning": ["1.5.0", "2.0.0", "2.2.0"],
|
| 17 |
+
"tensorflow": ["1.15.0", "2.9.0", "2.15.0"],
|
| 18 |
+
"keras": ["2.4.0", "2.9.0", "3.0.0"],
|
| 19 |
+
"jax": ["0.3.25", "0.4.13"],
|
| 20 |
+
"flax": ["0.5.1", "0.7.2"],
|
| 21 |
+
"fastapi": ["0.78.0", "0.99.0"],
|
| 22 |
+
"uvicorn[standard]": ["0.17.6", "0.23.2"],
|
| 23 |
+
"starlette": ["0.19.1", "0.27.0"],
|
| 24 |
+
"pydantic": ["1.10.13", "2.3.0"],
|
| 25 |
+
"sqlalchemy": ["1.4.46", "2.0.20"],
|
| 26 |
+
"alembic": ["1.7.7", "1.12.0"],
|
| 27 |
+
"psycopg2-binary": ["2.9.3"],
|
| 28 |
+
"requests": ["2.27.1", "2.31.0"],
|
| 29 |
+
"httpx": ["0.23.0", "0.25.1"],
|
| 30 |
+
"beautifulsoup4": ["4.10.0", "4.12.2"],
|
| 31 |
+
"scrapy": ["2.5.1", "2.9.0"],
|
| 32 |
+
"opencv-python": ["4.5.5.64", "4.8.0.76"],
|
| 33 |
+
"pillow": ["9.0.1", "10.0.0"],
|
| 34 |
+
"matplotlib": ["3.5.1", "3.7.2"],
|
| 35 |
+
"seaborn": ["0.11.2", "0.13.0"],
|
| 36 |
+
"plotly": ["5.6.0", "5.17.0"],
|
| 37 |
+
"langchain": ["0.0.350", "0.1.0"],
|
| 38 |
+
"openai": ["0.28.0", "1.6.0"],
|
| 39 |
+
"tiktoken": ["0.5.1"],
|
| 40 |
+
"chromadb": ["0.4.8", "0.4.23"],
|
| 41 |
+
"weaviate-client": ["3.21.0"],
|
| 42 |
+
"redis": ["4.3.4", "5.0.1"],
|
| 43 |
+
"celery": ["5.2.7", "5.3.4"],
|
| 44 |
+
"gunicorn": ["20.1.0"],
|
| 45 |
+
"uvloop": ["0.17.0"],
|
| 46 |
+
}
|
| 47 |
+
|
| 48 |
+
PKG_NAMES = list(PKG_VERSIONS.keys())
|
| 49 |
+
|
| 50 |
+
|
| 51 |
+
def make_requirements(num_lines: int, force_conflict: bool = False):
|
| 52 |
+
"""
|
| 53 |
+
Create one synthetic requirements.txt-style env.
|
| 54 |
+
Some are valid, some invalid.
|
| 55 |
+
"""
|
| 56 |
+
chosen = random.sample(PKG_NAMES, num_lines)
|
| 57 |
+
req_lines = []
|
| 58 |
+
pinned_versions = {}
|
| 59 |
+
|
| 60 |
+
# Basic random env
|
| 61 |
+
for pkg in chosen:
|
| 62 |
+
ver = random.choice(PKG_VERSIONS[pkg])
|
| 63 |
+
pinned_versions[pkg] = ver
|
| 64 |
+
# Sometimes no exact pin
|
| 65 |
+
if random.random() < 0.2:
|
| 66 |
+
line = pkg
|
| 67 |
+
else:
|
| 68 |
+
line = f"{pkg}=={ver}"
|
| 69 |
+
req_lines.append(line)
|
| 70 |
+
|
| 71 |
+
label = "valid"
|
| 72 |
+
conflict_reason = None
|
| 73 |
+
|
| 74 |
+
# Rule 1: torch & pytorch-lightning conflict
|
| 75 |
+
# synthetic rule: torch<2.0 with pl>=2.0 is "invalid"
|
| 76 |
+
if "torch" in pinned_versions and "pytorch-lightning" in pinned_versions:
|
| 77 |
+
tver = pinned_versions["torch"]
|
| 78 |
+
plver = pinned_versions["pytorch-lightning"]
|
| 79 |
+
if force_conflict or (random.random() < 0.5 and tver.startswith("1.") and plver.startswith("2.")):
|
| 80 |
+
# enforce explicit problematic pins
|
| 81 |
+
for i, line in enumerate(req_lines):
|
| 82 |
+
if line.startswith("torch"):
|
| 83 |
+
req_lines[i] = "torch==1.8.0"
|
| 84 |
+
if line.startswith("pytorch-lightning"):
|
| 85 |
+
req_lines[i] = "pytorch-lightning==2.2.0"
|
| 86 |
+
label = "invalid"
|
| 87 |
+
conflict_reason = "pytorch-lightning>=2.0 is assumed to require torch>=2.0 but torch==1.8.0 is pinned."
|
| 88 |
+
|
| 89 |
+
# Rule 2: tensorflow 1.15 with keras 3.0
|
| 90 |
+
if label == "valid" and "tensorflow" in pinned_versions and "keras" in pinned_versions:
|
| 91 |
+
tver = pinned_versions["tensorflow"]
|
| 92 |
+
kver = pinned_versions["keras"]
|
| 93 |
+
if force_conflict or (random.random() < 0.5 and tver.startswith("1.") and kver.startswith("3.")):
|
| 94 |
+
for i, line in enumerate(req_lines):
|
| 95 |
+
if line.startswith("tensorflow"):
|
| 96 |
+
req_lines[i] = "tensorflow==1.15.0"
|
| 97 |
+
if line.startswith("keras"):
|
| 98 |
+
req_lines[i] = "keras==3.0.0"
|
| 99 |
+
label = "invalid"
|
| 100 |
+
conflict_reason = "keras==3.0.0 is assumed to require TensorFlow 2.x but tensorflow==1.15.0 is pinned."
|
| 101 |
+
|
| 102 |
+
# Rule 3: old fastapi with pydantic v2
|
| 103 |
+
if label == "valid" and "fastapi" in pinned_versions and "pydantic" in pinned_versions:
|
| 104 |
+
fver = pinned_versions["fastapi"]
|
| 105 |
+
pver = pinned_versions["pydantic"]
|
| 106 |
+
# synthetic rule: fastapi 0.78 with pydantic 2.x is invalid
|
| 107 |
+
if force_conflict or (random.random() < 0.5 and fver.startswith("0.78") and pver.startswith("2.")):
|
| 108 |
+
for i, line in enumerate(req_lines):
|
| 109 |
+
if line.startswith("fastapi"):
|
| 110 |
+
req_lines[i] = "fastapi==0.78.0"
|
| 111 |
+
if line.startswith("pydantic"):
|
| 112 |
+
req_lines[i] = "pydantic==2.3.0"
|
| 113 |
+
label = "invalid"
|
| 114 |
+
conflict_reason = "fastapi==0.78.0 is assumed to require pydantic v1, but pydantic==2.3.0 is pinned."
|
| 115 |
+
|
| 116 |
+
# Rule 4: generic conflict – same package pinned twice to different versions
|
| 117 |
+
if label == "valid" and force_conflict:
|
| 118 |
+
pkg = chosen[0]
|
| 119 |
+
existing_ver = pinned_versions[pkg]
|
| 120 |
+
alt_candidates = [v for v in PKG_VERSIONS[pkg] if v != existing_ver]
|
| 121 |
+
if alt_candidates:
|
| 122 |
+
alt_ver = random.choice(alt_candidates)
|
| 123 |
+
else:
|
| 124 |
+
alt_ver = existing_ver
|
| 125 |
+
req_lines.append(f"{pkg}=={alt_ver}")
|
| 126 |
+
label = "invalid"
|
| 127 |
+
conflict_reason = f"{pkg} is pinned to multiple incompatible versions."
|
| 128 |
+
|
| 129 |
+
return "\n".join(req_lines), label, conflict_reason
|
| 130 |
+
|
| 131 |
+
|
| 132 |
+
def generate_dataset(n_samples: int = 100):
|
| 133 |
+
samples = []
|
| 134 |
+
for i in range(n_samples):
|
| 135 |
+
num_lines = random.randint(4, 10)
|
| 136 |
+
# roughly half forced invalid
|
| 137 |
+
force_conflict = (i % 2 == 1)
|
| 138 |
+
req_str, label, reason = make_requirements(num_lines, force_conflict=force_conflict)
|
| 139 |
+
samples.append(
|
| 140 |
+
{
|
| 141 |
+
"id": i + 1,
|
| 142 |
+
"requirements": req_str,
|
| 143 |
+
"label": label,
|
| 144 |
+
"conflict_reason": reason,
|
| 145 |
+
}
|
| 146 |
+
)
|
| 147 |
+
return samples
|
| 148 |
+
|
| 149 |
+
|
| 150 |
+
if __name__ == "__main__":
|
| 151 |
+
samples = generate_dataset(n_samples=120) # 120 just to be safe for "at least 100"
|
| 152 |
+
|
| 153 |
+
out_path = Path("synthetic_requirements_dataset.json")
|
| 154 |
+
out_path.write_text(json.dumps(samples, indent=2))
|
| 155 |
+
print(f"Wrote {len(samples)} samples to {out_path.resolve()}")
|
| 156 |
+
|
| 157 |
+
# Optional: also write each requirements.txt separately
|
| 158 |
+
base_dir = Path("synthetic_requirements_txt")
|
| 159 |
+
base_dir.mkdir(exist_ok=True)
|
| 160 |
+
for s in samples:
|
| 161 |
+
fname = base_dir / f"requirements_{s['id']:03d}_{s['label']}.txt"
|
| 162 |
+
fname.write_text(s["requirements"])
|
app.py
ADDED
|
@@ -0,0 +1,517 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""
|
| 2 |
+
Python Dependency Compatibility Board
|
| 3 |
+
A tool to parse, analyze, and resolve Python package dependencies.
|
| 4 |
+
"""
|
| 5 |
+
|
| 6 |
+
import re
|
| 7 |
+
import json
|
| 8 |
+
import tempfile
|
| 9 |
+
import subprocess
|
| 10 |
+
from pathlib import Path
|
| 11 |
+
from typing import List, Dict, Tuple, Optional, Set
|
| 12 |
+
from packaging.requirements import Requirement
|
| 13 |
+
from packaging.specifiers import SpecifierSet
|
| 14 |
+
from packaging.version import Version
|
| 15 |
+
import gradio as gr
|
| 16 |
+
|
| 17 |
+
|
| 18 |
+
class DependencyParser:
|
| 19 |
+
"""Parse requirements.txt and library lists into structured dependencies."""
|
| 20 |
+
|
| 21 |
+
@staticmethod
|
| 22 |
+
def parse_requirements_text(text: str) -> List[Dict]:
|
| 23 |
+
"""Parse requirements.txt content into structured format."""
|
| 24 |
+
dependencies = []
|
| 25 |
+
seen_packages = {}
|
| 26 |
+
|
| 27 |
+
for line in text.strip().split('\n'):
|
| 28 |
+
line = line.strip()
|
| 29 |
+
if not line or line.startswith('#'):
|
| 30 |
+
continue
|
| 31 |
+
|
| 32 |
+
# Remove comments
|
| 33 |
+
if '#' in line:
|
| 34 |
+
line = line[:line.index('#')].strip()
|
| 35 |
+
|
| 36 |
+
try:
|
| 37 |
+
req = Requirement(line)
|
| 38 |
+
package_name = req.name.lower()
|
| 39 |
+
|
| 40 |
+
# Handle duplicate packages
|
| 41 |
+
if package_name in seen_packages:
|
| 42 |
+
# Merge or warn about duplicates
|
| 43 |
+
existing = seen_packages[package_name]
|
| 44 |
+
if existing['specifier'] != str(req.specifier):
|
| 45 |
+
dependencies.append({
|
| 46 |
+
'package': package_name,
|
| 47 |
+
'specifier': str(req.specifier) if req.specifier else '',
|
| 48 |
+
'extras': list(req.extras) if req.extras else [],
|
| 49 |
+
'marker': str(req.marker) if req.marker else '',
|
| 50 |
+
'original': line,
|
| 51 |
+
'conflict': f"Duplicate: {existing['original']} vs {line}"
|
| 52 |
+
})
|
| 53 |
+
continue
|
| 54 |
+
|
| 55 |
+
dep = {
|
| 56 |
+
'package': package_name,
|
| 57 |
+
'specifier': str(req.specifier) if req.specifier else '',
|
| 58 |
+
'extras': list(req.extras) if req.extras else [],
|
| 59 |
+
'marker': str(req.marker) if req.marker else '',
|
| 60 |
+
'original': line,
|
| 61 |
+
'conflict': None
|
| 62 |
+
}
|
| 63 |
+
dependencies.append(dep)
|
| 64 |
+
seen_packages[package_name] = dep
|
| 65 |
+
except Exception as e:
|
| 66 |
+
# Handle malformed lines
|
| 67 |
+
dependencies.append({
|
| 68 |
+
'package': line.split('==')[0].split('>=')[0].split('<=')[0].split('[')[0].strip(),
|
| 69 |
+
'specifier': '',
|
| 70 |
+
'extras': [],
|
| 71 |
+
'marker': '',
|
| 72 |
+
'original': line,
|
| 73 |
+
'conflict': f"Parse error: {str(e)}"
|
| 74 |
+
})
|
| 75 |
+
|
| 76 |
+
return dependencies
|
| 77 |
+
|
| 78 |
+
@staticmethod
|
| 79 |
+
def parse_library_list(text: str) -> List[Dict]:
|
| 80 |
+
"""Parse a simple list of library names."""
|
| 81 |
+
dependencies = []
|
| 82 |
+
for line in text.strip().split('\n'):
|
| 83 |
+
line = line.strip()
|
| 84 |
+
if not line or line.startswith('#'):
|
| 85 |
+
continue
|
| 86 |
+
|
| 87 |
+
# Extract package name (remove version specifiers if present)
|
| 88 |
+
package_name = re.split(r'[<>=!]', line)[0].strip()
|
| 89 |
+
package_name = re.split(r'\[', package_name)[0].strip()
|
| 90 |
+
|
| 91 |
+
if package_name:
|
| 92 |
+
dependencies.append({
|
| 93 |
+
'package': package_name.lower(),
|
| 94 |
+
'specifier': '',
|
| 95 |
+
'extras': [],
|
| 96 |
+
'marker': '',
|
| 97 |
+
'original': package_name,
|
| 98 |
+
'conflict': None
|
| 99 |
+
})
|
| 100 |
+
|
| 101 |
+
return dependencies
|
| 102 |
+
|
| 103 |
+
|
| 104 |
+
class DependencyResolver:
|
| 105 |
+
"""Resolve dependencies and check compatibility."""
|
| 106 |
+
|
| 107 |
+
def __init__(self, python_version: str = "3.10", platform: str = "any", device: str = "cpu"):
|
| 108 |
+
self.python_version = python_version
|
| 109 |
+
self.platform = platform
|
| 110 |
+
self.device = device
|
| 111 |
+
|
| 112 |
+
def build_dependency_graph(self, dependencies: List[Dict], deep_mode: bool = False) -> Dict:
|
| 113 |
+
"""Build dependency graph (simplified - in production would query PyPI)."""
|
| 114 |
+
graph = {
|
| 115 |
+
'nodes': {},
|
| 116 |
+
'edges': [],
|
| 117 |
+
'conflicts': []
|
| 118 |
+
}
|
| 119 |
+
|
| 120 |
+
for dep in dependencies:
|
| 121 |
+
package = dep['package']
|
| 122 |
+
graph['nodes'][package] = {
|
| 123 |
+
'specifier': dep['specifier'],
|
| 124 |
+
'extras': dep['extras'],
|
| 125 |
+
'marker': dep['marker'],
|
| 126 |
+
'conflict': dep.get('conflict')
|
| 127 |
+
}
|
| 128 |
+
|
| 129 |
+
if dep.get('conflict'):
|
| 130 |
+
graph['conflicts'].append({
|
| 131 |
+
'package': package,
|
| 132 |
+
'reason': dep['conflict']
|
| 133 |
+
})
|
| 134 |
+
|
| 135 |
+
# In deep mode, would fetch transitive dependencies from PyPI
|
| 136 |
+
# For now, we'll use a simplified approach
|
| 137 |
+
|
| 138 |
+
return graph
|
| 139 |
+
|
| 140 |
+
def check_compatibility(self, graph: Dict) -> Tuple[bool, List[str]]:
|
| 141 |
+
"""Check version compatibility across the graph."""
|
| 142 |
+
issues = []
|
| 143 |
+
|
| 144 |
+
# Check for duplicate package conflicts
|
| 145 |
+
for conflict in graph['conflicts']:
|
| 146 |
+
issues.append(f"Conflict in {conflict['package']}: {conflict['reason']}")
|
| 147 |
+
|
| 148 |
+
# Check known compatibility issues
|
| 149 |
+
nodes = graph['nodes']
|
| 150 |
+
|
| 151 |
+
# PyTorch Lightning + PyTorch compatibility
|
| 152 |
+
if 'pytorch-lightning' in nodes and 'torch' in nodes:
|
| 153 |
+
pl_spec = nodes['pytorch-lightning']['specifier']
|
| 154 |
+
torch_spec = nodes['torch']['specifier']
|
| 155 |
+
|
| 156 |
+
# Simplified check - in production would parse versions properly
|
| 157 |
+
if '==2.' in pl_spec or '>=2.' in pl_spec:
|
| 158 |
+
if '==1.' in torch_spec or ('<2.' in torch_spec and '==1.' in torch_spec):
|
| 159 |
+
issues.append("pytorch-lightning>=2.0 requires torch>=2.0, but torch<2.0 is specified")
|
| 160 |
+
|
| 161 |
+
# FastAPI + Pydantic compatibility
|
| 162 |
+
if 'fastapi' in nodes and 'pydantic' in nodes:
|
| 163 |
+
fastapi_spec = nodes['fastapi']['specifier']
|
| 164 |
+
pydantic_spec = nodes['pydantic']['specifier']
|
| 165 |
+
|
| 166 |
+
if '==0.78' in fastapi_spec or '==0.7' in fastapi_spec:
|
| 167 |
+
if '==2.' in pydantic_spec or '>=2.' in pydantic_spec:
|
| 168 |
+
issues.append("fastapi==0.78.x requires pydantic v1, but pydantic v2 is specified")
|
| 169 |
+
|
| 170 |
+
# TensorFlow + Keras compatibility
|
| 171 |
+
if 'tensorflow' in nodes and 'keras' in nodes:
|
| 172 |
+
tf_spec = nodes['tensorflow']['specifier']
|
| 173 |
+
keras_spec = nodes['keras']['specifier']
|
| 174 |
+
|
| 175 |
+
if '==1.' in tf_spec:
|
| 176 |
+
if '==3.' in keras_spec or '>=3.' in keras_spec:
|
| 177 |
+
issues.append("keras>=3.0 requires TensorFlow 2.x, but TensorFlow 1.x is specified")
|
| 178 |
+
|
| 179 |
+
return len(issues) == 0, issues
|
| 180 |
+
|
| 181 |
+
def resolve_dependencies(
|
| 182 |
+
self,
|
| 183 |
+
dependencies: List[Dict],
|
| 184 |
+
strategy: str = "latest_compatible"
|
| 185 |
+
) -> Tuple[str, List[str]]:
|
| 186 |
+
"""Resolve dependencies using specified strategy."""
|
| 187 |
+
# Remove duplicates and conflicts
|
| 188 |
+
seen_packages = {}
|
| 189 |
+
clean_dependencies = []
|
| 190 |
+
|
| 191 |
+
for dep in dependencies:
|
| 192 |
+
if dep.get('conflict'):
|
| 193 |
+
continue
|
| 194 |
+
|
| 195 |
+
package = dep['package']
|
| 196 |
+
if package in seen_packages:
|
| 197 |
+
# Keep the one with more specific version if available
|
| 198 |
+
existing = seen_packages[package]
|
| 199 |
+
if dep['specifier'] and not existing['specifier']:
|
| 200 |
+
clean_dependencies.remove(existing)
|
| 201 |
+
clean_dependencies.append(dep)
|
| 202 |
+
seen_packages[package] = dep
|
| 203 |
+
continue
|
| 204 |
+
|
| 205 |
+
clean_dependencies.append(dep)
|
| 206 |
+
seen_packages[package] = dep
|
| 207 |
+
|
| 208 |
+
# Create a temporary requirements file
|
| 209 |
+
with tempfile.NamedTemporaryFile(mode='w', suffix='.txt', delete=False) as f:
|
| 210 |
+
req_lines = []
|
| 211 |
+
for dep in clean_dependencies:
|
| 212 |
+
req_lines.append(dep['original'])
|
| 213 |
+
f.write('\n'.join(req_lines))
|
| 214 |
+
temp_req_file = f.name
|
| 215 |
+
|
| 216 |
+
warnings = []
|
| 217 |
+
|
| 218 |
+
try:
|
| 219 |
+
# Try using pip's resolver with --dry-run and --report (pip 22.2+)
|
| 220 |
+
result = subprocess.run(
|
| 221 |
+
['pip', 'install', '--dry-run', '--report', '-', '-r', temp_req_file],
|
| 222 |
+
capture_output=True,
|
| 223 |
+
text=True,
|
| 224 |
+
timeout=60
|
| 225 |
+
)
|
| 226 |
+
|
| 227 |
+
if result.returncode == 0 and result.stdout.strip():
|
| 228 |
+
# Parse the JSON report
|
| 229 |
+
try:
|
| 230 |
+
report = json.loads(result.stdout)
|
| 231 |
+
resolved = []
|
| 232 |
+
for package in report.get('install', []):
|
| 233 |
+
name = package.get('metadata', {}).get('name', '')
|
| 234 |
+
version = package.get('metadata', {}).get('version', '')
|
| 235 |
+
if name and version:
|
| 236 |
+
resolved.append(f"{name}=={version}")
|
| 237 |
+
|
| 238 |
+
if resolved:
|
| 239 |
+
return '\n'.join(sorted(resolved)), warnings
|
| 240 |
+
except json.JSONDecodeError:
|
| 241 |
+
warnings.append("Could not parse pip resolution report. Using original requirements.")
|
| 242 |
+
except Exception as e:
|
| 243 |
+
warnings.append(f"Error parsing resolution: {str(e)}")
|
| 244 |
+
|
| 245 |
+
# Fallback: try pip-compile if available
|
| 246 |
+
try:
|
| 247 |
+
result = subprocess.run(
|
| 248 |
+
['pip-compile', '--dry-run', '--output-file', '-', temp_req_file],
|
| 249 |
+
capture_output=True,
|
| 250 |
+
text=True,
|
| 251 |
+
timeout=60
|
| 252 |
+
)
|
| 253 |
+
if result.returncode == 0:
|
| 254 |
+
return result.stdout.strip(), warnings
|
| 255 |
+
except FileNotFoundError:
|
| 256 |
+
pass
|
| 257 |
+
except Exception:
|
| 258 |
+
pass
|
| 259 |
+
|
| 260 |
+
# Final fallback: return cleaned original requirements
|
| 261 |
+
resolved_lines = []
|
| 262 |
+
for dep in clean_dependencies:
|
| 263 |
+
line = dep['original']
|
| 264 |
+
# Apply strategy-based modifications
|
| 265 |
+
if strategy == "stable/pinned" and not dep['specifier']:
|
| 266 |
+
# In a real implementation, would query PyPI for latest stable
|
| 267 |
+
line = f"{dep['package']} # Version not specified"
|
| 268 |
+
elif strategy == "keep_existing_pins":
|
| 269 |
+
# Keep as-is
|
| 270 |
+
pass
|
| 271 |
+
resolved_lines.append(line)
|
| 272 |
+
|
| 273 |
+
if not warnings:
|
| 274 |
+
warnings.append("Using original requirements. For full resolution, ensure pip>=22.2 is installed.")
|
| 275 |
+
|
| 276 |
+
return '\n'.join(resolved_lines), warnings
|
| 277 |
+
|
| 278 |
+
except subprocess.TimeoutExpired:
|
| 279 |
+
warnings.append("Resolution timed out. Showing original requirements.")
|
| 280 |
+
return '\n'.join([d['original'] for d in clean_dependencies]), warnings
|
| 281 |
+
except Exception as e:
|
| 282 |
+
warnings.append(f"Resolution error: {str(e)}")
|
| 283 |
+
return '\n'.join([d['original'] for d in clean_dependencies]), warnings
|
| 284 |
+
finally:
|
| 285 |
+
Path(temp_req_file).unlink(missing_ok=True)
|
| 286 |
+
|
| 287 |
+
|
| 288 |
+
def process_dependencies(
|
| 289 |
+
library_list: str,
|
| 290 |
+
requirements_text: str,
|
| 291 |
+
uploaded_file,
|
| 292 |
+
python_version: str,
|
| 293 |
+
device: str,
|
| 294 |
+
os_type: str,
|
| 295 |
+
mode: str,
|
| 296 |
+
resolution_strategy: str
|
| 297 |
+
) -> Tuple[str, str]:
|
| 298 |
+
"""Main processing function for Gradio interface."""
|
| 299 |
+
|
| 300 |
+
# Collect dependencies from all sources
|
| 301 |
+
all_dependencies = []
|
| 302 |
+
|
| 303 |
+
# Parse library list
|
| 304 |
+
if library_list:
|
| 305 |
+
parser = DependencyParser()
|
| 306 |
+
deps = parser.parse_library_list(library_list)
|
| 307 |
+
all_dependencies.extend(deps)
|
| 308 |
+
|
| 309 |
+
# Parse requirements text
|
| 310 |
+
if requirements_text:
|
| 311 |
+
parser = DependencyParser()
|
| 312 |
+
deps = parser.parse_requirements_text(requirements_text)
|
| 313 |
+
all_dependencies.extend(deps)
|
| 314 |
+
|
| 315 |
+
# Parse uploaded file
|
| 316 |
+
if uploaded_file:
|
| 317 |
+
try:
|
| 318 |
+
with open(uploaded_file, 'r') as f:
|
| 319 |
+
content = f.read()
|
| 320 |
+
parser = DependencyParser()
|
| 321 |
+
deps = parser.parse_requirements_text(content)
|
| 322 |
+
all_dependencies.extend(deps)
|
| 323 |
+
except Exception as e:
|
| 324 |
+
return f"Error reading file: {str(e)}", ""
|
| 325 |
+
|
| 326 |
+
if not all_dependencies:
|
| 327 |
+
return "Please provide at least one input: library list, requirements text, or uploaded file.", ""
|
| 328 |
+
|
| 329 |
+
# Build dependency graph
|
| 330 |
+
resolver = DependencyResolver(python_version=python_version, platform=os_type, device=device)
|
| 331 |
+
deep_mode = (mode == "Deep (with transitive dependencies)")
|
| 332 |
+
graph = resolver.build_dependency_graph(all_dependencies, deep_mode=deep_mode)
|
| 333 |
+
|
| 334 |
+
# Check compatibility
|
| 335 |
+
is_compatible, issues = resolver.check_compatibility(graph)
|
| 336 |
+
|
| 337 |
+
# Resolve dependencies
|
| 338 |
+
resolved_text, warnings = resolver.resolve_dependencies(all_dependencies, resolution_strategy)
|
| 339 |
+
|
| 340 |
+
# Build output message
|
| 341 |
+
output_parts = []
|
| 342 |
+
output_parts.append("## Dependency Analysis Results\n\n")
|
| 343 |
+
|
| 344 |
+
if issues:
|
| 345 |
+
output_parts.append("### ⚠️ Compatibility Issues Found:\n")
|
| 346 |
+
for issue in issues:
|
| 347 |
+
output_parts.append(f"- {issue}\n")
|
| 348 |
+
output_parts.append("\n")
|
| 349 |
+
|
| 350 |
+
if warnings:
|
| 351 |
+
output_parts.append("### ℹ️ Warnings:\n")
|
| 352 |
+
for warning in warnings:
|
| 353 |
+
output_parts.append(f"- {warning}\n")
|
| 354 |
+
output_parts.append("\n")
|
| 355 |
+
|
| 356 |
+
if is_compatible and not issues:
|
| 357 |
+
output_parts.append("### ✅ No compatibility issues detected!\n\n")
|
| 358 |
+
|
| 359 |
+
output_parts.append(f"### 📦 Resolved Requirements ({len(all_dependencies)} packages):\n")
|
| 360 |
+
output_parts.append("```\n")
|
| 361 |
+
output_parts.append(resolved_text)
|
| 362 |
+
output_parts.append("\n```\n")
|
| 363 |
+
|
| 364 |
+
return ''.join(output_parts), resolved_text
|
| 365 |
+
|
| 366 |
+
|
| 367 |
+
# Gradio Interface
|
| 368 |
+
def create_interface():
|
| 369 |
+
"""Create and return the Gradio interface."""
|
| 370 |
+
|
| 371 |
+
with gr.Blocks(title="Python Dependency Compatibility Board", theme=gr.themes.Soft()) as app:
|
| 372 |
+
gr.Markdown("""
|
| 373 |
+
# 🐍 Python Dependency Compatibility Board
|
| 374 |
+
|
| 375 |
+
Analyze and resolve Python package dependencies. Input your requirements in multiple ways:
|
| 376 |
+
- List library names (one per line)
|
| 377 |
+
- Paste requirements.txt content
|
| 378 |
+
- Upload a requirements.txt file
|
| 379 |
+
|
| 380 |
+
The tool will check for compatibility issues and generate a resolved requirements.txt file.
|
| 381 |
+
""")
|
| 382 |
+
|
| 383 |
+
with gr.Row():
|
| 384 |
+
with gr.Column(scale=1):
|
| 385 |
+
gr.Markdown("### Input Methods")
|
| 386 |
+
|
| 387 |
+
library_input = gr.Textbox(
|
| 388 |
+
label="Library Names (one per line)",
|
| 389 |
+
placeholder="pandas\ntorch\nlangchain\nfastapi",
|
| 390 |
+
lines=5,
|
| 391 |
+
info="Enter package names, one per line"
|
| 392 |
+
)
|
| 393 |
+
|
| 394 |
+
requirements_input = gr.Textbox(
|
| 395 |
+
label="Requirements.txt Content",
|
| 396 |
+
placeholder="pandas==2.0.3\ntorch>=2.0.0\nlangchain==0.1.0",
|
| 397 |
+
lines=10,
|
| 398 |
+
info="Paste your requirements.txt content here"
|
| 399 |
+
)
|
| 400 |
+
|
| 401 |
+
file_upload = gr.File(
|
| 402 |
+
label="Upload requirements.txt",
|
| 403 |
+
file_types=[".txt"],
|
| 404 |
+
info="Upload a requirements.txt file"
|
| 405 |
+
)
|
| 406 |
+
|
| 407 |
+
with gr.Column(scale=1):
|
| 408 |
+
gr.Markdown("### Environment Settings")
|
| 409 |
+
|
| 410 |
+
python_version = gr.Dropdown(
|
| 411 |
+
choices=["3.8", "3.9", "3.10", "3.11", "3.12"],
|
| 412 |
+
value="3.10",
|
| 413 |
+
label="Python Version",
|
| 414 |
+
info="Target Python version"
|
| 415 |
+
)
|
| 416 |
+
|
| 417 |
+
device = gr.Dropdown(
|
| 418 |
+
choices=["CPU only", "NVIDIA GPU (CUDA)", "Apple Silicon (MPS)", "Custom / other"],
|
| 419 |
+
value="CPU only",
|
| 420 |
+
label="Device",
|
| 421 |
+
info="Target device/platform"
|
| 422 |
+
)
|
| 423 |
+
|
| 424 |
+
os_type = gr.Dropdown(
|
| 425 |
+
choices=["Any / generic", "Linux (x86_64)", "Windows (x86_64)", "MacOS (Intel)", "MacOS (Apple Silicon)"],
|
| 426 |
+
value="Any / generic",
|
| 427 |
+
label="Operating System",
|
| 428 |
+
info="Target operating system"
|
| 429 |
+
)
|
| 430 |
+
|
| 431 |
+
mode = gr.Radio(
|
| 432 |
+
choices=["Quick (top-level only)", "Deep (with transitive dependencies)"],
|
| 433 |
+
value="Quick (top-level only)",
|
| 434 |
+
label="Analysis Mode",
|
| 435 |
+
info="Quick mode is faster, Deep mode includes all dependencies"
|
| 436 |
+
)
|
| 437 |
+
|
| 438 |
+
resolution_strategy = gr.Dropdown(
|
| 439 |
+
choices=["latest_compatible", "stable/pinned", "keep_existing_pins", "minimal_changes"],
|
| 440 |
+
value="latest_compatible",
|
| 441 |
+
label="Resolution Strategy",
|
| 442 |
+
info="How to resolve version conflicts"
|
| 443 |
+
)
|
| 444 |
+
|
| 445 |
+
process_btn = gr.Button("Analyze & Resolve Dependencies", variant="primary", size="lg")
|
| 446 |
+
|
| 447 |
+
with gr.Row():
|
| 448 |
+
output_display = gr.Markdown(
|
| 449 |
+
label="Analysis Results",
|
| 450 |
+
value="Results will appear here after processing..."
|
| 451 |
+
)
|
| 452 |
+
|
| 453 |
+
with gr.Row():
|
| 454 |
+
with gr.Column():
|
| 455 |
+
resolved_output = gr.Textbox(
|
| 456 |
+
label="Resolved requirements.txt",
|
| 457 |
+
lines=15,
|
| 458 |
+
info="Copy this content to use as your requirements.txt file"
|
| 459 |
+
)
|
| 460 |
+
|
| 461 |
+
download_btn = gr.File(
|
| 462 |
+
label="Download requirements.txt",
|
| 463 |
+
value=None,
|
| 464 |
+
visible=True
|
| 465 |
+
)
|
| 466 |
+
|
| 467 |
+
def process_and_download(*args):
|
| 468 |
+
result_text, resolved_text = process_dependencies(*args)
|
| 469 |
+
|
| 470 |
+
# Create a temporary file for download
|
| 471 |
+
temp_file = None
|
| 472 |
+
if resolved_text and resolved_text.strip():
|
| 473 |
+
try:
|
| 474 |
+
with tempfile.NamedTemporaryFile(mode='w', suffix='.txt', delete=False) as f:
|
| 475 |
+
f.write(resolved_text)
|
| 476 |
+
temp_file = f.name
|
| 477 |
+
except Exception as e:
|
| 478 |
+
print(f"Error creating download file: {e}")
|
| 479 |
+
|
| 480 |
+
return result_text, resolved_text, temp_file if temp_file else None
|
| 481 |
+
|
| 482 |
+
process_btn.click(
|
| 483 |
+
fn=process_and_download,
|
| 484 |
+
inputs=[library_input, requirements_input, file_upload, python_version, device, os_type, mode, resolution_strategy],
|
| 485 |
+
outputs=[output_display, resolved_output, download_btn]
|
| 486 |
+
)
|
| 487 |
+
|
| 488 |
+
gr.Markdown("""
|
| 489 |
+
---
|
| 490 |
+
### How to Use
|
| 491 |
+
|
| 492 |
+
1. **Input your dependencies** using any of the three methods (or combine them)
|
| 493 |
+
2. **Configure your environment** (Python version, device, OS)
|
| 494 |
+
3. **Choose analysis mode**: Quick for fast results, Deep for complete dependency tree
|
| 495 |
+
4. **Select resolution strategy**: How to handle version conflicts
|
| 496 |
+
5. **Click "Analyze & Resolve Dependencies"**
|
| 497 |
+
6. **Review the results** and download the resolved requirements.txt
|
| 498 |
+
|
| 499 |
+
### Features
|
| 500 |
+
|
| 501 |
+
- ✅ Parse multiple input formats
|
| 502 |
+
- ✅ Detect version conflicts
|
| 503 |
+
- ✅ Check compatibility across dependency graph
|
| 504 |
+
- ✅ Resolve dependencies using pip
|
| 505 |
+
- ✅ Generate clean, pip-compatible requirements.txt
|
| 506 |
+
- ✅ Environment-aware (Python version, platform, device)
|
| 507 |
+
""")
|
| 508 |
+
|
| 509 |
+
return app
|
| 510 |
+
|
| 511 |
+
|
| 512 |
+
if __name__ == "__main__":
|
| 513 |
+
app = create_interface()
|
| 514 |
+
# For Hugging Face Spaces, use default launch settings
|
| 515 |
+
# For local development, you can customize
|
| 516 |
+
app.launch()
|
| 517 |
+
|
synthetic_requirements_dataset.json
ADDED
|
@@ -0,0 +1,722 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
[
|
| 2 |
+
{
|
| 3 |
+
"id": 1,
|
| 4 |
+
"requirements": "pillow==10.0.0\nseaborn==0.13.0\nscipy==1.7.3\nsqlalchemy\nweaviate-client==3.21.0\nchromadb==0.4.23\nfastapi==0.78.0\nopenai==0.28.0\nmatplotlib==3.7.2\ngunicorn==20.1.0",
|
| 5 |
+
"label": "valid",
|
| 6 |
+
"conflict_reason": null
|
| 7 |
+
},
|
| 8 |
+
{
|
| 9 |
+
"id": 2,
|
| 10 |
+
"requirements": "uvicorn[standard]\ngunicorn==20.1.0\ntiktoken==0.5.1\nlangchain==0.1.0\nsqlalchemy==2.0.20\nscikit-learn\nuvicorn[standard]==0.23.2",
|
| 11 |
+
"label": "invalid",
|
| 12 |
+
"conflict_reason": "uvicorn[standard] is pinned to multiple incompatible versions."
|
| 13 |
+
},
|
| 14 |
+
{
|
| 15 |
+
"id": 3,
|
| 16 |
+
"requirements": "keras==3.0.0\ncelery\nlangchain==0.1.0\ntorchvision==0.16.0\nhttpx==0.23.0",
|
| 17 |
+
"label": "valid",
|
| 18 |
+
"conflict_reason": null
|
| 19 |
+
},
|
| 20 |
+
{
|
| 21 |
+
"id": 4,
|
| 22 |
+
"requirements": "gunicorn\npsycopg2-binary\nlangchain==0.1.0\ntorchvision==0.9.0\npillow==9.0.1\nhttpx==0.23.0\nuvloop==0.17.0\npytorch-lightning==2.2.0\ngunicorn==20.1.0",
|
| 23 |
+
"label": "invalid",
|
| 24 |
+
"conflict_reason": "gunicorn is pinned to multiple incompatible versions."
|
| 25 |
+
},
|
| 26 |
+
{
|
| 27 |
+
"id": 5,
|
| 28 |
+
"requirements": "pydantic\nuvicorn[standard]==0.17.6\nseaborn==0.13.0\nalembic\nlangchain\nchromadb==0.4.8\nbeautifulsoup4==4.10.0\nhttpx\nscrapy==2.5.1\nmatplotlib",
|
| 29 |
+
"label": "valid",
|
| 30 |
+
"conflict_reason": null
|
| 31 |
+
},
|
| 32 |
+
{
|
| 33 |
+
"id": 6,
|
| 34 |
+
"requirements": "celery==5.3.4\ntorch==1.8.0\npandas\npytorch-lightning==2.2.0\nfastapi==0.99.0\nredis==4.3.4\nweaviate-client==3.21.0\nscipy",
|
| 35 |
+
"label": "invalid",
|
| 36 |
+
"conflict_reason": "pytorch-lightning>=2.0 is assumed to require torch>=2.0 but torch==1.8.0 is pinned."
|
| 37 |
+
},
|
| 38 |
+
{
|
| 39 |
+
"id": 7,
|
| 40 |
+
"requirements": "torch\nstarlette\nuvloop==0.17.0\nrequests\nscrapy==2.9.0\nplotly==5.17.0",
|
| 41 |
+
"label": "valid",
|
| 42 |
+
"conflict_reason": null
|
| 43 |
+
},
|
| 44 |
+
{
|
| 45 |
+
"id": 8,
|
| 46 |
+
"requirements": "jax==0.3.25\nuvicorn[standard]==0.23.2\nscikit-learn==0.24.2\nuvloop==0.17.0\nredis==5.0.1\nbeautifulsoup4==4.12.2\nsqlalchemy\ntensorflow\njax==0.4.13",
|
| 47 |
+
"label": "invalid",
|
| 48 |
+
"conflict_reason": "jax is pinned to multiple incompatible versions."
|
| 49 |
+
},
|
| 50 |
+
{
|
| 51 |
+
"id": 9,
|
| 52 |
+
"requirements": "scipy==1.8.1\ncelery==5.3.4\nalembic==1.7.7\ntensorflow==2.9.0\npydantic\ntiktoken==0.5.1",
|
| 53 |
+
"label": "valid",
|
| 54 |
+
"conflict_reason": null
|
| 55 |
+
},
|
| 56 |
+
{
|
| 57 |
+
"id": 10,
|
| 58 |
+
"requirements": "pydantic\nstarlette==0.27.0\nlangchain\npillow==9.0.1\nuvloop==0.17.0\npydantic==1.10.13",
|
| 59 |
+
"label": "invalid",
|
| 60 |
+
"conflict_reason": "pydantic is pinned to multiple incompatible versions."
|
| 61 |
+
},
|
| 62 |
+
{
|
| 63 |
+
"id": 11,
|
| 64 |
+
"requirements": "numpy\nscipy==1.10.0\nchromadb==0.4.8\nhttpx==0.25.1\nrequests==2.31.0\nopenai\npandas==1.3.5\nmatplotlib",
|
| 65 |
+
"label": "valid",
|
| 66 |
+
"conflict_reason": null
|
| 67 |
+
},
|
| 68 |
+
{
|
| 69 |
+
"id": 12,
|
| 70 |
+
"requirements": "fastapi==0.99.0\nrequests==2.27.1\nalembic==1.12.0\nflax==0.5.1\ntorchaudio==0.8.0\ntiktoken\nplotly==5.6.0\nopenai\nfastapi==0.78.0",
|
| 71 |
+
"label": "invalid",
|
| 72 |
+
"conflict_reason": "fastapi is pinned to multiple incompatible versions."
|
| 73 |
+
},
|
| 74 |
+
{
|
| 75 |
+
"id": 13,
|
| 76 |
+
"requirements": "sqlalchemy==2.0.20\ngunicorn==20.1.0\nhttpx==0.23.0\nopencv-python\nscipy==1.7.3\nchromadb==0.4.23\nscrapy==2.5.1\ncelery\nlangchain",
|
| 77 |
+
"label": "valid",
|
| 78 |
+
"conflict_reason": null
|
| 79 |
+
},
|
| 80 |
+
{
|
| 81 |
+
"id": 14,
|
| 82 |
+
"requirements": "psycopg2-binary==2.9.3\nopencv-python\nmatplotlib==3.5.1\ntensorflow==2.9.0\nuvloop\npytorch-lightning==2.0.0\npydantic\ngunicorn==20.1.0\npsycopg2-binary==2.9.3",
|
| 83 |
+
"label": "invalid",
|
| 84 |
+
"conflict_reason": "psycopg2-binary is pinned to multiple incompatible versions."
|
| 85 |
+
},
|
| 86 |
+
{
|
| 87 |
+
"id": 15,
|
| 88 |
+
"requirements": "scipy\nrequests\nbeautifulsoup4\nkeras\njax==0.4.13\npillow==10.0.0\nmatplotlib==3.5.1",
|
| 89 |
+
"label": "valid",
|
| 90 |
+
"conflict_reason": null
|
| 91 |
+
},
|
| 92 |
+
{
|
| 93 |
+
"id": 16,
|
| 94 |
+
"requirements": "starlette\nsqlalchemy==1.4.46\njax==0.4.13\nplotly\nfastapi==0.99.0\nscrapy==2.5.1\nstarlette==0.27.0",
|
| 95 |
+
"label": "invalid",
|
| 96 |
+
"conflict_reason": "starlette is pinned to multiple incompatible versions."
|
| 97 |
+
},
|
| 98 |
+
{
|
| 99 |
+
"id": 17,
|
| 100 |
+
"requirements": "keras\ntorchaudio==2.1.0\nfastapi==0.78.0\nopenai==1.6.0\npillow==10.0.0\nopencv-python==4.8.0.76\nalembic==1.12.0\nseaborn==0.11.2",
|
| 101 |
+
"label": "valid",
|
| 102 |
+
"conflict_reason": null
|
| 103 |
+
},
|
| 104 |
+
{
|
| 105 |
+
"id": 18,
|
| 106 |
+
"requirements": "numpy==1.21.0\nbeautifulsoup4==4.10.0\nhttpx==0.25.1\nscipy\nredis==4.3.4\nnumpy==1.22.0",
|
| 107 |
+
"label": "invalid",
|
| 108 |
+
"conflict_reason": "numpy is pinned to multiple incompatible versions."
|
| 109 |
+
},
|
| 110 |
+
{
|
| 111 |
+
"id": 19,
|
| 112 |
+
"requirements": "starlette==0.19.1\ntensorflow==2.9.0\nscipy==1.7.3\nrequests==2.31.0",
|
| 113 |
+
"label": "valid",
|
| 114 |
+
"conflict_reason": null
|
| 115 |
+
},
|
| 116 |
+
{
|
| 117 |
+
"id": 20,
|
| 118 |
+
"requirements": "pillow==9.0.1\nredis==5.0.1\nweaviate-client==3.21.0\nscipy==1.8.1\ntorchvision==0.9.0\ntorch==1.8.0\nopencv-python==4.5.5.64\nuvicorn[standard]==0.23.2\npillow==10.0.0",
|
| 119 |
+
"label": "invalid",
|
| 120 |
+
"conflict_reason": "pillow is pinned to multiple incompatible versions."
|
| 121 |
+
},
|
| 122 |
+
{
|
| 123 |
+
"id": 21,
|
| 124 |
+
"requirements": "torch\nchromadb==0.4.8\nsqlalchemy\nrequests==2.27.1\nseaborn==0.11.2\npillow==9.0.1",
|
| 125 |
+
"label": "valid",
|
| 126 |
+
"conflict_reason": null
|
| 127 |
+
},
|
| 128 |
+
{
|
| 129 |
+
"id": 22,
|
| 130 |
+
"requirements": "scrapy\nseaborn==0.13.0\nscipy\nopenai==0.28.0\npillow==9.0.1\nscrapy==2.5.1",
|
| 131 |
+
"label": "invalid",
|
| 132 |
+
"conflict_reason": "scrapy is pinned to multiple incompatible versions."
|
| 133 |
+
},
|
| 134 |
+
{
|
| 135 |
+
"id": 23,
|
| 136 |
+
"requirements": "pillow==10.0.0\nchromadb==0.4.23\npytorch-lightning==1.5.0\nscikit-learn==1.0.2\nopenai==0.28.0",
|
| 137 |
+
"label": "valid",
|
| 138 |
+
"conflict_reason": null
|
| 139 |
+
},
|
| 140 |
+
{
|
| 141 |
+
"id": 24,
|
| 142 |
+
"requirements": "fastapi==0.78.0\nscipy==1.7.3\nmatplotlib==3.5.1\nlangchain==0.0.350\nopencv-python==4.8.0.76\nuvloop\nstarlette==0.27.0\nflax==0.5.1\ncelery==5.2.7\nhttpx==0.23.0\nfastapi==0.99.0",
|
| 143 |
+
"label": "invalid",
|
| 144 |
+
"conflict_reason": "fastapi is pinned to multiple incompatible versions."
|
| 145 |
+
},
|
| 146 |
+
{
|
| 147 |
+
"id": 25,
|
| 148 |
+
"requirements": "langchain\nplotly==5.6.0\nseaborn\npandas==1.3.5\nchromadb==0.4.8\nhttpx==0.23.0\nopencv-python==4.5.5.64\ntensorflow==2.15.0\nscipy==1.7.3\nflax==0.7.2",
|
| 149 |
+
"label": "valid",
|
| 150 |
+
"conflict_reason": null
|
| 151 |
+
},
|
| 152 |
+
{
|
| 153 |
+
"id": 26,
|
| 154 |
+
"requirements": "starlette==0.19.1\nkeras==3.0.0\nflax\nopenai==0.28.0\nstarlette==0.27.0",
|
| 155 |
+
"label": "invalid",
|
| 156 |
+
"conflict_reason": "starlette is pinned to multiple incompatible versions."
|
| 157 |
+
},
|
| 158 |
+
{
|
| 159 |
+
"id": 27,
|
| 160 |
+
"requirements": "psycopg2-binary\ngunicorn==20.1.0\nhttpx==0.23.0\nflax==0.5.1\ntorchvision==0.9.0\ntorchaudio==0.13.1",
|
| 161 |
+
"label": "valid",
|
| 162 |
+
"conflict_reason": null
|
| 163 |
+
},
|
| 164 |
+
{
|
| 165 |
+
"id": 28,
|
| 166 |
+
"requirements": "tensorflow==1.15.0\npandas==2.0.3\nmatplotlib\ntorch==1.13.1\nredis==4.3.4\nuvloop==0.17.0\nuvicorn[standard]==0.23.2\nkeras==3.0.0\nalembic\ntiktoken==0.5.1",
|
| 167 |
+
"label": "invalid",
|
| 168 |
+
"conflict_reason": "keras==3.0.0 is assumed to require TensorFlow 2.x but tensorflow==1.15.0 is pinned."
|
| 169 |
+
},
|
| 170 |
+
{
|
| 171 |
+
"id": 29,
|
| 172 |
+
"requirements": "pytorch-lightning==2.0.0\ngunicorn==20.1.0\nkeras==2.9.0\nlangchain==0.0.350\nmatplotlib==3.5.1\nflax==0.5.1",
|
| 173 |
+
"label": "valid",
|
| 174 |
+
"conflict_reason": null
|
| 175 |
+
},
|
| 176 |
+
{
|
| 177 |
+
"id": 30,
|
| 178 |
+
"requirements": "langchain==0.0.350\nopenai\nnumpy==1.22.0\nuvicorn[standard]==0.17.6\nrequests==2.31.0\npytorch-lightning\npillow\nhttpx==0.25.1\nkeras==3.0.0\nalembic\nlangchain==0.1.0",
|
| 179 |
+
"label": "invalid",
|
| 180 |
+
"conflict_reason": "langchain is pinned to multiple incompatible versions."
|
| 181 |
+
},
|
| 182 |
+
{
|
| 183 |
+
"id": 31,
|
| 184 |
+
"requirements": "psycopg2-binary==2.9.3\nfastapi==0.78.0\ntorchvision==0.9.0\nscipy\ntorch==1.13.1\nsqlalchemy==1.4.46",
|
| 185 |
+
"label": "valid",
|
| 186 |
+
"conflict_reason": null
|
| 187 |
+
},
|
| 188 |
+
{
|
| 189 |
+
"id": 32,
|
| 190 |
+
"requirements": "uvicorn[standard]\ncelery==5.2.7\ntorchaudio==2.1.0\nseaborn==0.13.0\nmatplotlib==3.7.2\nalembic==1.7.7\nkeras==3.0.0\nstarlette==0.27.0\nflax==0.5.1\nuvicorn[standard]==0.23.2",
|
| 191 |
+
"label": "invalid",
|
| 192 |
+
"conflict_reason": "uvicorn[standard] is pinned to multiple incompatible versions."
|
| 193 |
+
},
|
| 194 |
+
{
|
| 195 |
+
"id": 33,
|
| 196 |
+
"requirements": "chromadb==0.4.8\nscikit-learn==0.24.2\nuvicorn[standard]\npandas\nscrapy==2.5.1\ntiktoken==0.5.1\nfastapi\nlangchain\nnumpy==1.22.0",
|
| 197 |
+
"label": "valid",
|
| 198 |
+
"conflict_reason": null
|
| 199 |
+
},
|
| 200 |
+
{
|
| 201 |
+
"id": 34,
|
| 202 |
+
"requirements": "pillow==10.0.0\njax==0.3.25\nbeautifulsoup4==4.10.0\nseaborn==0.11.2\nplotly==5.17.0\nkeras==2.9.0\npillow==9.0.1",
|
| 203 |
+
"label": "invalid",
|
| 204 |
+
"conflict_reason": "pillow is pinned to multiple incompatible versions."
|
| 205 |
+
},
|
| 206 |
+
{
|
| 207 |
+
"id": 35,
|
| 208 |
+
"requirements": "fastapi==0.78.0\nlangchain==0.0.350\nuvicorn[standard]==0.23.2\nscikit-learn==1.2.2\npillow==10.0.0\nscipy==1.8.1\npytorch-lightning==1.5.0\nhttpx==0.25.1\nchromadb==0.4.23\nplotly==5.17.0",
|
| 209 |
+
"label": "valid",
|
| 210 |
+
"conflict_reason": null
|
| 211 |
+
},
|
| 212 |
+
{
|
| 213 |
+
"id": 36,
|
| 214 |
+
"requirements": "scipy==1.8.1\nuvloop\nscikit-learn==1.0.2\njax==0.4.13\nscrapy==2.5.1\nnumpy==1.22.0\nscipy==1.7.3",
|
| 215 |
+
"label": "invalid",
|
| 216 |
+
"conflict_reason": "scipy is pinned to multiple incompatible versions."
|
| 217 |
+
},
|
| 218 |
+
{
|
| 219 |
+
"id": 37,
|
| 220 |
+
"requirements": "httpx\nuvloop\ncelery==5.2.7\nopenai==1.6.0\ngunicorn==20.1.0\nsqlalchemy==2.0.20\nnumpy\nchromadb\npandas==1.4.4\ntorchaudio==0.8.0",
|
| 221 |
+
"label": "valid",
|
| 222 |
+
"conflict_reason": null
|
| 223 |
+
},
|
| 224 |
+
{
|
| 225 |
+
"id": 38,
|
| 226 |
+
"requirements": "chromadb==0.4.8\nopenai==0.28.0\nlangchain==0.0.350\npytorch-lightning==1.5.0\ntorchvision==0.16.0\nweaviate-client\nredis==4.3.4\nchromadb==0.4.23",
|
| 227 |
+
"label": "invalid",
|
| 228 |
+
"conflict_reason": "chromadb is pinned to multiple incompatible versions."
|
| 229 |
+
},
|
| 230 |
+
{
|
| 231 |
+
"id": 39,
|
| 232 |
+
"requirements": "alembic==1.12.0\nscrapy==2.5.1\nhttpx==0.25.1\nplotly==5.17.0\ntorchaudio==0.13.1",
|
| 233 |
+
"label": "valid",
|
| 234 |
+
"conflict_reason": null
|
| 235 |
+
},
|
| 236 |
+
{
|
| 237 |
+
"id": 40,
|
| 238 |
+
"requirements": "pytorch-lightning==1.5.0\ntorchaudio==2.1.0\nflax==0.5.1\nseaborn==0.13.0\npytorch-lightning==2.0.0",
|
| 239 |
+
"label": "invalid",
|
| 240 |
+
"conflict_reason": "pytorch-lightning is pinned to multiple incompatible versions."
|
| 241 |
+
},
|
| 242 |
+
{
|
| 243 |
+
"id": 41,
|
| 244 |
+
"requirements": "alembic\npytorch-lightning==2.0.0\nscrapy==2.5.1\nstarlette==0.27.0\npsycopg2-binary\nredis==4.3.4\nopencv-python==4.8.0.76",
|
| 245 |
+
"label": "valid",
|
| 246 |
+
"conflict_reason": null
|
| 247 |
+
},
|
| 248 |
+
{
|
| 249 |
+
"id": 42,
|
| 250 |
+
"requirements": "pandas==1.4.4\ntensorflow==1.15.0\nmatplotlib==3.5.1\nkeras==3.0.0\nflax==0.7.2\ntorch==1.8.0\nchromadb==0.4.8\npillow==9.0.1\ntorchaudio==0.13.1",
|
| 251 |
+
"label": "invalid",
|
| 252 |
+
"conflict_reason": "keras==3.0.0 is assumed to require TensorFlow 2.x but tensorflow==1.15.0 is pinned."
|
| 253 |
+
},
|
| 254 |
+
{
|
| 255 |
+
"id": 43,
|
| 256 |
+
"requirements": "numpy==1.23.5\nstarlette\njax==0.4.13\nchromadb==0.4.23\ntiktoken==0.5.1\nhttpx",
|
| 257 |
+
"label": "valid",
|
| 258 |
+
"conflict_reason": null
|
| 259 |
+
},
|
| 260 |
+
{
|
| 261 |
+
"id": 44,
|
| 262 |
+
"requirements": "pydantic==1.10.13\nbeautifulsoup4==4.10.0\nlangchain==0.0.350\nstarlette==0.27.0\nsqlalchemy==1.4.46\nscrapy==2.5.1\ngunicorn\ntorchvision==0.9.0\nkeras==3.0.0\npydantic==2.3.0",
|
| 263 |
+
"label": "invalid",
|
| 264 |
+
"conflict_reason": "pydantic is pinned to multiple incompatible versions."
|
| 265 |
+
},
|
| 266 |
+
{
|
| 267 |
+
"id": 45,
|
| 268 |
+
"requirements": "plotly==5.17.0\nkeras==2.9.0\nscrapy==2.9.0\nrequests==2.27.1\nflax\nbeautifulsoup4==4.10.0\nopencv-python",
|
| 269 |
+
"label": "valid",
|
| 270 |
+
"conflict_reason": null
|
| 271 |
+
},
|
| 272 |
+
{
|
| 273 |
+
"id": 46,
|
| 274 |
+
"requirements": "flax==0.5.1\npydantic==2.3.0\npandas\njax==0.4.13\ngunicorn==20.1.0\nflax==0.7.2",
|
| 275 |
+
"label": "invalid",
|
| 276 |
+
"conflict_reason": "flax is pinned to multiple incompatible versions."
|
| 277 |
+
},
|
| 278 |
+
{
|
| 279 |
+
"id": 47,
|
| 280 |
+
"requirements": "scipy==1.8.1\nchromadb==0.4.23\ntorchvision\nscrapy==2.9.0",
|
| 281 |
+
"label": "valid",
|
| 282 |
+
"conflict_reason": null
|
| 283 |
+
},
|
| 284 |
+
{
|
| 285 |
+
"id": 48,
|
| 286 |
+
"requirements": "chromadb==0.4.23\nmatplotlib==3.5.1\nnumpy\nrequests==2.31.0\npsycopg2-binary==2.9.3\ntiktoken==0.5.1\npandas==2.0.3\npillow==10.0.0\nalembic==1.7.7\nweaviate-client==3.21.0\nchromadb==0.4.8",
|
| 287 |
+
"label": "invalid",
|
| 288 |
+
"conflict_reason": "chromadb is pinned to multiple incompatible versions."
|
| 289 |
+
},
|
| 290 |
+
{
|
| 291 |
+
"id": 49,
|
| 292 |
+
"requirements": "pytorch-lightning==2.2.0\nuvloop==0.17.0\nbeautifulsoup4==4.10.0\npydantic==1.10.13\ncelery==5.2.7",
|
| 293 |
+
"label": "valid",
|
| 294 |
+
"conflict_reason": null
|
| 295 |
+
},
|
| 296 |
+
{
|
| 297 |
+
"id": 50,
|
| 298 |
+
"requirements": "opencv-python==4.8.0.76\npsycopg2-binary==2.9.3\ngunicorn==20.1.0\nhttpx==0.25.1\nchromadb==0.4.23\nmatplotlib==3.7.2\nopencv-python==4.5.5.64",
|
| 299 |
+
"label": "invalid",
|
| 300 |
+
"conflict_reason": "opencv-python is pinned to multiple incompatible versions."
|
| 301 |
+
},
|
| 302 |
+
{
|
| 303 |
+
"id": 51,
|
| 304 |
+
"requirements": "gunicorn\nplotly==5.6.0\nalembic==1.12.0\nflax==0.7.2",
|
| 305 |
+
"label": "valid",
|
| 306 |
+
"conflict_reason": null
|
| 307 |
+
},
|
| 308 |
+
{
|
| 309 |
+
"id": 52,
|
| 310 |
+
"requirements": "plotly==5.17.0\nalembic==1.7.7\nsqlalchemy==2.0.20\ncelery==5.2.7\nplotly==5.6.0",
|
| 311 |
+
"label": "invalid",
|
| 312 |
+
"conflict_reason": "plotly is pinned to multiple incompatible versions."
|
| 313 |
+
},
|
| 314 |
+
{
|
| 315 |
+
"id": 53,
|
| 316 |
+
"requirements": "uvloop==0.17.0\npillow==10.0.0\nopencv-python==4.5.5.64\nopenai==1.6.0\nscipy\nseaborn==0.11.2\nhttpx==0.23.0\nrequests\nmatplotlib==3.7.2\nlangchain==0.1.0",
|
| 317 |
+
"label": "valid",
|
| 318 |
+
"conflict_reason": null
|
| 319 |
+
},
|
| 320 |
+
{
|
| 321 |
+
"id": 54,
|
| 322 |
+
"requirements": "torchaudio==0.13.1\nfastapi==0.99.0\njax==0.3.25\nlangchain\ntorch==1.13.1\nplotly==5.17.0\nhttpx==0.25.1\ngunicorn==20.1.0\ntensorflow==2.9.0\nredis==4.3.4\ntorchaudio==2.1.0",
|
| 323 |
+
"label": "invalid",
|
| 324 |
+
"conflict_reason": "torchaudio is pinned to multiple incompatible versions."
|
| 325 |
+
},
|
| 326 |
+
{
|
| 327 |
+
"id": 55,
|
| 328 |
+
"requirements": "pandas==1.3.5\nmatplotlib==3.7.2\ntiktoken\nredis==4.3.4\ntensorflow\nscipy==1.7.3",
|
| 329 |
+
"label": "valid",
|
| 330 |
+
"conflict_reason": null
|
| 331 |
+
},
|
| 332 |
+
{
|
| 333 |
+
"id": 56,
|
| 334 |
+
"requirements": "alembic\nseaborn==0.11.2\nkeras==3.0.0\nmatplotlib==3.5.1\nrequests==2.27.1\nalembic==1.12.0",
|
| 335 |
+
"label": "invalid",
|
| 336 |
+
"conflict_reason": "alembic is pinned to multiple incompatible versions."
|
| 337 |
+
},
|
| 338 |
+
{
|
| 339 |
+
"id": 57,
|
| 340 |
+
"requirements": "scrapy==2.5.1\ntorchvision==0.14.1\ngunicorn==20.1.0\nflax==0.7.2\nsqlalchemy==1.4.46",
|
| 341 |
+
"label": "valid",
|
| 342 |
+
"conflict_reason": null
|
| 343 |
+
},
|
| 344 |
+
{
|
| 345 |
+
"id": 58,
|
| 346 |
+
"requirements": "gunicorn==20.1.0\nkeras\nscipy==1.8.1\nflax==0.7.2\nweaviate-client==3.21.0\ncelery==5.2.7\nlangchain==0.0.350\ngunicorn==20.1.0",
|
| 347 |
+
"label": "invalid",
|
| 348 |
+
"conflict_reason": "gunicorn is pinned to multiple incompatible versions."
|
| 349 |
+
},
|
| 350 |
+
{
|
| 351 |
+
"id": 59,
|
| 352 |
+
"requirements": "redis==5.0.1\nbeautifulsoup4==4.12.2\nnumpy\ntorchvision==0.14.1\ntorchaudio==0.8.0\nplotly==5.6.0\nrequests\nflax==0.5.1\npsycopg2-binary==2.9.3\nstarlette==0.19.1",
|
| 353 |
+
"label": "valid",
|
| 354 |
+
"conflict_reason": null
|
| 355 |
+
},
|
| 356 |
+
{
|
| 357 |
+
"id": 60,
|
| 358 |
+
"requirements": "torch==1.13.1\nseaborn==0.11.2\nscikit-learn\nlangchain\nscrapy\nsqlalchemy\nbeautifulsoup4==4.12.2\nkeras==3.0.0\npsycopg2-binary==2.9.3\nplotly==5.17.0\ntorch==1.8.0",
|
| 359 |
+
"label": "invalid",
|
| 360 |
+
"conflict_reason": "torch is pinned to multiple incompatible versions."
|
| 361 |
+
},
|
| 362 |
+
{
|
| 363 |
+
"id": 61,
|
| 364 |
+
"requirements": "matplotlib==3.5.1\nsqlalchemy\npandas==2.0.3\nredis==5.0.1\ntorchaudio==0.8.0\ntorchvision==0.9.0\njax\nflax==0.5.1",
|
| 365 |
+
"label": "valid",
|
| 366 |
+
"conflict_reason": null
|
| 367 |
+
},
|
| 368 |
+
{
|
| 369 |
+
"id": 62,
|
| 370 |
+
"requirements": "beautifulsoup4==4.10.0\npandas==1.4.4\ntiktoken==0.5.1\nmatplotlib==3.5.1\nscipy==1.8.1\nbeautifulsoup4==4.12.2",
|
| 371 |
+
"label": "invalid",
|
| 372 |
+
"conflict_reason": "beautifulsoup4 is pinned to multiple incompatible versions."
|
| 373 |
+
},
|
| 374 |
+
{
|
| 375 |
+
"id": 63,
|
| 376 |
+
"requirements": "uvloop\nnumpy==1.22.0\njax\ngunicorn==20.1.0\npillow==9.0.1\nflax==0.7.2\ntorch==1.13.1",
|
| 377 |
+
"label": "valid",
|
| 378 |
+
"conflict_reason": null
|
| 379 |
+
},
|
| 380 |
+
{
|
| 381 |
+
"id": 64,
|
| 382 |
+
"requirements": "beautifulsoup4==4.10.0\npydantic==2.3.0\ntensorflow==2.9.0\nopencv-python==4.5.5.64\nweaviate-client==3.21.0\nuvicorn[standard]==0.17.6\nalembic==1.12.0\nfastapi==0.78.0\nscipy==1.8.1",
|
| 383 |
+
"label": "invalid",
|
| 384 |
+
"conflict_reason": "fastapi==0.78.0 is assumed to require pydantic v1, but pydantic==2.3.0 is pinned."
|
| 385 |
+
},
|
| 386 |
+
{
|
| 387 |
+
"id": 65,
|
| 388 |
+
"requirements": "celery==5.3.4\npandas==1.4.4\ntiktoken==0.5.1\npydantic\nalembic\nscipy==1.8.1",
|
| 389 |
+
"label": "valid",
|
| 390 |
+
"conflict_reason": null
|
| 391 |
+
},
|
| 392 |
+
{
|
| 393 |
+
"id": 66,
|
| 394 |
+
"requirements": "plotly==5.17.0\ntorchaudio==2.1.0\nopenai==1.6.0\ncelery==5.2.7\njax\nweaviate-client==3.21.0\nchromadb\nplotly==5.6.0",
|
| 395 |
+
"label": "invalid",
|
| 396 |
+
"conflict_reason": "plotly is pinned to multiple incompatible versions."
|
| 397 |
+
},
|
| 398 |
+
{
|
| 399 |
+
"id": 67,
|
| 400 |
+
"requirements": "httpx\npsycopg2-binary==2.9.3\npillow==9.0.1\nscipy\ngunicorn",
|
| 401 |
+
"label": "valid",
|
| 402 |
+
"conflict_reason": null
|
| 403 |
+
},
|
| 404 |
+
{
|
| 405 |
+
"id": 68,
|
| 406 |
+
"requirements": "uvloop\nmatplotlib\nopenai==0.28.0\ntorch==1.13.1\nredis==5.0.1\nplotly==5.17.0\nalembic==1.12.0\nuvloop==0.17.0",
|
| 407 |
+
"label": "invalid",
|
| 408 |
+
"conflict_reason": "uvloop is pinned to multiple incompatible versions."
|
| 409 |
+
},
|
| 410 |
+
{
|
| 411 |
+
"id": 69,
|
| 412 |
+
"requirements": "jax==0.4.13\nbeautifulsoup4==4.12.2\nweaviate-client==3.21.0\ngunicorn==20.1.0\nkeras==2.4.0\npillow",
|
| 413 |
+
"label": "valid",
|
| 414 |
+
"conflict_reason": null
|
| 415 |
+
},
|
| 416 |
+
{
|
| 417 |
+
"id": 70,
|
| 418 |
+
"requirements": "redis==4.3.4\ntorchaudio\nuvicorn[standard]==0.23.2\nweaviate-client==3.21.0\npytorch-lightning==2.2.0\nalembic==1.12.0\nscrapy==2.5.1\nopencv-python==4.5.5.64\nredis==5.0.1",
|
| 419 |
+
"label": "invalid",
|
| 420 |
+
"conflict_reason": "redis is pinned to multiple incompatible versions."
|
| 421 |
+
},
|
| 422 |
+
{
|
| 423 |
+
"id": 71,
|
| 424 |
+
"requirements": "jax==0.4.13\nredis==5.0.1\nseaborn==0.11.2\nuvicorn[standard]==0.17.6",
|
| 425 |
+
"label": "valid",
|
| 426 |
+
"conflict_reason": null
|
| 427 |
+
},
|
| 428 |
+
{
|
| 429 |
+
"id": 72,
|
| 430 |
+
"requirements": "scikit-learn\npillow==9.0.1\ntorchvision==0.16.0\nmatplotlib==3.7.2\nbeautifulsoup4==4.10.0\nstarlette\nsqlalchemy==1.4.46\nplotly==5.6.0\nscikit-learn==1.2.2",
|
| 431 |
+
"label": "invalid",
|
| 432 |
+
"conflict_reason": "scikit-learn is pinned to multiple incompatible versions."
|
| 433 |
+
},
|
| 434 |
+
{
|
| 435 |
+
"id": 73,
|
| 436 |
+
"requirements": "torch==1.8.0\nsqlalchemy==1.4.46\ntiktoken==0.5.1\nstarlette\npytorch-lightning==2.2.0\npsycopg2-binary==2.9.3\ntorch==1.8.0\nflax==0.7.2",
|
| 437 |
+
"label": "invalid",
|
| 438 |
+
"conflict_reason": "pytorch-lightning>=2.0 is assumed to require torch>=2.0 but torch==1.8.0 is pinned."
|
| 439 |
+
},
|
| 440 |
+
{
|
| 441 |
+
"id": 74,
|
| 442 |
+
"requirements": "numpy==1.22.0\npydantic==1.10.13\nstarlette\nchromadb==0.4.23\nnumpy==1.21.0",
|
| 443 |
+
"label": "invalid",
|
| 444 |
+
"conflict_reason": "numpy is pinned to multiple incompatible versions."
|
| 445 |
+
},
|
| 446 |
+
{
|
| 447 |
+
"id": 75,
|
| 448 |
+
"requirements": "opencv-python==4.8.0.76\npillow==9.0.1\nkeras==2.4.0\nstarlette==0.27.0\npsycopg2-binary==2.9.3\nfastapi==0.99.0\nuvloop==0.17.0\ngunicorn==20.1.0\npydantic==2.3.0",
|
| 449 |
+
"label": "valid",
|
| 450 |
+
"conflict_reason": null
|
| 451 |
+
},
|
| 452 |
+
{
|
| 453 |
+
"id": 76,
|
| 454 |
+
"requirements": "scrapy\npydantic==2.3.0\nflax==0.7.2\nbeautifulsoup4==4.10.0\nchromadb==0.4.23\nscrapy==2.9.0",
|
| 455 |
+
"label": "invalid",
|
| 456 |
+
"conflict_reason": "scrapy is pinned to multiple incompatible versions."
|
| 457 |
+
},
|
| 458 |
+
{
|
| 459 |
+
"id": 77,
|
| 460 |
+
"requirements": "numpy==1.21.0\ntorchvision==0.9.0\ntiktoken==0.5.1\nhttpx\nmatplotlib==3.5.1\nstarlette\nseaborn\nuvicorn[standard]",
|
| 461 |
+
"label": "valid",
|
| 462 |
+
"conflict_reason": null
|
| 463 |
+
},
|
| 464 |
+
{
|
| 465 |
+
"id": 78,
|
| 466 |
+
"requirements": "fastapi==0.78.0\ntorchvision==0.14.1\nopenai==0.28.0\nuvloop==0.17.0\nnumpy==1.21.0\nseaborn\nscipy==1.8.1\nalembic==1.12.0\ngunicorn==20.1.0\npytorch-lightning==1.5.0\nfastapi==0.99.0",
|
| 467 |
+
"label": "invalid",
|
| 468 |
+
"conflict_reason": "fastapi is pinned to multiple incompatible versions."
|
| 469 |
+
},
|
| 470 |
+
{
|
| 471 |
+
"id": 79,
|
| 472 |
+
"requirements": "torchaudio==0.13.1\nalembic==1.7.7\npandas==2.0.3\nkeras==2.4.0\ntensorflow==2.9.0\npillow==10.0.0\nuvloop==0.17.0\npsycopg2-binary\nbeautifulsoup4==4.12.2",
|
| 473 |
+
"label": "valid",
|
| 474 |
+
"conflict_reason": null
|
| 475 |
+
},
|
| 476 |
+
{
|
| 477 |
+
"id": 80,
|
| 478 |
+
"requirements": "pydantic==1.10.13\nscrapy==2.9.0\ntiktoken==0.5.1\nseaborn\npandas==1.4.4\nlangchain==0.1.0\nopencv-python==4.5.5.64\npydantic==2.3.0",
|
| 479 |
+
"label": "invalid",
|
| 480 |
+
"conflict_reason": "pydantic is pinned to multiple incompatible versions."
|
| 481 |
+
},
|
| 482 |
+
{
|
| 483 |
+
"id": 81,
|
| 484 |
+
"requirements": "requests\nredis==4.3.4\npytorch-lightning==2.0.0\nscikit-learn==0.24.2\nkeras",
|
| 485 |
+
"label": "valid",
|
| 486 |
+
"conflict_reason": null
|
| 487 |
+
},
|
| 488 |
+
{
|
| 489 |
+
"id": 82,
|
| 490 |
+
"requirements": "beautifulsoup4==4.10.0\nredis\nfastapi==0.99.0\nhttpx==0.23.0\nbeautifulsoup4==4.12.2",
|
| 491 |
+
"label": "invalid",
|
| 492 |
+
"conflict_reason": "beautifulsoup4 is pinned to multiple incompatible versions."
|
| 493 |
+
},
|
| 494 |
+
{
|
| 495 |
+
"id": 83,
|
| 496 |
+
"requirements": "chromadb\nhttpx==0.23.0\ngunicorn==20.1.0\nfastapi==0.78.0\nnumpy==1.23.5",
|
| 497 |
+
"label": "valid",
|
| 498 |
+
"conflict_reason": null
|
| 499 |
+
},
|
| 500 |
+
{
|
| 501 |
+
"id": 84,
|
| 502 |
+
"requirements": "psycopg2-binary==2.9.3\nbeautifulsoup4==4.12.2\nchromadb\nfastapi==0.78.0\njax==0.3.25\nopencv-python==4.8.0.76\nalembic==1.7.7\nseaborn\nflax\npsycopg2-binary==2.9.3",
|
| 503 |
+
"label": "invalid",
|
| 504 |
+
"conflict_reason": "psycopg2-binary is pinned to multiple incompatible versions."
|
| 505 |
+
},
|
| 506 |
+
{
|
| 507 |
+
"id": 85,
|
| 508 |
+
"requirements": "uvloop==0.17.0\nseaborn\ncelery==5.3.4\nuvicorn[standard]==0.17.6\nnumpy==1.22.0\ntensorflow\nsqlalchemy==1.4.46",
|
| 509 |
+
"label": "valid",
|
| 510 |
+
"conflict_reason": null
|
| 511 |
+
},
|
| 512 |
+
{
|
| 513 |
+
"id": 86,
|
| 514 |
+
"requirements": "pandas==1.3.5\nweaviate-client==3.21.0\nopencv-python==4.8.0.76\nkeras==3.0.0\nopenai\nsqlalchemy==2.0.20\nscikit-learn==1.0.2\npsycopg2-binary\nstarlette==0.19.1\ntensorflow==1.15.0",
|
| 515 |
+
"label": "invalid",
|
| 516 |
+
"conflict_reason": "keras==3.0.0 is assumed to require TensorFlow 2.x but tensorflow==1.15.0 is pinned."
|
| 517 |
+
},
|
| 518 |
+
{
|
| 519 |
+
"id": 87,
|
| 520 |
+
"requirements": "pydantic==2.3.0\nscipy\nalembic==1.7.7\nsqlalchemy\npillow==10.0.0\npytorch-lightning==2.2.0\nflax",
|
| 521 |
+
"label": "valid",
|
| 522 |
+
"conflict_reason": null
|
| 523 |
+
},
|
| 524 |
+
{
|
| 525 |
+
"id": 88,
|
| 526 |
+
"requirements": "gunicorn==20.1.0\nseaborn==0.11.2\ntorch==2.1.0\nsqlalchemy==1.4.46\ngunicorn==20.1.0",
|
| 527 |
+
"label": "invalid",
|
| 528 |
+
"conflict_reason": "gunicorn is pinned to multiple incompatible versions."
|
| 529 |
+
},
|
| 530 |
+
{
|
| 531 |
+
"id": 89,
|
| 532 |
+
"requirements": "uvicorn[standard]==0.23.2\nflax==0.7.2\nstarlette==0.19.1\nmatplotlib==3.7.2\nfastapi==0.99.0\nlangchain\ngunicorn==20.1.0\ntorchvision==0.16.0",
|
| 533 |
+
"label": "valid",
|
| 534 |
+
"conflict_reason": null
|
| 535 |
+
},
|
| 536 |
+
{
|
| 537 |
+
"id": 90,
|
| 538 |
+
"requirements": "scipy==1.10.0\ntorchvision==0.9.0\nnumpy==1.22.0\npsycopg2-binary==2.9.3\npytorch-lightning==2.2.0\njax\nscipy==1.8.1",
|
| 539 |
+
"label": "invalid",
|
| 540 |
+
"conflict_reason": "scipy is pinned to multiple incompatible versions."
|
| 541 |
+
},
|
| 542 |
+
{
|
| 543 |
+
"id": 91,
|
| 544 |
+
"requirements": "flax==0.5.1\npsycopg2-binary\npydantic==2.3.0\nplotly\ngunicorn==20.1.0\nscipy==1.10.0",
|
| 545 |
+
"label": "valid",
|
| 546 |
+
"conflict_reason": null
|
| 547 |
+
},
|
| 548 |
+
{
|
| 549 |
+
"id": 92,
|
| 550 |
+
"requirements": "scikit-learn==1.0.2\npillow==10.0.0\nseaborn==0.11.2\nalembic==1.7.7\nstarlette==0.19.1\nsqlalchemy==2.0.20\nscikit-learn==0.24.2",
|
| 551 |
+
"label": "invalid",
|
| 552 |
+
"conflict_reason": "scikit-learn is pinned to multiple incompatible versions."
|
| 553 |
+
},
|
| 554 |
+
{
|
| 555 |
+
"id": 93,
|
| 556 |
+
"requirements": "requests\ntorchaudio==0.13.1\nflax==0.5.1\ntensorflow==2.9.0",
|
| 557 |
+
"label": "valid",
|
| 558 |
+
"conflict_reason": null
|
| 559 |
+
},
|
| 560 |
+
{
|
| 561 |
+
"id": 94,
|
| 562 |
+
"requirements": "plotly==5.6.0\ntiktoken==0.5.1\nscikit-learn==0.24.2\njax==0.4.13\nscrapy==2.5.1\nfastapi==0.99.0\npytorch-lightning==2.2.0\nplotly==5.17.0",
|
| 563 |
+
"label": "invalid",
|
| 564 |
+
"conflict_reason": "plotly is pinned to multiple incompatible versions."
|
| 565 |
+
},
|
| 566 |
+
{
|
| 567 |
+
"id": 95,
|
| 568 |
+
"requirements": "gunicorn\ntensorflow==1.15.0\njax==0.4.13\npydantic\nrequests==2.27.1\npandas\nopencv-python==4.5.5.64\nstarlette==0.27.0\nmatplotlib==3.7.2\nplotly==5.17.0",
|
| 569 |
+
"label": "valid",
|
| 570 |
+
"conflict_reason": null
|
| 571 |
+
},
|
| 572 |
+
{
|
| 573 |
+
"id": 96,
|
| 574 |
+
"requirements": "jax==0.3.25\npydantic==1.10.13\nuvicorn[standard]==0.17.6\nscipy\njax==0.4.13",
|
| 575 |
+
"label": "invalid",
|
| 576 |
+
"conflict_reason": "jax is pinned to multiple incompatible versions."
|
| 577 |
+
},
|
| 578 |
+
{
|
| 579 |
+
"id": 97,
|
| 580 |
+
"requirements": "keras==3.0.0\nscrapy\nopencv-python==4.8.0.76\nrequests==2.27.1",
|
| 581 |
+
"label": "valid",
|
| 582 |
+
"conflict_reason": null
|
| 583 |
+
},
|
| 584 |
+
{
|
| 585 |
+
"id": 98,
|
| 586 |
+
"requirements": "tiktoken==0.5.1\nrequests==2.31.0\nlangchain==0.1.0\ntensorflow==2.15.0\nuvloop\npsycopg2-binary==2.9.3\ntiktoken==0.5.1",
|
| 587 |
+
"label": "invalid",
|
| 588 |
+
"conflict_reason": "tiktoken is pinned to multiple incompatible versions."
|
| 589 |
+
},
|
| 590 |
+
{
|
| 591 |
+
"id": 99,
|
| 592 |
+
"requirements": "weaviate-client==3.21.0\ntensorflow==2.9.0\nredis==4.3.4\ncelery==5.2.7\ntiktoken==0.5.1",
|
| 593 |
+
"label": "valid",
|
| 594 |
+
"conflict_reason": null
|
| 595 |
+
},
|
| 596 |
+
{
|
| 597 |
+
"id": 100,
|
| 598 |
+
"requirements": "fastapi==0.78.0\ntorchaudio==0.8.0\nsqlalchemy==2.0.20\nnumpy\nfastapi==0.99.0",
|
| 599 |
+
"label": "invalid",
|
| 600 |
+
"conflict_reason": "fastapi is pinned to multiple incompatible versions."
|
| 601 |
+
},
|
| 602 |
+
{
|
| 603 |
+
"id": 101,
|
| 604 |
+
"requirements": "jax==0.4.13\nrequests\npydantic==2.3.0\nmatplotlib==3.5.1",
|
| 605 |
+
"label": "valid",
|
| 606 |
+
"conflict_reason": null
|
| 607 |
+
},
|
| 608 |
+
{
|
| 609 |
+
"id": 102,
|
| 610 |
+
"requirements": "celery\nalembic==1.7.7\nscrapy==2.9.0\nuvicorn[standard]==0.23.2\ncelery==5.2.7",
|
| 611 |
+
"label": "invalid",
|
| 612 |
+
"conflict_reason": "celery is pinned to multiple incompatible versions."
|
| 613 |
+
},
|
| 614 |
+
{
|
| 615 |
+
"id": 103,
|
| 616 |
+
"requirements": "scikit-learn\nplotly==5.17.0\nscipy==1.10.0\ntensorflow",
|
| 617 |
+
"label": "valid",
|
| 618 |
+
"conflict_reason": null
|
| 619 |
+
},
|
| 620 |
+
{
|
| 621 |
+
"id": 104,
|
| 622 |
+
"requirements": "beautifulsoup4==4.12.2\ntensorflow==2.15.0\nhttpx==0.25.1\nalembic==1.7.7\nbeautifulsoup4==4.10.0",
|
| 623 |
+
"label": "invalid",
|
| 624 |
+
"conflict_reason": "beautifulsoup4 is pinned to multiple incompatible versions."
|
| 625 |
+
},
|
| 626 |
+
{
|
| 627 |
+
"id": 105,
|
| 628 |
+
"requirements": "weaviate-client==3.21.0\nsqlalchemy==1.4.46\ngunicorn==20.1.0\nmatplotlib==3.5.1",
|
| 629 |
+
"label": "valid",
|
| 630 |
+
"conflict_reason": null
|
| 631 |
+
},
|
| 632 |
+
{
|
| 633 |
+
"id": 106,
|
| 634 |
+
"requirements": "flax==0.7.2\ntiktoken==0.5.1\npsycopg2-binary\ntorchaudio\nflax==0.5.1",
|
| 635 |
+
"label": "invalid",
|
| 636 |
+
"conflict_reason": "flax is pinned to multiple incompatible versions."
|
| 637 |
+
},
|
| 638 |
+
{
|
| 639 |
+
"id": 107,
|
| 640 |
+
"requirements": "seaborn==0.13.0\npillow\ntiktoken==0.5.1\npandas==2.0.3",
|
| 641 |
+
"label": "valid",
|
| 642 |
+
"conflict_reason": null
|
| 643 |
+
},
|
| 644 |
+
{
|
| 645 |
+
"id": 108,
|
| 646 |
+
"requirements": "uvicorn[standard]\nseaborn==0.13.0\npandas\nscikit-learn==1.0.2\nuvicorn[standard]==0.17.6",
|
| 647 |
+
"label": "invalid",
|
| 648 |
+
"conflict_reason": "uvicorn[standard] is pinned to multiple incompatible versions."
|
| 649 |
+
},
|
| 650 |
+
{
|
| 651 |
+
"id": 109,
|
| 652 |
+
"requirements": "tensorflow==1.15.0\nuvicorn[standard]==0.17.6\njax==0.3.25\ntorchvision==0.9.0\ntiktoken\npsycopg2-binary==2.9.3\nuvloop==0.17.0\nweaviate-client==3.21.0",
|
| 653 |
+
"label": "valid",
|
| 654 |
+
"conflict_reason": null
|
| 655 |
+
},
|
| 656 |
+
{
|
| 657 |
+
"id": 110,
|
| 658 |
+
"requirements": "httpx==0.23.0\nkeras==2.9.0\nbeautifulsoup4==4.12.2\ntorch\nhttpx==0.25.1",
|
| 659 |
+
"label": "invalid",
|
| 660 |
+
"conflict_reason": "httpx is pinned to multiple incompatible versions."
|
| 661 |
+
},
|
| 662 |
+
{
|
| 663 |
+
"id": 111,
|
| 664 |
+
"requirements": "pillow\nmatplotlib==3.7.2\ncelery\ntiktoken\nplotly==5.6.0\ntorch\nopenai==0.28.0",
|
| 665 |
+
"label": "valid",
|
| 666 |
+
"conflict_reason": null
|
| 667 |
+
},
|
| 668 |
+
{
|
| 669 |
+
"id": 112,
|
| 670 |
+
"requirements": "requests==2.27.1\nscrapy==2.5.1\ntiktoken==0.5.1\nmatplotlib==3.5.1\nhttpx==0.23.0\nopenai==1.6.0\nsqlalchemy==1.4.46\nflax==0.5.1\nrequests==2.31.0",
|
| 671 |
+
"label": "invalid",
|
| 672 |
+
"conflict_reason": "requests is pinned to multiple incompatible versions."
|
| 673 |
+
},
|
| 674 |
+
{
|
| 675 |
+
"id": 113,
|
| 676 |
+
"requirements": "opencv-python==4.8.0.76\nflax\nbeautifulsoup4==4.10.0\nalembic==1.12.0",
|
| 677 |
+
"label": "valid",
|
| 678 |
+
"conflict_reason": null
|
| 679 |
+
},
|
| 680 |
+
{
|
| 681 |
+
"id": 114,
|
| 682 |
+
"requirements": "jax==0.4.13\nscipy==1.10.0\ntiktoken==0.5.1\nredis==4.3.4\nuvloop==0.17.0\npillow==10.0.0\njax==0.3.25",
|
| 683 |
+
"label": "invalid",
|
| 684 |
+
"conflict_reason": "jax is pinned to multiple incompatible versions."
|
| 685 |
+
},
|
| 686 |
+
{
|
| 687 |
+
"id": 115,
|
| 688 |
+
"requirements": "plotly==5.17.0\nmatplotlib==3.7.2\npydantic==1.10.13\nopencv-python==4.5.5.64\npillow==9.0.1\npsycopg2-binary==2.9.3\npytorch-lightning==2.2.0\ntorchaudio",
|
| 689 |
+
"label": "valid",
|
| 690 |
+
"conflict_reason": null
|
| 691 |
+
},
|
| 692 |
+
{
|
| 693 |
+
"id": 116,
|
| 694 |
+
"requirements": "tiktoken==0.5.1\nuvicorn[standard]==0.23.2\nflax==0.5.1\nscrapy==2.9.0\npydantic\ntorchvision==0.9.0\nalembic==1.7.7\ntiktoken==0.5.1",
|
| 695 |
+
"label": "invalid",
|
| 696 |
+
"conflict_reason": "tiktoken is pinned to multiple incompatible versions."
|
| 697 |
+
},
|
| 698 |
+
{
|
| 699 |
+
"id": 117,
|
| 700 |
+
"requirements": "torchvision==0.14.1\nsqlalchemy\nweaviate-client==3.21.0\npsycopg2-binary==2.9.3\nchromadb==0.4.23\nseaborn==0.13.0\ncelery==5.3.4",
|
| 701 |
+
"label": "valid",
|
| 702 |
+
"conflict_reason": null
|
| 703 |
+
},
|
| 704 |
+
{
|
| 705 |
+
"id": 118,
|
| 706 |
+
"requirements": "opencv-python==4.8.0.76\nstarlette==0.19.1\ntorchvision\ncelery==5.2.7\nredis\npandas==2.0.3\nplotly==5.6.0\nopencv-python==4.5.5.64",
|
| 707 |
+
"label": "invalid",
|
| 708 |
+
"conflict_reason": "opencv-python is pinned to multiple incompatible versions."
|
| 709 |
+
},
|
| 710 |
+
{
|
| 711 |
+
"id": 119,
|
| 712 |
+
"requirements": "psycopg2-binary==2.9.3\njax\nflax==0.7.2\nstarlette==0.19.1\ntensorflow==2.15.0\nweaviate-client",
|
| 713 |
+
"label": "valid",
|
| 714 |
+
"conflict_reason": null
|
| 715 |
+
},
|
| 716 |
+
{
|
| 717 |
+
"id": 120,
|
| 718 |
+
"requirements": "pandas==2.0.3\nscrapy==2.9.0\ncelery\ntiktoken==0.5.1\ntensorflow==2.15.0\nalembic==1.7.7\nscipy==1.7.3\nlangchain==0.0.350\npandas==1.3.5",
|
| 719 |
+
"label": "invalid",
|
| 720 |
+
"conflict_reason": "pandas is pinned to multiple incompatible versions."
|
| 721 |
+
}
|
| 722 |
+
]
|
synthetic_requirements_txt/requirements_001_valid.txt
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
pillow==10.0.0
|
| 2 |
+
seaborn==0.13.0
|
| 3 |
+
scipy==1.7.3
|
| 4 |
+
sqlalchemy
|
| 5 |
+
weaviate-client==3.21.0
|
| 6 |
+
chromadb==0.4.23
|
| 7 |
+
fastapi==0.78.0
|
| 8 |
+
openai==0.28.0
|
| 9 |
+
matplotlib==3.7.2
|
| 10 |
+
gunicorn==20.1.0
|
synthetic_requirements_txt/requirements_002_invalid.txt
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
uvicorn[standard]
|
| 2 |
+
gunicorn==20.1.0
|
| 3 |
+
tiktoken==0.5.1
|
| 4 |
+
langchain==0.1.0
|
| 5 |
+
sqlalchemy==2.0.20
|
| 6 |
+
scikit-learn
|
| 7 |
+
uvicorn[standard]==0.23.2
|
synthetic_requirements_txt/requirements_003_valid.txt
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
keras==3.0.0
|
| 2 |
+
celery
|
| 3 |
+
langchain==0.1.0
|
| 4 |
+
torchvision==0.16.0
|
| 5 |
+
httpx==0.23.0
|
synthetic_requirements_txt/requirements_004_invalid.txt
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
gunicorn
|
| 2 |
+
psycopg2-binary
|
| 3 |
+
langchain==0.1.0
|
| 4 |
+
torchvision==0.9.0
|
| 5 |
+
pillow==9.0.1
|
| 6 |
+
httpx==0.23.0
|
| 7 |
+
uvloop==0.17.0
|
| 8 |
+
pytorch-lightning==2.2.0
|
| 9 |
+
gunicorn==20.1.0
|
synthetic_requirements_txt/requirements_005_valid.txt
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
pydantic
|
| 2 |
+
uvicorn[standard]==0.17.6
|
| 3 |
+
seaborn==0.13.0
|
| 4 |
+
alembic
|
| 5 |
+
langchain
|
| 6 |
+
chromadb==0.4.8
|
| 7 |
+
beautifulsoup4==4.10.0
|
| 8 |
+
httpx
|
| 9 |
+
scrapy==2.5.1
|
| 10 |
+
matplotlib
|
synthetic_requirements_txt/requirements_006_invalid.txt
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
celery==5.3.4
|
| 2 |
+
torch==1.8.0
|
| 3 |
+
pandas
|
| 4 |
+
pytorch-lightning==2.2.0
|
| 5 |
+
fastapi==0.99.0
|
| 6 |
+
redis==4.3.4
|
| 7 |
+
weaviate-client==3.21.0
|
| 8 |
+
scipy
|
synthetic_requirements_txt/requirements_007_valid.txt
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
torch
|
| 2 |
+
starlette
|
| 3 |
+
uvloop==0.17.0
|
| 4 |
+
requests
|
| 5 |
+
scrapy==2.9.0
|
| 6 |
+
plotly==5.17.0
|
synthetic_requirements_txt/requirements_008_invalid.txt
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
jax==0.3.25
|
| 2 |
+
uvicorn[standard]==0.23.2
|
| 3 |
+
scikit-learn==0.24.2
|
| 4 |
+
uvloop==0.17.0
|
| 5 |
+
redis==5.0.1
|
| 6 |
+
beautifulsoup4==4.12.2
|
| 7 |
+
sqlalchemy
|
| 8 |
+
tensorflow
|
| 9 |
+
jax==0.4.13
|
synthetic_requirements_txt/requirements_009_valid.txt
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
scipy==1.8.1
|
| 2 |
+
celery==5.3.4
|
| 3 |
+
alembic==1.7.7
|
| 4 |
+
tensorflow==2.9.0
|
| 5 |
+
pydantic
|
| 6 |
+
tiktoken==0.5.1
|
synthetic_requirements_txt/requirements_010_invalid.txt
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
pydantic
|
| 2 |
+
starlette==0.27.0
|
| 3 |
+
langchain
|
| 4 |
+
pillow==9.0.1
|
| 5 |
+
uvloop==0.17.0
|
| 6 |
+
pydantic==1.10.13
|
synthetic_requirements_txt/requirements_011_valid.txt
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
numpy
|
| 2 |
+
scipy==1.10.0
|
| 3 |
+
chromadb==0.4.8
|
| 4 |
+
httpx==0.25.1
|
| 5 |
+
requests==2.31.0
|
| 6 |
+
openai
|
| 7 |
+
pandas==1.3.5
|
| 8 |
+
matplotlib
|
synthetic_requirements_txt/requirements_012_invalid.txt
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
fastapi==0.99.0
|
| 2 |
+
requests==2.27.1
|
| 3 |
+
alembic==1.12.0
|
| 4 |
+
flax==0.5.1
|
| 5 |
+
torchaudio==0.8.0
|
| 6 |
+
tiktoken
|
| 7 |
+
plotly==5.6.0
|
| 8 |
+
openai
|
| 9 |
+
fastapi==0.78.0
|
synthetic_requirements_txt/requirements_013_valid.txt
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
sqlalchemy==2.0.20
|
| 2 |
+
gunicorn==20.1.0
|
| 3 |
+
httpx==0.23.0
|
| 4 |
+
opencv-python
|
| 5 |
+
scipy==1.7.3
|
| 6 |
+
chromadb==0.4.23
|
| 7 |
+
scrapy==2.5.1
|
| 8 |
+
celery
|
| 9 |
+
langchain
|
synthetic_requirements_txt/requirements_014_invalid.txt
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
psycopg2-binary==2.9.3
|
| 2 |
+
opencv-python
|
| 3 |
+
matplotlib==3.5.1
|
| 4 |
+
tensorflow==2.9.0
|
| 5 |
+
uvloop
|
| 6 |
+
pytorch-lightning==2.0.0
|
| 7 |
+
pydantic
|
| 8 |
+
gunicorn==20.1.0
|
| 9 |
+
psycopg2-binary==2.9.3
|
synthetic_requirements_txt/requirements_015_valid.txt
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
scipy
|
| 2 |
+
requests
|
| 3 |
+
beautifulsoup4
|
| 4 |
+
keras
|
| 5 |
+
jax==0.4.13
|
| 6 |
+
pillow==10.0.0
|
| 7 |
+
matplotlib==3.5.1
|
synthetic_requirements_txt/requirements_016_invalid.txt
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
starlette
|
| 2 |
+
sqlalchemy==1.4.46
|
| 3 |
+
jax==0.4.13
|
| 4 |
+
plotly
|
| 5 |
+
fastapi==0.99.0
|
| 6 |
+
scrapy==2.5.1
|
| 7 |
+
starlette==0.27.0
|
synthetic_requirements_txt/requirements_017_valid.txt
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
keras
|
| 2 |
+
torchaudio==2.1.0
|
| 3 |
+
fastapi==0.78.0
|
| 4 |
+
openai==1.6.0
|
| 5 |
+
pillow==10.0.0
|
| 6 |
+
opencv-python==4.8.0.76
|
| 7 |
+
alembic==1.12.0
|
| 8 |
+
seaborn==0.11.2
|
synthetic_requirements_txt/requirements_018_invalid.txt
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
numpy==1.21.0
|
| 2 |
+
beautifulsoup4==4.10.0
|
| 3 |
+
httpx==0.25.1
|
| 4 |
+
scipy
|
| 5 |
+
redis==4.3.4
|
| 6 |
+
numpy==1.22.0
|
synthetic_requirements_txt/requirements_019_valid.txt
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
starlette==0.19.1
|
| 2 |
+
tensorflow==2.9.0
|
| 3 |
+
scipy==1.7.3
|
| 4 |
+
requests==2.31.0
|
synthetic_requirements_txt/requirements_020_invalid.txt
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
pillow==9.0.1
|
| 2 |
+
redis==5.0.1
|
| 3 |
+
weaviate-client==3.21.0
|
| 4 |
+
scipy==1.8.1
|
| 5 |
+
torchvision==0.9.0
|
| 6 |
+
torch==1.8.0
|
| 7 |
+
opencv-python==4.5.5.64
|
| 8 |
+
uvicorn[standard]==0.23.2
|
| 9 |
+
pillow==10.0.0
|
synthetic_requirements_txt/requirements_021_valid.txt
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
torch
|
| 2 |
+
chromadb==0.4.8
|
| 3 |
+
sqlalchemy
|
| 4 |
+
requests==2.27.1
|
| 5 |
+
seaborn==0.11.2
|
| 6 |
+
pillow==9.0.1
|
synthetic_requirements_txt/requirements_022_invalid.txt
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
scrapy
|
| 2 |
+
seaborn==0.13.0
|
| 3 |
+
scipy
|
| 4 |
+
openai==0.28.0
|
| 5 |
+
pillow==9.0.1
|
| 6 |
+
scrapy==2.5.1
|
synthetic_requirements_txt/requirements_023_valid.txt
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
pillow==10.0.0
|
| 2 |
+
chromadb==0.4.23
|
| 3 |
+
pytorch-lightning==1.5.0
|
| 4 |
+
scikit-learn==1.0.2
|
| 5 |
+
openai==0.28.0
|
synthetic_requirements_txt/requirements_024_invalid.txt
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
fastapi==0.78.0
|
| 2 |
+
scipy==1.7.3
|
| 3 |
+
matplotlib==3.5.1
|
| 4 |
+
langchain==0.0.350
|
| 5 |
+
opencv-python==4.8.0.76
|
| 6 |
+
uvloop
|
| 7 |
+
starlette==0.27.0
|
| 8 |
+
flax==0.5.1
|
| 9 |
+
celery==5.2.7
|
| 10 |
+
httpx==0.23.0
|
| 11 |
+
fastapi==0.99.0
|
synthetic_requirements_txt/requirements_025_valid.txt
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
langchain
|
| 2 |
+
plotly==5.6.0
|
| 3 |
+
seaborn
|
| 4 |
+
pandas==1.3.5
|
| 5 |
+
chromadb==0.4.8
|
| 6 |
+
httpx==0.23.0
|
| 7 |
+
opencv-python==4.5.5.64
|
| 8 |
+
tensorflow==2.15.0
|
| 9 |
+
scipy==1.7.3
|
| 10 |
+
flax==0.7.2
|
synthetic_requirements_txt/requirements_026_invalid.txt
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
starlette==0.19.1
|
| 2 |
+
keras==3.0.0
|
| 3 |
+
flax
|
| 4 |
+
openai==0.28.0
|
| 5 |
+
starlette==0.27.0
|
synthetic_requirements_txt/requirements_027_valid.txt
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
psycopg2-binary
|
| 2 |
+
gunicorn==20.1.0
|
| 3 |
+
httpx==0.23.0
|
| 4 |
+
flax==0.5.1
|
| 5 |
+
torchvision==0.9.0
|
| 6 |
+
torchaudio==0.13.1
|
synthetic_requirements_txt/requirements_028_invalid.txt
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
tensorflow==1.15.0
|
| 2 |
+
pandas==2.0.3
|
| 3 |
+
matplotlib
|
| 4 |
+
torch==1.13.1
|
| 5 |
+
redis==4.3.4
|
| 6 |
+
uvloop==0.17.0
|
| 7 |
+
uvicorn[standard]==0.23.2
|
| 8 |
+
keras==3.0.0
|
| 9 |
+
alembic
|
| 10 |
+
tiktoken==0.5.1
|
synthetic_requirements_txt/requirements_029_valid.txt
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
pytorch-lightning==2.0.0
|
| 2 |
+
gunicorn==20.1.0
|
| 3 |
+
keras==2.9.0
|
| 4 |
+
langchain==0.0.350
|
| 5 |
+
matplotlib==3.5.1
|
| 6 |
+
flax==0.5.1
|
synthetic_requirements_txt/requirements_030_invalid.txt
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
langchain==0.0.350
|
| 2 |
+
openai
|
| 3 |
+
numpy==1.22.0
|
| 4 |
+
uvicorn[standard]==0.17.6
|
| 5 |
+
requests==2.31.0
|
| 6 |
+
pytorch-lightning
|
| 7 |
+
pillow
|
| 8 |
+
httpx==0.25.1
|
| 9 |
+
keras==3.0.0
|
| 10 |
+
alembic
|
| 11 |
+
langchain==0.1.0
|
synthetic_requirements_txt/requirements_031_valid.txt
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
psycopg2-binary==2.9.3
|
| 2 |
+
fastapi==0.78.0
|
| 3 |
+
torchvision==0.9.0
|
| 4 |
+
scipy
|
| 5 |
+
torch==1.13.1
|
| 6 |
+
sqlalchemy==1.4.46
|
synthetic_requirements_txt/requirements_032_invalid.txt
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
uvicorn[standard]
|
| 2 |
+
celery==5.2.7
|
| 3 |
+
torchaudio==2.1.0
|
| 4 |
+
seaborn==0.13.0
|
| 5 |
+
matplotlib==3.7.2
|
| 6 |
+
alembic==1.7.7
|
| 7 |
+
keras==3.0.0
|
| 8 |
+
starlette==0.27.0
|
| 9 |
+
flax==0.5.1
|
| 10 |
+
uvicorn[standard]==0.23.2
|
synthetic_requirements_txt/requirements_033_valid.txt
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
chromadb==0.4.8
|
| 2 |
+
scikit-learn==0.24.2
|
| 3 |
+
uvicorn[standard]
|
| 4 |
+
pandas
|
| 5 |
+
scrapy==2.5.1
|
| 6 |
+
tiktoken==0.5.1
|
| 7 |
+
fastapi
|
| 8 |
+
langchain
|
| 9 |
+
numpy==1.22.0
|
synthetic_requirements_txt/requirements_034_invalid.txt
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
pillow==10.0.0
|
| 2 |
+
jax==0.3.25
|
| 3 |
+
beautifulsoup4==4.10.0
|
| 4 |
+
seaborn==0.11.2
|
| 5 |
+
plotly==5.17.0
|
| 6 |
+
keras==2.9.0
|
| 7 |
+
pillow==9.0.1
|
synthetic_requirements_txt/requirements_035_valid.txt
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
fastapi==0.78.0
|
| 2 |
+
langchain==0.0.350
|
| 3 |
+
uvicorn[standard]==0.23.2
|
| 4 |
+
scikit-learn==1.2.2
|
| 5 |
+
pillow==10.0.0
|
| 6 |
+
scipy==1.8.1
|
| 7 |
+
pytorch-lightning==1.5.0
|
| 8 |
+
httpx==0.25.1
|
| 9 |
+
chromadb==0.4.23
|
| 10 |
+
plotly==5.17.0
|
synthetic_requirements_txt/requirements_036_invalid.txt
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
scipy==1.8.1
|
| 2 |
+
uvloop
|
| 3 |
+
scikit-learn==1.0.2
|
| 4 |
+
jax==0.4.13
|
| 5 |
+
scrapy==2.5.1
|
| 6 |
+
numpy==1.22.0
|
| 7 |
+
scipy==1.7.3
|
synthetic_requirements_txt/requirements_037_valid.txt
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
httpx
|
| 2 |
+
uvloop
|
| 3 |
+
celery==5.2.7
|
| 4 |
+
openai==1.6.0
|
| 5 |
+
gunicorn==20.1.0
|
| 6 |
+
sqlalchemy==2.0.20
|
| 7 |
+
numpy
|
| 8 |
+
chromadb
|
| 9 |
+
pandas==1.4.4
|
| 10 |
+
torchaudio==0.8.0
|
synthetic_requirements_txt/requirements_038_invalid.txt
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
chromadb==0.4.8
|
| 2 |
+
openai==0.28.0
|
| 3 |
+
langchain==0.0.350
|
| 4 |
+
pytorch-lightning==1.5.0
|
| 5 |
+
torchvision==0.16.0
|
| 6 |
+
weaviate-client
|
| 7 |
+
redis==4.3.4
|
| 8 |
+
chromadb==0.4.23
|
synthetic_requirements_txt/requirements_039_valid.txt
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
alembic==1.12.0
|
| 2 |
+
scrapy==2.5.1
|
| 3 |
+
httpx==0.25.1
|
| 4 |
+
plotly==5.17.0
|
| 5 |
+
torchaudio==0.13.1
|
synthetic_requirements_txt/requirements_040_invalid.txt
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
pytorch-lightning==1.5.0
|
| 2 |
+
torchaudio==2.1.0
|
| 3 |
+
flax==0.5.1
|
| 4 |
+
seaborn==0.13.0
|
| 5 |
+
pytorch-lightning==2.0.0
|
synthetic_requirements_txt/requirements_041_valid.txt
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
alembic
|
| 2 |
+
pytorch-lightning==2.0.0
|
| 3 |
+
scrapy==2.5.1
|
| 4 |
+
starlette==0.27.0
|
| 5 |
+
psycopg2-binary
|
| 6 |
+
redis==4.3.4
|
| 7 |
+
opencv-python==4.8.0.76
|
synthetic_requirements_txt/requirements_042_invalid.txt
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
pandas==1.4.4
|
| 2 |
+
tensorflow==1.15.0
|
| 3 |
+
matplotlib==3.5.1
|
| 4 |
+
keras==3.0.0
|
| 5 |
+
flax==0.7.2
|
| 6 |
+
torch==1.8.0
|
| 7 |
+
chromadb==0.4.8
|
| 8 |
+
pillow==9.0.1
|
| 9 |
+
torchaudio==0.13.1
|
synthetic_requirements_txt/requirements_043_valid.txt
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
numpy==1.23.5
|
| 2 |
+
starlette
|
| 3 |
+
jax==0.4.13
|
| 4 |
+
chromadb==0.4.23
|
| 5 |
+
tiktoken==0.5.1
|
| 6 |
+
httpx
|
synthetic_requirements_txt/requirements_044_invalid.txt
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
pydantic==1.10.13
|
| 2 |
+
beautifulsoup4==4.10.0
|
| 3 |
+
langchain==0.0.350
|
| 4 |
+
starlette==0.27.0
|
| 5 |
+
sqlalchemy==1.4.46
|
| 6 |
+
scrapy==2.5.1
|
| 7 |
+
gunicorn
|
| 8 |
+
torchvision==0.9.0
|
| 9 |
+
keras==3.0.0
|
| 10 |
+
pydantic==2.3.0
|
synthetic_requirements_txt/requirements_045_valid.txt
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
plotly==5.17.0
|
| 2 |
+
keras==2.9.0
|
| 3 |
+
scrapy==2.9.0
|
| 4 |
+
requests==2.27.1
|
| 5 |
+
flax
|
| 6 |
+
beautifulsoup4==4.10.0
|
| 7 |
+
opencv-python
|