diff --git a/IPython/parallel/client/asyncresult.py b/IPython/parallel/client/asyncresult.py index 52b3d72..557e1c4 100644 --- a/IPython/parallel/client/asyncresult.py +++ b/IPython/parallel/client/asyncresult.py @@ -191,12 +191,17 @@ class AsyncResult(object): """ results = self.get(timeout) + if self._single_result: + results = [results] engine_ids = [ md['engine_id'] for md in self._metadata ] - bycount = sorted(engine_ids, key=lambda k: engine_ids.count(k)) - maxcount = bycount.count(bycount[-1]) - if maxcount > 1: - raise ValueError("Cannot build dict, %i jobs ran on engine #%i"%( - maxcount, bycount[-1])) + + seen = set() + for engine_id in engine_ids: + if engine_id in seen: + raise ValueError("Cannot build dict, %i jobs ran on engine #%i"%( + engine_ids.count(engine_id), engine_id)) + else: + seen.add(engine_id) return dict(zip(engine_ids,results))