typed-mujoco
typed-mujoco is an unofficial companion of the official mujoco Python
package. It ships 32 partial PEP 561 stubs, not the engine or a runtime fork.
These stubs target the official MuJoCo 3.17.0 wheel.
The Apache 2.0 license and upstream copyright notices remain with the stubs.
Version 3.17.0.0 requires mujoco>=3.17.0 and Python 3.10 or newer,
matching the Python floor published for the official 3.17.0 wheel. Later
releases are allowed, but need a compatibility check against their installed
API. Update the stubs if that check finds changes.
The partial marker identifies modules without companion stubs. However,
ty==0.0.85 does not resolve upstream-only modules such as mujoco.minimize;
it reports unresolved-import. Other uncovered modules and MJX, if installed,
may fail static imports too, even though runtime imports work. The checks verify
this Ty error against a real upstream module; MJX fallback is not covered.
Optional Filament and Studio native modules are not supplied by this companion
and may be unavailable at runtime. Their stubs always receive static checks;
the native API audit reports which optional modules are absent.
Installation
Install the companion with:
uv pip install typed-mujoco
For an existing installation, upgrade both packages with:
uv pip install --upgrade typed-mujoco mujoco
import mujoco
xml = (
'<mujoco><worldbody><body name="ball"><freejoint/>'
'<geom size=".1"/></body></worldbody></mujoco>'
)
model = mujoco.MjModel.from_xml_string(xml)
data = mujoco.MjData(model)
mujoco.mj_step(model, data)
Developer build and checks
From the repository root, build and check the wheel against the 3.17.0 baseline with Python 3.13:
uv venv --python 3.13 typed-mujoco/.venv
uv build typed-mujoco --python 3.13 --out-dir typed-mujoco/dist
uv pip install --python typed-mujoco/.venv/bin/python 'mujoco==3.17.0'
uv pip install --python typed-mujoco/.venv/bin/python typed-mujoco/dist/typed_mujoco-3.17.0.0-py3-none-any.whl
uv pip install --python typed-mujoco/.venv/bin/python --group typed-mujoco/pyproject.toml:typing
PATH="/usr/sbin:typed-mujoco/.venv/bin:$PATH" MUJOCO_GL=disable typed-mujoco/.venv/bin/python -I typed-mujoco/tests/check.py
typed-mujoco/.venv/bin/ruff check --config typed-mujoco/pyproject.toml typed-mujoco/tests typed-mujoco/mujoco-stubs
typed-mujoco/.venv/bin/ruff format --check --config typed-mujoco/pyproject.toml typed-mujoco/tests typed-mujoco/mujoco-stubs
uv build typed-mujoco/dist/typed_mujoco-3.17.0.0.tar.gz --wheel --python 3.13 --out-dir typed-mujoco/dist/roundtrip
uv pip install --python typed-mujoco/.venv/bin/python typed-mujoco/dist/roundtrip/typed_mujoco-3.17.0.0-py3-none-any.whl
PATH="/usr/sbin:typed-mujoco/.venv/bin:$PATH" MUJOCO_GL=disable typed-mujoco/.venv/bin/python -I typed-mujoco/tests/check.py
To check the latest official release locally, upgrade MuJoCo and run the same checker again:
uv pip install --python typed-mujoco/.venv/bin/python --upgrade --default-index https://pypi.org/simple mujoco
PATH="/usr/sbin:typed-mujoco/.venv/bin:$PATH" MUJOCO_GL=disable typed-mujoco/.venv/bin/python -I typed-mujoco/tests/check.py
The checker tests the installed wheel's file list, the MuJoCo API, documented examples, runtime smoke tests, Ty consumers and negative cases, and Ruff. It checks the sdist-derived wheel too. It reports optional native modules that the runtime wheel does not include. CI runs independent baseline (3.17.0) and latest MuJoCo checks on macOS and Ubuntu, on scoped pushes and pull requests, manual runs, and daily at 06:17 UTC. Each CI run checks that MuJoCo still imports after the companion is uninstalled.
Metadata
Release files for typed-mujoco 3.17.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| typed_mujoco-3.17.0.0.tar.gz | 118.0 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| typed_mujoco-3.17.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 249.8 kB
Release files / typed_mujoco-3.17.0.0.tar.gz
| Download URL | typed_mujoco-3.17.0.0.tar.gz |
|---|---|
| Size | 118.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
10c89eb79b03cc45a3bd7409ee061b9c9f7fd3f42286a0673929c89cd3d3963d
|
|
BLAKE2b-256 checksum How to use checksums |
514cf2374c5bf3c46d20aa3614675d027d839febfb9684c2c4cfa0df618ebe3d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / typed_mujoco-3.17.0.0-py3-none-any.whl
| Download URL | typed_mujoco-3.17.0.0-py3-none-any.whl |
|---|---|
| Size | 131.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c537e867e18b72e9c93c8cafe05d618a1931ed230881c62026878e6a1fd9b004
|
|
BLAKE2b-256 checksum How to use checksums |
fd78b9ef5b474e0bfcaf7ce5fc688ce1a503329843e65566c5e0b267b40b9661
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Security for typed-mujoco 3.17.0.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.