Skip to content

Commit 909e5eb

Browse files
committed
Fix merging responses in nest-server-mpi
1 parent e57984b commit 909e5eb

File tree

1 file changed

+21
-1
lines changed

1 file changed

+21
-1
lines changed

pynest/nest/server/hl_api_server.py

+21-1
Original file line numberDiff line numberDiff line change
@@ -588,7 +588,9 @@ def combine(call_name, response):
588588
return None
589589

590590
# return the master response if all responses are known to be the same
591-
if call_name in ("exec", "Create", "GetDefaults", "GetKernelStatus", "SetKernelStatus", "SetStatus"):
591+
if call_name == "exec":
592+
return merge_response(response)[0]
593+
elif call_name in ("Create", "GetDefaults", "GetKernelStatus", "SetKernelStatus", "SetStatus"):
592594
return response[0]
593595

594596
# return a single response if there is only one which is not None
@@ -674,5 +676,23 @@ def merge_dicts(response):
674676
return result
675677

676678

679+
def merge_response(response: list):
680+
if "events" in response[0]["data"]:
681+
events = [res["data"]["events"] for res in response]
682+
merged = [_merge_event([e[idx] for e in events]) for idx in range(len(events[0]))]
683+
return [{"data": {"events": merged}}]
684+
else:
685+
return response
686+
687+
688+
def _flatten(xss):
689+
return [x for xs in xss for x in xs]
690+
691+
692+
def _merge_event(event: list):
693+
eventKeys = list(set(_flatten([e for e in event])))
694+
return dict([(eKey, _flatten([e[eKey] for e in event])) for eKey in eventKeys])
695+
696+
677697
if __name__ == "__main__":
678698
app.run()

0 commit comments

Comments
 (0)