From 203962945733c9420200b299d7bd7672b871f481 Mon Sep 17 00:00:00 2001 From: Yuxuan Jiang Date: Wed, 26 Feb 2025 10:25:55 +0800 Subject: [PATCH] Expose MjSpec raw pointer via `_address` --- python/mujoco/specs.cc | 3 +++ python/mujoco/specs_test.py | 10 ++++++++++ 2 files changed, 13 insertions(+) diff --git a/python/mujoco/specs.cc b/python/mujoco/specs.cc index 0f7a4c2a..8853430e 100644 --- a/python/mujoco/specs.cc +++ b/python/mujoco/specs.cc @@ -393,6 +393,9 @@ PYBIND11_MODULE(_specs, m) { mjSpec.def("copy", [](const MjSpec& self) -> MjSpec { return MjSpec(self); }); + mjSpec.def_property_readonly("_address", [](const MjSpec& self) { + return reinterpret_cast(self.ptr); + }); mjSpec.def_property( "copy_during_attach", [](MjSpec& self) { diff --git a/python/mujoco/specs_test.py b/python/mujoco/specs_test.py index a958e595..e400347e 100644 --- a/python/mujoco/specs_test.py +++ b/python/mujoco/specs_test.py @@ -1159,5 +1159,15 @@ class SpecsTest(absltest.TestCase): ): model_spec.compile() + def test_address(self): + spec1 = mujoco.MjSpec() + spec2 = mujoco.MjSpec() + spec3 = spec1.copy() + + self.assertGreater(spec1._address, 0) + self.assertGreater(spec2._address, 0) + self.assertGreater(spec3._address, 0) + self.assertLen({spec1._address, spec2._address, spec3._address}, 3) + if __name__ == '__main__': absltest.main()