py.lib.aw_config
2024-10-30
Parent:493b42d19c8c
py.lib.aw_config/src/aw_config/env.py
. Оптимизация изменения 493b42d1 и распространение его ещё и на разбор файлов конфигураций.
| awgur@0 | 1 # coding: utf-8 |
| awgur@0 | 2 |
| awgur@0 | 3 from os import environ as sysenv |
| awgur@0 | 4 from typing import Optional, Any |
| awgur@7 | 5 |
| awgur@0 | 6 from .error import Error |
| awgur@7 | 7 from ._lib import _UNDEFINED |
| awgur@0 | 8 |
| awgur@0 | 9 |
| awgur@0 | 10 class EnvConfigError(Error): |
| awgur@0 | 11 def __init__(self, param_name: str, message: Any): |
| awgur@0 | 12 super().__init__(f'Ошибка в параметре: {param_name} - {message}') |
| awgur@0 | 13 |
| awgur@0 | 14 |
| awgur@7 | 15 def get_env(name: str, type_name: type, default: Optional[Any] = _UNDEFINED, mandatory: bool = False): |
| awgur@0 | 16 try: |
| awgur@0 | 17 return type_name(sysenv[name]) |
| awgur@0 | 18 |
| awgur@0 | 19 except (ValueError, TypeError) as e: |
| awgur@0 | 20 raise EnvConfigError(name, f'Ошибка преобразования типа - {e}') |
| awgur@0 | 21 |
| awgur@0 | 22 except KeyError: |
| awgur@12 | 23 if default is not _UNDEFINED: |
| awgur@12 | 24 return default |
| awgur@12 | 25 |
| awgur@12 | 26 elif mandatory: |
| awgur@0 | 27 raise EnvConfigError(name, 'Не установлен параметр') |
| awgur@0 | 28 |
| awgur@12 | 29 else: |
| awgur@12 | 30 return None |