43 lines
1.4 KiB
Python
43 lines
1.4 KiB
Python
|
import importlib
|
||
|
|
||
|
from ffmap.nodedb import NodeDB
|
||
|
|
||
|
def run(inputs, outputs):
|
||
|
"""Fill the database with given inputs and give it to given outputs.
|
||
|
|
||
|
Arguments:
|
||
|
inputs -- list of Input instances (with a compatible get_data(nodedb) method)
|
||
|
outputs -- list of Output instances (with a compatible output(nodedb) method)
|
||
|
"""
|
||
|
db = NodeDB()
|
||
|
for input_ in inputs:
|
||
|
input_.get_data(db)
|
||
|
|
||
|
for output in outputs:
|
||
|
output.output(db)
|
||
|
|
||
|
def run_names(inputs, outputs):
|
||
|
"""Fill the database with inputs and give it to outputs, each given
|
||
|
by names.
|
||
|
|
||
|
In contrast to run(inputs, outputs), this method expects only the
|
||
|
names of the modules to use, not instances thereof.
|
||
|
Arguments:
|
||
|
inputs -- list of dicts, each dict having the keys "name" with the
|
||
|
name of the input to use (directory name in inputs/), and
|
||
|
the key "options" with a dict of input-dependent options.
|
||
|
outputs -- list of dicts, see inputs.
|
||
|
"""
|
||
|
input_instances = []
|
||
|
output_instances = []
|
||
|
|
||
|
for input_ in inputs:
|
||
|
module = importlib.import_module(".inputs." + input_["name"], "ffmap")
|
||
|
input_instances.append(module.Input(**input_["options"]))
|
||
|
|
||
|
for output in outputs:
|
||
|
module = importlib.import_module(".outputs." + output["name"], "ffmap")
|
||
|
output_instances.append(module.Output(**output["options"]))
|
||
|
|
||
|
run(input_instances, output_instances)
|