From 6eb5ee144d5e730616f13d3d14129f0205282d90 Mon Sep 17 00:00:00 2001 From: Jonas Gunz Date: Tue, 7 Nov 2023 00:02:48 +0100 Subject: aggregator refactor --- run.py | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) (limited to 'run.py') diff --git a/run.py b/run.py index d0a004a..2220db3 100755 --- a/run.py +++ b/run.py @@ -9,6 +9,20 @@ from matplotlib.colors import LinearSegmentedColormap from metpy.units import units +def create_aggregators(cfg): + ret = {} + for aggregator in cfg: + aggconf = cfg[aggregator] + classname = aggconf['module'] + del aggconf['module'] + + ret[aggregator] = {} + ret[aggregator]['module'] = __import__(classname, fromlist=[None]) + ret[aggregator]['config'] = aggconf + ret[aggregator]['config']['name'] = aggregator + + return ret + # Define custom gpm and gpdm units. The default gpm in metpy is aliased to meter. # We need the correct definition units.define('_gpm = 9.80665 * J/kg') @@ -43,6 +57,8 @@ conf = None with open(FILE, 'r') as f: conf = yaml.safe_load(f) +aggregators = create_aggregators(conf['aggregator']) + index = [] for plotter in conf['plotter']: @@ -50,17 +66,9 @@ for plotter in conf['plotter']: del plotter['module'] if 'aggregator' in plotter: - aggname = plotter['aggregator'] + agg = aggregators[plotter['aggregator']] + plotter['data'] = agg['module'].load_data(**agg['config']) del plotter['aggregator'] - aggconf = conf['aggregator'][aggname] - classname = aggconf['module'] - # We should prbly not delete it like in the plotter, since it is not a deepcopy - # and may be used again. - - agg = __import__(classname, fromlist=[None]) - - # TODO: figure out a way to use **aggconf instead. - plotter['data'] = agg.load_data(aggname, aggconf) mod = __import__(modname, fromlist=[None]) index.extend(mod.run(**plotter)) -- cgit v1.2.3