Remove match in support.py (introduced in Python 3.10).

https://github.com/google-deepmind/mujoco_playground/issues/16

PiperOrigin-RevId: 717395934
Change-Id: I0be1b8285a79702a1dfc086e15e07bab0f9f6d40
This commit is contained in:
Baruch Tabanpour
2025-01-19 22:07:47 -08:00
committed by Copybara-Service
parent e2b1cfc3a8
commit 2a100547bd
+34 -36
View File
@@ -296,71 +296,70 @@ class BindModel(object):
specs = [specs] specs = [specs]
ids = [] ids = []
for spec in specs: for spec in specs:
match spec: if isinstance(spec, mujoco.MjsBody):
case mujoco.MjsBody():
self.prefix = 'body_' self.prefix = 'body_'
idx = name2id(model, mujoco.mjtObj.mjOBJ_BODY, spec.name) idx = name2id(model, mujoco.mjtObj.mjOBJ_BODY, spec.name)
case mujoco.MjsJoint(): elif isinstance(spec, mujoco.MjsJoint):
self.prefix = 'jnt_' self.prefix = 'jnt_'
idx = name2id(model, mujoco.mjtObj.mjOBJ_JOINT, spec.name) idx = name2id(model, mujoco.mjtObj.mjOBJ_JOINT, spec.name)
case mujoco.MjsGeom(): elif isinstance(spec, mujoco.MjsGeom):
self.prefix = 'geom_' self.prefix = 'geom_'
idx = name2id(model, mujoco.mjtObj.mjOBJ_GEOM, spec.name) idx = name2id(model, mujoco.mjtObj.mjOBJ_GEOM, spec.name)
case mujoco.MjsSite(): elif isinstance(spec, mujoco.MjsSite):
self.prefix = 'site_' self.prefix = 'site_'
idx = name2id(model, mujoco.mjtObj.mjOBJ_SITE, spec.name) idx = name2id(model, mujoco.mjtObj.mjOBJ_SITE, spec.name)
case mujoco.MjsLight(): elif isinstance(spec, mujoco.MjsLight):
self.prefix = 'light_' self.prefix = 'light_'
idx = name2id(model, mujoco.mjtObj.mjOBJ_LIGHT, spec.name) idx = name2id(model, mujoco.mjtObj.mjOBJ_LIGHT, spec.name)
case mujoco.MjsCamera(): elif isinstance(spec, mujoco.MjsCamera):
self.prefix = 'cam_' self.prefix = 'cam_'
idx = name2id(model, mujoco.mjtObj.mjOBJ_CAMERA, spec.name) idx = name2id(model, mujoco.mjtObj.mjOBJ_CAMERA, spec.name)
case mujoco.MjsMesh(): elif isinstance(spec, mujoco.MjsMesh):
self.prefix = 'mesh_' self.prefix = 'mesh_'
idx = name2id(model, mujoco.mjtObj.mjOBJ_MESH, spec.name) idx = name2id(model, mujoco.mjtObj.mjOBJ_MESH, spec.name)
case mujoco.MjsHField(): elif isinstance(spec, mujoco.MjsHField):
self.prefix = 'hfield_' self.prefix = 'hfield_'
idx = name2id(model, mujoco.mjtObj.mjOBJ_HFIELD, spec.name) idx = name2id(model, mujoco.mjtObj.mjOBJ_HFIELD, spec.name)
case mujoco.MjsPair(): elif isinstance(spec, mujoco.MjsPair):
self.prefix = 'pair_' self.prefix = 'pair_'
idx = name2id(model, mujoco.mjtObj.mjOBJ_PAIR, spec.name) idx = name2id(model, mujoco.mjtObj.mjOBJ_PAIR, spec.name)
case mujoco.MjsTendon(): elif isinstance(spec, mujoco.MjsTendon):
self.prefix = 'tendon_' self.prefix = 'tendon_'
idx = name2id(model, mujoco.mjtObj.mjOBJ_TENDON, spec.name) idx = name2id(model, mujoco.mjtObj.mjOBJ_TENDON, spec.name)
case mujoco.MjsActuator(): elif isinstance(spec, mujoco.MjsActuator):
self.prefix = 'actuator_' self.prefix = 'actuator_'
idx = name2id(model, mujoco.mjtObj.mjOBJ_ACTUATOR, spec.name) idx = name2id(model, mujoco.mjtObj.mjOBJ_ACTUATOR, spec.name)
case mujoco.MjsSensor(): elif isinstance(spec, mujoco.MjsSensor):
self.prefix = 'sensor_' self.prefix = 'sensor_'
idx = name2id(model, mujoco.mjtObj.mjOBJ_SENSOR, spec.name) idx = name2id(model, mujoco.mjtObj.mjOBJ_SENSOR, spec.name)
case mujoco.MjsNumeric(): elif isinstance(spec, mujoco.MjsNumeric):
self.prefix = 'numeric_' self.prefix = 'numeric_'
idx = name2id(model, mujoco.mjtObj.mjOBJ_NUMERIC, spec.name) idx = name2id(model, mujoco.mjtObj.mjOBJ_NUMERIC, spec.name)
case mujoco.MjsText(): elif isinstance(spec, mujoco.MjsText):
self.prefix = 'text_' self.prefix = 'text_'
idx = name2id(model, mujoco.mjtObj.mjOBJ_TEXT, spec.name) idx = name2id(model, mujoco.mjtObj.mjOBJ_TEXT, spec.name)
case mujoco.MjsTuple(): elif isinstance(spec, mujoco.MjsTuple):
self.prefix = 'tuple_' self.prefix = 'tuple_'
idx = name2id(model, mujoco.mjtObj.mjOBJ_TUPLE, spec.name) idx = name2id(model, mujoco.mjtObj.mjOBJ_TUPLE, spec.name)
case mujoco.MjsKey(): elif isinstance(spec, mujoco.MjsKey):
self.prefix = 'key_' self.prefix = 'key_'
idx = name2id(model, mujoco.mjtObj.mjOBJ_KEY, spec.name) idx = name2id(model, mujoco.mjtObj.mjOBJ_KEY, spec.name)
case mujoco.MjsEquality(): elif isinstance(spec, mujoco.MjsEquality):
self.prefix = 'eq_' self.prefix = 'eq_'
idx = name2id(model, mujoco.mjtObj.mjOBJ_EQUALITY, spec.name) idx = name2id(model, mujoco.mjtObj.mjOBJ_EQUALITY, spec.name)
case mujoco.MjsExclude(): elif isinstance(spec, mujoco.MjsExclude):
self.prefix = 'exclude_' self.prefix = 'exclude_'
idx = name2id(model, mujoco.mjtObj.mjOBJ_EXCLUDE, spec.name) idx = name2id(model, mujoco.mjtObj.mjOBJ_EXCLUDE, spec.name)
case mujoco.MjsSkin(): elif isinstance(spec, mujoco.MjsSkin):
self.prefix = 'skin_' self.prefix = 'skin_'
idx = name2id(model, mujoco.mjtObj.mjOBJ_SKIN, spec.name) idx = name2id(model, mujoco.mjtObj.mjOBJ_SKIN, spec.name)
case mujoco.MjsMaterial(): elif isinstance(spec, mujoco.MjsMaterial):
self.prefix = 'material_' self.prefix = 'material_'
idx = name2id(model, mujoco.mjtObj.mjOBJ_MATERIAL, spec.name) idx = name2id(model, mujoco.mjtObj.mjOBJ_MATERIAL, spec.name)
case _: else:
raise ValueError('invalid spec type') raise ValueError('invalid spec type')
if idx < 0: if idx < 0:
raise KeyError(f'invalid name: {spec.name}') raise KeyError(f'invalid name: {spec.name}') # pytype: disable=attribute-error
ids.append(idx) ids.append(idx)
if len(ids) == 1: if len(ids) == 1:
self.id = ids[0] self.id = ids[0]
@@ -388,41 +387,40 @@ class BindData(object):
specs = [specs] specs = [specs]
ids = [] ids = []
for spec in specs: for spec in specs:
match spec: if isinstance(spec, mujoco.MjsBody):
case mujoco.MjsBody():
self.prefix = '' self.prefix = ''
idx = name2id(model, mujoco.mjtObj.mjOBJ_BODY, spec.name) idx = name2id(model, mujoco.mjtObj.mjOBJ_BODY, spec.name)
case mujoco.MjsJoint(): elif isinstance(spec, mujoco.MjsJoint):
self.prefix = 'jnt_' self.prefix = 'jnt_'
idx = name2id(model, mujoco.mjtObj.mjOBJ_JOINT, spec.name) idx = name2id(model, mujoco.mjtObj.mjOBJ_JOINT, spec.name)
case mujoco.MjsGeom(): elif isinstance(spec, mujoco.MjsGeom):
self.prefix = 'geom_' self.prefix = 'geom_'
idx = name2id(model, mujoco.mjtObj.mjOBJ_GEOM, spec.name) idx = name2id(model, mujoco.mjtObj.mjOBJ_GEOM, spec.name)
case mujoco.MjsSite(): elif isinstance(spec, mujoco.MjsSite):
self.prefix = 'site_' self.prefix = 'site_'
idx = name2id(model, mujoco.mjtObj.mjOBJ_SITE, spec.name) idx = name2id(model, mujoco.mjtObj.mjOBJ_SITE, spec.name)
case mujoco.MjsLight(): elif isinstance(spec, mujoco.MjsLight):
self.prefix = 'light_' self.prefix = 'light_'
idx = name2id(model, mujoco.mjtObj.mjOBJ_LIGHT, spec.name) idx = name2id(model, mujoco.mjtObj.mjOBJ_LIGHT, spec.name)
case mujoco.MjsCamera(): elif isinstance(spec, mujoco.MjsCamera):
self.prefix = 'cam_' self.prefix = 'cam_'
idx = name2id(model, mujoco.mjtObj.mjOBJ_CAMERA, spec.name) idx = name2id(model, mujoco.mjtObj.mjOBJ_CAMERA, spec.name)
case mujoco.MjsTendon(): elif isinstance(spec, mujoco.MjsTendon):
self.prefix = 'ten_' self.prefix = 'ten_'
idx = name2id(model, mujoco.mjtObj.mjOBJ_TENDON, spec.name) idx = name2id(model, mujoco.mjtObj.mjOBJ_TENDON, spec.name)
case mujoco.MjsActuator(): elif isinstance(spec, mujoco.MjsActuator):
self.prefix = 'actuator_' self.prefix = 'actuator_'
idx = name2id(model, mujoco.mjtObj.mjOBJ_ACTUATOR, spec.name) idx = name2id(model, mujoco.mjtObj.mjOBJ_ACTUATOR, spec.name)
case mujoco.MjsSensor(): elif isinstance(spec, mujoco.MjsSensor):
self.prefix = 'sensor_' self.prefix = 'sensor_'
idx = name2id(model, mujoco.mjtObj.mjOBJ_SENSOR, spec.name) idx = name2id(model, mujoco.mjtObj.mjOBJ_SENSOR, spec.name)
case mujoco.MjsEquality(): elif isinstance(spec, mujoco.MjsEquality):
self.prefix = 'eq_' self.prefix = 'eq_'
idx = name2id(model, mujoco.mjtObj.mjOBJ_EQUALITY, spec.name) idx = name2id(model, mujoco.mjtObj.mjOBJ_EQUALITY, spec.name)
case _: else:
raise ValueError('invalid spec type') raise ValueError('invalid spec type')
if idx < 0: if idx < 0:
raise KeyError(f'invalid name: {spec.name}') raise KeyError(f'invalid name: {spec.name}') # pytype: disable=attribute-error
ids.append(idx) ids.append(idx)
if len(ids) == 1: if len(ids) == 1:
self.id = ids[0] self.id = ids[0]