0ad/source/tools/rlclient/python/zero_ad/api.py
Dunedan c0232c6b5f
Specify the Python target version in ruff.toml
This ensures the same Python target version used for `ruff format`
is used for `ruff check` as well. It also allows ruff, even if it's not
run through pre-commit, to use the correct target Python version.
2024-09-21 20:54:24 +02:00

33 lines
1,015 B
Python

import json
from urllib import request
class RLAPI:
def __init__(self, url):
self.url = url
def post(self, route, data):
response = request.urlopen(url=f"{self.url}/{route}", data=bytes(data, "utf8"))
return response.read()
def step(self, commands):
post_data = "\n".join(f"{player};{json.dumps(action)}" for (player, action) in commands)
return self.post("step", post_data)
def reset(self, scenario_config, player_id, save_replay):
path = "reset?"
if save_replay:
path += "saveReplay=1&"
if player_id:
path += f"playerID={player_id}&"
return self.post(path, scenario_config)
def get_templates(self, names):
post_data = "\n".join(names)
response = self.post("templates", post_data)
return zip(names, response.decode().split("\n"), strict=False)
def evaluate(self, code):
response = self.post("evaluate", code)
return json.loads(response.decode())