py.lib.aw_config
7:26be458b26bb 0.202405.12 Browse Files
+ Добавлен объект, отвечающий за неопределённое состояние параметра, для отличия от заданного пользователем неопределённого значения (присвоенного `None`) параметра.
setup.py src/aw_config/_lib.py src/aw_config/env.py src/aw_config/file.py
1.1 --- a/setup.py Sun May 05 15:03:17 2024 +0300 1.2 +++ b/setup.py Tue May 14 09:44:41 2024 +0300 1.3 @@ -3,7 +3,7 @@ 1.4 1.5 setup( 1.6 name='aw_config', 1.7 - version='0.202405.11', 1.8 + version='0.202405.12', 1.9 packages=['aw_config'], 1.10 package_dir={'aw_config': 'src/aw_config'}, 1.11 install_requires=[
2.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 2.2 +++ b/src/aw_config/_lib.py Tue May 14 09:44:41 2024 +0300 2.3 @@ -0,0 +1,11 @@ 2.4 +# coding: utf-8 2.5 + 2.6 +class _Undefined: 2.7 + """\ 2.8 + Класс объекта неопределённого состояния параметра. Не должен никак использоваться за пределами 2.9 + модуля. 2.10 + """ 2.11 + 2.12 + 2.13 +# Объект неопределённого состояния параметра 2.14 +_UNDEFINED = _Undefined()
3.1 --- a/src/aw_config/env.py Sun May 05 15:03:17 2024 +0300 3.2 +++ b/src/aw_config/env.py Tue May 14 09:44:41 2024 +0300 3.3 @@ -2,7 +2,9 @@ 3.4 3.5 from os import environ as sysenv 3.6 from typing import Optional, Any 3.7 + 3.8 from .error import Error 3.9 +from ._lib import _UNDEFINED 3.10 3.11 3.12 class EnvConfigError(Error): 3.13 @@ -10,7 +12,7 @@ 3.14 super().__init__(f'Ошибка в параметре: {param_name} - {message}') 3.15 3.16 3.17 -def get_env(name: str, type_name: type, default: Optional[Any] = None, mandatory: bool = False): 3.18 +def get_env(name: str, type_name: type, default: Optional[Any] = _UNDEFINED, mandatory: bool = False): 3.19 try: 3.20 return type_name(sysenv[name]) 3.21 3.22 @@ -18,7 +20,7 @@ 3.23 raise EnvConfigError(name, f'Ошибка преобразования типа - {e}') 3.24 3.25 except KeyError: 3.26 - if default is None and not mandatory: 3.27 + if default is _UNDEFINED and mandatory: 3.28 raise EnvConfigError(name, 'Не установлен параметр') 3.29 3.30 else:
4.1 --- a/src/aw_config/file.py Sun May 05 15:03:17 2024 +0300 4.2 +++ b/src/aw_config/file.py Tue May 14 09:44:41 2024 +0300 4.3 @@ -8,6 +8,7 @@ 4.4 4.5 from .error import Error 4.6 from .type_helpers import BaseTypeHelper 4.7 +from ._lib import _UNDEFINED 4.8 4.9 4.10 class ConfigFileError(Error): 4.11 @@ -49,7 +50,7 @@ 4.12 4.13 def get_value(self, name: str, 4.14 val_type: Union[type, BaseTypeHelper] = str, 4.15 - default: Any = None, 4.16 + default: Any = _UNDEFINED, 4.17 mandatory: bool = True): 4.18 """\ 4.19 Получить из текущего раздела конфигурации нужный элемент 4.20 @@ -60,7 +61,7 @@ 4.21 параметра будет использовано значение None 4.22 """ 4.23 if name not in self.d: 4.24 - if mandatory and default is None: 4.25 + if mandatory and default is _UNDEFINED: 4.26 raise ConfigFileError(self._format_err_msg(f'Параметр "{name}" в файле отсутствует')) 4.27 4.28 else: