Metadata-Version: 2.4
Name: unisim-core
Version: 0.1.14
Summary: Unified physics backend contracts and adapters
Keywords: physics,simulation,robotics,benchmark
Author: UniSim Authors
License-Expression: Apache-2.0
License-File: LICENSE
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Dist: numpy
Requires-Dist: drake-uni==0.1.0 ; extra == 'drake'
Requires-Dist: genesis-world==1.3.3 ; extra == 'genesis'
Requires-Dist: mujoco-warp==3.10.0.3 ; extra == 'mjwarp'
Requires-Dist: warp-lang>=1.14.0 ; extra == 'mjwarp'
Requires-Dist: motrixsim-core==0.8.2 ; extra == 'motrix'
Requires-Dist: mujoco>=3.5 ; extra == 'mujoco'
Requires-Dist: mujoco-uni-runtime==0.4.0 ; extra == 'mujoco'
Requires-Python: >=3.10, <3.14
Provides-Extra: drake
Provides-Extra: genesis
Provides-Extra: isaacgym
Provides-Extra: isaacsim
Provides-Extra: mjwarp
Provides-Extra: motrix
Provides-Extra: mujoco
Description-Content-Type: text/markdown

# UniSim

UniSim provides backend-neutral physics contracts and optional engine
adapters. The PyPI distribution is `unisim-core`; the Python import namespace
is `unisim`.

This repository is the extraction target for UniLab's unified physics backend.
The `0.1.x` line contains the public contract, seven production backend
adapters, a deterministic fake backend, a lightweight conformance helper, and
benchmark API/result-schema reservations. It does not run benchmark workloads
or include engine SDKs in the base install.

## Development

```bash
make sync       # locked environment plus the MuJoCo test extra
make check      # Ruff + pytest
make package    # source distribution and wheel for local inspection
```

The TestPyPI and automated production release procedure is documented in
[`docs/release.md`](docs/release.md).

Engine adapters are optional extras and are loaded lazily. The MuJoCo adapter
is available as `unisim.MuJoCoBackend` after installing the `mujoco` extra (or
through `unisim.create_backend("mujoco", scene=...)`). Each adapter must
document its supported Python/platform/runtime matrix and pass the conformance
helper before it is published.

Motrix is available through `unisim.MotrixBackend` after installing the
`motrix` extra. Drake, MJWarp and Genesis use the same lazy optional boundary;
IsaacGym and IsaacSim are external-worker adapters because their vendor SDKs
are not redistributable PyPI dependencies. All seven identities are exposed by
the factory and fail closed with actionable diagnostics when their runtime is
absent. Every adapter exposes the same state/control/reset contract;
engine-native model and data objects remain private.

External worker roots can be configured with `UNISIM_ISAACGYM_HOME`,
`UNISIM_ISAACGYM_PYTHON`, `UNISIM_ISAACSIM_HOME`, and
`UNISIM_ISAACSIM_PYTHON`. The package also accepts the former `UNILAB_*`
spellings as a migration fallback.

## Relationship to UniLab

UniLab retains Hydra configuration, task/env/manager lifecycle, robot assets,
RL training, checkpoint, and sim2sim ownership. UniSim must not import UniLab.
The final state has one implementation owned by this repository; UniLab only
assembles task-owned scene/configuration inputs.
