This commit is contained in:
Artem Tsyrulnikov
2025-11-08 16:16:04 +03:00
commit 3800c72662
36 changed files with 2136 additions and 0 deletions

35
shared/config_helper.py Normal file
View File

@@ -0,0 +1,35 @@
import sys
from pydantic import ValidationError
from pydantic_settings import BaseSettings
RED = '\033[91m'
YELLOW = '\033[33m'
RESET = '\033[0m'
BOLD = '\033[1m'
def load_settings(settings_class: type[BaseSettings]) -> BaseSettings:
try:
return settings_class()
except ValidationError as e:
print(f'{RED}{BOLD}Missing environment variables:{RESET}')
missing = set()
for err in e.errors():
if err['type'] == 'missing' and len(err['loc']) == 1:
field = settings_class.model_fields.get(str(err['loc'][0]))
if field and hasattr(field.annotation, 'model_fields'):
for name, info in field.annotation.model_fields.items():
if info.is_required():
missing.add(f'{err["loc"][0]}__{name}'.upper())
else:
missing.add('__'.join(str(loc).upper() for loc in err['loc']))
else:
missing.add('__'.join(str(loc).upper() for loc in err['loc']))
for field in sorted(missing):
print(f' {YELLOW}{field}{RESET}')
print(f'\n{RED}Check .env file or set required variables{RESET}')
sys.exit(1)