Metadata-Version: 2.1
Name: pydantic_settings_yaml
Version: 0.2.0
Summary: Yaml support for Pydantic settings
Classifier: Programming Language :: Python :: 3
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE

# pydantic-settings-yaml

***Note: 2.x needs Pydantic>2.0,<3.0. Install 1.x if you still need Pydantic 1.x.***

Yaml support for Pydantic settings. Load a yaml config file 
as nested Pydantic models. 

Allows to use <file:xxxx> placeholders in the yaml config file
for secrets. A placeholder is replaced with the contents of the
file. Paths are relative to the 'secrets_dir' setting (see below).

## Usage

$cat /config/config.yaml
```
database: 
  password: <file:database_password>
  username: my_database_username
```


$cat /secrets/database_password
```
my_secret_database_password
```


Python code example:
``` 
    from pydantic import BaseModel
    from pydantic_settings_yaml import YamlBaseSettings
    from pydantic_settings import SettingsConfigDict

    class Database(BaseModel):
        username: str
        password: str


    class Settings(YamlBaseSettings):
        database: Database

        # configure paths to secrets directory and YAML config file
        model_config = SettingsConfigDict(
            secrets_dir="/secrets", yaml_file="/config/config.yaml")

    settings = Settings()

    assert settings.dict() == {
        "database": {
            "password": "my_secret_database_password", 
            "username": "my_database_username"
        }
    }
```
