"""Emit random states plus Python renderings, for test/parity.mjs.""" import json, random, sys import os sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "train")) import gen_data, world as W random.seed(int(sys.argv[1]) if len(sys.argv) > 1 else 0) out = [] for _ in range(300): st = gen_data.rand_state() st["today"] += ["ate a cookie", st["owner"] + " said: goodnight"] * 4 q = random.choice(["frogs", "cat", "what is my job", "Bo", "color", "zzz", "birthday"]) out.append({"st": st, "q": q, "chat": W.header("chat", st), "diary": W.header("diary", st), "look": W.look(st), "clock": W.clock(st), "recall": W.recall(st["memories"], q), "wake": [W.wake_chance(st["stats"]["energy"], k, n) for k in ("talk", "touch", "light") for n in range(1, 7)], "events": W.event_patterns(st["owner"], st["pet"]), "offers": W.offer_patterns(st["owner"], st["pet"])}) lists = {k: getattr(W, k) for k in ("STAGES", "PERSONALITIES", "FOODS", "GIFTS", "EMOTES", "WANTS", "WALKS", "DOODLES", "DREAMS", "WEATHER_DAY", "WEATHER_NIGHT", "TOYS")} lists.update(EFFECT_TOOLS=sorted(W.EFFECT_TOOLS), LOOKUP_TOOLS=sorted(W.LOOKUP_TOOLS), ANSWER_TOOLS=sorted(W.ANSWER_TOOLS)) out = {"cases": out, "lists": lists} print(json.dumps(out))