in gym3/interop.py [0:0]
def _vt2space(vt: ValType):
from gym import spaces
def tt2space(tt: TensorType):
if isinstance(tt.eltype, Discrete):
if tt.ndim == 0:
return spaces.Discrete(tt.eltype.n)
else:
return spaces.Box(
low=0,
high=tt.eltype.n - 1,
shape=tt.shape,
dtype=types_np.dtype(tt),
)
elif isinstance(tt.eltype, Real):
return spaces.Box(
shape=tt.shape,
dtype=types_np.dtype(tt),
low=float("-inf"),
high=float("inf"),
)
else:
raise NotImplementedError
space = multimap(tt2space, vt)
def dict2dict_space(d):
if isinstance(d, dict):
return spaces.Dict({k: dict2dict_space(v) for k, v in d.items()})
else:
return d
return dict2dict_space(space)