docs: def subgraph(graph, nodes: Iterable[BaseEntity]):
      """Induce a sub-graph over the given nodes.
  
      :rtype: BELGraph
      """
      sg = graph.subgraph(nodes)
  
      # see implementation for .copy()
      result = graph.fresh_copy()
      result.graph.update(sg.graph)
  
      for node, data in sg.nodes(data=True):
          result.add_node(node, **data)
  
      result.add_edges_from(
          (u, v, key, datadict.copy())
          for u, v, key, datadict in sg.edges(keys=True, data=True)
      )
  
      return result