A dependency checker and installation assistant for simulator repositories.
Project description
SimFix
SimFix is a command-line tool for diagnosing and fixing common setup problems in simulator repositories.
It inspects a project, detects dependency files, checks Python packages, reports system requirements, and suggests a safe installation plan.
Installation
Install SimFix from PyPI:
pip install simfix
Check that it installed correctly:
simfix --version
You can also check your system:
simfix system
Quick start
Normal user workflow
From any simulator repository:
cd path/to/simulator_repo
simfix doctor .
simfix recommendations .
simfix fix .
simfix commands .
Analyze a simulator repository:
simfix doctor <repo>
Example:
simfix doctor ../my_simulator_repo
Apply supported automatic fixes:
simfix fix <repo>
Generate an installation plan:
simfix plan <repo>
Show suggested installation commands:
simfix commands <repo>
Generate a Markdown report:
simfix doctor <repo> --report
Analyze a GitHub repository directly:
simfix doctor https://github.com/user/repository.git
Environment recommendations
Some simulator projects require system-level or vendor-managed dependencies such as NVIDIA drivers, CUDA, ROS, Gazebo, Isaac Gym, or Isaac Sim. SimFix does not install these automatically because they depend on the operating system, hardware, driver compatibility, administrator permissions, and vendor installation steps.
Use:
simfix recommendations <repo>
Main commands
simfix --version
simfix system
simfix doctor <repo>
simfix doctor <repo> --report
simfix recommendations <repo>
simfix fix <repo>
simfix analyze <repo>
simfix plan <repo>
simfix commands <repo>
What SimFix can detect
SimFix currently detects:
requirements.txtsetup.pypyproject.tomlenvironment.yml/environment.yamlDockerfilepackage.xmlCMakeLists.txt
What SimFix can fix
The simfix fix command currently supports:
- Resolving
requirements.txtusinguv - Normalizing invalid pip syntax such as
package=versiontopackage==version - Repairing clear dependency conflicts by removing direct conflicting pins and letting the resolver choose compatible versions
- Cleaning duplicate dependencies in
environment.yml - Creating CUDA/GPU Dockerfiles for GPU-based simulator projects
- Creating ROS Dockerfiles from
package.xml - Creating Docker run helper scripts
- Initializing Git submodules
- Pulling Git LFS assets when Git LFS is available
SimFix always modifies files in place, so review changes with:
git diff
Example
simfix doctor ../my_simulator_repo
Example output:
SimFix Doctor
Repository: /path/to/my_simulator_repo
Detected dependency files
requirements.txt: yes
setup.py: yes
Dockerfile: no
Detected ecosystem(s): python
PyPI check
numpy: found
matplotlib: found
isaacgym: not found
Recommendation:
Some dependencies are not available on PyPI.
Manual/vendor installation may be required.
Important notes
SimFix does not install GPU drivers, CUDA drivers, ROS, Isaac Gym, Isaac Sim, or other vendor software automatically.
For GPU simulator projects, SimFix may create a CUDA Dockerfile, but your machine still needs a working NVIDIA driver and NVIDIA Container Toolkit to run GPU containers.
Some packages, such as NVIDIA Isaac Gym, are not available on PyPI and must be installed manually.
Development installation
For contributors, clone the repository:
git clone https://github.com/hrehmaan/simfix.git
cd simfix
Install in editable mode:
python -m pip install -e ".[dev]"
Install pre-commit hooks:
pre-commit install
Run tests:
pytest
Run all checks:
pre-commit run --all-files
Project status
SimFix is in early development.
The goal is to make simulator setup easier by combining repository analysis, system diagnostics, dependency checks, resolver-based repair, Docker guidance, and clear warnings for manual/vendor dependencies.
Contributing
Contributions are welcome.
Before opening a pull request, please first create an issue describing the bug, feature request, or improvement you want to work on. This helps avoid duplicate work and makes it easier to discuss the best solution before implementation.
Recommended contribution workflow:
# 1. Create an issue on GitHub first
# 2. Fork the repository
# 3. Create a new branch
git checkout -b fix-or-feature-name
# 4. Make your changes
# 5. Run checks
pytest
pre-commit run --all-files
# 6. Open a pull request and link it to the issue
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file simfix-0.1.6.tar.gz.
File metadata
- Download URL: simfix-0.1.6.tar.gz
- Upload date:
- Size: 41.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
200ccf5f510cc27ab5b5645ea2fb74c7f1c1ff21fe4f860cf7bb0f52a21710f8
|
|
| MD5 |
65f7de5cefeabca23c3fc2a349f216c7
|
|
| BLAKE2b-256 |
1a63a1b3575402aa8e78e73b30d7022efa097bd76060aaceb11a6eea44180f50
|
File details
Details for the file simfix-0.1.6-py3-none-any.whl.
File metadata
- Download URL: simfix-0.1.6-py3-none-any.whl
- Upload date:
- Size: 45.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
45a5d9e2e8a2e9231cce6efd1d71459096e68849f207716a40bf8ee012fca82e
|
|
| MD5 |
e2c67cc8b8520d74abe65d7c5bf37065
|
|
| BLAKE2b-256 |
8eeea0566898780d62758cebb7ea67627ce4a598ca001ebef45ea67b725577db
|