| """Check that the active writer returns schema-valid scripts for smoke premises.""" |
|
|
| from __future__ import annotations |
|
|
| import argparse |
| import json |
|
|
| from midnight_static.schema import Genre |
| from midnight_static.writer import SMOKE_PREMISES, NemotronWriter, get_writer, script_to_json_dict |
|
|
|
|
| def main() -> None: |
| parser = argparse.ArgumentParser(description="Run writer schema smoke checks.") |
| parser.add_argument("--writer", default="fixture", help="Writer implementation name.") |
| parser.add_argument("--model-id", help="Optional HF model id for --writer nemotron.") |
| parser.add_argument("--max-new-tokens", type=int, help="Optional generation cap.") |
| parser.add_argument("--limit", type=int, default=len(SMOKE_PREMISES), help="Number of premises.") |
| args = parser.parse_args() |
|
|
| if args.writer == "nemotron" and (args.model_id or args.max_new_tokens): |
| writer = NemotronWriter(model_id=args.model_id, max_new_tokens=args.max_new_tokens) |
| else: |
| writer = get_writer(args.writer) |
| results = [] |
| for premise in SMOKE_PREMISES[: args.limit]: |
| script = writer.write(premise, genre=Genre.WEIRD) |
| script.validate() |
| results.append( |
| { |
| "premise": premise, |
| "writer": writer.name, |
| "title": script.title, |
| "genre": script.genre.value, |
| "cast_count": len(script.cast), |
| "scene_count": len(script.scenes), |
| "line_count": sum(len(scene.lines) for scene in script.scenes), |
| "json": script_to_json_dict(script), |
| } |
| ) |
| print(json.dumps(results, indent=2)) |
|
|
|
|
| if __name__ == "__main__": |
| main() |
|
|