code: def add_edge(self, from_node, to_node, *edge_data):
      self._check_node_in_graph(from_node)
      self._check_node_in_graph(to_node)
      self._successors[from_node][to_node].update(edge_data)
      self._predecessors[to_node][from_node].update(edge_data)
  
file_path: baikal/baikal/_core/digraph.py
imports: from collections import deque, defaultdict, OrderedDict
label_desc: Use image node_id 3 for calling the DiGraph obj's underlying member method code with example usage: obj.add_edge(from_node, to_node) without return types