function append()

in src/append.jl [70:143]


function append(
    io::IO,
    tbl;
    metadata=getmetadata(tbl),
    colmetadata=nothing,
    largelists::Bool=false,
    denseunions::Bool=true,
    dictencode::Bool=false,
    dictencodenested::Bool=false,
    alignment::Int=8,
    maxdepth::Int=DEFAULT_MAX_DEPTH,
    ntasks=Inf,
    convert::Bool=true,
    file::Bool=false,
)
    if ntasks < 1
        throw(
            ArgumentError(
                "ntasks keyword argument must be > 0; pass `ntasks=1` to disable multithreaded writing",
            ),
        )
    end

    startpos = position(io)
    seekend(io)
    len = position(io) - startpos
    seek(io, startpos) 

    if len == 0 
        kwargs = Dict{Symbol,Any}(
            :largelists => largelists,
            :denseunions => denseunions,
            :dictencode => dictencode,
            :dictencodenested => dictencodenested,
            :alignment => alignment,
            :maxdepth => maxdepth,
            :metadata => metadata,
            :colmetadata => colmetadata,
        )
        if isa(ntasks, Integer)
            kwargs[:ntasks] = ntasks
        end
        write(io, tbl; kwargs...)
    else
        isstream, arrow_schema, compress = stream_properties(io; convert=convert)
        if !isstream
            throw(ArgumentError("append is supported only to files in arrow stream format"))
        end
        if compress isa Symbol && compress !== :lz4 && compress !== :zstd
            throw(
                ArgumentError(
                    "unsupported compress keyword argument value: $compress. Valid values include `:lz4` or `:zstd`",
                ),
            )
        end
        append(
            io,
            tbl,
            arrow_schema,
            compress,
            largelists,
            denseunions,
            dictencode,
            dictencodenested,
            alignment,
            maxdepth,
            ntasks,
            metadata,
            colmetadata,
        )
    end

    return io
end