reqfix 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- reqfix-0.1.0/PKG-INFO +210 -0
- reqfix-0.1.0/README.md +169 -0
- reqfix-0.1.0/cli/__init__.py +0 -0
- reqfix-0.1.0/cli/main.py +353 -0
- reqfix-0.1.0/core/__init__.py +0 -0
- reqfix-0.1.0/core/fixer.py +173 -0
- reqfix-0.1.0/core/installer.py +154 -0
- reqfix-0.1.0/core/parser.py +103 -0
- reqfix-0.1.0/core/resolver.py +181 -0
- reqfix-0.1.0/core/verifier.py +163 -0
- reqfix-0.1.0/reqfix.egg-info/PKG-INFO +210 -0
- reqfix-0.1.0/reqfix.egg-info/SOURCES.txt +16 -0
- reqfix-0.1.0/reqfix.egg-info/dependency_links.txt +1 -0
- reqfix-0.1.0/reqfix.egg-info/entry_points.txt +2 -0
- reqfix-0.1.0/reqfix.egg-info/requires.txt +4 -0
- reqfix-0.1.0/reqfix.egg-info/top_level.txt +2 -0
- reqfix-0.1.0/setup.cfg +4 -0
- reqfix-0.1.0/setup.py +81 -0
reqfix-0.1.0/PKG-INFO
ADDED
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: reqfix
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Fix your Python dependency conflicts automatically
|
|
5
|
+
Author: Sakshi Rajesh Kamble
|
|
6
|
+
Author-email: sakshikamble512@gmail.com
|
|
7
|
+
Maintainer: Sakshi Rajesh Kamble
|
|
8
|
+
Maintainer-email: sakshikamble512@gmail.com
|
|
9
|
+
License: MIT
|
|
10
|
+
Keywords: pip,dependencies,requirements,conflict,resolver,packaging,devtools,cli
|
|
11
|
+
Classifier: Intended Audience :: Developers
|
|
12
|
+
Classifier: Topic :: Software Development :: Build Tools
|
|
13
|
+
Classifier: Topic :: System :: Systems Administration
|
|
14
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
21
|
+
Classifier: Development Status :: 3 - Alpha
|
|
22
|
+
Classifier: Operating System :: OS Independent
|
|
23
|
+
Requires-Python: >=3.8
|
|
24
|
+
Description-Content-Type: text/markdown
|
|
25
|
+
Requires-Dist: requests>=2.28.0
|
|
26
|
+
Requires-Dist: packaging>=23.0
|
|
27
|
+
Requires-Dist: rich>=13.0.0
|
|
28
|
+
Requires-Dist: click>=8.1.0
|
|
29
|
+
Dynamic: author
|
|
30
|
+
Dynamic: author-email
|
|
31
|
+
Dynamic: classifier
|
|
32
|
+
Dynamic: description
|
|
33
|
+
Dynamic: description-content-type
|
|
34
|
+
Dynamic: keywords
|
|
35
|
+
Dynamic: license
|
|
36
|
+
Dynamic: maintainer
|
|
37
|
+
Dynamic: maintainer-email
|
|
38
|
+
Dynamic: requires-dist
|
|
39
|
+
Dynamic: requires-python
|
|
40
|
+
Dynamic: summary
|
|
41
|
+
|
|
42
|
+
# 🔧 Reqfix
|
|
43
|
+
|
|
44
|
+
> Fix your Python dependency conflicts automatically.
|
|
45
|
+
|
|
46
|
+
[](https://python.org)
|
|
47
|
+
[](LICENSE)
|
|
48
|
+
[]()
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## The Problem
|
|
53
|
+
|
|
54
|
+
You clone a Python project, create a virtual environment, run `pip install -r requirements.txt` and get this:
|
|
55
|
+
|
|
56
|
+
```
|
|
57
|
+
ERROR: Cannot install flask==1.0.0 and werkzeug==2.3.0 because these
|
|
58
|
+
package versions have conflicting dependencies.
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
Then you spend the next hour manually hunting for compatible versions.
|
|
62
|
+
It's tedious, frustrating, and happens to every developer.
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## The Solution
|
|
67
|
+
|
|
68
|
+
Reqfix analyzes your `requirements.txt`, talks to PyPI, finds compatible versions for every package, verifies they all work **together**, and installs them.
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
reqfix install
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
That's it.
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## ✨ Features
|
|
79
|
+
|
|
80
|
+
- 🔍 **Analyze** — Detects conflicts, unpinned packages, and outdated versions
|
|
81
|
+
- 🔧 **Fix** — Generates a clean `requirements.fixed.txt` with pinned compatible versions
|
|
82
|
+
- 🚀 **Install** — Auto-installs all fixed packages in one command
|
|
83
|
+
- 🛡️ **Verify** — Cross-checks ALL packages are mutually compatible before installing anything
|
|
84
|
+
- 🎨 **Beautiful output** — Color-coded terminal reports powered by Rich
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## 📦 Installation
|
|
89
|
+
|
|
90
|
+
### Option 1 — Via pip (recommended)
|
|
91
|
+
```bash
|
|
92
|
+
pip install reqfix
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### Option 2 — From source (for contributors)
|
|
96
|
+
```bash
|
|
97
|
+
git clone https://github.com/Sakshi-512/reqfix.git
|
|
98
|
+
cd reqfix
|
|
99
|
+
pip install -e .
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
> 💡 Install globally (outside any virtualenv) so `reqfix` is available in every project.
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## 🚀 Usage
|
|
107
|
+
|
|
108
|
+
### The most common flow
|
|
109
|
+
```bash
|
|
110
|
+
# You cloned a project and pip install failed?
|
|
111
|
+
# Just run:
|
|
112
|
+
reqfix install
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### Analyze — see what's broken (no changes made)
|
|
116
|
+
```bash
|
|
117
|
+
reqfix analyze
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
```
|
|
121
|
+
╭─────────────────────────────────────────╮
|
|
122
|
+
│ Reqfix — Python Dependency Doctor │
|
|
123
|
+
╰─────────────────────────────────────────╯
|
|
124
|
+
|
|
125
|
+
Found 4 packages in requirements.txt
|
|
126
|
+
|
|
127
|
+
┌─────────────┬────────────┬─────────────┬──────────────────────┬──────────────────────────────────────┐
|
|
128
|
+
│ Package │ Original │ Status │ Suggested Fix │ Reason │
|
|
129
|
+
├─────────────┼────────────┼─────────────┼──────────────────────┼──────────────────────────────────────┤
|
|
130
|
+
│ flask │ >=2.0.0 │ ✅ Healthy │ flask==3.1.2 │ Pinned to latest compatible version │
|
|
131
|
+
│ requests │ ==2.28.1 │ ✅ Healthy │ requests==2.28.1 │ Pinned to latest compatible version │
|
|
132
|
+
│ numpy │ none │ 📌 Unpinned │ numpy==2.4.2 │ Pinned to latest stable │
|
|
133
|
+
│ pandas │ >=1.3.0 │ ✅ Healthy │ pandas==3.0.0 │ Pinned to latest compatible version │
|
|
134
|
+
└─────────────┴────────────┴─────────────┴──────────────────────┴──────────────────────────────────────┘
|
|
135
|
+
|
|
136
|
+
💥 Conflicts: 0 📌 Unpinned: 1 ✅ Healthy: 3
|
|
137
|
+
|
|
138
|
+
✅ All packages verified — no cross-package conflicts.
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### Fix — generate a clean requirements file
|
|
142
|
+
```bash
|
|
143
|
+
reqfix fix
|
|
144
|
+
```
|
|
145
|
+
Writes a `requirements.fixed.txt` with every package pinned to a compatible version. Nothing is installed.
|
|
146
|
+
|
|
147
|
+
### Install — fix and install in one step
|
|
148
|
+
```bash
|
|
149
|
+
reqfix install
|
|
150
|
+
```
|
|
151
|
+
Asks for confirmation, verifies cross-package compatibility, then installs everything.
|
|
152
|
+
|
|
153
|
+
### Custom file paths
|
|
154
|
+
```bash
|
|
155
|
+
reqfix analyze --file path/to/requirements.txt
|
|
156
|
+
reqfix fix --output my-fixed-requirements.txt
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
---
|
|
160
|
+
|
|
161
|
+
## 🗺️ Roadmap
|
|
162
|
+
|
|
163
|
+
This is just the beginning. Here's what's coming:
|
|
164
|
+
|
|
165
|
+
- [ ] **v0.2** — Parallel PyPI requests (faster analysis)
|
|
166
|
+
- [ ] **v0.3** — Support for `pyproject.toml` and `setup.py`
|
|
167
|
+
- [ ] **v0.4** — Conflict graph visualization
|
|
168
|
+
- [ ] **v1.0** — SaaS web app with team features
|
|
169
|
+
- [ ] **v1.x** — VS Code extension with inline conflict highlighting
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
## 🤝 Contributing
|
|
174
|
+
|
|
175
|
+
Contributions are welcome! This project is actively developed.
|
|
176
|
+
|
|
177
|
+
1. Fork the repo
|
|
178
|
+
2. Create a branch: `git checkout -b feat/your-feature`
|
|
179
|
+
3. Make your changes
|
|
180
|
+
4. Push and open a Pull Request
|
|
181
|
+
|
|
182
|
+
Please follow the existing code style — type hints, docstrings, and single-responsibility functions throughout.
|
|
183
|
+
|
|
184
|
+
---
|
|
185
|
+
|
|
186
|
+
## 📁 Project Structure
|
|
187
|
+
|
|
188
|
+
```
|
|
189
|
+
reqfix/
|
|
190
|
+
├── core/
|
|
191
|
+
│ ├── parser.py # Parses requirements.txt into objects
|
|
192
|
+
│ ├── resolver.py # Fetches versions from PyPI, detects conflicts
|
|
193
|
+
│ ├── fixer.py # Determines best version for each package
|
|
194
|
+
│ ├── verifier.py # Verifies all packages are mutually compatible
|
|
195
|
+
│ └── installer.py # Writes fixed file and runs pip install
|
|
196
|
+
├── cli/
|
|
197
|
+
│ └── main.py # Terminal interface (analyze, fix, install)
|
|
198
|
+
├── setup.py # Package configuration
|
|
199
|
+
└── requirements.txt # Reqfix's own dependencies
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
---
|
|
203
|
+
|
|
204
|
+
## 📄 License
|
|
205
|
+
|
|
206
|
+
MIT — free to use, modify, and distribute.
|
|
207
|
+
|
|
208
|
+
---
|
|
209
|
+
|
|
210
|
+
<p align="center">Built with ❤️ to save developers from dependency hell</p>
|
reqfix-0.1.0/README.md
ADDED
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
# 🔧 Reqfix
|
|
2
|
+
|
|
3
|
+
> Fix your Python dependency conflicts automatically.
|
|
4
|
+
|
|
5
|
+
[](https://python.org)
|
|
6
|
+
[](LICENSE)
|
|
7
|
+
[]()
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## The Problem
|
|
12
|
+
|
|
13
|
+
You clone a Python project, create a virtual environment, run `pip install -r requirements.txt` and get this:
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
ERROR: Cannot install flask==1.0.0 and werkzeug==2.3.0 because these
|
|
17
|
+
package versions have conflicting dependencies.
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Then you spend the next hour manually hunting for compatible versions.
|
|
21
|
+
It's tedious, frustrating, and happens to every developer.
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## The Solution
|
|
26
|
+
|
|
27
|
+
Reqfix analyzes your `requirements.txt`, talks to PyPI, finds compatible versions for every package, verifies they all work **together**, and installs them.
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
reqfix install
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
That's it.
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## ✨ Features
|
|
38
|
+
|
|
39
|
+
- 🔍 **Analyze** — Detects conflicts, unpinned packages, and outdated versions
|
|
40
|
+
- 🔧 **Fix** — Generates a clean `requirements.fixed.txt` with pinned compatible versions
|
|
41
|
+
- 🚀 **Install** — Auto-installs all fixed packages in one command
|
|
42
|
+
- 🛡️ **Verify** — Cross-checks ALL packages are mutually compatible before installing anything
|
|
43
|
+
- 🎨 **Beautiful output** — Color-coded terminal reports powered by Rich
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## 📦 Installation
|
|
48
|
+
|
|
49
|
+
### Option 1 — Via pip (recommended)
|
|
50
|
+
```bash
|
|
51
|
+
pip install reqfix
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Option 2 — From source (for contributors)
|
|
55
|
+
```bash
|
|
56
|
+
git clone https://github.com/Sakshi-512/reqfix.git
|
|
57
|
+
cd reqfix
|
|
58
|
+
pip install -e .
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
> 💡 Install globally (outside any virtualenv) so `reqfix` is available in every project.
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## 🚀 Usage
|
|
66
|
+
|
|
67
|
+
### The most common flow
|
|
68
|
+
```bash
|
|
69
|
+
# You cloned a project and pip install failed?
|
|
70
|
+
# Just run:
|
|
71
|
+
reqfix install
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### Analyze — see what's broken (no changes made)
|
|
75
|
+
```bash
|
|
76
|
+
reqfix analyze
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
```
|
|
80
|
+
╭─────────────────────────────────────────╮
|
|
81
|
+
│ Reqfix — Python Dependency Doctor │
|
|
82
|
+
╰─────────────────────────────────────────╯
|
|
83
|
+
|
|
84
|
+
Found 4 packages in requirements.txt
|
|
85
|
+
|
|
86
|
+
┌─────────────┬────────────┬─────────────┬──────────────────────┬──────────────────────────────────────┐
|
|
87
|
+
│ Package │ Original │ Status │ Suggested Fix │ Reason │
|
|
88
|
+
├─────────────┼────────────┼─────────────┼──────────────────────┼──────────────────────────────────────┤
|
|
89
|
+
│ flask │ >=2.0.0 │ ✅ Healthy │ flask==3.1.2 │ Pinned to latest compatible version │
|
|
90
|
+
│ requests │ ==2.28.1 │ ✅ Healthy │ requests==2.28.1 │ Pinned to latest compatible version │
|
|
91
|
+
│ numpy │ none │ 📌 Unpinned │ numpy==2.4.2 │ Pinned to latest stable │
|
|
92
|
+
│ pandas │ >=1.3.0 │ ✅ Healthy │ pandas==3.0.0 │ Pinned to latest compatible version │
|
|
93
|
+
└─────────────┴────────────┴─────────────┴──────────────────────┴──────────────────────────────────────┘
|
|
94
|
+
|
|
95
|
+
💥 Conflicts: 0 📌 Unpinned: 1 ✅ Healthy: 3
|
|
96
|
+
|
|
97
|
+
✅ All packages verified — no cross-package conflicts.
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### Fix — generate a clean requirements file
|
|
101
|
+
```bash
|
|
102
|
+
reqfix fix
|
|
103
|
+
```
|
|
104
|
+
Writes a `requirements.fixed.txt` with every package pinned to a compatible version. Nothing is installed.
|
|
105
|
+
|
|
106
|
+
### Install — fix and install in one step
|
|
107
|
+
```bash
|
|
108
|
+
reqfix install
|
|
109
|
+
```
|
|
110
|
+
Asks for confirmation, verifies cross-package compatibility, then installs everything.
|
|
111
|
+
|
|
112
|
+
### Custom file paths
|
|
113
|
+
```bash
|
|
114
|
+
reqfix analyze --file path/to/requirements.txt
|
|
115
|
+
reqfix fix --output my-fixed-requirements.txt
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## 🗺️ Roadmap
|
|
121
|
+
|
|
122
|
+
This is just the beginning. Here's what's coming:
|
|
123
|
+
|
|
124
|
+
- [ ] **v0.2** — Parallel PyPI requests (faster analysis)
|
|
125
|
+
- [ ] **v0.3** — Support for `pyproject.toml` and `setup.py`
|
|
126
|
+
- [ ] **v0.4** — Conflict graph visualization
|
|
127
|
+
- [ ] **v1.0** — SaaS web app with team features
|
|
128
|
+
- [ ] **v1.x** — VS Code extension with inline conflict highlighting
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
## 🤝 Contributing
|
|
133
|
+
|
|
134
|
+
Contributions are welcome! This project is actively developed.
|
|
135
|
+
|
|
136
|
+
1. Fork the repo
|
|
137
|
+
2. Create a branch: `git checkout -b feat/your-feature`
|
|
138
|
+
3. Make your changes
|
|
139
|
+
4. Push and open a Pull Request
|
|
140
|
+
|
|
141
|
+
Please follow the existing code style — type hints, docstrings, and single-responsibility functions throughout.
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
## 📁 Project Structure
|
|
146
|
+
|
|
147
|
+
```
|
|
148
|
+
reqfix/
|
|
149
|
+
├── core/
|
|
150
|
+
│ ├── parser.py # Parses requirements.txt into objects
|
|
151
|
+
│ ├── resolver.py # Fetches versions from PyPI, detects conflicts
|
|
152
|
+
│ ├── fixer.py # Determines best version for each package
|
|
153
|
+
│ ├── verifier.py # Verifies all packages are mutually compatible
|
|
154
|
+
│ └── installer.py # Writes fixed file and runs pip install
|
|
155
|
+
├── cli/
|
|
156
|
+
│ └── main.py # Terminal interface (analyze, fix, install)
|
|
157
|
+
├── setup.py # Package configuration
|
|
158
|
+
└── requirements.txt # Reqfix's own dependencies
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## 📄 License
|
|
164
|
+
|
|
165
|
+
MIT — free to use, modify, and distribute.
|
|
166
|
+
|
|
167
|
+
---
|
|
168
|
+
|
|
169
|
+
<p align="center">Built with ❤️ to save developers from dependency hell</p>
|
|
File without changes
|