llm-cinema / schema.py
ConductorAILabs's picture
Upload folder using huggingface_hub
e93d4ef verified
Raw
History Blame Contribute Delete
1.92 kB
"""
Shared type definitions for LLM Cinema: the movie spec/shot records, the render
grid cell, and the floor/scenery tables — one documented contract in one place.
A leaf module (imports only `typing`), so every other module can import it freely
without an import cycle.
"""
from typing import TypedDict
RGB = tuple[int, int, int] # an (r, g, b) colour
Sprite = list[str] # ASCII art: one string per row
Cell = list # a grid cell: [char: str, colour: RGB]
Grid = list[list[Cell]] # grid[y][x] -> Cell
class Shot(TypedDict, total=False):
"""One beat of a film. Keys are optional because raw model output may omit
them; `movies.direct` fills them all in for the sanitized contract."""
narration: str
cast: list[str]
action: str # one of movies.ACTIONS
setting: str # one of movies.SETTINGS
camera: str # one of movies.CAMERAS
mood: list[str] # one feeling per cast member (movies.MOOD_EMOTE keys)
dialogue: str
class MovieSpec(TypedDict, total=False):
title: str
logline: str
shots: list[Shot]
class ScenePlan(TypedDict):
"""Set-dressing for one shot (see movies.scenery)."""
sky: str | None # 'sun' / 'moon' / None
clouds: int
stars: int
ground: list[tuple[str, float]] # (sprite label, fractional x) background props
class FloorProfile(TypedDict):
"""A terrain band (see movies.FLOOR)."""
surf: str # surface-row glyph pattern
fill: str # fill-row glyph
scol: RGB # surface colour
fcol: RGB # fill colour
tcol: str # curses Color name (terminal)
anim: bool # shimmer (shift the surface each frame)