py.lib.aw_config

Yohn Y. 2024-05-14 Parent:bece3a8a67a5 Child:493b42d19c8c

7:26be458b26bb Go to Latest

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

+ Добавлен объект, отвечающий за неопределённое состояние параметра, для отличия от заданного пользователем неопределённого значения (присвоенного `None`) параметра.

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@7 23 if default is _UNDEFINED and mandatory:
awgur@0 24 raise EnvConfigError(name, 'Не установлен параметр')
awgur@0 25
awgur@0 26 else:
awgur@0 27 return default