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
« 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
5import httpx
6from pydantic import HttpUrl
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
15class CollectionConfig(ConfigNode, frozen=True):
16 id_parts: IdParts
17 reviewers: Reviewers
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)
32 return cls.model_validate(data)