code: def _nodes_cross_edges(G, H):
      if H.is_multigraph():
          for x in G:
              for u, v, k, d in H.edges(data=True, keys=True):
                  yield (x, u), (x, v), k, d
      else:
          for x in G:
              for u, v, d in H.edges(data=True):
                  if G.is_multigraph():
                      yield (x, u), (x, v), None, d
                  else:
                      yield (x, u), (x, v), d
  
file_path: networkx/networkx/algorithms/operators/product.py
imports: from itertools import product
  import networkx
  from networkx.utils import not_implemented_for
label_desc: Use image node_id 6 for calling a global function with example usage: _nodes_cross_edges(G, H) without return types