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)