def libra2dgl_build_adjlist(
    feat,
    gfeat,
    adj,
    inner_node,
    ldt,
    gdt_key,
    gdt_value,
    node_map,
    lr,
    lrtensor,
    num_nodes,
    nc,
    c,
    feat_size,
    labels,
    trainm,
    testm,
    valm,
    glabels,
    gtrainm,
    gtestm,
    gvalm,
    feat_shape,
):
    """
    This function invokes C/C++ code for pre-processing Libra output.
    After graph partitioning using Libra, once the local and global dictionaries are built,
    for each node in each partition, this function copies the split node details from the
    global dictionary. It also copies features, label, train, test, and validation information
    for each node from the input graph to the corresponding partitions.
    Parameter details are present in dgl/src/array/libra_partition.cc
    """
    _CAPI_DGLLibra2dglBuildAdjlist(
        to_dgl_nd(feat),
        to_dgl_nd_for_write(gfeat),
        to_dgl_nd_for_write(adj),
        to_dgl_nd_for_write(inner_node),
        to_dgl_nd(ldt),
        to_dgl_nd(gdt_key),
        to_dgl_nd(gdt_value),
        to_dgl_nd(node_map),
        to_dgl_nd_for_write(lr),
        to_dgl_nd(lrtensor),
        num_nodes,
        nc,
        c,
        feat_size,
        to_dgl_nd(labels),
        to_dgl_nd(trainm),
        to_dgl_nd(testm),
        to_dgl_nd(valm),
        to_dgl_nd_for_write(glabels),
        to_dgl_nd_for_write(gtrainm),
        to_dgl_nd_for_write(gtestm),
        to_dgl_nd_for_write(gvalm),
        feat_shape,
    )

    This function invokes C/C++ code for pre-processing Libra output.
    After graph partitioning using Libra, once the local and global dictionaries are built,
    for each node in each partition, this function copies the split node details from the
    global dictionary. It also copies features, label, train, test, and validation information
    for each node from the input graph to the corresponding partitions.
    Parameter details are present in dgl/src/array/libra_partition.cc
    
python/dgl/_sparse_ops.py