Вот мой конфиг упрощенно:
from pathlib import Path
from pydantic_settings import BaseSettings, SettingsConfigDict
CONFIG_PATH = Path(__file__).parent / "config.yaml"
class Settings(BaseSettings):
db_url: str
model_config = SettingsConfigDict(
yaml_file=CONFIG_PATH,
)
settings = Settings()
print(settings.db_url)
Почему не парсится YAML? Ручками через open в контекстном менеджере все ок. Вроде бы в SettingsConfigDict через именованный аргумент yaml_file можно сократить логику, но у меня падает ошибка, якобы pydantic не может прочесть мой конфиг. Хотя он читается без проблем и существует.
YAML:
db_url: "sqlite+aiosqlite://"
Traceback:
Traceback (most recent call last):
File "/.../src/config/config.py", line 16, in <module>
settings = Settings()
File "/.../.venv/lib/python3.13/site-packages/pydantic_settings/main.py", line 188, in __init__
super().__init__(
~~~~~~~~~~~~~~~~^
**__pydantic_self__._settings_build_values(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
...<27 lines>...
)
^
)
^
File "/.../.venv/lib/python3.13/site-packages/pydantic/main.py", line 253, in __init__
validated_self = self.__pydantic_validator__.validate_python(data, self_instance=self)
pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
db_url
Field required [type=missing, input_value={}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.11/v/missing