code: 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,
  ):
      
      func = ImpalaUDA(
          inputs,
          output,
          update_fn,
          init_fn,
          merge_fn,
          finalize_fn,
          serialize_fn=serialize_fn,
          name=name,
          lib_path=hdfs_file,
      )
      return func
docs: 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