Code: Select all
# config.yaml
key1:
value1: x
level1:
level2_1:
key1: y
level3:
key1: z
key2: zz
level2_2:
key1: a
level3: null
Code: Select all
settings.key1.value1 # x
settings.level1.level2_1.key1 # y
settings.level1.level2_2.level3.key2 # zz
< /code>
Was ich bisher getan habe: < /p>
from pathlib import Path
import yaml
from pydantic import BaseModel, ConfigDict
class Key1Config(BaseModel):
value1: str
class Level3Config(BaseModel):
model_config = ConfigDict(extra="allow")
key1: str
class Level2Config(BaseModel):
key1: str
level3: Level3Config
class Config(BaseModel):
key1: Key1Config
# level1: ?
# level2_* ?
@classmethod
def from_yaml(cls, config_file: Path):
with config_file.open() as f:
data = yaml.safe_load(f)
return cls.model_validate(data)
settings = Config.from_yaml(Path(__file__).parent.joinpath("./config.yaml"))
Code: Select all
level2_*
Code: Select all
level3