94 def _mergeResults(self, result):
95 if not isinstance(result, type(self.output)):
96 raise TypeError("output type is not same as obtained result")
97
98 if not hasattr(result, "__iter__"):
99 if hasattr(self.output, "Add"):
100 self.output.Add(result)
101 elif hasattr(self.output, "__iadd__"):
102 self.output += result
103 elif hasattr(self.output, "__add__"):
104 self.output = self.output + result
105 else:
106 raise TypeError("result cannot be added")
107
108 elif isinstance(result, dict):
109 for key in result.keys():
110 if key in self.output:
111 if hasattr(self.output[key], "Add"):
112 self.output[key].Add(result[key])
113 elif hasattr(self.output[key], "__iadd__"):
114 self.output[key] += result[key]
115 elif hasattr(self.output[key], "__add__"):
116 self.output[key] = self.output[key] + result[key]
117 else:
118 raise TypeError("result cannot be added")
119 else:
120 self.output[key] = result[key]
121
122 else:
123 for i in range(min(len(self.output), len(result))):
124 if hasattr(self.output[i], "Add"):
125 self.output[i].Add(result[i])
126 elif hasattr(self.output[i], "__iadd__"):
127 self.output[i] += result[i]
128 elif hasattr(self.output[i], "__add__"):
129 self.output[i] = self.output[i] + result[i]
130 else:
131 raise TypeError("result cannot be added")
132