Skip to content

Версия 2.2.0: Гибкость и надежность

Choose a tag to compare

@Chu4hel Chu4hel released this 08 Nov 21:48
· 815 commits to main since this release

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


🚀 Новые возможности (Features)

  • Расширенная ротация логов:

    • Добавлена ротация логов по размеру (rotation_type='size').
    • Реализовано автоматическое сжатие (compress=True) ротированных лог-файлов в формат .gz для экономии места.
  • Поддержка .env в SecretManager:

    • SecretManager теперь автоматически ищет и загружает переменные из .env файла в корне проекта.
    • Приоритет получения секрета: Keyring > .env / Переменные окружения, что обеспечивает максимальную гибкость.
  • Раздельные файлы для логгеров:

    • В функцию setup_logger добавлен параметр log_file_name. Теперь можно легко настроить запись логов от разных частей приложения в разные файлы.
  • Переопределение конфигурации локальным файлом:

    • Реализована поддержка локальных файлов config.local.yml / config.local.ini. Настройки из этих файлов автоматически переопределяют базовую конфигурацию и могут быть безопасно добавлены в .gitignore.
  • Декоратор для отладки функций:

    • Добавлен новый декоратор @log_function_details в chutils.decorators. Он автоматически логирует аргументы, возвращаемое значение и время выполнения функции, что значительно упрощает отладку.
  • Настраиваемый префикс для SecretManager:

    • В конструктор SecretManager добавлен параметр prefix для полной настройки service_name, используемого в Keyring.

🛠 Улучшения и внутренние изменения (Improvements)

  • Умное имя сервиса в SecretManager: SecretManager теперь автоматически использует путь к проекту в качестве service_name, если он не указан явно. Это предотвращает конфликты имен между разными проектами по умолчанию.
  • Оптимизация производительности логгера: Все вызовы логгера, использовавшие f-строки, были заменены на "ленивое" форматирование. Это предотвращает ненужные вычисления строк для сообщений, которые не будут записаны.
  • Ленивая инициализация: Логгеры и конфигурация теперь инициализируются "лениво" (при первом обращении), что ускоряет импорт библиотеки и делает поведение более предсказуемым.
  • Информативные ошибки конфигурации: Функции get_config_int и get_config_float теперь выводят warning в лог, если значение из файла не может быть преобразовано в нужный тип.
  • Рефакторинг модуля config: Проведен крупный рефакторинг модуля config с разделением больших функций на более мелкие и специализированные для улучшения читаемости и поддержки.
  • Оптимизация пакета: Из дистрибутива пакета исключены все нерелевантные файлы (тесты, документация, файлы IDE), что уменьшает его размер.

🐛 Исправления (Bug Fixes)

  • Ротация логов в Windows: Исправлена критическая ошибка PermissionError, возникавшая при ротации лог-файлов в Windows.

📝 Документация (Documentation)

  • Обновлена дорожная карта: Все выполненные задачи были удалены.
  • Добавлены новые примеры: В папку examples добавлены скрипты, демонстрирующие новые возможности, включая работу с разными файлами логов.

Full Changelog: v2.1.0...v2.2.0