мета-данные страницы
  •  

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
lib.py:aw_config:func [30.10.2024 11:39] awgurlib.py:aw_config:func [03.11.2024 16:46] (текущий) awgur
Строка 1: Строка 1:
 ====== Работа с переменными окружения ====== ====== Работа с переменными окружения ======
  
-===== get_env =====+===== get_env() =====
  
 Получение параметра из переменной окружения Получение параметра из переменной окружения
Строка 26: Строка 26:
 ====== Инструменты поддержки ====== ====== Инструменты поддержки ======
  
-===== get_app_root =====+===== get_app_root() =====
  
 Функция определения абсолютного пути к имени директории, в которой расположено приложение. Функция определения абсолютного пути к имени директории, в которой расположено приложение.
Строка 49: Строка 49:
  
  
-====== Кеширование объектов конфигурации ======+====== Хранение объектов конфигурации ======
  
 Предполагается, что конфигурация приложения состоит из набора объектов (либо [[https://docs.python.org/3/library/collections.html#collections.namedtuple|namedtuple]] либо [[https://docs.python.org/3/library/dataclasses.html|dataclass]]) в которых собраны параметры необходимые для каждого из компонентов приложения. Для упрощения работы с ними, данные объекты могу быть сохранены на этапе разбора конфигурации и отданы на этапе работы модуля предоставленным Библиотекой API. Предполагается, что конфигурация приложения состоит из набора объектов (либо [[https://docs.python.org/3/library/collections.html#collections.namedtuple|namedtuple]] либо [[https://docs.python.org/3/library/dataclasses.html|dataclass]]) в которых собраны параметры необходимые для каждого из компонентов приложения. Для упрощения работы с ними, данные объекты могу быть сохранены на этапе разбора конфигурации и отданы на этапе работы модуля предоставленным Библиотекой API.
Строка 55: Строка 55:
 **Не производится защиты конфиденциальных данных. Этот вопрос остаётся за программистом** **Не производится защиты конфиденциальных данных. Этот вопрос остаётся за программистом**
  
 +В случае ошибок преобразования при работе функций модуля возникает исключение ''AppConfManagerError''
  
-===== init_configs ===== 
  
-Инициализировать кеш.+===== init_configs() ===== 
 + 
 +Инициализировать Хранилище.
  
 В рамках операции производится очистка хранилища. Данная операция должна быть выполнена перед использованием. В рамках операции производится очистка хранилища. Данная операция должна быть выполнена перед использованием.
Строка 67: Строка 69:
  
  
-===== add_config =====+===== add_config() =====
  
-Добавление в кеш объекта конфигурации.+Добавление в хранилище объекта конфигурации.
  
 При попытке повторной вставки элемента с имеющимся идентификатором, возникает исключение ''AppConfManagerError''. При попытке повторной вставки элемента с имеющимся идентификатором, возникает исключение ''AppConfManagerError''.
Строка 78: Строка 80:
  
 ^ Параметр ^ Описание ^ ^ Параметр ^ Описание ^
-| ''conf_selector'' | Элемент, с использованием которого можно получить данный конфигурационный объект в будущем. Здесь может использоваться всё, что пригодно для Python в качестве ключа словаря |+| ''conf_selector'' | Элемент, с использованием которого можно получить данный конфигурационный объект в будущем. Здесь может использоваться всё, что пригодно для Python в качестве ключа словаря. Например: Объект типа класса данных (скажем если определено ''DBConfig = namedtuple(...)'', то этот самый ''DBConfig'' вполне подойдёт для идентификатора) |
 | ''conf_obj'' | Собственно объект конфигурации. Так же не накладывается ограничений на тип аргумента | | ''conf_obj'' | Собственно объект конфигурации. Так же не накладывается ограничений на тип аргумента |
  
 +Пример: <code python>
 +add_config(NetConfig, NetConfig(
 +   port=root_section.get_value('port', int, 8080),
 +   baseurl=root_section.get_value('baseurl', str)
 +)
 +</code>
  
  
-===== replace_config =====+===== replace_config() =====
  
-Заменяет объект с заданным идентификатором на новый, указанный в параметрах.+Заменяет объект с заданным идентификатором в хранилище на новый, указанный в параметрах.
  
 <code> <code>
Строка 92: Строка 100:
  
 ^ Параметр ^ Описание ^ ^ Параметр ^ Описание ^
-| ''conf_selector''Элемент, с использованием которого можно получить данный конфигурационный объект в будущем. Здесь может использоваться всё, что пригодно для Python в качестве ключа словаря +| ''conf_selector''Идентификатор объекта конфигурации. См. [[#add_config]] 
-| ''conf_obj'' | Собственно объект конфигурации. Так же не накладывается ограничений на тип аргумента |+| ''conf_obj'' | Собственно объект конфигурации. См. [[#add_config]] |
  
  
 +===== get_config() =====
  
 +Получаем из хранилища добавленный ранее объект конфигурации по идентификатору.
 +
 +Если объект не добавлен, возникает исключение ''AppConfNotFound''
 +
 +<code>
 +get_config(conf_selector)
 +</code>
 +
 +^ Параметр ^ Описание ^
 +| ''conf_selector'' | Идентификатор добавленного ранее объекта конфигурации |