simfix 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.
simfix-0.1.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Habib ur Rehmaan
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
simfix-0.1.0/PKG-INFO ADDED
@@ -0,0 +1,286 @@
1
+ Metadata-Version: 2.4
2
+ Name: simfix
3
+ Version: 0.1.0
4
+ Summary: A dependency checker and installation assistant for simulator repositories.
5
+ Author-email: Habib ur Rehmaan <h.rehmaan96@gmail.com>
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/hrehmaan/simfix
8
+ Project-URL: Repository, https://github.com/hrehmaan/simfix
9
+ Project-URL: Issues, https://github.com/hrehmaan/simfix/issues
10
+ Keywords: simulator,dependencies,installation,docker,cuda,ros
11
+ Classifier: Development Status :: 3 - Alpha
12
+ Classifier: Environment :: Console
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.10
16
+ Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.12
18
+ Classifier: Programming Language :: Python :: 3.13
19
+ Classifier: Operating System :: OS Independent
20
+ Requires-Python: >=3.10
21
+ Description-Content-Type: text/markdown
22
+ License-File: LICENSE
23
+ Requires-Dist: rich
24
+ Requires-Dist: typer
25
+ Requires-Dist: requests
26
+ Requires-Dist: packaging
27
+ Requires-Dist: pyyaml
28
+ Requires-Dist: uv
29
+ Provides-Extra: dev
30
+ Requires-Dist: pytest; extra == "dev"
31
+ Requires-Dist: pre-commit; extra == "dev"
32
+ Requires-Dist: ruff; extra == "dev"
33
+ Dynamic: license-file
34
+
35
+ # SimFix
36
+
37
+ SimFix is a dependency checker and installation assistant for simulator repositories.
38
+
39
+ It helps users diagnose common installation problems by inspecting repository files, detecting dependency systems, checking Python packages, identifying system requirements, and suggesting a safe installation plan.
40
+
41
+ SimFix is designed for simulator projects where installation can fail because of missing dependencies, version conflicts, GPU/CUDA requirements, ROS dependencies, Docker setup issues, or unclear setup instructions.
42
+
43
+ ## Features
44
+
45
+ SimFix can analyze both local repositories and remote GitHub/GitLab repositories.
46
+
47
+ It currently supports:
48
+
49
+ * Local repository analysis
50
+ * GitHub/GitLab repository analysis by cloning into a local workspace
51
+ * Dependency file detection
52
+ * Python dependency parsing
53
+ * PyPI package checks
54
+ * Basic installation planning
55
+ * System diagnostics
56
+ * Safe dependency fixes for selected file types
57
+ * Docker helper generation for supported simulator projects
58
+
59
+ ## Supported dependency files
60
+
61
+ SimFix can detect and inspect:
62
+
63
+ * `requirements.txt`
64
+ * `setup.py`
65
+ * `pyproject.toml`
66
+ * `environment.yml` / `environment.yaml`
67
+ * `Dockerfile`
68
+ * `package.xml`
69
+ * `CMakeLists.txt`
70
+
71
+ ## System diagnostics
72
+
73
+ SimFix can report:
74
+
75
+ * Operating system
76
+ * CPU architecture
77
+ * Python version
78
+ * Git availability
79
+ * Docker availability
80
+ * Conda/mamba availability
81
+ * NVIDIA GPU availability
82
+ * NVIDIA driver information
83
+ * CUDA toolkit availability
84
+
85
+ ## Automatic fixes
86
+
87
+ The `simfix fix` command currently supports:
88
+
89
+ * Resolving `requirements.txt` with `uv`
90
+ * Normalizing invalid pip syntax such as `package=version` to `package==version`
91
+ * Repairing clear resolver conflicts by removing direct conflicting pins and letting `uv` choose compatible versions
92
+ * Cleaning duplicate dependencies in `environment.yml`
93
+ * Creating CUDA/GPU Dockerfiles for GPU-based simulator projects
94
+ * Creating ROS Dockerfiles from `package.xml`
95
+ * Creating general system dependency Dockerfiles for CMake/C++ simulator projects
96
+ * Initializing Git submodules
97
+ * Pulling Git LFS assets when Git LFS is available
98
+ * Creating a Docker run helper script
99
+
100
+ For GPU projects, SimFix can create a CUDA-based Dockerfile. The host machine still needs a working NVIDIA driver and NVIDIA Container Toolkit to run GPU containers.
101
+
102
+ SimFix does not automatically install vendor software such as NVIDIA Isaac Gym, Isaac Sim, CUDA drivers, or system-level GPU drivers. These dependencies must be installed manually.
103
+
104
+ ## Installation for development
105
+
106
+ Clone the repository:
107
+
108
+ ```bash
109
+ git clone https://github.com/hrehmaan/simfix.git
110
+ cd simfix
111
+ ```
112
+
113
+ Install in editable mode with development dependencies:
114
+
115
+ ```bash
116
+ python -m pip install -e ".[dev]"
117
+ ```
118
+
119
+ Install pre-commit hooks:
120
+
121
+ ```bash
122
+ pre-commit install
123
+ ```
124
+
125
+ ## Usage
126
+
127
+ Check your system:
128
+
129
+ ```bash
130
+ simfix system
131
+ ```
132
+
133
+ Analyze a repository:
134
+
135
+ ```bash
136
+ simfix doctor <repo>
137
+ ```
138
+
139
+ Example:
140
+
141
+ ```bash
142
+ simfix doctor ../simfix_test
143
+ ```
144
+
145
+ Analyze a repository and show detected metadata:
146
+
147
+ ```bash
148
+ simfix analyze <repo>
149
+ ```
150
+
151
+ Generate an installation plan:
152
+
153
+ ```bash
154
+ simfix plan <repo>
155
+ ```
156
+
157
+ Generate a Markdown report:
158
+
159
+ ```bash
160
+ simfix doctor <repo> --report
161
+ ```
162
+
163
+ Show suggested installation commands without running them:
164
+
165
+ ```bash
166
+ simfix commands <repo>
167
+ ```
168
+
169
+ Apply supported automatic fixes:
170
+
171
+ ```bash
172
+ simfix fix <repo>
173
+ ```
174
+
175
+ Analyze a remote GitHub repository:
176
+
177
+ ```bash
178
+ simfix doctor https://github.com/hrehmaan/simfix.git
179
+ ```
180
+
181
+ Show the installed SimFix version:
182
+
183
+ ```bash
184
+ simfix version
185
+ ```
186
+
187
+ ## Main commands
188
+
189
+ ```text
190
+ simfix system
191
+ simfix doctor <repo>
192
+ simfix doctor <repo> --report
193
+ simfix analyze <repo>
194
+ simfix plan <repo>
195
+ simfix commands <repo>
196
+ simfix fix <repo>
197
+ simfix version
198
+ ```
199
+
200
+ ## Example output
201
+
202
+ ```text
203
+ SimFix Doctor
204
+ Repository: /path/to/repository
205
+
206
+ Detected dependency files
207
+ requirements.txt: yes
208
+ setup.py: yes
209
+ pyproject.toml: no
210
+ environment.yml: no
211
+ Dockerfile: no
212
+ package.xml / ROS: no
213
+ CMakeLists.txt: no
214
+
215
+ Detected ecosystem(s): python
216
+
217
+ Python packages
218
+ - numpy
219
+ - matplotlib
220
+
221
+ PyPI check
222
+ - numpy: found
223
+ - matplotlib: found
224
+
225
+ Install plan
226
+ Recommended mode: python
227
+ Reason: Python dependency files were found.
228
+
229
+ Recommendation:
230
+ Python environment installation is possible.
231
+ ```
232
+
233
+ ## Example: fixing a Python dependency conflict
234
+
235
+ If a repository contains conflicting Python requirements such as:
236
+
237
+ ```text
238
+ urdfpy==0.0.22
239
+ networkx==3.1
240
+ ```
241
+
242
+ and the resolver reports that `urdfpy==0.0.22` requires `networkx==2.2`, SimFix does not blindly choose a version itself.
243
+
244
+ Instead, SimFix removes the direct conflicting pin and lets `uv` resolve the compatible version.
245
+
246
+ This keeps the resolver as the authority and avoids hard-coding risky downgrades.
247
+
248
+ ## Example: vendor dependency detection
249
+
250
+ Some simulator dependencies are not available on PyPI. For example, NVIDIA Isaac Gym is a vendor dependency and cannot be installed with:
251
+
252
+ ```bash
253
+ python -m pip install isaacgym
254
+ ```
255
+
256
+ In such cases, SimFix reports the missing package and indicates that manual installation is required.
257
+
258
+ For these projects, the correct setup may require:
259
+
260
+ * Linux
261
+ * NVIDIA GPU
262
+ * NVIDIA driver
263
+ * CUDA support
264
+ * Vendor SDK installation
265
+
266
+ ## Development checks
267
+
268
+ Run tests:
269
+
270
+ ```bash
271
+ pytest
272
+ ```
273
+
274
+ Run pre-commit:
275
+
276
+ ```bash
277
+ pre-commit run --all-files
278
+ ```
279
+
280
+ ## Project status
281
+
282
+ SimFix is in early development.
283
+
284
+ The current focus is safe repository analysis, dependency diagnosis, installation planning, and targeted automatic fixes for common simulator setup problems.
285
+
286
+ The long-term goal is to make simulator setup easier by combining repository analysis, system diagnostics, dependency checks, resolver-based repair, Docker guidance, and clear manual-install warnings for vendor dependencies.
simfix-0.1.0/README.md ADDED
@@ -0,0 +1,252 @@
1
+ # SimFix
2
+
3
+ SimFix is a dependency checker and installation assistant for simulator repositories.
4
+
5
+ It helps users diagnose common installation problems by inspecting repository files, detecting dependency systems, checking Python packages, identifying system requirements, and suggesting a safe installation plan.
6
+
7
+ SimFix is designed for simulator projects where installation can fail because of missing dependencies, version conflicts, GPU/CUDA requirements, ROS dependencies, Docker setup issues, or unclear setup instructions.
8
+
9
+ ## Features
10
+
11
+ SimFix can analyze both local repositories and remote GitHub/GitLab repositories.
12
+
13
+ It currently supports:
14
+
15
+ * Local repository analysis
16
+ * GitHub/GitLab repository analysis by cloning into a local workspace
17
+ * Dependency file detection
18
+ * Python dependency parsing
19
+ * PyPI package checks
20
+ * Basic installation planning
21
+ * System diagnostics
22
+ * Safe dependency fixes for selected file types
23
+ * Docker helper generation for supported simulator projects
24
+
25
+ ## Supported dependency files
26
+
27
+ SimFix can detect and inspect:
28
+
29
+ * `requirements.txt`
30
+ * `setup.py`
31
+ * `pyproject.toml`
32
+ * `environment.yml` / `environment.yaml`
33
+ * `Dockerfile`
34
+ * `package.xml`
35
+ * `CMakeLists.txt`
36
+
37
+ ## System diagnostics
38
+
39
+ SimFix can report:
40
+
41
+ * Operating system
42
+ * CPU architecture
43
+ * Python version
44
+ * Git availability
45
+ * Docker availability
46
+ * Conda/mamba availability
47
+ * NVIDIA GPU availability
48
+ * NVIDIA driver information
49
+ * CUDA toolkit availability
50
+
51
+ ## Automatic fixes
52
+
53
+ The `simfix fix` command currently supports:
54
+
55
+ * Resolving `requirements.txt` with `uv`
56
+ * Normalizing invalid pip syntax such as `package=version` to `package==version`
57
+ * Repairing clear resolver conflicts by removing direct conflicting pins and letting `uv` choose compatible versions
58
+ * Cleaning duplicate dependencies in `environment.yml`
59
+ * Creating CUDA/GPU Dockerfiles for GPU-based simulator projects
60
+ * Creating ROS Dockerfiles from `package.xml`
61
+ * Creating general system dependency Dockerfiles for CMake/C++ simulator projects
62
+ * Initializing Git submodules
63
+ * Pulling Git LFS assets when Git LFS is available
64
+ * Creating a Docker run helper script
65
+
66
+ For GPU projects, SimFix can create a CUDA-based Dockerfile. The host machine still needs a working NVIDIA driver and NVIDIA Container Toolkit to run GPU containers.
67
+
68
+ SimFix does not automatically install vendor software such as NVIDIA Isaac Gym, Isaac Sim, CUDA drivers, or system-level GPU drivers. These dependencies must be installed manually.
69
+
70
+ ## Installation for development
71
+
72
+ Clone the repository:
73
+
74
+ ```bash
75
+ git clone https://github.com/hrehmaan/simfix.git
76
+ cd simfix
77
+ ```
78
+
79
+ Install in editable mode with development dependencies:
80
+
81
+ ```bash
82
+ python -m pip install -e ".[dev]"
83
+ ```
84
+
85
+ Install pre-commit hooks:
86
+
87
+ ```bash
88
+ pre-commit install
89
+ ```
90
+
91
+ ## Usage
92
+
93
+ Check your system:
94
+
95
+ ```bash
96
+ simfix system
97
+ ```
98
+
99
+ Analyze a repository:
100
+
101
+ ```bash
102
+ simfix doctor <repo>
103
+ ```
104
+
105
+ Example:
106
+
107
+ ```bash
108
+ simfix doctor ../simfix_test
109
+ ```
110
+
111
+ Analyze a repository and show detected metadata:
112
+
113
+ ```bash
114
+ simfix analyze <repo>
115
+ ```
116
+
117
+ Generate an installation plan:
118
+
119
+ ```bash
120
+ simfix plan <repo>
121
+ ```
122
+
123
+ Generate a Markdown report:
124
+
125
+ ```bash
126
+ simfix doctor <repo> --report
127
+ ```
128
+
129
+ Show suggested installation commands without running them:
130
+
131
+ ```bash
132
+ simfix commands <repo>
133
+ ```
134
+
135
+ Apply supported automatic fixes:
136
+
137
+ ```bash
138
+ simfix fix <repo>
139
+ ```
140
+
141
+ Analyze a remote GitHub repository:
142
+
143
+ ```bash
144
+ simfix doctor https://github.com/hrehmaan/simfix.git
145
+ ```
146
+
147
+ Show the installed SimFix version:
148
+
149
+ ```bash
150
+ simfix version
151
+ ```
152
+
153
+ ## Main commands
154
+
155
+ ```text
156
+ simfix system
157
+ simfix doctor <repo>
158
+ simfix doctor <repo> --report
159
+ simfix analyze <repo>
160
+ simfix plan <repo>
161
+ simfix commands <repo>
162
+ simfix fix <repo>
163
+ simfix version
164
+ ```
165
+
166
+ ## Example output
167
+
168
+ ```text
169
+ SimFix Doctor
170
+ Repository: /path/to/repository
171
+
172
+ Detected dependency files
173
+ requirements.txt: yes
174
+ setup.py: yes
175
+ pyproject.toml: no
176
+ environment.yml: no
177
+ Dockerfile: no
178
+ package.xml / ROS: no
179
+ CMakeLists.txt: no
180
+
181
+ Detected ecosystem(s): python
182
+
183
+ Python packages
184
+ - numpy
185
+ - matplotlib
186
+
187
+ PyPI check
188
+ - numpy: found
189
+ - matplotlib: found
190
+
191
+ Install plan
192
+ Recommended mode: python
193
+ Reason: Python dependency files were found.
194
+
195
+ Recommendation:
196
+ Python environment installation is possible.
197
+ ```
198
+
199
+ ## Example: fixing a Python dependency conflict
200
+
201
+ If a repository contains conflicting Python requirements such as:
202
+
203
+ ```text
204
+ urdfpy==0.0.22
205
+ networkx==3.1
206
+ ```
207
+
208
+ and the resolver reports that `urdfpy==0.0.22` requires `networkx==2.2`, SimFix does not blindly choose a version itself.
209
+
210
+ Instead, SimFix removes the direct conflicting pin and lets `uv` resolve the compatible version.
211
+
212
+ This keeps the resolver as the authority and avoids hard-coding risky downgrades.
213
+
214
+ ## Example: vendor dependency detection
215
+
216
+ Some simulator dependencies are not available on PyPI. For example, NVIDIA Isaac Gym is a vendor dependency and cannot be installed with:
217
+
218
+ ```bash
219
+ python -m pip install isaacgym
220
+ ```
221
+
222
+ In such cases, SimFix reports the missing package and indicates that manual installation is required.
223
+
224
+ For these projects, the correct setup may require:
225
+
226
+ * Linux
227
+ * NVIDIA GPU
228
+ * NVIDIA driver
229
+ * CUDA support
230
+ * Vendor SDK installation
231
+
232
+ ## Development checks
233
+
234
+ Run tests:
235
+
236
+ ```bash
237
+ pytest
238
+ ```
239
+
240
+ Run pre-commit:
241
+
242
+ ```bash
243
+ pre-commit run --all-files
244
+ ```
245
+
246
+ ## Project status
247
+
248
+ SimFix is in early development.
249
+
250
+ The current focus is safe repository analysis, dependency diagnosis, installation planning, and targeted automatic fixes for common simulator setup problems.
251
+
252
+ The long-term goal is to make simulator setup easier by combining repository analysis, system diagnostics, dependency checks, resolver-based repair, Docker guidance, and clear manual-install warnings for vendor dependencies.
@@ -0,0 +1,61 @@
1
+ [build-system]
2
+ requires = ["setuptools>=68", "wheel"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "simfix"
7
+ version = "0.1.0"
8
+ description = "A dependency checker and installation assistant for simulator repositories."
9
+ readme = "README.md"
10
+ requires-python = ">=3.10"
11
+ license = "MIT"
12
+ authors = [
13
+ { name = "Habib ur Rehmaan", email = "h.rehmaan96@gmail.com" }
14
+ ]
15
+ keywords = [
16
+ "simulator",
17
+ "dependencies",
18
+ "installation",
19
+ "docker",
20
+ "cuda",
21
+ "ros",
22
+ ]
23
+ classifiers = [
24
+ "Development Status :: 3 - Alpha",
25
+ "Environment :: Console",
26
+ "Intended Audience :: Developers",
27
+ "Programming Language :: Python :: 3",
28
+ "Programming Language :: Python :: 3.10",
29
+ "Programming Language :: Python :: 3.11",
30
+ "Programming Language :: Python :: 3.12",
31
+ "Programming Language :: Python :: 3.13",
32
+ "Operating System :: OS Independent",
33
+ ]
34
+
35
+ dependencies = [
36
+ "rich",
37
+ "typer",
38
+ "requests",
39
+ "packaging",
40
+ "pyyaml",
41
+ "uv",
42
+ ]
43
+
44
+ [project.optional-dependencies]
45
+ dev = [
46
+ "pytest",
47
+ "pre-commit",
48
+ "ruff",
49
+ ]
50
+
51
+ [project.scripts]
52
+ simfix = "simfix.cli:app"
53
+
54
+ [tool.setuptools.packages.find]
55
+ include = ["simfix*"]
56
+ exclude = ["workspace*"]
57
+
58
+ [project.urls]
59
+ Homepage = "https://github.com/hrehmaan/simfix"
60
+ Repository = "https://github.com/hrehmaan/simfix"
61
+ Issues = "https://github.com/hrehmaan/simfix/issues"
simfix-0.1.0/setup.cfg ADDED
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,3 @@
1
+ """SimFix package."""
2
+
3
+ __version__ = "0.1.0"