сегодня для одного своего проекта сделал енкодер, который позволяет #pydantic BaseSettings сериализовывать в валидный toml.
Что это дает?
1. Вы можете не описывать отдельно файл настроек и его шаблон, и все время сверять, правильно ли матчится файл со структурой данных, а просто сгенернировать файл настроек из структуры, заполненный дефолтными значениями.
2. Добавил функцию добавления описания каждого параметра настроек из аттрибутов Field.title и Field.description в виде ведущих комментариев. Теперь не нужно отдельно лезть на сайт, что бы посмотреть описание параметров - они все уже есть в сгенерированном файле настроек!
В качестве примера:
Допустим, у нас есть вот такая структура данных:
```python
class ImportsSettings(BaseSettings):
is_sorted: bool = Field(
default=True,
title='Сортировка импортов',
description=(
'Определяет, будет ли отсортированы строки импорта. Сортирует в пределах каждой области видимости. '
'Т.е. сортировка будет выполнена независимо для модуля, каждой функции и класса с любой степенью вложения. '
'По-умолчанию True.'
),
)
class StyleSettings(BaseSettings):
line_length: int = Field(80, title='Длинна строки', description='Максимальная длинна одной строки кода')
imports: ImportsSettings = Field(default_factory=ImportsSettings, title='Настройки ипортов')
```
после генерации получим вот такой toml-файл
```toml
### Длинна строки
# Максимальная длинна одной строки кода
line_length = 80
[imports]
### Сортировка импортов
# Определяет, будет ли отсортированы строки импорта. Сортирует в пределах
# каждой области видимости. Т.е. сортировка будет выполнена независимо для
# модуля, каждой функции и класса с любой степенью вложения. По-умолчанию
# True.
is_sorted = true
```