63 lines
2.0 KiB
Python
63 lines
2.0 KiB
Python
|
|
"""DMS YOLO pack promote adapter."""
|
||
|
|
from __future__ import annotations
|
||
|
|
|
||
|
|
import sys
|
||
|
|
from pathlib import Path
|
||
|
|
|
||
|
|
from as_platform.data.promote.base import PackPromoteAdapter, PromoteContext, PromoteResult
|
||
|
|
from as_platform.data.promote.manifest import refresh_dms_yaml
|
||
|
|
from as_platform.data.promote.validate.dms_yolo import validate_dms_task
|
||
|
|
|
||
|
|
_DMS_SCRIPTS = Path(__file__).resolve().parents[4] / "datasets" / "dms" / "scripts"
|
||
|
|
if str(_DMS_SCRIPTS) not in sys.path:
|
||
|
|
sys.path.insert(0, str(_DMS_SCRIPTS))
|
||
|
|
|
||
|
|
|
||
|
|
class DmsYoloPromoteAdapter(PackPromoteAdapter):
|
||
|
|
project = "dms"
|
||
|
|
|
||
|
|
def validate(self, ctx: PromoteContext) -> list[str]:
|
||
|
|
if ctx.skip_validate:
|
||
|
|
return []
|
||
|
|
return validate_dms_task(ctx.task)
|
||
|
|
|
||
|
|
def promote(self, ctx: PromoteContext) -> PromoteResult:
|
||
|
|
from ingest_incremental import promote_inbox_batch
|
||
|
|
|
||
|
|
if not ctx.batch_dir.is_dir():
|
||
|
|
return PromoteResult(
|
||
|
|
ok=False,
|
||
|
|
project=ctx.project,
|
||
|
|
task=ctx.task,
|
||
|
|
batch=ctx.batch,
|
||
|
|
pack=ctx.pack,
|
||
|
|
warnings=[f"batch_dir missing: {ctx.batch_dir}"],
|
||
|
|
)
|
||
|
|
|
||
|
|
pack_dir = ctx.project_root / "packs" / ctx.pack
|
||
|
|
pack_dir.mkdir(parents=True, exist_ok=True)
|
||
|
|
|
||
|
|
detail = promote_inbox_batch(
|
||
|
|
root=ctx.project_root,
|
||
|
|
task=ctx.task,
|
||
|
|
pack=ctx.pack,
|
||
|
|
src=ctx.batch_dir,
|
||
|
|
mode=ctx.extra.get("mode"),
|
||
|
|
dry_run=ctx.dry_run,
|
||
|
|
refresh=ctx.refresh and not ctx.dry_run,
|
||
|
|
)
|
||
|
|
if ctx.refresh and not ctx.dry_run and not ctx.skip_validate:
|
||
|
|
refresh_dms_yaml(task=ctx.task)
|
||
|
|
|
||
|
|
added = int(detail.get("added") or 0)
|
||
|
|
return PromoteResult(
|
||
|
|
ok=True,
|
||
|
|
project=ctx.project,
|
||
|
|
task=ctx.task,
|
||
|
|
batch=ctx.batch,
|
||
|
|
pack=ctx.pack,
|
||
|
|
dest_path=str(ctx.project_root / "packs" / ctx.pack),
|
||
|
|
labels=added,
|
||
|
|
detail=detail,
|
||
|
|
)
|