File size: 2,244 Bytes
e0265b9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c61c435
 
 
 
 
 
e0265b9
 
 
 
 
 
 
 
 
 
 
 
c61c435
 
 
 
 
 
e0265b9
 
 
 
 
 
 
 
 
 
 
 
 
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
from __future__ import annotations

from adam.models import ExecutionPlan, Job, JobStatus, PlanStep
from adam.commands import TrainingCommand


def test_job_round_trip_preserves_enums_and_plan() -> None:
    job = Job(
        plan=ExecutionPlan(
            request="Check GPU",
            summary="Inspect resources",
            steps=[
                PlanStep(
                    "system_monitor",
                    "Inspect system",
                    "Read local sensors",
                    {"project_name": "System check"},
                )
            ],
        ),
        status=JobStatus.FINISHED,
        progress=100,
        preview_path="D:/runs/preview_epoch_5.png",
        preview_epoch=5,
        preview_next_epoch=10,
        preview_prompt="test prompt",
        preview_seed=42,
        preview_steps=30,
        eta_seconds=125,
        estimated_completion_at="2026-08-30T23:32:00+00:00",
        progress_current=75,
        progress_total=100,
        progress_rate=0.75,
        progress_unit="step",
    )

    restored = Job.from_dict(job.to_dict())
    assert restored.status == JobStatus.FINISHED
    assert restored.plan.steps[0].tool_id == "system_monitor"
    assert restored.progress == 100
    assert restored.preview_path == "D:/runs/preview_epoch_5.png"
    assert restored.preview_epoch == 5
    assert restored.preview_next_epoch == 10
    assert restored.preview_prompt == "test prompt"
    assert restored.preview_seed == 42
    assert restored.preview_steps == 30
    assert restored.eta_seconds == 125
    assert restored.estimated_completion_at == "2026-08-30T23:32:00+00:00"
    assert restored.progress_current == 75
    assert restored.progress_total == 100
    assert restored.progress_rate == 0.75
    assert restored.progress_unit == "step"


def test_training_command_accepts_live_preview_options() -> None:
    command = TrainingCommand.from_dict({
        "trainer": "ddpm", "dataset": "D:/data", "model_name": "Test",
        "epochs": 10,
        "training_options": {
            "preview_enabled": True, "preview_every": 3,
            "preview_prompt": "a test subject", "preview_seed": 123456789,
        },
    })

    assert command.training_options["preview_every"] == 3