parameters: (rg, node_events, node_actions)
return_statement: return g
docstring: Render an ivy_arg.AnalysisGraph object
  
      node_actions is a function that maps nodes to action lists
docstring_summary: Render an ivy_arg.AnalysisGraph object
docstring_tokens: Render an ivy_arg . AnalysisGraph object
function: def render_rg(rg, node_events, node_actions):
      """
      Render an ivy_arg.AnalysisGraph object
  
      node_actions is a function that maps nodes to action lists
      """
      g = CyElements()
  
      # add nodes for states
      for s in rg.states:
          if s.is_bottom():
              classes = ['bottom_state']
          else:
              classes = ['state']
          events = node_events
          actions = node_actions(s)
          g.add_node(
              obj=s,
              label=str(s.id),
              classes=classes,
              #short_info=str(s),
              #long_info=str(s),
              short_info=str(s.id),
              long_info=[str(x) for x in s.clauses.to_open_formula()],
              events=events,
              actions=actions,
              locked=True,
          )
  
      # add edges for transitions
      for source, op, label, target in rg.transitions:
          if label == 'join':
              classes = ['transition_join']
              label = 'join'
              info = 'join'
          else:
              classes = ['transition_action']
              label = label if label != str(op) else ''
              info = str(op)
          g.add_edge(
              op,
              source,
              target,
              label=label,
              classes=classes,
              short_info=info,
              long_info=info,
              events=[],
              actions=[],
          )
  
      # add edges for covering
      for covered, by in rg.covering:
          g.add_edge(
              'cover',
              covered,
              by,
              label='',
              classes=['cover'],
              short_info='',
              long_info='',
              events=[],
              actions=[],
          )
  
      return g
function_tokens: def render_rg ( rg , node_events , node_actions ) : g = CyElements ( ) # add nodes for states for s in rg . states : if s . is_bottom ( ) : classes = [ 'bottom_state' ] else : classes = [ 'state' ] events = node_events actions = node_actions ( s ) g . add_node ( obj = s , label = str ( s . id ) , classes = classes , #short_info=str(s), #long_info=str(s), short_info = str ( s . id ) , long_info = [ str ( x ) for x in s . clauses . to_open_formula ( ) ] , events = events , actions = actions , locked = True , ) # add edges for transitions for source , op , label , target in rg . transitions : if label == 'join' : classes = [ 'transition_join' ] label = 'join' info = 'join' else : classes = [ 'transition_action' ] label = label if label != str ( op ) else '' info = str ( op ) g . add_edge ( op , source , target , label = label , classes = classes , short_info = info , long_info = info , events = [ ] , actions = [ ] , ) # add edges for covering for covered , by in rg . covering : g . add_edge ( 'cover' , covered , by , label = '' , classes = [ 'cover' ] , short_info = '' , long_info = '' , events = [ ] , actions = [ ] , ) return g