py.lib.aw_config

Yohn Y. 2024-10-30 Parent:493b42d19c8c

12:75523df5b946 Go to Latest

py.lib.aw_config/src/aw_config/env.py

. Оптимизация изменения 493b42d1 и распространение его ещё и на разбор файлов конфигураций.

History
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