py.lib.aw_config

Yohn Y. 2024-05-05 Parent:bece3a8a67a5 Child:26be458b26bb

6:4bcdc1276091 Go to Latest

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

Added tag 0.202405.11 for changeset 564293b54664

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@0 5 from .error import Error
awgur@0 6
awgur@0 7
awgur@0 8 class EnvConfigError(Error):
awgur@0 9 def __init__(self, param_name: str, message: Any):
awgur@0 10 super().__init__(f'Ошибка в параметре: {param_name} - {message}')
awgur@0 11
awgur@0 12
awgur@0 13 def get_env(name: str, type_name: type, default: Optional[Any] = None, mandatory: bool = False):
awgur@0 14 try:
awgur@0 15 return type_name(sysenv[name])
awgur@0 16
awgur@0 17 except (ValueError, TypeError) as e:
awgur@0 18 raise EnvConfigError(name, f'Ошибка преобразования типа - {e}')
awgur@0 19
awgur@0 20 except KeyError:
awgur@0 21 if default is None and not mandatory:
awgur@0 22 raise EnvConfigError(name, 'Не установлен параметр')
awgur@0 23
awgur@0 24 else:
awgur@0 25 return default