| """Introspect the installed reachy-mini SDK to confirm the API we depend on. |
| |
| Run with: pixi run verify-sdk |
| No robot connection is made — this only inspects classes/signatures so we can |
| lock down the exact calls before wiring up motion control. |
| """ |
|
|
| from __future__ import annotations |
|
|
| import inspect |
|
|
|
|
| def sig(obj, name: str) -> str: |
| member = getattr(obj, name, None) |
| if member is None: |
| return f" - {name}: MISSING" |
| try: |
| return f" - {name}{inspect.signature(member)}" |
| except (TypeError, ValueError): |
| return f" - {name}: <no signature> ({type(member).__name__})" |
|
|
|
|
| def main() -> None: |
| import reachy_mini |
|
|
| print("reachy_mini version:", getattr(reachy_mini, "__version__", "?")) |
| print("reachy_mini file :", reachy_mini.__file__) |
| print("top-level exports :", sorted(n for n in dir(reachy_mini) if not n.startswith("_"))) |
|
|
| print("\n== module-level helpers ==") |
| for name in ("create_head_pose", "look_at", "look_at_image"): |
| print(sig(reachy_mini, name)) |
|
|
| print("\n== ReachyMini ==") |
| RM = getattr(reachy_mini, "ReachyMini", None) |
| if RM is not None: |
| try: |
| print(" __init__", inspect.signature(RM.__init__)) |
| except (TypeError, ValueError): |
| print(" __init__ <no signature>") |
| methods = [n for n in dir(RM) if not n.startswith("_")] |
| print(" members :", methods) |
| for name in ( |
| "goto_target", |
| "look_at_image", |
| "look_at_world", |
| "set_target", |
| "get_frame", |
| ): |
| print(sig(RM, name)) |
| |
| for attr in ("media", "camera"): |
| print(f" has class attr/property '{attr}':", hasattr(RM, attr)) |
|
|
| print("\n== ReachyMiniApp ==") |
| App = getattr(reachy_mini, "ReachyMiniApp", None) |
| if App is not None: |
| print(sig(App, "run")) |
| print(" members:", [n for n in dir(App) if not n.startswith("_")]) |
| else: |
| print(" ReachyMiniApp NOT found at top level — searching submodules...") |
| import pkgutil |
|
|
| for m in pkgutil.iter_modules(reachy_mini.__path__, reachy_mini.__name__ + "."): |
| print(" submodule:", m.name) |
|
|
|
|
| if __name__ == "__main__": |
| main() |
|
|