| from __future__ import annotations | |
| import uuid | |
| from dataclasses import dataclass | |
| from datetime import datetime | |
| from pathlib import Path | |
| class RunPaths: | |
| run_id: str | |
| root: Path | |
| images_dir: Path | |
| audio_dir: Path | |
| logs_dir: Path | |
| def create_run_paths(base_dir: str = "runs") -> RunPaths: | |
| run_id = datetime.utcnow().strftime("%Y%m%d_%H%M%S") + "_" + uuid.uuid4().hex[:8] | |
| root = Path(base_dir) / run_id | |
| images_dir = root / "images" | |
| audio_dir = root / "audio" | |
| logs_dir = root / "logs" | |
| images_dir.mkdir(parents=True, exist_ok=True) | |
| audio_dir.mkdir(parents=True, exist_ok=True) | |
| logs_dir.mkdir(parents=True, exist_ok=True) | |
| return RunPaths( | |
| run_id=run_id, | |
| root=root, | |
| images_dir=images_dir, | |
| audio_dir=audio_dir, | |
| logs_dir=logs_dir, | |
| ) | |