Source code for app.workers.tasks.export

"""Export a reconstruction to PLY / NVM / COLMAP text/binary."""

from __future__ import annotations

from pathlib import Path

from app.adapters.backend import require_backend_method
from app.adapters.registry import get_backend
from app.db.models import Task
from app.workers._task_io import read_state
from app.workers.tasks._registry import task_handler


[docs] @task_handler("export") def run(task: Task) -> dict: inputs, spec = read_state(task) fmt = spec.get("format", "ply") out_path = Path(inputs["output_path"]) out_path.parent.mkdir(parents=True, exist_ok=True) export = require_backend_method( get_backend(), "export", capability=f"export.{fmt}", ) return export( model_path=Path(inputs["model_path"]), output_path=out_path, format=fmt, )