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
- Check the mesh path for typos
- 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)