code: def test_sg_louvain_cupy():
      resource_handle = ResourceHandle()
      graph_props = GraphProperties(
          is_symmetric=True, is_multigraph=False
      )
  
      device_srcs = cp.asarray(
          [0, 1, 1, 2, 2, 2, 3, 4, 1, 3, 4, 0, 1, 3, 5, 5],
          dtype=np.int32,
      )
      device_dsts = cp.asarray(
          [1, 3, 4, 0, 1, 3, 5, 5, 0, 1, 1, 2, 2, 2, 3, 4],
          dtype=np.int32,
      )
      device_weights = cp.asarray(
          [
              1.0,
              1.0,
              1.0,
              1.0,
              1.0,
              1.0,
              1.0,
              1.0,
              1.0,
              1.0,
              1.0,
              1.0,
              1.0,
              1.0,
              1.0,
              1.0,
          ],
          dtype=np.float32,
      )
  
      max_level = 100
      threshold = 0.0001
      resolution = 1.0
  
      sg = SGGraph(
          resource_handle=resource_handle,
          graph_properties=graph_props,
          src_or_offset_array=device_srcs,
          dst_or_index_array=device_dsts,
          weight_array=device_weights,
          store_transposed=False,
          renumber=True,
          do_expensive_check=False,
      )
  
      vertices, clusters, modularity = louvain(
          resource_handle,
          sg,
          max_level,
          threshold,
          resolution,
          do_expensive_check=False,
      )
  
      check_results(vertices, clusters, modularity)
  
imports: import cupy
  import numpy
  import cudf
  from pylibcugraph import SGGraph, ResourceHandle, GraphProperties
  from pylibcugraph import louvain
label_desc: Use image node_id 2 for calling a global function with example usage: test_sg_louvain_cupy() without return types