Перейти к содержанию

Справочник API

В этом разделе находится документация, автоматически сгенерированная из исходного кода chutils.

Пакет chutils

chutils

Пакет chutils - набор переиспользуемых утилит для Python.

Основная цель - упростить рутинные задачи, такие как работа с конфигурацией, логированием и управлением секретами, с минимальными усилиями со стороны разработчика.

Ключевые особенности: - Автоматическое обнаружение корня проекта и файла конфигурации. - Поддержка форматов config.yml, config.yaml и config.ini (YAML в приоритете). - Удобные функции для доступа к настройкам. - Готовый к работе логгер с выводом в консоль и ротируемые файлы. - Безопасное хранение секретов через системное хранилище (keyring).

Основное использование:

Вам не нужно ничего инициализировать. Просто импортируйте и используйте:

from chutils import get_config_value, setup_logger, SecretManager

logger = setup_logger()
secrets = SecretManager("my_app")
db_host = get_config_value("Database", "host", "localhost")
logger.info(f"Подключение к базе данных на {db_host}")

Ручная инициализация (для нестандартных случаев):

Если автоматика не сработала, вы можете указать путь к корню проекта вручную:

import chutils
chutils.init(base_dir="/path/to/your/project")

init(base_dir)

Ручная инициализация пакета с указанием базовой директории проекта.

Эту функцию нужно вызывать только в том случае, если автоматическое определение корня проекта не сработало. Вызывать следует один раз в самом начале работы основного скрипта вашего приложения.

Parameters:

Name Type Description Default
base_dir str

Абсолютный путь к корневой директории проекта.

required

Raises:

Type Description
ValueError

Если указанная директория не существует.

Модуль config

chutils.config

Модуль для работы с конфигурацией.

Обеспечивает автоматический поиск файла config.yml, config.yaml или config.ini в корне проекта и предоставляет удобные функции для чтения настроек.

find_project_root(start_path, markers)

Ищет корень проекта, двигаясь вверх по дереву каталогов.

Parameters:

Name Type Description Default
start_path Path

Директория, с которой начинается поиск.

required
markers List[str]

Список имен файлов или папок (маркеров), наличие которых в директории указывает на то, что это корень проекта.

required

Returns:

Name Type Description
Optional[Path]

Объект Path, представляющий корневую директорию проекта

None Optional[Path]

Если корень не был найден.

get_config()

Загружает конфигурацию из файла (YAML или INI) и возвращает ее как словарь. Результат кэшируется для последующих вызовов.

Returns:

Name Type Description
_config_object Dict

Словарь с загруженной конфигурацией.

Dict

{}: Если файл не найден или произошла ошибка, возвращается пустой словарь.

get_config_boolean(section, key, fallback=False, config=None)

Получает булево значение из конфигурации.

Распознает 'true', '1', 't', 'y', 'yes' как True и 'false', '0', 'f', 'n', 'no' как False (без учета регистра).

Parameters:

Name Type Description Default
section str

Имя секции.

required
key str

Имя ключа.

required
fallback bool

Значение по умолчанию, если ключ не найден или не может быть распознан как булево.

False
config Optional[Dict]

Опциональный, предварительно загруженный словарь конфигурации.

None

Returns:

Type Description
bool

Булево значение из конфигурации или fallback.

get_config_float(section, key, fallback=0.0, config=None)

Получает дробное значение из конфигурации.

Parameters:

Name Type Description Default
section str

Имя секции.

required
key str

Имя ключа.

required
fallback float

Значение по умолчанию, если ключ не найден или не может быть преобразован в float.

0.0
config Optional[Dict]

Опциональный, предварительно загруженный словарь конфигурации.

None

Returns:

Type Description
float

Дробное число из конфигурации или fallback.

get_config_int(section, key, fallback=0, config=None)

Получает целочисленное значение из конфигурации.

Parameters:

Name Type Description Default
section str

Имя секции.

required
key str

Имя ключа.

required
fallback int

Значение по умолчанию, если ключ не найден или не может быть преобразован в int.

0
config Optional[Dict]

Опциональный, предварительно загруженный словарь конфигурации.

None

Returns:

Type Description
int

Целое число из конфигурации или fallback.

get_config_list(section, key, fallback=None, config=None)

Получает значение как список из конфигурации.

Parameters:

Name Type Description Default
section str

Имя секции.

required
key str

Имя ключа.

required
fallback Optional[List[Any]]

Значение по умолчанию, если ключ не найден.

None
config Optional[Dict]

Опциональный, предварительно загруженный словарь конфигурации.

None

Returns:

Type Description
List[Any]

Список из конфигурации или fallback. Если fallback не указан,

List[Any]

возвращается пустой список.

get_config_section(section_name, fallback=None, config=None)

Получает всю секцию конфигурации как словарь.

Parameters:

Name Type Description Default
section_name str

Имя секции.

required
fallback Optional[Dict]

Значение по умолчанию, если секция не найдена.

None
config Optional[Dict]

Опциональный, предварительно загруженный словарь конфигурации.

None

Returns:

Type Description
Dict[str, Any]

Словарь с содержимым секции или fallback. Если fallback не указан,

Dict[str, Any]

возвращается пустой словарь.

get_config_value(section, key, fallback='', config=None)

Получает значение из конфигурации.

Parameters:

Name Type Description Default
section str

Имя секции.

required
key str

Имя ключа.

required
fallback Any

Значение по умолчанию, если ключ не найден.

''
config Optional[Dict]

Опциональный, предварительно загруженный словарь конфигурации.

None

Returns:

Type Description
Any

Значение из конфигурации или fallback.

save_config_value(section, key, value, cfg_file=None)

Сохраняет одно значение в конфигурационном файле.

Warning

Важно: При сохранении в .yml комментарии и форматирование будут утеряны. При сохранении в .ini - сохраняются.

Parameters:

Name Type Description Default
section str

Имя секции.

required
key str

Имя ключа в секции.

required
value Any

Новое значение для ключа.

required
cfg_file Optional[str]

Опциональный путь к файлу. Если не указан, будет использован автоматически найденный файл.

None

Returns:

Name Type Description
True bool

Если значение было успешно обновлено и сохранено.

False bool

Если файл не найден, или произошла ошибка.

Модуль logger

chutils.logger

Модуль для настройки логирования.

Предоставляет унифицированную функцию setup_logger для создания и настройки логгеров, которые могут выводить сообщения в консоль и в файлы с автоматической ротацией. Директория для логов ('logs') создается автоматически в корне проекта.

ChutilsLogger

Bases: Logger

Кастомный класс логгера, который расширяет стандартный logging.Logger.

Добавляет поддержку пользовательских уровней логирования (devdebug и mediumdebug). Обеспечивая при этом корректную работу статических анализаторов и автодополнения в IDE.

Note

Вам не нужно создавать экземпляр этого класса напрямую. Используйте функцию setup_logger(), которая автоматически вернет объект этого типа.

Example
from chutils.logger import setup_logger, ChutilsLogger

# Используем наш класс для аннотации типа, чтобы IDE давала подсказки
logger: ChutilsLogger = setup_logger()

# Теперь IDE знает об этом методе и не будет показывать предупреждений
logger.mediumdebug("Это сообщение с автодополнением.")

devdebug(message, *args, **kws)

Логирует сообщение с уровнем DEVDEBUG (9).

Parameters:

Name Type Description Default
message str

Сообщение для логирования.

required
*args Any

Аргументы для форматирования сообщения.

()
**kws Any

Ключевые слова для _log.

{}

mediumdebug(message, *args, **kws)

Логирует сообщение с уровнем MEDIUMDEBUG (15).

Parameters:

Name Type Description Default
message str

Сообщение для логирования.

required
*args Any

Аргументы для форматирования сообщения.

()
**kws Any

Ключевые слова для _log.

{}

setup_logger(name='app_logger', log_level_str='')

Настраивает и возвращает логгер с нужным именем.

Функция идемпотентна: она предотвращает повторную настройку уже существующего логгера. Настройки (уровень, имя файла и т.д.) читаются из конфигурационного файла. По умолчанию добавляются обработчики для вывода в консоль и в файл с ежедневной ротацией.

Parameters:

Name Type Description Default
name str

Имя логгера. app_logger используется для основного логгера приложения и его экземпляр кэшируется.

'app_logger'
log_level_str str

Явное указание уровня логирования (например, 'DEBUG'). Если не задан, значение берется из конфигурационного файла, а если и там нет - используется 'INFO'.

''

Returns:

Type Description
ChutilsLogger

logging.Logger: Настроенный экземпляр ChutilsLogger.

Модуль secret_manager

chutils.secret_manager

SecretManager

Универсальный менеджер для безопасного хранения и получения секретов с использованием системного хранилища (keyring).

Использует системное хранилище (keyring) для безопасного хранения данных. Изолирует секреты разных приложений с помощью префикса и service_name.

Attributes:

Name Type Description
service_name str

Полное имя сервиса, используемое в keyring.

__init__(service_name)

Инициализирует менеджер для конкретного сервиса (приложения).

Parameters:

Name Type Description Default
service_name str

Уникальное имя для вашего приложения, например, 'my_super_app' или 'project_alpha_db'.

required

Raises:

Type Description
ValueError

Если service_name является пустой строкой.

delete_secret(key)

Удаляет пару ключ-значение из системного хранилища.

Parameters:

Name Type Description Default
key str

Ключ секрета, который нужно удалить.

required

Returns:

Type Description
bool

True, если секрет был удален или уже не существовал.

bool

False, если произошла ошибка при удалении.

get_secret(key)

Получает секретное значение по ключу из системного хранилища.

Parameters:

Name Type Description Default
key str

Ключ, по которому нужно найти секрет.

required

Returns:

Name Type Description
value str

Сохраненное значение

None None

Если ключ не найден или произошла ошибка.

save_secret(key, value)

Сохраняет пару ключ-значение в системном хранилище. Если ключ уже существует, его значение будет перезаписано.

Parameters:

Name Type Description Default
key str

Ключ для секрета (например, 'db_password' или 'api_token').

required
value str

Секретное значение, которое нужно сохранить.

required

Returns:

Name Type Description
True bool

Если секрет успешно сохранен.

False bool

Если произошла ошибка.

update_secret(key, value)

Обновляет значение для существующего ключа. Это псевдоним для функции save_secret, так как keyring по умолчанию перезаписывает значение при сохранении.

Parameters:

Name Type Description Default
key str

Ключ для секрета (например, 'db_password' или 'api_token').

required
value str

Новое секретное значение.

required

Returns:

Name Type Description
True bool

Если секрет успешно обновлен.

False bool

В случае возникновения ошибки.