This document is for people building, testing, or changing this repository. For end-user Python package usage, see Python usage.
The repository is a layered Rust workspace:
crates/maya-scene-kit-formats: low-level.ma/.mbparsing, spans, bytes, and format-native rewrite helperscrates/maya-scene-kit-observe: scene facts, recovery, schema lookup, diagnostics, and read-only query surfacescrates/maya-scene-kit-audit: rules, findings, severities, and gate decisionscrates/maya-scene-kit-edit: patch planning, rewrite/materialization, conversion, and write-path reportingcrates/maya-scene-kit-cli: command-line adaptercrates/maya-scene-kit-gui: desktop adaptercrates/maya-scene-kit-python: Python binding adapter
Use targeted tests for the crates affected by a change:
cargo test -p maya-scene-kit-observe
cargo test -p maya-scene-kit-audit
cargo test -p maya-scene-kit-edit
cargo test -p maya-scene-kit-cliRun the layer checker after changes that affect crate boundaries, manifests, or cross-layer ownership:
python .agents/references/layer-boundary-review/scripts/check_layering.py --root .For docs-only changes, at minimum check Markdown diffs for whitespace errors:
git diff --checkThe Python binding lives in crates/maya-scene-kit-python.
Build a wheel with uv and maturin:
uv run --with maturin maturin build --manifest-path crates/maya-scene-kit-python/Cargo.tomlBuilt wheels are written to target\wheels\.
On Windows the filename will end in win_amd64.whl.
Install a locally built wheel:
uv pip install --system .\target\wheels\maya_scene_kit-*.whlQuick source-tree smoke test:
python -c "import maya_scene_kit; print(maya_scene_kit.inspect_mb('tests/02/sphere.mb', max_depth=0)['scene_format'])"Use maturin develop when you want an editable local environment instead of a
wheel build:
uv venv
.venv\Scripts\Activate.ps1
uv pip install maturin
maturin develop --manifest-path crates/maya-scene-kit-python/Cargo.tomlThe Rust-side binding tests live with the adapter crate:
cargo test -p maya-scene-kit-pythonThose tests link against the local Python development library. If the linker
reports a missing -lpythonX.Y, install the matching Python development package
or run the tests in an environment that provides it.