def add_callers(target, source):
 new_callers = {}
 for (func, caller) in target.iteritems():
  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])])
  else:
   new_callers[func] = caller
 return new_callers

def add_callers ( target , source ) : new_callers = { } for ( func , caller ) in target . iteritems ( ) : 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 ] ) ] ) else : new_callers [ func ] = caller return new_callers
combine two caller lists in a single list .