Coverage for src/backoffice/_config/__init__.py: 0%

23 statements  

« prev     ^ index     » next       coverage.py v7.10.7, created at 2025-11-12 10:26 +0000

1import json 

2from functools import lru_cache 

3from pathlib import Path 

4 

5import httpx 

6from pydantic import HttpUrl 

7 

8from .._settings import settings 

9from ..utils_pure import raise_for_status_discretely 

10from .common import ConfigNode 

11from .id_parts import IdParts 

12from .reviewers import Reviewers 

13 

14 

15class CollectionConfig(ConfigNode, frozen=True): 

16 id_parts: IdParts 

17 reviewers: Reviewers 

18 

19 @classmethod 

20 @lru_cache 

21 def load(cls): 

22 if isinstance(settings.collection_config, HttpUrl): 

23 r = httpx.get( 

24 str(settings.collection_config), timeout=settings.http_timeout 

25 ) 

26 raise_for_status_discretely(r) 

27 data = r.json() 

28 else: 

29 with Path(settings.collection_config).open(encoding="utf-8") as f: 

30 data = json.load(f) 

31 

32 return cls.model_validate(data)