openai / gym-http-api

API to access OpenAI Gym from other languages via HTTP
MIT License
293 stars 142 forks source link

Tuple Spaces do not convert to json properly #62

Open zamorarr opened 6 years ago

zamorarr commented 6 years ago

Hi. Thanks for making gym available to other languages. I'm currently seeing an error when trying to reset the Blackjack-v0 environment. Here's a reproducible example using curl

# start the server
python gym_http_server.py

# create blackjack instance
curl -d '{"env_id":"Blackjack-v0"}' -H "Content-Type: application/json" -X POST http://127.0.0.1:5000/v1/envs/

# reset instance
curl -X POST http://127.0.0.1:5000/v1/envs/<instance_id>/reset/

The issue I believe is caused when calling env.observation_space.to_jsonable(obs) in reset(). The to_jsonable method expects a list of tuples for Blackjack, not a single tuple.

My current workaround is to check to see if the observation is a tuple and if so, wrap it a list first. This works fine for Blackjack but I haven't tested the other environments.

def reset(self, instance_id):
    env = self._lookup_env(instance_id)
    obs = env.reset()
    if (isinstance(obs, tuple)):
        obs = [obs]
    return env.observation_space.to_jsonable(obs)
markroxor commented 6 years ago

Facing the same issue. I think you should send a PR.

zamorarr commented 6 years ago

Submitted a PR, but I don't even know if this repo is still being maintained...

masonlr commented 4 years ago

Possibly related to https://github.com/openai/gym/issues/1841