code: def from_csc(
      cls,
      indptr: cp.ndarray[IndexValue],
      src_indices: cp.ndarray[IndexValue],
      edge_indices: cp.ndarray[IndexValue] | None = None,
      edge_values: dict[AttrKey, cp.ndarray[EdgeValue]] | None = None,
      edge_masks: dict[AttrKey, cp.ndarray[bool]] | None = None,
      node_values: dict[AttrKey, any_ndarray[NodeValue]] | None = None,
      node_masks: dict[AttrKey, any_ndarray[bool]] | None = None,
      *,
      key_to_id: dict[NodeKey, IndexValue] | None = None,
      id_to_key: list[NodeKey] | None = None,
      edge_keys: list[EdgeKey] | None = None,
      **attr,
  ) -> MultiGraph:
      N = indptr.size - 1
      dst_indices = cp.array(
          # cp.repeat is slow to use here, so use numpy instead
          np.repeat(
              np.arange(N, dtype=index_dtype), cp.diff(indptr).get()
          )
      )
      return cls.from_coo(
          N,
          src_indices,
          dst_indices,
          edge_indices,
          edge_values,
          edge_masks,
          node_values,
          node_masks,
          key_to_id=key_to_id,
          id_to_key=id_to_key,
          edge_keys=edge_keys,
          **attr,
      )
  
imports: from __future__ import annotations
  from copy import deepcopy
  from typing import TYPE_CHECKING, ClassVar
  import cupy
  import networkx
  import numpy
  import nx_cugraph
  from ..utils import index_dtype
  from .graph import Graph
label_desc: Use image node_id 3 for calling the MultiGraph obj's underlying member method code with example usage: obj.from_csc(cls, indptr, src_indices, edge_indices, edge_values, edge_masks, node_values, node_masks) and returns: cls