feat(wip): Add some data files

This commit is contained in:
2025-05-21 23:55:09 +02:00
parent 0d57afeeeb
commit c0ef8cbc0b
7 changed files with 582 additions and 0 deletions

View File

@@ -0,0 +1,29 @@
"""Object Generators (AKA Oracles)"""
import yaml
from .oracle.base import Oracle
from .oracle.object_generator import ObjectGeneratorOracle
from .oracle.random_choice import RandomChoiceOracle
TYPE_CLASSES = {
"object-generator": ObjectGeneratorOracle,
"random-choice": RandomChoiceOracle,
}
def read_datafile(filename: str) -> Oracle:
"""Read a datafile in YAML format"""
with open(filename, "r", encoding="utf-8") as fhand:
data = yaml.safe_load(fhand)
if not isinstance(data, dict):
raise TypeError("Generator data must be an YAML object")
if (generator_type := data.get("type")) not in TYPE_CLASSES:
raise ValueError(f"No information on how to handle {generator_type} data")
handler_class = TYPE_CLASSES[generator_type]
return handler_class(data)