DarshanScripts's picture
Upload stratego/installer.py with huggingface_hub
9d760aa verified
from __future__ import annotations
import shutil
from pathlib import Path
import textarena
import textarena.envs.registration as _reg
from textarena.wrappers import LLMObservationWrapper, ActionFormattingWrapper, GameMessagesAndCurrentBoardObservationWrapper, GameMessagesObservationWrapper, GameBoardObservationWrapper, ClipCharactersActionWrapper, SettlersOfCatanObservationWrapper
def get_textarena_env_dir() -> Path:
ta_root = Path(textarena.__file__).resolve().parent
env_root = ta_root / "envs"
if env_root.exists():
return env_root
def install_strategos():
stratego_directory = Path(__file__).resolve().parent
src_dir = stratego_directory / "env" / "backup" / "edited_env"
# reg = src_dir / "__init__.txt"
for path in ["Stratego", "StrategoDuel", "StrategoCustom"]:
env = src_dir / path / "env.py"
init = src_dir / path / "__init__.py"
if not env.exists():
raise FileNotFoundError(f"{env} file not found!")
if not init.exists():
raise FileNotFoundError(f"{init} file not found!")
ta_dir = get_textarena_env_dir()
dst_dir = ta_dir / path
dst_dir.mkdir(parents=True, exist_ok=True)
dst_env = dst_dir / "env.py"
shutil.copy2(env, dst_env)
dst_init = dst_dir / "__init__.py"
shutil.copy2(init, dst_init)
print(f"{path} env installed!")
ta_init = ta_dir / "__init__.py"
if not ta_init.exists():
raise FileNotFoundError("Init file of textarena env is not found!")
# registration_code = reg.read_text(encoding="utf-8")
# marker = "#--- Initializing StrategoDuel ---#"
# if marker in ta_init.read_text(encoding="utf-8"):
# print("Stratego duel arleady exists in init file")
# return
# with ta_init.open("a", encoding="utf-8") as f:
# f.write("\n\n" + marker + "\n")
# f.write(registration_code + "\n")
DEFAULT_WRAPPERS = [LLMObservationWrapper, ActionFormattingWrapper]
BOARDGAME_WRAPPERS = [GameMessagesAndCurrentBoardObservationWrapper, ActionFormattingWrapper]
try:
_reg.register_with_versions(id="Stratego-duel", entry_point="textarena.envs.StrategoDuel.env:StrategoDuelEnv", wrappers={"default": DEFAULT_WRAPPERS, "-train": BOARDGAME_WRAPPERS})
_reg.register_with_versions(id="Stratego-custom", entry_point="textarena.envs.StrategoCustom.env:StrategoCustomEnv", wrappers={"default": DEFAULT_WRAPPERS, "-train": BOARDGAME_WRAPPERS})
print("Stratego Games are newly registered!")
except ValueError:
print("Stratego Games are already registered!")
pass
def main():
install_strategos()