<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def wrap_uda( hdfs_file, inputs, output, update_fn, init_fn=None, merge_fn=None, finalize_fn=None, serialize_fn=None, close_fn=None, name=None, ):
 """ Creates a callable aggregation function object. Must be created in Impala to be used Parameters hdfs_file: .so file that contains relevant UDA inputs: list of strings denoting ibis datatypes output: string denoting ibis datatype update_fn: string Library symbol name for update function init_fn: string, optional Library symbol name for initialization function merge_fn: string, optional Library symbol name for merge function finalize_fn: string, optional Library symbol name for finalize function serialize_fn : string, optional Library symbol name for serialize UDA API function. Not required for all UDAs; see documentation for more. close_fn : string, optional name: string, optional Used internally to track function Returns ------- container : UDA object """

    func = ImpalaUDA(
        inputs,
        output,
        update_fn,
        init_fn,
        merge_fn,
        finalize_fn,
        serialize_fn=serialize_fn,
        name=name,
        lib_path=hdfs_file,
    )
    return func