Coverage for src/data_api/api/schemas/ping.py: 100%

18 statements  

« prev     ^ index     » next       coverage.py v7.16.2, created at 2026-11-13 19:28 +0000

1"""Read-only dataset readiness diagnostics.""" 

2 

3from datetime import datetime 

4from typing import Literal 

5 

6from pydantic import BaseModel 

7 

8from data_api.data.nthudata import Freshness 

9 

10 

11class DatasetError(BaseModel): 

12 category: str 

13 at: datetime 

14 status_code: int | None = None 

15 

16 

17class DatasetHealth(BaseModel): 

18 usable: bool = False 

19 freshness: Freshness = Freshness.UNAVAILABLE 

20 check_due: bool = True 

21 version: str | None = None 

22 loaded_at: datetime | None = None 

23 published_at: str | None = None 

24 last_checked_at: datetime | None = None 

25 last_refresh_attempt_at: datetime | None = None 

26 last_refresh_success_at: datetime | None = None 

27 last_error: DatasetError | None = None 

28 

29 

30class PingResponse(BaseModel): 

31 status: Literal["ok", "degraded", "unavailable"] 

32 ready: bool 

33 checked_at: datetime 

34 datasets: dict[str, DatasetHealth]