diff --git a/README.md b/README.md index 54c112e..8d9fb0a 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ These libraries are distributed on PyPI, the packages are: * `dm_robotics-moma` * `dm_robotics-controllers` -Python versions 3.7, 3.8, 3.9 and 3.10 are supported. +Python versions 3.8, 3.9, 3.10, and 3.11 are supported. ## Dependencies `MoMa`, `Manipulation` and `Controllers` depend on MuJoCo, the other packages do not. @@ -38,7 +38,7 @@ To build and test the libraries, run `build.sh`. This script assumes: * MuJoCo is installed. * [`dm_control`](https://github.com/deepmind/dm_control) is installed. * cmake version >= 3.20.2 is installed. -* Python 3.7, 3.8, 3.9 or 3.10 and system headers are installed. +* Python 3.8, 3.9, 3.10 or 3.11 and system headers are installed. * GCC version 9 or later is installed. * numpy is installed. diff --git a/cpp/mujoco/include/dm_robotics/mujoco/mjlib.h b/cpp/mujoco/include/dm_robotics/mujoco/mjlib.h index 039765c..11051b7 100644 --- a/cpp/mujoco/include/dm_robotics/mujoco/mjlib.h +++ b/cpp/mujoco/include/dm_robotics/mujoco/mjlib.h @@ -377,8 +377,6 @@ class MjLib { MjLib(const std::string& libmujoco_path, int dlopen_flags); ~MjLib(); - MjActivateFunc* const mj_activate; // NOLINT - MjDeactivateFunc* const mj_deactivate; // NOLINT MjDefaultVFSFunc* const mj_defaultVFS; // NOLINT MjAddFileVFSFunc* const mj_addFileVFS; // NOLINT MjMakeEmptyFileVFSFunc* const mj_makeEmptyFileVFS; // NOLINT diff --git a/cpp/mujoco/src/mjlib.cc b/cpp/mujoco/src/mjlib.cc index 555cbf0..13f5d0a 100644 --- a/cpp/mujoco/src/mjlib.cc +++ b/cpp/mujoco/src/mjlib.cc @@ -74,8 +74,6 @@ struct MjLib::Impl { MjLib::MjLib(const std::string& libmujoco_path, int dlopen_flags) : pimpl_(absl::make_unique(libmujoco_path, dlopen_flags)), - INIT_WITH_DLSYM(mj_activate), - INIT_WITH_DLSYM(mj_deactivate), INIT_WITH_DLSYM(mj_defaultVFS), INIT_WITH_DLSYM(mj_addFileVFS), INIT_WITH_DLSYM(mj_makeEmptyFileVFS), diff --git a/cpp/setup.py b/cpp/setup.py index fbb1b9a..1e2efe1 100644 --- a/cpp/setup.py +++ b/cpp/setup.py @@ -130,7 +130,7 @@ def _parse_line(s): long_description=open("controllers_py/README.md").read(), long_description_content_type="text/markdown", url="https://github.com/deepmind/dm_robotics/tree/main/cpp/controllers_py", - python_requires=">=3.7, <3.11", + python_requires=">=3.8", setup_requires=["wheel >= 0.31.0"], classifiers=[ "Development Status :: 5 - Production/Stable", diff --git a/py/agentflow/setup.py b/py/agentflow/setup.py index aa6c984..60d8ac6 100644 --- a/py/agentflow/setup.py +++ b/py/agentflow/setup.py @@ -47,6 +47,7 @@ def _parse_line(s): "dm_robotics.agentflow", "dm_robotics.agentflow.loggers", "dm_robotics.agentflow.meta_options.control_flow", + "dm_robotics.agentflow.meta_options.control_flow.examples", "dm_robotics.agentflow.options", "dm_robotics.agentflow.preprocessors", "dm_robotics.agentflow.rendering", @@ -59,7 +60,7 @@ def _parse_line(s): long_description=open("README.md").read(), long_description_content_type="text/markdown", url="https://github.com/deepmind/dm_robotics/tree/main/py/agentflow", - python_requires=">=3.7, <3.11", + python_requires=">=3.8", setup_requires=["wheel >= 0.31.0"], install_requires=(_get_requirements("requirements.txt") + _get_requirements("requirements_external.txt")), diff --git a/py/geometry/geometry_test.py b/py/geometry/geometry_test.py index 5188126..2baf88b 100644 --- a/py/geometry/geometry_test.py +++ b/py/geometry/geometry_test.py @@ -14,6 +14,7 @@ import itertools import operator +import sys from absl.testing import absltest from absl.testing import parameterized @@ -242,11 +243,17 @@ def test_pose_property_cannot_set(self): pose = geometry.Pose(list(range(3)), list(range(4))) with self.assertRaises(AttributeError) as expected: pose.position = list(range(10, 13, 1)) - self.assertIn('can\'t set attribute', str(expected.exception)) + if sys.version_info < (3, 11): + self.assertIn('can\'t set attribute', str(expected.exception)) + else: + self.assertIn('object has no setter', str(expected.exception)) with self.assertRaises(AttributeError) as expected: pose.quaternion = list(range(10, 14, 1)) - self.assertIn('can\'t set attribute', str(expected.exception)) + if sys.version_info < (3, 11): + self.assertIn('can\'t set attribute', str(expected.exception)) + else: + self.assertIn('object has no setter', str(expected.exception)) def test_pose_property_cannot_setitem(self): pose = geometry.Pose(list(range(3)), list(range(4))) diff --git a/py/geometry/setup.py b/py/geometry/setup.py index 1c548d7..e524fac 100644 --- a/py/geometry/setup.py +++ b/py/geometry/setup.py @@ -51,7 +51,7 @@ def _parse_line(s): long_description=open("README.md").read(), long_description_content_type="text/markdown", url="https://github.com/deepmind/dm_robotics/tree/main/py/geometry", - python_requires=">=3.7, <3.11", + python_requires=">=3.8", setup_requires=["wheel >= 0.31.0"], install_requires=(_get_requirements("requirements.txt") + _get_requirements("requirements_external.txt")), diff --git a/py/manipulation/setup.py b/py/manipulation/setup.py index 93e03d7..4267576 100644 --- a/py/manipulation/setup.py +++ b/py/manipulation/setup.py @@ -59,7 +59,7 @@ def _parse_line(s): long_description=open("README.md").read(), long_description_content_type="text/markdown", url="https://github.com/deepmind/dm_robotics/tree/main/py/manipulation", - python_requires=">=3.7, <3.11", + python_requires=">=3.8", setup_requires=["wheel >= 0.31.0"], install_requires=(_get_requirements("requirements.txt") + _get_requirements("requirements_external.txt")), diff --git a/py/moma/setup.py b/py/moma/setup.py index a7d4cf9..047fca6 100644 --- a/py/moma/setup.py +++ b/py/moma/setup.py @@ -63,7 +63,7 @@ def _parse_line(s): long_description=open("README.md").read(), long_description_content_type="text/markdown", url="https://github.com/deepmind/dm_robotics/tree/main/py/moma", - python_requires=">=3.7, <3.11", + python_requires=">=3.8", setup_requires=["wheel >= 0.31.0"], install_requires=(_get_requirements("requirements.txt") + _get_requirements("requirements_external.txt")),