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

  1. Check the path printed in the error and confirm demo props files exist there (they should be checked into the repo).
  2. If the files were moved by a refactor, restore them to PROPS_DIR or update PROPS_DIR in render_demo.py.
  3. 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

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


AI-assisted analysis of calesthio/OpenMontage@95e1c3d0ab (2026-08-15). Data as JSON: /api/errors/07c0132481ae1e9e. Report an issue: GitHub.