Skip to content

Commit 78404ae

Browse files
committed
Fix merging responses in nest-server-mpi
1 parent 78c9764 commit 78404ae

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
@@ -531,7 +531,9 @@ def combine(call_name, response):
531531
return None
532532

533533
# return the master response if all responses are known to be the same
534-
if call_name in ("exec", "Create", "GetDefaults", "GetKernelStatus", "SetKernelStatus", "SetStatus"):
534+
if call_name == "exec":
535+
return merge_response(response)[0]
536+
elif call_name in ("Create", "GetDefaults", "GetKernelStatus", "SetKernelStatus", "SetStatus"):
535537
return response[0]
536538

537539
# return a single response if there is only one which is not None
@@ -617,5 +619,23 @@ def merge_dicts(response):
617619
return result
618620

619621

622+
def merge_response(response: list):
623+
if "events" in response[0]["data"]:
624+
events = [res["data"]["events"] for res in response]
625+
merged = [_merge_event([e[idx] for e in events]) for idx in range(len(events[0]))]
626+
return [{"data": {"events": merged}}]
627+
else:
628+
return response
629+
630+
631+
def _flatten(xss):
632+
return [x for xs in xss for x in xs]
633+
634+
635+
def _merge_event(event: list):
636+
eventKeys = list(set(_flatten([e for e in event])))
637+
return dict([(eKey, _flatten([e[eKey] for e in event])) for eKey in eventKeys])
638+
639+
620640
if __name__ == "__main__":
621641
app.run()

0 commit comments

Comments
 (0)