feat(wip): Add some data files
This commit is contained in:
29
gm_assistant/data_reader.py
Normal file
29
gm_assistant/data_reader.py
Normal 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)
|
Reference in New Issue
Block a user