diff options
| author | Christian Cleberg <[email protected]> | 2026-04-09 19:45:45 -0500 |
|---|---|---|
| committer | Christian Cleberg <[email protected]> | 2026-04-09 19:45:45 -0500 |
| commit | acbff854f2da96bddcaede1385e7fefeba0fb34b (patch) | |
| tree | 48d4707cd3276d2825370f0793008a6ffcfff936 /src/srht_contrib/config.py | |
| download | hutch-stats-acbff854f2da96bddcaede1385e7fefeba0fb34b.tar.gz hutch-stats-acbff854f2da96bddcaede1385e7fefeba0fb34b.tar.bz2 hutch-stats-acbff854f2da96bddcaede1385e7fefeba0fb34b.zip | |
initial commit
Diffstat (limited to 'src/srht_contrib/config.py')
| -rw-r--r-- | src/srht_contrib/config.py | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/src/srht_contrib/config.py b/src/srht_contrib/config.py new file mode 100644 index 0000000..56da6ff --- /dev/null +++ b/src/srht_contrib/config.py @@ -0,0 +1,59 @@ +from __future__ import annotations + +from functools import lru_cache + +from pydantic import Field +from pydantic_settings import BaseSettings, SettingsConfigDict + + +class Settings(BaseSettings): + model_config = SettingsConfigDict( + env_file=".env", + env_file_encoding="utf-8", + case_sensitive=True, + ) + + app_name: str = "srht-contrib" + app_env: str = "development" + api_host: str = "127.0.0.1" + api_port: int = 8000 + enable_scheduler: bool = Field(default=False, alias="ENABLE_SCHEDULER") + api_key: str = Field(default="", alias="API_KEY") + + srht_token: str = Field(default="", alias="SRHT_TOKEN") + todo_srht_endpoint: str = Field( + default="https://todo.sr.ht/query", + alias="TODO_SRHT_ENDPOINT", + ) + git_srht_endpoint: str = Field( + default="https://git.sr.ht/query", + alias="GIT_SRHT_ENDPOINT", + ) + database_url: str = Field( + default="sqlite:///./srht_contrib.db", + alias="DATABASE_URL", + ) + default_actor: str = Field(default="~unknown", alias="DEFAULT_ACTOR") + poll_interval_seconds: int = Field(default=900, alias="POLL_INTERVAL_SECONDS") + actor_aliases_json: dict[str, list[str]] = Field( + default_factory=dict, + alias="ACTOR_ALIASES_JSON", + ) + git_tracked_repositories: list[str] = Field( + default_factory=list, + alias="GIT_TRACKED_REPOSITORIES", + ) + + event_weights: dict[str, float] = { + "commit": 1.0, + "ticket_created": 1.0, + "ticket_comment": 0.5, + "ticket_closed": 0.75, + "build_started": 0.25, + "build_passed": 0.25, + } + + +@lru_cache(maxsize=1) +def get_settings() -> Settings: + return Settings() |
