GPQBot

Форк
0
/
settings.py 
69 строк · 2.0 Кб
1
from typing import Any, List
2
from uuid import UUID
3

4
from pybotx import BotAccountWithSecret
5
from pydantic import BaseSettings
6

7

8
class AppSettings(BaseSettings):
9
    class Config:  # noqa: WPS431
10
        env_file = ".env"
11

12
        @classmethod
13
        def parse_env_var(cls, field_name: str, raw_val: str) -> Any:
14
            if field_name == "BOT_CREDENTIALS":
15
                if not raw_val:
16
                    return []
17

18
                return [
19
                    cls._build_credentials_from_string(credentials_str)
20
                    for credentials_str in raw_val.replace(",", " ").split()
21
                ]
22
            elif field_name == "SMARTLOG_DEBUG_HUIDS":
23
                return cls.parse_smartlog_debug_huids(raw_val)
24

25
            return cls.json_loads(raw_val)  # type: ignore
26

27
        @classmethod
28
        def parse_smartlog_debug_huids(cls, raw_huids: Any) -> List[UUID]:
29
            """Parse debug huids separated by comma."""
30
            if not raw_huids:
31
                return []
32

33
            return [UUID(huid) for huid in raw_huids.split(",")]
34

35
        @classmethod
36
        def _build_credentials_from_string(
37
            cls, credentials_str: str
38
        ) -> BotAccountWithSecret:
39
            credentials_str = credentials_str.replace("|", "@")
40
            assert credentials_str.count("@") == 2, "Have you forgot to add `bot_id`?"
41

42
            cts_url, secret_key, bot_id = [
43
                str_value.strip() for str_value in credentials_str.split("@")
44
            ]
45

46
            if "://" not in cts_url:
47
                cts_url = f"https://{cts_url}"
48

49
            return BotAccountWithSecret(
50
                id=UUID(bot_id), cts_url=cts_url, secret_key=secret_key
51
            )
52

53
    BOT_CREDENTIALS: List[BotAccountWithSecret]
54

55
    # base kwargs
56
    DEBUG: bool = False
57

58
    # User huids for debug
59
    SMARTLOG_DEBUG_HUIDS: List[UUID]
60

61
    # database
62
    POSTGRES_DSN: str
63
    SQL_DEBUG: bool = False
64

65
    # healthcheck
66
    WORKER_TIMEOUT_SEC: float = 4
67

68

69
settings = AppSettings()

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.