py.lib.aw_config

Yohn Y. 2024-05-04 Child:26be458b26bb

0:bece3a8a67a5 Go to Latest

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

.. init

History
     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