Index: Lib/pstats.py =================================================================== --- Lib/pstats.py (revision 76430) +++ Lib/pstats.py (working copy) @@ -522,8 +522,11 @@ new_callers[func] = caller for func, caller in source.iteritems(): if func in new_callers: - new_callers[func] = tuple([i[0] + i[1] for i in - zip(caller, new_callers[func])]) + if isinstance(caller, tuple): + new_callers[func] = tuple(a + b for a, b in + zip(caller, new_callers[func])) + else: + new_callers[func] += caller else: new_callers[func] = caller return new_callers Index: Lib/test/test_pstats.py =================================================================== --- Lib/test/test_pstats.py (revision 76430) +++ Lib/test/test_pstats.py (working copy) @@ -14,6 +14,10 @@ source = {"a": (1, 2, 3, 4), "b": (5, 6, 7, 8)} new_callers = pstats.add_callers(target, source) self.assertEqual(new_callers, {'a': (2, 4, 6, 8), 'b': (5, 6, 7, 8)}) + target = {"a": 1} + source = {"a": 1, "b": 5} + new_callers = pstats.add_callers(target, source) + self.assertEqual(new_callers, {'a': 2, 'b': 5}) def test_main():