File size: 849 Bytes
6835659
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
from __future__ import annotations

import uuid
from dataclasses import dataclass
from datetime import datetime
from pathlib import Path


@dataclass(frozen=True)
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,
    )