code: def test_graph_conv2_bi(idtype, g, norm, weight, bias, out_dim):
      g = g.astype(idtype).to(F.ctx())
      conv = nn.GraphConv(
          5, out_dim, norm=norm, weight=weight, bias=bias
      )
      ext_w = F.randn((5, out_dim))
      nsrc = g.number_of_src_nodes()
      ndst = g.number_of_dst_nodes()
      h = F.randn((nsrc, 5))
      h_dst = F.randn((ndst, out_dim))
      if weight:
          h_out = conv(g, (h, h_dst))
      else:
          h_out = conv(g, (h, h_dst), weight=ext_w)
      assert h_out.shape == (ndst, out_dim)
  
imports: from copy import deepcopy
  import backend
  import dgl
  import dgl.function
  import dgl.nn.tensorflow
  import networkx
  import numpy
  import pytest
  import scipy
  import tensorflow
  from tensorflow.keras import layers
  from utils import parametrize_idtype
  from utils.graph_cases import get_cases, random_bipartite, random_dglgraph, random_graph
label_desc: Use image node_id 4 for calling a global function with example usage: test_graph_conv2_bi(idtype, g, norm, weight, bias, out_dim) without return types