Project is distributed from git + tags rather than PyPI. Replace the
sync/wheel install instructions with `uv add 'git+URL@tag'` forms and
add a release section spelling out the manual version-bump + tag
procedure.
Coverage:
- test_model: SimpleNet forward (parametrized over batch sizes and both
unsqueezed and flat input shapes), layer dimensions, differentiability,
and ONNX round-trip
- test_inference: load_model resolution order (bundled, cwd override,
explicit path, missing path), and predict shape/dtype/determinism plus
endpoint sanity across 8 cardinal/diagonal targets
- test_train: _load_csv parsing, TrajectoryDataset indexing, full train()
pipeline producing a single-file ONNX, plus a smoke test against the
real data shipped under data/
- test_cli: --help for the three console scripts and a real run of
mouse-visualize via both the entry point and python -m
Wire up pytest via dependency-groups and tool.pytest.ini_options.
- Move all code into src/mouse_control/ following the src-layout convention,
with model/collect/train/visualize/inference as separate modules and
SimpleNet extracted into model.py
- Add hatchling-based pyproject.toml with three CLI entry points
(mouse-collect, mouse-train, mouse-visualize) and bundle the trained
ONNX model as a package resource under assets/
- Move training data to data/, delete superseded show.py, remove dead
imports (numpy, onnxruntime, onnx, onnxsim) and the unused
visualize_path() helper
- Fix crashes in the collector: guard against destroyed-widget access
after the n==100 destroy(), and skip save_to_csv when recording is
off or the path is too short to derive 10 keypoints
- Switch ONNX export to external_data=False so the model ships as a
single self-contained 19KB file
- Bytes-load the bundled model via importlib.resources so packaging
remains correct under zip-safe distributions
- Rewrite README around the new layout, commands, and public API