mirror of
https://gitea.wildfiregames.com/0ad/0ad
synced 2026-06-16 05:13:58 -07:00
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.
33 lines
1,015 B
Python
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())
|