Skip to content

Passing Instance of SimulationConfig into Simulation Causes Error #145

@afisher1

Description

@afisher1

Describe the bug
Passing an instance of SimulationConfig into Simulation constructor results in a TypeError:

'SimulationConfig' object is not subscriptable
File "/home/vale/git/micro-apps/.venv/lib/python3.10/site-packages/gridappsd/simulation.py", line 162, in init
float(self._run_config["simulation_config"]["duration"]))
File "/home/vale/git/micro-apps/micro-apps/conservation-voltage-reduction-app/cvr_main.py", line 235, in createSimulation
sim_obj = Simulation(gapps=gad_obj, run_config=sim_config)
File "/home/vale/git/micro-apps/micro-apps/conservation-voltage-reduction-app/cvr_main.py", line 265, in main
local_simulations[m.get('modelId', '')] = createSimulation(GAD_OBJECT, m)
File "/home/vale/git/micro-apps/micro-apps/conservation-voltage-reduction-app/cvr_main.py", line 311, in
main(args.disable_control, args.start_simulations, args.model_id)
File "/usr/lib/python3.10/runpy.py", line 86, in _run_code
exec(code, run_globals)
File "/usr/lib/python3.10/runpy.py", line 196, in _run_module_as_main (Current frame)
return _run_code(code, main_globals, None,
TypeError: 'SimulationConfig' object is not subscriptable

To Reproduce

psc = PowerSystemConfig(Line_name='_49AD8E07-3BF9-A4E2-CB8F-C3722F837B62',
                        SubGeographicalRegion_name='_ABEB635F-729D-24BF-B8A4-E2EF268D8B9E',
                        GeographicalRegion_name='_73C512BD-7249-4F50-50DA-D93849B89C43')
start_time = int(datetime.utcnow().replace(microsecond=0).timestamp())
sim_args = SimulationArgs(start_time=f'{start_time}', duration=f'{24*3600}', simulation_name='ieee13nodeckt',
                          run_realtime=False, pause_after_measurements=True)
sim_config = SimulationConfig(power_system_config=psc, simulation_config=sim_args)
sim_obj = Simulation(gapps=GridAPPSD(), run_config=sim_config)

Expected behavior
According to the typing for Simulation constructor run_config can be a Dict or a SimulationConfig.
The fix seems to be to check if run_config is an instance of SimulationConfig and call asdict().

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions