py.lib.aw_config

Yohn Y. 2024-05-14 Parent:4bcdc1276091 Child:7026698c5937

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: