diff --git a/pyproject.toml b/pyproject.toml index 393f1c2..716c38c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -12,9 +12,9 @@ dependencies = [ "numpy>=1.26.0", # URLab remote-stepping client (section 6 of plan_remote_stepping.md): # MuJoCo version pinned to URLab's submodule build (third_party/MuJoCo - # currently at 3.8.1). mismatch is rejected at handshake unless the + # currently at 3.10.0). mismatch is rejected at handshake unless the # caller passes mujoco_version_check=False. - "mujoco==3.8.1", + "mujoco==3.10.0", "msgpack>=1.0.0", # gymnasium for the URLabEnv gym adapter. "gymnasium>=1.0.0", @@ -47,15 +47,15 @@ robojudo = [ "joblib>=1.3.0", ] # mjlab eval-time runner. -# mujoco-warp is pinned to 3.8.1 explicitly: mjlab 1.3.0 (the latest at -# the time of writing) transitively brings mujoco-warp 3.7.0.1, which +# mujoco-warp is pinned to 3.10.0.3 explicitly: mjlab 1.5.3 (the latest at +# the time of writing) transitively brings an older mujoco-warp, which # references `mujoco.mjtEnableBit.mjENBL_MULTICCD` -- a value that was -# removed in mujoco 3.8.x. With the bridge pinned to mujoco 3.8.1, the +# removed in mujoco 3.8.x. With the bridge pinned to mujoco 3.10.0, the # import-time enum lookup fails with AttributeError and the mjlab -# registry is silently skipped. mujoco-warp 3.8.1 has the matching API. +# registry is silently skipped. mujoco-warp 3.10.0.3 has the matching API. mjlab = [ "mjlab", - "mujoco-warp==3.8.1", + "mujoco-warp==3.10.0.3", "torch>=2.0.0", ] # ROS 2 rebroadcaster: rclpy / std_msgs / sensor_msgs / cv_bridge come @@ -103,4 +103,3 @@ pythonpath = ["src"] filterwarnings = [ "ignore::DeprecationWarning", ] - diff --git a/tests/test_project_metadata.py b/tests/test_project_metadata.py new file mode 100644 index 0000000..b6fd61d --- /dev/null +++ b/tests/test_project_metadata.py @@ -0,0 +1,29 @@ +# Copyright (c) 2026 Jonathan Embley-Riches. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Regression checks for the published dependency constraints.""" + +from __future__ import annotations + +import tomllib +from pathlib import Path + + +def test_mujoco_dependencies_match_the_urlab_3_10_runtime(): + metadata = tomllib.loads(Path("pyproject.toml").read_text()) + + assert "mujoco==3.10.0" in metadata["project"]["dependencies"] + assert ( + "mujoco-warp==3.10.0.3" in metadata["project"]["optional-dependencies"]["mjlab"] + )