py.lib.aw_config
2024-05-04
Child:26be458b26bb
py.lib.aw_config/src/aw_config/env.py
.. init
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/src/aw_config/env.py Sat May 04 18:23:23 2024 +0300 1.3 @@ -0,0 +1,25 @@ 1.4 +# coding: utf-8 1.5 + 1.6 +from os import environ as sysenv 1.7 +from typing import Optional, Any 1.8 +from .error import Error 1.9 + 1.10 + 1.11 +class EnvConfigError(Error): 1.12 + def __init__(self, param_name: str, message: Any): 1.13 + super().__init__(f'Ошибка в параметре: {param_name} - {message}') 1.14 + 1.15 + 1.16 +def get_env(name: str, type_name: type, default: Optional[Any] = None, mandatory: bool = False): 1.17 + try: 1.18 + return type_name(sysenv[name]) 1.19 + 1.20 + except (ValueError, TypeError) as e: 1.21 + raise EnvConfigError(name, f'Ошибка преобразования типа - {e}') 1.22 + 1.23 + except KeyError: 1.24 + if default is None and not mandatory: 1.25 + raise EnvConfigError(name, 'Не установлен параметр') 1.26 + 1.27 + else: 1.28 + return default