calesthio/OpenMontage · error · SystemExit
Error: No demo prop files were found in {PROPS_DIR}.
Error message
Error: No demo prop files were found in {PROPS_DIR}. What it means
Raised by render_demo.py's main() as SystemExit when discover_demos() finds no prop files in PROPS_DIR. Demos are discovered purely by scanning the checked-in props directory; if it's empty (or the files were moved/deleted/not checked out), there is nothing to list or render and the script exits with the directory path in the message.
Source
Thrown at render_demo.py:121
if output_path.exists():
size_mb = output_path.stat().st_size / (1024 * 1024)
print(f"Done: {output_path} ({size_mb:.1f} MB)")
else:
print("Render finished without creating the expected output file.")
def main(argv: list[str] | None = None) -> int:
parser = argparse.ArgumentParser(
description="Render zero-key OpenMontage demo videos from checked-in Remotion props."
)
parser.add_argument("demo", nargs="?", help="Render one named demo instead of all demos.")
parser.add_argument("--list", action="store_true", help="List available demo fixtures and exit.")
args = parser.parse_args(argv)
demos = discover_demos()
if not demos:
raise SystemExit(f"Error: No demo prop files were found in {PROPS_DIR}.")
if args.list:
print("Available zero-key demos:")
for name in demos:
description = DEMO_DESCRIPTIONS.get(name, "Checked-in Remotion demo")
print(f" {name:20} {description}")
return 0
if args.demo and args.demo not in demos:
available = ", ".join(demos)
raise SystemExit(f"Unknown demo '{args.demo}'. Available demos: {available}")
npx_cmd = ensure_demo_environment()
selected = {args.demo: demos[args.demo]} if args.demo else demos
for name, props_path in selected.items():
render_demo(name, props_path, npx_cmd)
View on GitHub (pinned to 95e1c3d0ab)
Solutions
- Check the path printed in the error and confirm demo props files exist there (they should be checked into the repo).
- If the files were moved by a refactor, restore them to PROPS_DIR or update PROPS_DIR in render_demo.py.
- Re-clone or fix the sparse-checkout/packaging config so the demo fixtures are present.
Defensive patterns
Strategy: validation
Validate before calling
from pathlib import Path
from render_demo import PROPS_DIR
def demos_present() -> bool:
return PROPS_DIR.exists() and any(PROPS_DIR.glob("*.json")) Try / catch
try:
main()
except SystemExit as e:
if "No demo prop files" in str(e):
print(f"Demo fixtures missing at {PROPS_DIR} — check your checkout/packaging.")
raise Prevention
- Ensure demo fixture files are included in packaging configs (not gitignored, not excluded by sparse checkout).
- If demo props move during a refactor, update PROPS_DIR in render_demo.py in the same change.
- Run `python render_demo.py --list` as a cheap canary that fixtures are present.
When it happens
Trigger: Running render_demo.py in a checkout where the demo props directory is empty — sparse checkout excluding those files, props moved during a refactor, or running from a working directory/build artifact tree where PROPS_DIR resolves to an empty folder.
Common situations: Repo refactor relocating demo fixtures; partial/sparse clone; packaging step (wheel/docker) that omitted the props directory; running the script from a copied tree that dropped data files.
Related errors
- Unknown demo '{args.demo}'. Available demos: {available}
- media not found
- Invalid stage: {stage!r} for pipeline {pipeline_type!r}. Val
- Pipeline manifest not found: {path}
- Playbook not found: {name}
AI-assisted analysis of calesthio/OpenMontage@95e1c3d0ab (2026-08-15).
Data as JSON: /api/errors/07c0132481ae1e9e.
Report an issue: GitHub.