human
I wrote the below code

    from pandas.core.sparse.array import SparseArray, _make_index
    def convert_sparse(x, axis):
        if isinstance(x, SparseArray):
            x = x.get_values()
        x = x.ravel()
        if (axis > 0):
            x = np.atleast_2d(x)
        return x
    if (typs is None):
        typs = get_dtype_kinds(to_concat)
    if (len(typs) == 1):
        fill_values = set((c.fill_value for c in to_concat))
        if (len(fill_values) == 1):
            sp_values = [c.sp_values for c in to_concat]
            indexes = [c.sp_index.to_int_index() for c in to_concat]
            indices = []
            loc = 0
            for idx in indexes:
                indices.append((idx.indices + loc))
                loc += idx.length
            sp_values = np.concatenate(sp_values)
            indices = np.concatenate(indices)
            sp_index = _make_index(loc, indices, kind=to_concat[0].sp_index)
            return SparseArray(sp_values, sparse_index=sp_index, fill_value=to_concat[0].fill_value)
    sparses = [c for c in to_concat if is_sparse(c)]
    fill_values = [c.fill_value for c in sparses]
    sp_indexes = [c.sp_index for c in sparses]
    to_concat = [convert_sparse(x, axis) for x in to_concat]
    result = np.concatenate(to_concat, axis=axis)
    if (not len((typs - set(['sparse', 'f', 'i'])))):
        result = SparseArray(result.ravel(), fill_value=fill_values[0], kind=sp_indexes[0])
    else:
        result = result.astype('object')
    return result

What's a good function header?
assistant
#Here's a good function header.

def _concat_sparse(to_concat, axis=0, typs=None):