Skip to main content

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.txt
  • setup.py
  • pyproject.toml
  • environment.yml / environment.yaml
  • Dockerfile
  • package.xml
  • CMakeLists.txt

What SimFix can fix

The simfix fix command currently supports:

  • Resolving requirements.txt using uv
  • Normalizing invalid pip syntax such as package=version to package==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

simfix-0.1.6.tar.gz (41.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

simfix-0.1.6-py3-none-any.whl (45.7 kB view details)

Uploaded Python 3

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

Hashes for simfix-0.1.6.tar.gz
Algorithm Hash digest
SHA256 200ccf5f510cc27ab5b5645ea2fb74c7f1c1ff21fe4f860cf7bb0f52a21710f8
MD5 65f7de5cefeabca23c3fc2a349f216c7
BLAKE2b-256 1a63a1b3575402aa8e78e73b30d7022efa097bd76060aaceb11a6eea44180f50

See more details on using hashes here.

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

Hashes for simfix-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 45a5d9e2e8a2e9231cce6efd1d71459096e68849f207716a40bf8ee012fca82e
MD5 e2c67cc8b8520d74abe65d7c5bf37065
BLAKE2b-256 8eeea0566898780d62758cebb7ea67627ce4a598ca001ebef45ea67b725577db

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page