Source code for analyzer.core.era

from __future__ import annotations
from pathlib import Path
from attrs import define, field

import yaml

try:
    from yaml import CLoader as Loader
except ImportError:
    from yaml import Loader


@define
[docs] class EraRepo:
[docs] eras: dict[str, dict] = field(factory=dict)
[docs] def __getitem__(self, key): return self.eras[key]
[docs] def addFromFile(self, path): with open(path, "r") as fo: data = yaml.load(fo, Loader=Loader) for d in data: name = d["name"] if name in self.eras: raise KeyError(f"A era with the name {name} already exists") self.eras[name] = d
[docs] def addFromDirectory(self, path): directory = Path(path) if directory.is_file(): self.addFromFile(directory) else: files = list(directory.rglob("*.yaml")) for f in files: self.addFromFile(f)