Laden Sie verschachtelte Einstellungen aus der YAML -Datei mit PydanticPython

Python-Programme
Anonymous
 Laden Sie verschachtelte Einstellungen aus der YAML -Datei mit Pydantic

Post by Anonymous »

Betrachten Sie die folgende YAML Konfigurationsdatei.

Code: Select all

# config.yaml

key1:
value1: x
level1:
level2_1:
key1: y
level3:
key1: z
key2: zz
level2_2:
key1: a
level3: null
Ich suche ein pydantisches Modell, das die Konfiguration aus der Datei config.yaml lädt. Ich bin besonders daran interessiert, die DOT-NOTATION für alle Ebenen dieser verschachtelten Konfiguration zu verwenden.

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"))
Ich kämpfe mit der Definition von Level1 und Level2 _*.

Code: Select all

level2_*
kann eine beliebige Nummer sein, d. H. Level2_3 , Level2_4 usw.

Code: Select all

level3
kann auch eine beliebige Anzahl von Einträgen mit niedrigerer Ebene oder Null haben.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post