def test_missing_inputs(): graph = Graph(parallel=True) def f_my_function(a, b): return a + b with pytest.raises(PyungoError) as err: graph.add_node(f_my_function, outputs=['c']) assert "Missing inputs parameter" in str(err.value) with pytest.raises(PyungoError) as err: graph.add_node(f_my_function, inputs=['a', 'b']) assert "Missing outputs parameter" in str(err.value)
def test_simple_parralel(): """ TODO: We could mock and make sure things are called correctly """ graph = Graph(parallel=True) def f_my_function(a, b): return a + b def f_my_function3(d, a): return d - a def f_my_function2(c): return c / 10. graph.add_node(f_my_function, inputs=['a', 'b'], outputs=['c']) graph.add_node(f_my_function3, inputs=['d', 'a'], outputs=['e']) graph.add_node(f_my_function2, inputs=['c'], outputs=['d']) graph.add_node(f_my_function2, inputs=['c'], outputs=['f']) graph.add_node(f_my_function2, inputs=['c'], outputs=['g']) res = graph.calculate(data={'a': 2, 'b': 3}) assert res == -1.5
def test_simple_parallel(): """ TODO: We could mock and make sure things are called correctly """ graph = Graph(parallel=True) def f_my_function(a, b): return a + b def f_my_function3(d, a): return d - a def f_my_function2(c): return c / 10.0 graph.add_node(f_my_function, inputs=["a", "b"], outputs=["c"]) graph.add_node(f_my_function3, inputs=["d", "a"], outputs=["e"]) graph.add_node(f_my_function2, inputs=["c"], outputs=["d"]) graph.add_node(f_my_function2, inputs=["c"], outputs=["f"]) graph.add_node(f_my_function2, inputs=["c"], outputs=["g"]) res = graph.calculate(data={"a": 2, "b": 3}) assert res == -1.5
def test_simple_without_decorator(): graph = Graph() def f_my_function(a, b): return a + b def f_my_function3(d, a): return d - a def f_my_function2(c): return c / 10. graph.add_node(f_my_function, inputs=['a', 'b'], outputs=['c']) graph.add_node(f_my_function3, inputs=['d', 'a'], outputs=['e']) graph.add_node(f_my_function2, inputs=['c'], outputs=['d']) res = graph.calculate(data={'a': 2, 'b': 3}) assert res == -1.5 assert graph.data['e'] == -1.5
def test_simple_without_decorator(): graph = Graph() def f_my_function(a, b): return a + b def f_my_function3(d, a): return d - a def f_my_function2(c): return c / 10.0 graph.add_node(f_my_function, inputs=["a", "b"], outputs=["c"]) graph.add_node(f_my_function3, inputs=["d", "a"], outputs=["e"]) graph.add_node(f_my_function2, inputs=["c"], outputs=["d"]) res = graph.calculate(data={"a": 2, "b": 3}) assert res == -1.5 assert graph.data["e"] == -1.5
def wrap(*args, **kwargs): res = f(*args, **kwargs) return [res[k] for k in res] return wrap # parallelism not needed for this example graph = Graph(parallel=False) graph.add_node( unpack_df(pvlib.solarposition.get_solarposition), inputs=["index", "latitude", "longitude"], outputs=[ "apparent_elevation", "apparent_zenith", "azimuth", "elevation", "equation_of_time", "zenith", ], ) graph.add_node(pvlib.irradiance.extraradiation, inputs=["index"], outputs=["dni_extra"]) graph.add_node(pvlib.atmosphere.relativeairmass, inputs=["apparent_zenith"], outputs=["airmass"]) graph.add_node( pvlib.irradiance.haydavies, inputs=[ "surface_tilt",
def unpack_dict(f): # (ordered) def wrap(*args, **kwargs): res = f(*args, **kwargs) return [res[k] for k in res] return wrap # parallelism not needed for this example graph = Graph(parallel=False) graph.add_node(unpack_df(pvlib.solarposition.get_solarposition), inputs=['index', 'latitude', 'longitude'], outputs=[ 'apparent_elevation', 'apparent_zenith', 'azimuth', 'elevation', 'equation_of_time', 'zenith' ]) graph.add_node(pvlib.irradiance.extraradiation, inputs=['index'], outputs=['dni_extra']) graph.add_node(pvlib.atmosphere.relativeairmass, inputs=['apparent_zenith'], outputs=['airmass']) graph.add_node(pvlib.irradiance.haydavies, inputs=[ 'surface_tilt', 'surface_azimuth', 'DHI', 'DNI', 'dni_extra', 'apparent_zenith', 'azimuth' ], outputs=['poa_sky_diffuse']) graph.add_node(pvlib.irradiance.grounddiffuse,