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

Валидация конфигурации (chutils validate)

Команда chutils validate используется для проверки корректности текущих конфигурационных файлов (включая локальные переопределения и переменные окружения) с помощью ваших Pydantic-моделей.

Это позволяет обнаружить опечатки, пропущенные обязательные параметры или неверные типы данных еще до старта приложения.


Синтаксис

chutils validate [-h] [-m MODEL]

Параметры и флаги:

Флаг Полное имя Описание Обязательный
-m --model Путь к Pydantic-модели (например, myapp.config:Settings). Если флаг не передан, chutils автоматически попытается найти класс с именем Settings в файлах context.py или config.py вашего проекта. Нет

Как это работает?

Утилита:

  1. Загружает и объединяет все доступные конфигурационные файлы (config.yml -> config.local.yml -> ENV).
  2. Динамически импортирует указанный класс Pydantic-модели.
  3. Передает собранные данные в конструктор модели для валидации.
  4. Возвращает статус проверки и соответствующий код выхода (Exit Code):
    • 0 — Конфигурация полностью валидна.
    • 1 — Обнаружены ошибки валидации (ValidationError) или проблемы с импортом модели.

Примеры использования

1. Успешная валидация (автоопределение модели)

Если в корне проекта или в папке src/ есть файл config.py с классом Settings:

chutils validate

Вывод в консоли (зеленым):

 [OK]  Конфигурация успешно прошла валидацию по модели 'src.config:Settings'.

2. Ошибка валидации (неверный тип данных или пропущенное поле)

Если в config.yml указано строковое значение для целочисленного поля или пропущен обязательный параметр:

chutils validate -m app.settings:AppConfig

Вывод в консоли (красным):

 [ERROR]  Ошибка валидации конфигурации:
1 validation error for AppConfig
Database.port
  Input should be a valid integer, unable to parse string as an integer [type=int_parsing, input_value='not_a_port', input_type=str]

(Exit code: 1)


Связанные команды

  • config debug — Позволяет интерактивно посмотреть, из каких источников (файлов или ENV) применилось то или иное неверное значение.
  • template schema — Сгенерировать JSON Schema на базе модели для автодополнения в IDE.