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
+96 -98
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) elif isinstance(spec, mujoco.MjsJoint):
case 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) elif isinstance(spec, mujoco.MjsGeom):
case 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) elif isinstance(spec, mujoco.MjsSite):
case 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) elif isinstance(spec, mujoco.MjsLight):
case 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) elif isinstance(spec, mujoco.MjsCamera):
case 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) elif isinstance(spec, mujoco.MjsMesh):
case 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) elif isinstance(spec, mujoco.MjsHField):
case 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) elif isinstance(spec, mujoco.MjsPair):
case 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) elif isinstance(spec, mujoco.MjsTendon):
case 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) elif isinstance(spec, mujoco.MjsActuator):
case 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) elif isinstance(spec, mujoco.MjsSensor):
case 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) elif isinstance(spec, mujoco.MjsNumeric):
case 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) elif isinstance(spec, mujoco.MjsText):
case 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) elif isinstance(spec, mujoco.MjsTuple):
case 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) elif isinstance(spec, mujoco.MjsKey):
case 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) elif isinstance(spec, mujoco.MjsEquality):
case 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) elif isinstance(spec, mujoco.MjsExclude):
case 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) elif isinstance(spec, mujoco.MjsSkin):
case 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) elif isinstance(spec, mujoco.MjsMaterial):
case 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) else:
case _: 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) elif isinstance(spec, mujoco.MjsJoint):
case 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) elif isinstance(spec, mujoco.MjsGeom):
case 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) elif isinstance(spec, mujoco.MjsSite):
case 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) elif isinstance(spec, mujoco.MjsLight):
case 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) elif isinstance(spec, mujoco.MjsCamera):
case 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) elif isinstance(spec, mujoco.MjsTendon):
case 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) elif isinstance(spec, mujoco.MjsActuator):
case 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) elif isinstance(spec, mujoco.MjsSensor):
case 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) elif isinstance(spec, mujoco.MjsEquality):
case 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) else:
case _: 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]