code: def _get_signed_predecessors(im, node, polarity):
      
      signed_pred_list = []
      for pred in im.predecessors(node):
          pred_edge = (pred, node)
          yield (pred, _get_edge_sign(im, pred_edge) * polarity)
docs: Get upstream nodes in the influence map.
  
      Return the upstream nodes along with the overall polarity of the path
      to that node by account for the polarity of the path to the given node
      and the polarity of the edge between the given node and its immediate
      predecessors.
  
      Parameters
      ----------
      im : networkx.MultiDiGraph
          Graph containing the influence map.
      node : str
          The node (rule name) in the influence map to get predecessors (upstream
          nodes) for.
      polarity : int
          Polarity of the overall path to the given node.
  
  
      Returns
      -------
      generator of tuples, (node, polarity)
          Each tuple returned contains two elements, a node (string) and the
          polarity of the overall path (int) to that node.