code: def test_send_multigraph(idtype):
      g = dgl.graph(
          ([0, 0, 0, 2], [1, 1, 1, 1]), idtype=idtype, device=F.ctx()
      )
  
      def _message_a(edges):
          return {"a": edges.data["a"]}
  
      def _message_b(edges):
          return {"a": edges.data["a"] * 3}
  
      def _reduce(nodes):
          return {"a": F.max(nodes.mailbox["a"], 1)}
  
      def answer(*args):
          return F.max(F.stack(args, 0), 0)
  
      assert g.is_multigraph
  
      # send by eid
      old_repr = F.randn((4, 5))
      # send_and_recv_on
      g.ndata["a"] = F.zeros((3, 5))
      g.edata["a"] = old_repr
      g.send_and_recv(
          [0, 2, 3], message_func=_message_a, reduce_func=_reduce
      )
      new_repr = g.ndata["a"]
      assert F.allclose(
          new_repr[1], answer(old_repr[0], old_repr[2], old_repr[3])
      )
      assert F.allclose(new_repr[[0, 2]], F.zeros((2, 5)))
  
imports: import warnings
  from collections import defaultdict
  import backend
  import dgl
  import networkx
  import numpy
  from utils import parametrize_idtype
label_desc: Use image node_id 20 for calling a global function with example usage: test_send_multigraph(idtype) and returns: dict, dict, dict, F