code: def _sparse_copy(typingctx, inst, data, indices, indptr, shape):
      def _construct(context, builder, sig, args):
          typ = sig.return_type
          struct = cgutils.create_struct_proxy(typ)(context, builder)
          _, data, indices, indptr, shape = args
          struct.data = data
          struct.indices = indices
          struct.indptr = indptr
          struct.shape = shape
          return impl_ret_borrowed(
              context,
              builder,
              sig.return_type,
              struct._getvalue(),
          )
  
      sig = inst(inst, inst.data, inst.indices, inst.indptr, inst.shape)
  
      return sig, _construct
  
imports: import numpy
  import scipy
  import scipy.sparse
  from numba.core import cgutils, types
  from numba.core.imputils import impl_ret_borrowed
  from numba.extending import NativeValue, box, intrinsic, make_attribute_wrapper, models, overload, overload_attribute, overload_method, register_model, typeof_impl, unbox
label_desc: Use image node_id 7 for calling a global function with example usage: _sparse_copy(typingctx, inst, data, indices, indptr, shape) and returns: sig,  _construct, impl_ret_borrowed