mujoco 3.8.0__tar.gz → 3.9.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (190) hide show
  1. {mujoco-3.8.0 → mujoco-3.9.0}/LICENSES_THIRD_PARTY.md +8 -7
  2. {mujoco-3.8.0/mujoco.egg-info → mujoco-3.9.0}/PKG-INFO +11 -10
  3. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/CMakeLists.txt +3 -3
  4. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/bindings_test.py +1 -1
  5. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/cmake/MujocoDependencies.cmake +27 -2
  6. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/constants.cc +1 -1
  7. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/enum_traits.h +28 -10
  8. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/function_traits.h +62 -29
  9. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/functions.cc +39 -8
  10. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/introspect/enums.py +29 -11
  11. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/introspect/enums_test.py +2 -1
  12. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/introspect/functions.py +108 -34
  13. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/introspect/structs.py +127 -44
  14. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/mjpython/Info.plist +4 -4
  15. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/raw.h +1 -0
  16. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/renderer_test.py +44 -0
  17. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/rendering/classic/renderer.py +6 -2
  18. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/serialization.h +1 -1
  19. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/simulate/CMakeLists.txt +1 -1
  20. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/simulate/simulate.cc +2 -2
  21. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/specs.cc +155 -7
  22. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/specs.cc.inc +612 -605
  23. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/specs_test.py +68 -0
  24. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/specs_wrapper.cc +31 -29
  25. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/specs_wrapper.h +1 -1
  26. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/structs.cc +34 -10
  27. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/structs.h +31 -3
  28. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/structs_wrappers.cc +106 -24
  29. mujoco-3.9.0/mujoco/vfs.h +46 -0
  30. mujoco-3.9.0/mujoco/vfs_test.py +251 -0
  31. {mujoco-3.8.0 → mujoco-3.9.0/mujoco.egg-info}/PKG-INFO +11 -10
  32. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco.egg-info/SOURCES.txt +2 -0
  33. {mujoco-3.8.0 → mujoco-3.9.0}/pyproject.toml +3 -3
  34. {mujoco-3.8.0 → mujoco-3.9.0}/LICENSE +0 -0
  35. {mujoco-3.8.0 → mujoco-3.9.0}/MANIFEST.in +0 -0
  36. {mujoco-3.8.0 → mujoco-3.9.0}/README.md +0 -0
  37. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/__init__.py +0 -0
  38. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/callbacks.cc +0 -0
  39. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/cgl/__init__.py +0 -0
  40. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/cgl/cgl.py +0 -0
  41. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/cmake/CheckAvxSupport.cmake +0 -0
  42. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/cmake/FindOrFetch.cmake +0 -0
  43. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/cmake/MujocoHarden.cmake +0 -0
  44. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/cmake/MujocoLinkOptions.cmake +0 -0
  45. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/cmake/MujocoMacOS.cmake +0 -0
  46. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/cmake/MujocoOptions.cmake +0 -0
  47. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/cmake/ShellTests.cmake +0 -0
  48. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/cmake/TargetAddRpath.cmake +0 -0
  49. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/egl/__init__.py +0 -0
  50. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/egl/egl_ext.py +0 -0
  51. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/enums.cc +0 -0
  52. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/errors.cc +0 -0
  53. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/errors.h +0 -0
  54. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/functions.h +0 -0
  55. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/gl_context.py +0 -0
  56. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/glfw/__init__.py +0 -0
  57. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/indexer_xmacro.h +0 -0
  58. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/indexers.cc +0 -0
  59. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/indexers.h +0 -0
  60. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/introspect/__init__.py +0 -0
  61. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/introspect/ast_nodes.py +0 -0
  62. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/introspect/ast_nodes_test.py +0 -0
  63. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/introspect/codegen/formatter.py +0 -0
  64. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/introspect/codegen/generate_enums.py +0 -0
  65. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/introspect/codegen/generate_functions.py +0 -0
  66. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/introspect/codegen/generate_structs.py +0 -0
  67. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/introspect/functions_test.py +0 -0
  68. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/introspect/mjxmacro.py +0 -0
  69. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/introspect/structs_test.py +0 -0
  70. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/introspect/type_parsing.py +0 -0
  71. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/introspect/type_parsing_test.py +0 -0
  72. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/memory_leak_test.py +0 -0
  73. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/minimize.py +0 -0
  74. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/minimize_test.py +0 -0
  75. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/mjpython/mjpython.icns +0 -0
  76. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/mjpython/mjpython.mm +0 -0
  77. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/mjpython/mjpython.py +0 -0
  78. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/msh2obj.py +0 -0
  79. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/msh2obj_test.py +0 -0
  80. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/osmesa/__init__.py +0 -0
  81. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/private.h +0 -0
  82. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/render.cc +0 -0
  83. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/render_test.py +0 -0
  84. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/renderer.py +0 -0
  85. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/rendering/classic/__init__.py +0 -0
  86. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/rendering/classic/gl_context.py +0 -0
  87. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/rollout.cc +0 -0
  88. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/rollout.py +0 -0
  89. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/rollout_test.py +0 -0
  90. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/simulate/array_safety.h +0 -0
  91. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/simulate/cmake/CheckAvxSupport.cmake +0 -0
  92. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/simulate/cmake/FindOrFetch.cmake +0 -0
  93. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/simulate/cmake/MujocoHarden.cmake +0 -0
  94. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/simulate/cmake/MujocoLinkOptions.cmake +0 -0
  95. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/simulate/cmake/MujocoMacOS.cmake +0 -0
  96. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/simulate/cmake/SimulateDependencies.cmake +0 -0
  97. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/simulate/cmake/SimulateOptions.cmake +0 -0
  98. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/simulate/glfw_adapter.cc +0 -0
  99. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/simulate/glfw_adapter.h +0 -0
  100. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/simulate/glfw_corevideo.h +0 -0
  101. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/simulate/glfw_corevideo.mm +0 -0
  102. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/simulate/glfw_dispatch.cc +0 -0
  103. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/simulate/glfw_dispatch.h +0 -0
  104. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/simulate/macos_gui.mm +0 -0
  105. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/simulate/main.cc +0 -0
  106. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/simulate/platform_ui_adapter.cc +0 -0
  107. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/simulate/platform_ui_adapter.h +0 -0
  108. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/simulate/simulate.h +0 -0
  109. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/simulate.cc +0 -0
  110. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/sysid/__init__.py +0 -0
  111. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/sysid/_src/__init__.py +0 -0
  112. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/sysid/_src/io.py +0 -0
  113. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/sysid/_src/model_modifier.py +0 -0
  114. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/sysid/_src/optimize.py +0 -0
  115. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/sysid/_src/parameter.py +0 -0
  116. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/sysid/_src/plotting.py +0 -0
  117. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/sysid/_src/residual.py +0 -0
  118. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/sysid/_src/signal_modifier.py +0 -0
  119. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/sysid/_src/signal_transform.py +0 -0
  120. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/sysid/_src/timeseries.py +0 -0
  121. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/sysid/_src/trajectory.py +0 -0
  122. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/sysid/py.typed +0 -0
  123. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/sysid/report/builder.py +0 -0
  124. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/sysid/report/defaults.py +0 -0
  125. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/sysid/report/sections/__init__.py +0 -0
  126. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/sysid/report/sections/base.py +0 -0
  127. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/sysid/report/sections/covariance.py +0 -0
  128. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/sysid/report/sections/group.py +0 -0
  129. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/sysid/report/sections/insights.py +0 -0
  130. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/sysid/report/sections/optimization_trace.py +0 -0
  131. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/sysid/report/sections/parameter_distribution.py +0 -0
  132. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/sysid/report/sections/parameters.py +0 -0
  133. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/sysid/report/sections/row.py +0 -0
  134. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/sysid/report/sections/signals.py +0 -0
  135. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/sysid/report/sections/video.py +0 -0
  136. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/sysid/report/templates/covariance.html +0 -0
  137. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/sysid/report/templates/group.html +0 -0
  138. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/sysid/report/templates/insights.html +0 -0
  139. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/sysid/report/templates/layout.html +0 -0
  140. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/sysid/report/templates/optimization_trace.html +0 -0
  141. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/sysid/report/templates/parameter_confidence.html +0 -0
  142. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/sysid/report/templates/parameters_table.html +0 -0
  143. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/sysid/report/templates/plot_generic.html +0 -0
  144. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/sysid/report/templates/row.html +0 -0
  145. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/sysid/report/templates/signals.html +0 -0
  146. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/sysid/report/templates/video.html +0 -0
  147. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/sysid/report/utils.py +0 -0
  148. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/sysid/tests/__init__.py +0 -0
  149. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/sysid/tests/conftest.py +0 -0
  150. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/sysid/tests/test_integration.py +0 -0
  151. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/sysid/tests/test_model_modifier.py +0 -0
  152. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/sysid/tests/test_parameter.py +0 -0
  153. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/sysid/tests/test_signal.py +0 -0
  154. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/sysid/tests/test_timeseries.py +0 -0
  155. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/sysid/tests/test_trajectory.py +0 -0
  156. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/testdata/MJCF_NoRoot.zip +0 -0
  157. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/testdata/MJCF_Root.zip +0 -0
  158. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/testdata/abdomen_1_body.msh +0 -0
  159. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/testdata/model.urdf +0 -0
  160. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/testdata/model.xml +0 -0
  161. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/testdata/msh.xml +0 -0
  162. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/testdata/simple_usd_preview_surface.usda +0 -0
  163. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/testdata/usd_golden.usda +0 -0
  164. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/threadpool.cc +0 -0
  165. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/threadpool.h +0 -0
  166. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/usd/camera.py +0 -0
  167. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/usd/demo.py +0 -0
  168. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/usd/exporter.py +0 -0
  169. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/usd/exporter_test.py +0 -0
  170. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/usd/lights.py +0 -0
  171. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/usd/objects.py +0 -0
  172. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/usd/shapes.py +0 -0
  173. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/usd/utils.py +0 -0
  174. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/util/CMakeLists.txt +0 -0
  175. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/util/array_traits.h +0 -0
  176. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/util/array_traits_test.cc +0 -0
  177. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/util/crossplatform.h +0 -0
  178. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/util/func_traits.h +0 -0
  179. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/util/func_traits_test.cc +0 -0
  180. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/util/func_wrap.h +0 -0
  181. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/util/func_wrap_test.cc +0 -0
  182. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/util/tuple_tools.h +0 -0
  183. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/util/tuple_tools_test.cc +0 -0
  184. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/viewer.py +0 -0
  185. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco/viewer_test.py +0 -0
  186. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco.egg-info/dependency_links.txt +0 -0
  187. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco.egg-info/requires.txt +0 -0
  188. {mujoco-3.8.0 → mujoco-3.9.0}/mujoco.egg-info/top_level.txt +0 -0
  189. {mujoco-3.8.0 → mujoco-3.9.0}/setup.cfg +0 -0
  190. {mujoco-3.8.0 → mujoco-3.9.0}/setup.py +0 -0
@@ -841,12 +841,13 @@ must not be misrepresented as being the original software.
841
841
  distribution.
842
842
  ```
843
843
 
844
- ### TriangleMeshDistance
844
+ ### miniz
845
845
 
846
846
  ```
847
- MIT License
847
+ Copyright 2013-2014 RAD Game Tools and Valve Software
848
+ Copyright 2010-2014 Rich Geldreich and Tenacious Software LLC
848
849
 
849
- Copyright (c) 2021 Jose Antonio Fernandez Fernandez
850
+ All Rights Reserved.
850
851
 
851
852
  Permission is hereby granted, free of charge, to any person obtaining a copy
852
853
  of this software and associated documentation files (the "Software"), to deal
@@ -855,14 +856,14 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
855
856
  copies of the Software, and to permit persons to whom the Software is
856
857
  furnished to do so, subject to the following conditions:
857
858
 
858
- The above copyright notice and this permission notice shall be included in all
859
- copies or substantial portions of the Software.
859
+ The above copyright notice and this permission notice shall be included in
860
+ all copies or substantial portions of the Software.
860
861
 
861
862
  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
862
863
  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
863
864
  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
864
865
  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
865
866
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
866
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
867
- SOFTWARE.
867
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
868
+ THE SOFTWARE.
868
869
  ```
@@ -1,13 +1,13 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mujoco
3
- Version: 3.8.0
3
+ Version: 3.9.0
4
4
  Summary: MuJoCo Physics Simulator
5
5
  Author-email: Google DeepMind <mujoco@deepmind.com>
6
6
  License-Expression: Apache-2.0
7
7
  Project-URL: Homepage, https://github.com/google-deepmind/mujoco
8
- Project-URL: Documentation, https://mujoco.readthedocs.io/en/3.8.0
8
+ Project-URL: Documentation, https://mujoco.readthedocs.io/en/3.9.0
9
9
  Project-URL: Repository, https://github.com/google-deepmind/mujoco
10
- Project-URL: Changelog, https://mujoco.readthedocs.io/en/3.8.0/changelog.html
10
+ Project-URL: Changelog, https://mujoco.readthedocs.io/en/3.9.0/changelog.html
11
11
  Classifier: Development Status :: 5 - Production/Stable
12
12
  Classifier: Intended Audience :: Developers
13
13
  Classifier: Intended Audience :: Science/Research
@@ -963,12 +963,13 @@ must not be misrepresented as being the original software.
963
963
  distribution.
964
964
  ```
965
965
 
966
- ### TriangleMeshDistance
966
+ ### miniz
967
967
 
968
968
  ```
969
- MIT License
969
+ Copyright 2013-2014 RAD Game Tools and Valve Software
970
+ Copyright 2010-2014 Rich Geldreich and Tenacious Software LLC
970
971
 
971
- Copyright (c) 2021 Jose Antonio Fernandez Fernandez
972
+ All Rights Reserved.
972
973
 
973
974
  Permission is hereby granted, free of charge, to any person obtaining a copy
974
975
  of this software and associated documentation files (the "Software"), to deal
@@ -977,14 +978,14 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
977
978
  copies of the Software, and to permit persons to whom the Software is
978
979
  furnished to do so, subject to the following conditions:
979
980
 
980
- The above copyright notice and this permission notice shall be included in all
981
- copies or substantial portions of the Software.
981
+ The above copyright notice and this permission notice shall be included in
982
+ all copies or substantial portions of the Software.
982
983
 
983
984
  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
984
985
  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
985
986
  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
986
987
  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
987
988
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
988
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
989
- SOFTWARE.
989
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
990
+ THE SOFTWARE.
990
991
  ```
@@ -86,7 +86,7 @@ if(NOT TARGET mujoco)
86
86
  if(MUJOCO_FRAMEWORK)
87
87
  message("MuJoCo framework is at ${MUJOCO_FRAMEWORK}/mujoco.framework")
88
88
  set(MUJOCO_LIBRARY
89
- ${MUJOCO_FRAMEWORK}/mujoco.framework/Versions/A/libmujoco.3.8.0.dylib
89
+ ${MUJOCO_FRAMEWORK}/mujoco.framework/Versions/A/libmujoco.3.9.0.dylib
90
90
  )
91
91
  target_compile_options(mujoco INTERFACE -F${MUJOCO_FRAMEWORK})
92
92
  endif()
@@ -94,7 +94,7 @@ if(NOT TARGET mujoco)
94
94
 
95
95
  if(NOT MUJOCO_FRAMEWORK)
96
96
  find_library(
97
- MUJOCO_LIBRARY mujoco mujoco.3.8.0 HINTS ${MUJOCO_LIBRARY_DIR} REQUIRED
97
+ MUJOCO_LIBRARY mujoco mujoco.3.9.0 HINTS ${MUJOCO_LIBRARY_DIR} REQUIRED
98
98
  )
99
99
  find_path(MUJOCO_INCLUDE mujoco/mujoco.h HINTS ${MUJOCO_INCLUDE_DIR} REQUIRED)
100
100
  message("MuJoCo is at ${MUJOCO_LIBRARY}")
@@ -175,7 +175,7 @@ findorfetch(
175
175
  GIT_REPO
176
176
  https://gitlab.com/libeigen/eigen
177
177
  GIT_TAG
178
- 75bcd155c40cb48e647c87c3f29052360255bc9e
178
+ ea13a98decd497a8c5588fb5de71b57bcf10d864
179
179
  TARGETS
180
180
  Eigen3::Eigen
181
181
  EXCLUDE_FROM_ALL
@@ -966,7 +966,7 @@ Euler integrator, semi-implicit in velocity.
966
966
  self.assertEqual(mujoco.mjtEnableBit.mjENBL_OVERRIDE, 1 << 0)
967
967
  self.assertEqual(mujoco.mjtEnableBit.mjENBL_ENERGY, 1 << 1)
968
968
  self.assertEqual(mujoco.mjtEnableBit.mjENBL_FWDINV, 1 << 2)
969
- self.assertEqual(mujoco.mjtEnableBit.mjNENABLE, 5)
969
+ self.assertEqual(mujoco.mjtEnableBit.mjNENABLE, 6)
970
970
  self.assertEqual(mujoco.mjtGeom.mjGEOM_PLANE, 0)
971
971
  self.assertEqual(mujoco.mjtGeom.mjGEOM_HFIELD, 1)
972
972
  self.assertEqual(mujoco.mjtGeom.mjGEOM_SPHERE, 2)
@@ -38,8 +38,12 @@ set(MUJOCO_DEP_VERSION_qhull
38
38
  62ccc56af071eaa478bef6ed41fd7a55d3bb2d80
39
39
  CACHE STRING "Version of `qhull` to be fetched."
40
40
  )
41
+ set(MUJOCO_DEP_VERSION_miniz
42
+ d10b03cc73475af673df40f06e5cefd1d5f940d9
43
+ CACHE STRING "Version of `miniz` to be fetched."
44
+ )
41
45
  set(MUJOCO_DEP_VERSION_Eigen3
42
- 75bcd155c40cb48e647c87c3f29052360255bc9e
46
+ ea13a98decd497a8c5588fb5de71b57bcf10d864
43
47
  CACHE STRING "Version of `Eigen3` to be fetched."
44
48
  )
45
49
 
@@ -54,7 +58,7 @@ set(MUJOCO_DEP_VERSION_gtest
54
58
  )
55
59
 
56
60
  set(MUJOCO_DEP_VERSION_benchmark
57
- 5c55f5d4f45a1b09c5d98aa63a671993ebd42c69
61
+ 834a61fc65e8b7885fcf177f1230ae4b897118fa
58
62
  CACHE STRING "Version of `benchmark` to be fetched."
59
63
  )
60
64
 
@@ -243,6 +247,27 @@ if(WIN32)
243
247
  endif()
244
248
  endif()
245
249
 
250
+ if(DEFINED BUILD_TESTS)
251
+ set(_OLD_BUILD_TESTS "${BUILD_TESTS}")
252
+ set(_BUILD_TESTS_WAS_DEFINED TRUE)
253
+ else()
254
+ set(_BUILD_TESTS_WAS_DEFINED FALSE)
255
+ endif()
256
+ set(BUILD_TESTS OFF)
257
+ fetchpackage(
258
+ PACKAGE_NAME miniz
259
+ GIT_REPO https://github.com/richgel999/miniz.git
260
+ GIT_TAG ${MUJOCO_DEP_VERSION_miniz}
261
+ TARGETS miniz
262
+ )
263
+ if(_BUILD_TESTS_WAS_DEFINED)
264
+ set(BUILD_TESTS "${_OLD_BUILD_TESTS}")
265
+ else()
266
+ unset(BUILD_TESTS)
267
+ endif()
268
+ unset(_BUILD_TESTS_WAS_DEFINED)
269
+
270
+
246
271
  if(MUJOCO_BUILD_TESTS OR MUJOCO_BUILD_STUDIO OR MUJOCO_USE_FILAMENT)
247
272
  set(ABSL_PROPAGATE_CXX_STD ON)
248
273
 
@@ -83,7 +83,7 @@ PYBIND11_MODULE(_constants, pymodule) {
83
83
  // from mujoco.h
84
84
  X(mjVERSION_HEADER);
85
85
 
86
- // from mjtnum.h
86
+ // from mjtype.h
87
87
  X(mjMINVAL);
88
88
 
89
89
  #undef X
@@ -59,6 +59,7 @@ struct mjtEnableBit {
59
59
  std::make_pair("mjENBL_FWDINV", ::mjtEnableBit::mjENBL_FWDINV),
60
60
  std::make_pair("mjENBL_INVDISCRETE", ::mjtEnableBit::mjENBL_INVDISCRETE),
61
61
  std::make_pair("mjENBL_SLEEP", ::mjtEnableBit::mjENBL_SLEEP),
62
+ std::make_pair("mjENBL_DIAGEXACT", ::mjtEnableBit::mjENBL_DIAGEXACT),
62
63
  std::make_pair("mjNENABLE", ::mjtEnableBit::mjNENABLE)};
63
64
  };
64
65
 
@@ -476,15 +477,6 @@ struct mjtSDFType {
476
477
  std::make_pair("mjSDFTYPE_COLLISION", ::mjtSDFType::mjSDFTYPE_COLLISION)};
477
478
  };
478
479
 
479
- struct mjtTaskStatus {
480
- static constexpr char name[] = "mjtTaskStatus";
481
- using type = ::mjtTaskStatus;
482
- static constexpr auto values = std::array{
483
- std::make_pair("mjTASK_NEW", ::mjtTaskStatus::mjTASK_NEW),
484
- std::make_pair("mjTASK_QUEUED", ::mjtTaskStatus::mjTASK_QUEUED),
485
- std::make_pair("mjTASK_COMPLETED", ::mjtTaskStatus::mjTASK_COMPLETED)};
486
- };
487
-
488
480
  struct mjtState {
489
481
  static constexpr char name[] = "mjtState";
490
482
  using type = ::mjtState;
@@ -580,6 +572,15 @@ struct mjtSleepState {
580
572
  std::make_pair("mjS_AWAKE", ::mjtSleepState::mjS_AWAKE)};
581
573
  };
582
574
 
575
+ struct mjtTaskStatus {
576
+ static constexpr char name[] = "mjtTaskStatus";
577
+ using type = ::mjtTaskStatus;
578
+ static constexpr auto values = std::array{
579
+ std::make_pair("mjTASK_NEW", ::mjtTaskStatus::mjTASK_NEW),
580
+ std::make_pair("mjTASK_QUEUED", ::mjtTaskStatus::mjTASK_QUEUED),
581
+ std::make_pair("mjTASK_COMPLETED", ::mjtTaskStatus::mjTASK_COMPLETED)};
582
+ };
583
+
583
584
  struct mjtGeomInertia {
584
585
  static constexpr char name[] = "mjtGeomInertia";
585
586
  using type = ::mjtGeomInertia;
@@ -670,6 +671,22 @@ struct mjtOrientation {
670
671
  std::make_pair("mjORIENTATION_EULER", ::mjtOrientation::mjORIENTATION_EULER)};
671
672
  };
672
673
 
674
+ struct mjtCTimer {
675
+ static constexpr char name[] = "mjtCTimer";
676
+ using type = ::mjtCTimer;
677
+ static constexpr auto values = std::array{
678
+ std::make_pair("mjCTIMER_TOTAL", ::mjtCTimer::mjCTIMER_TOTAL),
679
+ std::make_pair("mjCTIMER_ASSETS", ::mjtCTimer::mjCTIMER_ASSETS),
680
+ std::make_pair("mjCTIMER_TEXTURE", ::mjtCTimer::mjCTIMER_TEXTURE),
681
+ std::make_pair("mjCTIMER_MESH_LOAD", ::mjtCTimer::mjCTIMER_MESH_LOAD),
682
+ std::make_pair("mjCTIMER_MESH_HULL", ::mjtCTimer::mjCTIMER_MESH_HULL),
683
+ std::make_pair("mjCTIMER_MESH_POLYGON", ::mjtCTimer::mjCTIMER_MESH_POLYGON),
684
+ std::make_pair("mjCTIMER_MESH_INERTIA", ::mjtCTimer::mjCTIMER_MESH_INERTIA),
685
+ std::make_pair("mjCTIMER_MESH_BVH", ::mjtCTimer::mjCTIMER_MESH_BVH),
686
+ std::make_pair("mjCTIMER_MESH_OCTREE", ::mjtCTimer::mjCTIMER_MESH_OCTREE),
687
+ std::make_pair("mjNCTIMER", ::mjtCTimer::mjNCTIMER)};
688
+ };
689
+
673
690
  struct mjtCatBit {
674
691
  static constexpr char name[] = "mjtCatBit";
675
692
  using type = ::mjtCatBit;
@@ -967,13 +984,13 @@ static constexpr auto kAllEnums = std::make_tuple(
967
984
  mjtLRMode{},
968
985
  mjtFlexSelf{},
969
986
  mjtSDFType{},
970
- mjtTaskStatus{},
971
987
  mjtState{},
972
988
  mjtConstraint{},
973
989
  mjtConstraintState{},
974
990
  mjtWarning{},
975
991
  mjtTimer{},
976
992
  mjtSleepState{},
993
+ mjtTaskStatus{},
977
994
  mjtGeomInertia{},
978
995
  mjtMeshInertia{},
979
996
  mjtMeshBuiltin{},
@@ -983,6 +1000,7 @@ static constexpr auto kAllEnums = std::make_tuple(
983
1000
  mjtAlignFree{},
984
1001
  mjtInertiaFromGeom{},
985
1002
  mjtOrientation{},
1003
+ mjtCTimer{},
986
1004
  mjtCatBit{},
987
1005
  mjtMouse{},
988
1006
  mjtPertBit{},
@@ -1829,7 +1829,7 @@ struct mj_versionString {
1829
1829
  struct mj_ray {
1830
1830
  static constexpr char name[] = "mj_ray";
1831
1831
  static constexpr char doc[] = "Intersect ray (pnt+x*vec, x>=0) with visible geoms, except geoms in bodyexclude. Return distance (x) to nearest surface, or -1 if no intersection. geomgroup, flg_static are as in mjvOption; geomgroup==NULL skips group exclusion.";
1832
- using type = mjtNum (const mjModel *, const mjData *, const mjtNum (*)[3], const mjtNum (*)[3], const mjtByte *, mjtByte, int, int (*)[1], mjtNum (*)[3]);
1832
+ using type = mjtNum (const mjModel *, const mjData *, const mjtNum (*)[3], const mjtNum (*)[3], const mjtByte *, mjtBool, int, int (*)[1], mjtNum (*)[3]);
1833
1833
  static constexpr auto param_names = std::make_tuple("m", "d", "pnt", "vec", "geomgroup", "flg_static", "bodyexclude", "geomid", "normal");
1834
1834
 
1835
1835
  MUJOCO_ALWAYS_INLINE static type& GetFunc() {
@@ -1840,7 +1840,7 @@ struct mj_ray {
1840
1840
  struct mj_multiRay {
1841
1841
  static constexpr char name[] = "mj_multiRay";
1842
1842
  static constexpr char doc[] = "Intersect multiple rays emanating from a single point, compute normals if given. Similar semantics to mj_ray, but vec, normal and dist are arrays. Geoms further than cutoff are ignored.";
1843
- using type = void (const mjModel *, mjData *, const mjtNum (*)[3], const mjtNum *, const mjtByte *, mjtByte, int, int *, mjtNum *, mjtNum *, int, mjtNum);
1843
+ using type = void (const mjModel *, mjData *, const mjtNum (*)[3], const mjtNum *, const mjtByte *, mjtBool, int, int *, mjtNum *, mjtNum *, int, mjtNum);
1844
1844
  static constexpr auto param_names = std::make_tuple("m", "d", "pnt", "vec", "geomgroup", "flg_static", "bodyexclude", "geomid", "dist", "normal", "nray", "cutoff");
1845
1845
 
1846
1846
  MUJOCO_ALWAYS_INLINE static type& GetFunc() {
@@ -1884,7 +1884,7 @@ struct mju_rayGeom {
1884
1884
  struct mj_rayFlex {
1885
1885
  static constexpr char name[] = "mj_rayFlex";
1886
1886
  static constexpr char doc[] = "Intersect ray with flex; return nearest distance or -1 if no intersection, and also output nearest vertex id and surface normal.";
1887
- using type = mjtNum (const mjModel *, const mjData *, int, mjtByte, mjtByte, mjtByte, mjtByte, int, const mjtNum (*)[3], const mjtNum (*)[3], int (*)[1], mjtNum (*)[3]);
1887
+ using type = mjtNum (const mjModel *, const mjData *, int, mjtBool, mjtBool, mjtBool, mjtBool, int, const mjtNum (*)[3], const mjtNum (*)[3], int (*)[1], mjtNum (*)[3]);
1888
1888
  static constexpr auto param_names = std::make_tuple("m", "d", "flex_layer", "flg_vert", "flg_edge", "flg_face", "flg_skin", "flexid", "pnt", "vec", "vertid", "normal");
1889
1889
 
1890
1890
  MUJOCO_ALWAYS_INLINE static type& GetFunc() {
@@ -2717,6 +2717,17 @@ struct mjs_getError {
2717
2717
  }
2718
2718
  };
2719
2719
 
2720
+ struct mjs_getTimer {
2721
+ static constexpr char name[] = "mjs_getTimer";
2722
+ static constexpr char doc[] = "Get compiler timing diagnostics from spec, returns pointer to array of size mjNCTIMER.";
2723
+ using type = const double * (mjSpec *);
2724
+ static constexpr auto param_names = std::make_tuple("s");
2725
+
2726
+ MUJOCO_ALWAYS_INLINE static type& GetFunc() {
2727
+ return ::mjs_getTimer;
2728
+ }
2729
+ };
2730
+
2720
2731
  struct mjs_isWarning {
2721
2732
  static constexpr char name[] = "mjs_isWarning";
2722
2733
  static constexpr char doc[] = "Return 1 if compiler error is a warning.";
@@ -3256,6 +3267,17 @@ struct mju_sparse2dense {
3256
3267
  }
3257
3268
  };
3258
3269
 
3270
+ struct mju_sym2dense {
3271
+ static constexpr char name[] = "mju_sym2dense";
3272
+ static constexpr char doc[] = "Convert lower-triangular symmetric CSR matrix to full dense matrix.";
3273
+ using type = void (mjtNum *, const mjtNum *, int, const int *, const int *, const int *);
3274
+ static constexpr auto param_names = std::make_tuple("res", "mat", "n", "rownnz", "rowadr", "colind");
3275
+
3276
+ MUJOCO_ALWAYS_INLINE static type& GetFunc() {
3277
+ return ::mju_sym2dense;
3278
+ }
3279
+ };
3280
+
3259
3281
  struct mju_rotVecQuat {
3260
3282
  static constexpr char name[] = "mju_rotVecQuat";
3261
3283
  static constexpr char doc[] = "Rotate vector by quaternion.";
@@ -3501,7 +3523,7 @@ struct mju_cholSolveBand {
3501
3523
  struct mju_band2Dense {
3502
3524
  static constexpr char name[] = "mju_band2Dense";
3503
3525
  static constexpr char doc[] = "Convert banded matrix to dense matrix, fill upper triangle if flg_sym>0.";
3504
- using type = void (mjtNum *, const mjtNum *, int, int, int, mjtByte);
3526
+ using type = void (mjtNum *, const mjtNum *, int, int, int, mjtBool);
3505
3527
  static constexpr auto param_names = std::make_tuple("res", "mat", "ntotal", "nband", "ndense", "flg_sym");
3506
3528
 
3507
3529
  MUJOCO_ALWAYS_INLINE static type& GetFunc() {
@@ -3523,7 +3545,7 @@ struct mju_dense2Band {
3523
3545
  struct mju_bandMulMatVec {
3524
3546
  static constexpr char name[] = "mju_bandMulMatVec";
3525
3547
  static constexpr char doc[] = "Multiply band-diagonal matrix with nvec vectors, include upper triangle if flg_sym>0.";
3526
- using type = void (mjtNum *, const mjtNum *, const mjtNum *, int, int, int, int, mjtByte);
3548
+ using type = void (mjtNum *, const mjtNum *, const mjtNum *, int, int, int, int, mjtBool);
3527
3549
  static constexpr auto param_names = std::make_tuple("res", "mat", "vec", "ntotal", "nband", "ndense", "nvec", "flg_sym");
3528
3550
 
3529
3551
  MUJOCO_ALWAYS_INLINE static type& GetFunc() {
@@ -3908,7 +3930,7 @@ struct mjc_gradient {
3908
3930
  struct mjd_transitionFD {
3909
3931
  static constexpr char name[] = "mjd_transitionFD";
3910
3932
  static constexpr char doc[] = "Finite differenced transition matrices (control theory notation) d(x_next) = A*dx + B*du d(sensor) = C*dx + D*du required output matrix dimensions: A: (2*nv+na x 2*nv+na) B: (2*nv+na x nu) D: (nsensordata x 2*nv+na) C: (nsensordata x nu)";
3911
- using type = void (const mjModel *, mjData *, mjtNum, mjtByte, mjtNum *, mjtNum *, mjtNum *, mjtNum *);
3933
+ using type = void (const mjModel *, mjData *, mjtNum, mjtBool, mjtNum *, mjtNum *, mjtNum *, mjtNum *);
3912
3934
  static constexpr auto param_names = std::make_tuple("m", "d", "eps", "flg_centered", "A", "B", "C", "D");
3913
3935
 
3914
3936
  MUJOCO_ALWAYS_INLINE static type& GetFunc() {
@@ -3919,7 +3941,7 @@ struct mjd_transitionFD {
3919
3941
  struct mjd_inverseFD {
3920
3942
  static constexpr char name[] = "mjd_inverseFD";
3921
3943
  static constexpr char doc[] = "Finite differenced Jacobians of (force, sensors) = mj_inverse(state, acceleration) All outputs are optional. Output dimensions (transposed w.r.t Control Theory convention): DfDq: (nv x nv) DfDv: (nv x nv) DfDa: (nv x nv) DsDq: (nv x nsensordata) DsDv: (nv x nsensordata) DsDa: (nv x nsensordata) DmDq: (nv x nM) single-letter shortcuts: inputs: q=qpos, v=qvel, a=qacc outputs: f=qfrc_inverse, s=sensordata, m=qM notes: optionally computes mass matrix Jacobian DmDq flg_actuation specifies whether to subtract qfrc_actuator from qfrc_inverse";
3922
- using type = void (const mjModel *, mjData *, mjtNum, mjtByte, mjtNum *, mjtNum *, mjtNum *, mjtNum *, mjtNum *, mjtNum *, mjtNum *);
3944
+ using type = void (const mjModel *, mjData *, mjtNum, mjtBool, mjtNum *, mjtNum *, mjtNum *, mjtNum *, mjtNum *, mjtNum *, mjtNum *);
3923
3945
  static constexpr auto param_names = std::make_tuple("m", "d", "eps", "flg_actuation", "DfDq", "DfDv", "DfDa", "DsDq", "DsDv", "DsDa", "DmDq");
3924
3946
 
3925
3947
  MUJOCO_ALWAYS_INLINE static type& GetFunc() {
@@ -4722,7 +4744,7 @@ struct mjs_makeMesh {
4722
4744
  struct mjs_getSpec {
4723
4745
  static constexpr char name[] = "mjs_getSpec";
4724
4746
  static constexpr char doc[] = "Get spec from body.";
4725
- using type = mjSpec * (mjsElement *);
4747
+ using type = mjSpec * (const mjsElement *);
4726
4748
  static constexpr auto param_names = std::make_tuple("element");
4727
4749
 
4728
4750
  MUJOCO_ALWAYS_INLINE static type& GetFunc() {
@@ -4730,10 +4752,21 @@ struct mjs_getSpec {
4730
4752
  }
4731
4753
  };
4732
4754
 
4755
+ struct mjs_getOriginSpec {
4756
+ static constexpr char name[] = "mjs_getOriginSpec";
4757
+ static constexpr char doc[] = "get spec that originally defined an element contrary to mjs_getSpec, this does not change after attachment";
4758
+ using type = mjSpec * (const mjsElement *);
4759
+ static constexpr auto param_names = std::make_tuple("element");
4760
+
4761
+ MUJOCO_ALWAYS_INLINE static type& GetFunc() {
4762
+ return ::mjs_getOriginSpec;
4763
+ }
4764
+ };
4765
+
4733
4766
  struct mjs_getCompiler {
4734
4767
  static constexpr char name[] = "mjs_getCompiler";
4735
4768
  static constexpr char doc[] = "Get compiler associated with element's origin spec.";
4736
- using type = mjsCompiler * (mjsElement *);
4769
+ using type = mjsCompiler * (const mjsElement *);
4737
4770
  static constexpr auto param_names = std::make_tuple("element");
4738
4771
 
4739
4772
  MUJOCO_ALWAYS_INLINE static type& GetFunc() {
@@ -4744,7 +4777,7 @@ struct mjs_getCompiler {
4744
4777
  struct mjs_findSpec {
4745
4778
  static constexpr char name[] = "mjs_findSpec";
4746
4779
  static constexpr char doc[] = "Find spec (model asset) by name.";
4747
- using type = mjSpec * (mjSpec *, const char *);
4780
+ using type = mjSpec * (const mjSpec *, const char *);
4748
4781
  static constexpr auto param_names = std::make_tuple("spec", "name");
4749
4782
 
4750
4783
  MUJOCO_ALWAYS_INLINE static type& GetFunc() {
@@ -4755,7 +4788,7 @@ struct mjs_findSpec {
4755
4788
  struct mjs_findBody {
4756
4789
  static constexpr char name[] = "mjs_findBody";
4757
4790
  static constexpr char doc[] = "Find body in spec by name.";
4758
- using type = mjsBody * (mjSpec *, const char *);
4791
+ using type = mjsBody * (const mjSpec *, const char *);
4759
4792
  static constexpr auto param_names = std::make_tuple("s", "name");
4760
4793
 
4761
4794
  MUJOCO_ALWAYS_INLINE static type& GetFunc() {
@@ -4766,7 +4799,7 @@ struct mjs_findBody {
4766
4799
  struct mjs_findElement {
4767
4800
  static constexpr char name[] = "mjs_findElement";
4768
4801
  static constexpr char doc[] = "Find element in spec by name.";
4769
- using type = mjsElement * (mjSpec *, mjtObj, const char *);
4802
+ using type = mjsElement * (const mjSpec *, mjtObj, const char *);
4770
4803
  static constexpr auto param_names = std::make_tuple("s", "type", "name");
4771
4804
 
4772
4805
  MUJOCO_ALWAYS_INLINE static type& GetFunc() {
@@ -4777,7 +4810,7 @@ struct mjs_findElement {
4777
4810
  struct mjs_findChild {
4778
4811
  static constexpr char name[] = "mjs_findChild";
4779
4812
  static constexpr char doc[] = "Find child body by name.";
4780
- using type = mjsBody * (mjsBody *, const char *);
4813
+ using type = mjsBody * (const mjsBody *, const char *);
4781
4814
  static constexpr auto param_names = std::make_tuple("body", "name");
4782
4815
 
4783
4816
  MUJOCO_ALWAYS_INLINE static type& GetFunc() {
@@ -4788,7 +4821,7 @@ struct mjs_findChild {
4788
4821
  struct mjs_getParent {
4789
4822
  static constexpr char name[] = "mjs_getParent";
4790
4823
  static constexpr char doc[] = "Get parent body.";
4791
- using type = mjsBody * (mjsElement *);
4824
+ using type = mjsBody * (const mjsElement *);
4792
4825
  static constexpr auto param_names = std::make_tuple("element");
4793
4826
 
4794
4827
  MUJOCO_ALWAYS_INLINE static type& GetFunc() {
@@ -4799,7 +4832,7 @@ struct mjs_getParent {
4799
4832
  struct mjs_getFrame {
4800
4833
  static constexpr char name[] = "mjs_getFrame";
4801
4834
  static constexpr char doc[] = "Get parent frame.";
4802
- using type = mjsFrame * (mjsElement *);
4835
+ using type = mjsFrame * (const mjsElement *);
4803
4836
  static constexpr auto param_names = std::make_tuple("element");
4804
4837
 
4805
4838
  MUJOCO_ALWAYS_INLINE static type& GetFunc() {
@@ -4810,7 +4843,7 @@ struct mjs_getFrame {
4810
4843
  struct mjs_findFrame {
4811
4844
  static constexpr char name[] = "mjs_findFrame";
4812
4845
  static constexpr char doc[] = "Find frame by name.";
4813
- using type = mjsFrame * (mjSpec *, const char *);
4846
+ using type = mjsFrame * (const mjSpec *, const char *);
4814
4847
  static constexpr auto param_names = std::make_tuple("s", "name");
4815
4848
 
4816
4849
  MUJOCO_ALWAYS_INLINE static type& GetFunc() {
@@ -4821,7 +4854,7 @@ struct mjs_findFrame {
4821
4854
  struct mjs_getDefault {
4822
4855
  static constexpr char name[] = "mjs_getDefault";
4823
4856
  static constexpr char doc[] = "Get default corresponding to an element.";
4824
- using type = mjsDefault * (mjsElement *);
4857
+ using type = mjsDefault * (const mjsElement *);
4825
4858
  static constexpr auto param_names = std::make_tuple("element");
4826
4859
 
4827
4860
  MUJOCO_ALWAYS_INLINE static type& GetFunc() {
@@ -4832,7 +4865,7 @@ struct mjs_getDefault {
4832
4865
  struct mjs_findDefault {
4833
4866
  static constexpr char name[] = "mjs_findDefault";
4834
4867
  static constexpr char doc[] = "Find default in model by class name.";
4835
- using type = mjsDefault * (mjSpec *, const char *);
4868
+ using type = mjsDefault * (const mjSpec *, const char *);
4836
4869
  static constexpr auto param_names = std::make_tuple("s", "classname");
4837
4870
 
4838
4871
  MUJOCO_ALWAYS_INLINE static type& GetFunc() {
@@ -4843,7 +4876,7 @@ struct mjs_findDefault {
4843
4876
  struct mjs_getSpecDefault {
4844
4877
  static constexpr char name[] = "mjs_getSpecDefault";
4845
4878
  static constexpr char doc[] = "Get global default from model.";
4846
- using type = mjsDefault * (mjSpec *);
4879
+ using type = mjsDefault * (const mjSpec *);
4847
4880
  static constexpr auto param_names = std::make_tuple("s");
4848
4881
 
4849
4882
  MUJOCO_ALWAYS_INLINE static type& GetFunc() {
@@ -4854,7 +4887,7 @@ struct mjs_getSpecDefault {
4854
4887
  struct mjs_getId {
4855
4888
  static constexpr char name[] = "mjs_getId";
4856
4889
  static constexpr char doc[] = "Get element id.";
4857
- using type = int (mjsElement *);
4890
+ using type = int (const mjsElement *);
4858
4891
  static constexpr auto param_names = std::make_tuple("element");
4859
4892
 
4860
4893
  MUJOCO_ALWAYS_INLINE static type& GetFunc() {
@@ -4865,7 +4898,7 @@ struct mjs_getId {
4865
4898
  struct mjs_firstChild {
4866
4899
  static constexpr char name[] = "mjs_firstChild";
4867
4900
  static constexpr char doc[] = "Return body's first child of given type. If recurse is nonzero, also search the body's subtree.";
4868
- using type = mjsElement * (mjsBody *, mjtObj, int);
4901
+ using type = mjsElement * (const mjsBody *, mjtObj, int);
4869
4902
  static constexpr auto param_names = std::make_tuple("body", "type", "recurse");
4870
4903
 
4871
4904
  MUJOCO_ALWAYS_INLINE static type& GetFunc() {
@@ -4876,7 +4909,7 @@ struct mjs_firstChild {
4876
4909
  struct mjs_nextChild {
4877
4910
  static constexpr char name[] = "mjs_nextChild";
4878
4911
  static constexpr char doc[] = "Return body's next child of the same type; return NULL if child is last. If recurse is nonzero, also search the body's subtree.";
4879
- using type = mjsElement * (mjsBody *, mjsElement *, int);
4912
+ using type = mjsElement * (const mjsBody *, const mjsElement *, int);
4880
4913
  static constexpr auto param_names = std::make_tuple("body", "child", "recurse");
4881
4914
 
4882
4915
  MUJOCO_ALWAYS_INLINE static type& GetFunc() {
@@ -4887,7 +4920,7 @@ struct mjs_nextChild {
4887
4920
  struct mjs_firstElement {
4888
4921
  static constexpr char name[] = "mjs_firstElement";
4889
4922
  static constexpr char doc[] = "Return spec's first element of selected type.";
4890
- using type = mjsElement * (mjSpec *, mjtObj);
4923
+ using type = mjsElement * (const mjSpec *, mjtObj);
4891
4924
  static constexpr auto param_names = std::make_tuple("s", "type");
4892
4925
 
4893
4926
  MUJOCO_ALWAYS_INLINE static type& GetFunc() {
@@ -4898,7 +4931,7 @@ struct mjs_firstElement {
4898
4931
  struct mjs_nextElement {
4899
4932
  static constexpr char name[] = "mjs_nextElement";
4900
4933
  static constexpr char doc[] = "Return spec's next element; return NULL if element is last.";
4901
- using type = mjsElement * (mjSpec *, mjsElement *);
4934
+ using type = mjsElement * (const mjSpec *, const mjsElement *);
4902
4935
  static constexpr auto param_names = std::make_tuple("s", "element");
4903
4936
 
4904
4937
  MUJOCO_ALWAYS_INLINE static type& GetFunc() {
@@ -4909,7 +4942,7 @@ struct mjs_nextElement {
4909
4942
  struct mjs_getWrapTarget {
4910
4943
  static constexpr char name[] = "mjs_getWrapTarget";
4911
4944
  static constexpr char doc[] = "Get wrapped element in tendon path.";
4912
- using type = mjsElement * (mjsWrap *);
4945
+ using type = mjsElement * (const mjsWrap *);
4913
4946
  static constexpr auto param_names = std::make_tuple("wrap");
4914
4947
 
4915
4948
  MUJOCO_ALWAYS_INLINE static type& GetFunc() {
@@ -4920,7 +4953,7 @@ struct mjs_getWrapTarget {
4920
4953
  struct mjs_getWrapSideSite {
4921
4954
  static constexpr char name[] = "mjs_getWrapSideSite";
4922
4955
  static constexpr char doc[] = "Get wrapped element side site in tendon path if it has one, nullptr otherwise.";
4923
- using type = mjsSite * (mjsWrap *);
4956
+ using type = mjsSite * (const mjsWrap *);
4924
4957
  static constexpr auto param_names = std::make_tuple("wrap");
4925
4958
 
4926
4959
  MUJOCO_ALWAYS_INLINE static type& GetFunc() {
@@ -4931,7 +4964,7 @@ struct mjs_getWrapSideSite {
4931
4964
  struct mjs_getWrapDivisor {
4932
4965
  static constexpr char name[] = "mjs_getWrapDivisor";
4933
4966
  static constexpr char doc[] = "Get divisor of mjsWrap wrapping a puller.";
4934
- using type = double (mjsWrap *);
4967
+ using type = double (const mjsWrap *);
4935
4968
  static constexpr auto param_names = std::make_tuple("wrap");
4936
4969
 
4937
4970
  MUJOCO_ALWAYS_INLINE static type& GetFunc() {
@@ -4942,7 +4975,7 @@ struct mjs_getWrapDivisor {
4942
4975
  struct mjs_getWrapCoef {
4943
4976
  static constexpr char name[] = "mjs_getWrapCoef";
4944
4977
  static constexpr char doc[] = "Get coefficient of mjsWrap wrapping a joint.";
4945
- using type = double (mjsWrap *);
4978
+ using type = double (const mjsWrap *);
4946
4979
  static constexpr auto param_names = std::make_tuple("wrap");
4947
4980
 
4948
4981
  MUJOCO_ALWAYS_INLINE static type& GetFunc() {
@@ -4997,7 +5030,7 @@ struct mjs_setStringVec {
4997
5030
  struct mjs_setInStringVec {
4998
5031
  static constexpr char name[] = "mjs_setInStringVec";
4999
5032
  static constexpr char doc[] = "Set entry in string vector.";
5000
- using type = mjtByte (mjStringVec *, int, const char *);
5033
+ using type = mjtBool (mjStringVec *, int, const char *);
5001
5034
  static constexpr auto param_names = std::make_tuple("dest", "i", "text");
5002
5035
 
5003
5036
  MUJOCO_ALWAYS_INLINE static type& GetFunc() {