from pydantic import BaseModel from typing import List, Dict import yaml from pathlib import Path class Pipeline(BaseModel): name: str requirements: str script: List[str] class RunnerScript(BaseModel): pipelines: Dict[str, Pipeline] if __name__ == '__main__': path = Path(__file__).parent.parent / 'runner_script.yml' with open(path, 'r') as fh: script = yaml.safe_load(fh) runner_script = RunnerScript.parse_obj(script) print(runner_script) for k, v in runner_script.pipelines.items(): print(k) print(v)