code: def generate_feature(g, broadcast="none", binary_op="none"):
      """Create graph with src, edge, dst feature. broadcast can be 'u',
      'e', 'v', 'none'
      """
      np.random.seed(31)
      nv = g.num_nodes()
      ne = g.num_edges()
      if binary_op == "dot":
          if broadcast == "e":
              u = F.tensor(
                  np.random.uniform(-1, 1, (nv, D1, D2, D3, D4))
              )
              e = F.tensor(np.random.uniform(-1, 1, (ne, D2, 1, D4)))
              v = F.tensor(
                  np.random.uniform(-1, 1, (nv, D1, D2, D3, D4))
              )
          elif broadcast == "u":
              u = F.tensor(np.random.uniform(-1, 1, (nv, D2, 1, D4)))
              e = F.tensor(
                  np.random.uniform(-1, 1, (ne, D1, D2, D3, D4))
              )
              v = F.tensor(
                  np.random.uniform(-1, 1, (nv, D1, D2, D3, D4))
              )
          elif broadcast == "v":
              u = F.tensor(
                  np.random.uniform(-1, 1, (nv, D1, D2, D3, D4))
              )
              e = F.tensor(
                  np.random.uniform(-1, 1, (ne, D1, D2, D3, D4))
              )
              v = F.tensor(np.random.uniform(-1, 1, (nv, D2, 1, D4)))
          else:
              u = F.tensor(
                  np.random.uniform(-1, 1, (nv, D1, D2, D3, D4))
              )
              e = F.tensor(
                  np.random.uniform(-1, 1, (ne, D1, D2, D3, D4))
              )
              v = F.tensor(
                  np.random.uniform(-1, 1, (nv, D1, D2, D3, D4))
              )
      else:
          if broadcast == "e":
              u = F.tensor(np.random.uniform(-1, 1, (nv, D1, D2, D3)))
              e = F.tensor(np.random.uniform(-1, 1, (ne, D2, 1)))
              v = F.tensor(np.random.uniform(-1, 1, (nv, D1, D2, D3)))
          elif broadcast == "u":
              u = F.tensor(np.random.uniform(-1, 1, (nv, D2, 1)))
              e = F.tensor(np.random.uniform(-1, 1, (ne, D1, D2, D3)))
              v = F.tensor(np.random.uniform(-1, 1, (nv, D1, D2, D3)))
          elif broadcast == "v":
              u = F.tensor(np.random.uniform(-1, 1, (nv, D1, D2, D3)))
              e = F.tensor(np.random.uniform(-1, 1, (ne, D1, D2, D3)))
              v = F.tensor(np.random.uniform(-1, 1, (nv, D2, 1)))
          else:
              u = F.tensor(np.random.uniform(-1, 1, (nv, D1, D2, D3)))
              e = F.tensor(np.random.uniform(-1, 1, (ne, D1, D2, D3)))
              v = F.tensor(np.random.uniform(-1, 1, (nv, D1, D2, D3)))
      return (
          F.astype(u, F.float32),
          F.astype(v, F.float32),
          F.astype(e, F.float32),
      )
  
file_path: dgl/tests/python/common/test_heterograph-kernel.py
imports: from itertools import product
  import backend
  import dgl
  import dgl.function
  import networkx
  import numpy
  import pytest
  from utils import get_cases, parametrize_idtype
label_desc: Use image node_id 6 for calling a global function with example usage: generate_feature(g, broadcast, binary_op) and returns: F,  F,  F