code: def create_random_hetero():
      num_nodes = {"n1": 1000, "n2": 1010, "n3": 1020}
      etypes = [
          ("n1", "r1", "n2"),
          ("n2", "r1", "n1"),
          ("n1", "r2", "n3"),
          ("n2", "r3", "n3"),
      ]
      edges = {}
      for etype in etypes:
          src_ntype, _, dst_ntype = etype
          arr = spsp.random(
              num_nodes[src_ntype],
              num_nodes[dst_ntype],
              density=0.001,
              format="coo",
              random_state=100,
          )
          edges[etype] = (arr.row, arr.col)
      return dgl.heterograph(edges, num_nodes)
  
imports: import json
  import os
  import tempfile
  import backend
  import dgl
  import numpy
  import pytest
  import torch
  from dgl import function
  from dgl.distributed import convert_dgl_partition_to_csc_sampling_graph, load_partition, load_partition_book, load_partition_feats, partition_graph
  from dgl.distributed.graph_partition_book import _etype_str_to_tuple, _etype_tuple_to_str, DEFAULT_ETYPE, DEFAULT_NTYPE, EdgePartitionPolicy, HeteroDataName, NodePartitionPolicy, RangePartitionBook
  from dgl.distributed.partition import _get_inner_edge_mask, _get_inner_node_mask, RESERVED_FIELD_DTYPE
  from scipy import sparse
  from utils import reset_envs
label_desc: Use image node_id 4 for calling a global function with example usage: create_random_hetero() and returns: dgl