affaan-m/ECC · error · ValueError

mesh is not a regular file

Error message

mesh is not a regular file: {mesh}

What it means

build() in blender_prop.py checks that the --mesh argument refers to an existing regular file before importing; the path is missing, a directory, or a special file.

Solutions

  1. Check the mesh path for typos
  2. Ensure the path is a regular file (not a directory or symlink to a missing target)
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at skills/taste-application/scripts/blender_prop.py:159 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of affaan-m/ECC@8321021c54 (2026-09-16). Data as JSON: /api/errors/66c493cbd96114d4. Report an issue: GitHub.

Appendix: source

Thrown at skills/taste-application/scripts/blender_prop.py:159

    expected = [render_dir / f"turn_{frame:04d}.png" for frame in range(1, frames + 1)]
    if "FINISHED" not in status or not all(path.is_file() and path.stat().st_size > 0 for path in expected):
        raise RuntimeError("Blender did not complete every requested render frame")


def _sha256(path: Path) -> str:
    with path.open("rb") as stream:
        return hashlib.file_digest(stream, "sha256").hexdigest()


def build(mesh: Path, pack: Path, out: Path | None, frames: int, size: int,
          render_dir: Path | None, *, width: int | None = None,
          height: int | None = None, fps: float = 24,
          receipt: Path | None = None) -> None:
    width = size if width is None else width
    height = size if height is None else height
    validate_settings(frames, width, height, fps)
    if not mesh.is_file():
        raise ValueError(f"mesh is not a regular file: {mesh}")
    for path in (out, receipt, render_dir):
        if path is not None:
            validate_output(path)
    if receipt is not None and out is None:
        raise ValueError("receipt requires a saved --out scene")
    if out is not None and out.suffix.lower() != ".blend":
        raise ValueError("scene output must use .blend extension")
    if out is not None and receipt is not None and out.absolute() == receipt.absolute():
        raise ValueError("receipt and scene output must be distinct")
    source_hash = _sha256(mesh)
    grade = pack / "grade.json"
    grade_hash = _sha256(grade) if grade.is_file() else None
    import bpy
    import mathutils

    bpy.ops.wm.read_factory_settings(use_empty=True)

    suffix = mesh.suffix.lower()

View on GitHub (pinned to 8321021c54)