docs: def add_edges_from(self, ebunch, weights=None):
          """
          Add all the edges in ebunch.
  
          If nodes referred in the ebunch are not already present, they
          will be automatically added. Node names can be any hashable python
          object.
  
          **The behavior of adding weights is different than networkx.
  
          Parameters
          ----------
          ebunch : container of edges
              Each edge given in the container will be added to the graph.
              The edges must be given as 2-tuples (u, v).
  
          weights: list, tuple (default=None)
              A container of weights (int, float). The weight value at index i
              is associated with the edge at index i.
  
          Examples
          --------
          >>> from pgmpy.base import DAG
          >>> G = DAG()
          >>> G.add_nodes_from(nodes=['Alice', 'Bob', 'Charles'])
          >>> G.add_edges_from(ebunch=[('Alice', 'Bob'), ('Bob', 'Charles')])
          >>> G.nodes()
          ['Alice', 'Bob', 'Charles']
          >>> G.edges()
          [('Alice', 'Bob'), ('Bob', 'Charles')]
  
          When the node is not already in the model:
          >>> G.add_edges_from(ebunch=[('Alice', 'Ankur')])
          >>> G.nodes()
          ['Alice', 'Bob', 'Charles', 'Ankur']
          >>> G.edges()
          [('Alice', 'Bob'), ('Bob', 'Charles'), ('Alice', 'Ankur')]
  
          Adding edges with weights:
          >>> G.add_edges_from([('Ankur', 'Maria'), ('Maria', 'Mason')],
          ...                  weights=[0.3, 0.5])
          >>> G.edge['Ankur']['Maria']
          {'weight': 0.3}
          >>> G.edge['Maria']['Mason']
          {'weight': 0.5}
          """
          ebunch = list(ebunch)
  
          if weights:
              if len(ebunch) != len(weights):
                  raise ValueError("The number of elements in ebunch and weights"
                                   "should be equal")
              for index in range(len(ebunch)):
                  self.add_edge(ebunch[index][0], ebunch[index][1],
                                weight=weights[index])
          else:
              for edge in ebunch:
                  self.add_edge(edge[0], edge[1])