original_docstring: 
      This is "sloppy" compilation because it still relies on 
      the UDFRegistry and calls the UDF in interpreted mode.
  
      See UDFTranslator to be able to directly generate code for UDFs.
      
docstring: This is "sloppy" compilation because it still relies on
  the UDFRegistry and calls the UDF in interpreted mode.
  
  See UDFTranslator to be able to directly generate code for UDFs.
docstring_tokens: This is " sloppy " compilation because it still relies on the UDFRegistry and calls the UDF in interpreted mode . See UDFTranslator to be able to directly generate code for UDFs .
code: def agg_func(self, ctx, e, v_in):
      """
      This is "sloppy" compilation because it still relies on 
      the UDFRegistry and calls the UDF in interpreted mode.
  
      See UDFTranslator to be able to directly generate code for UDFs.
      """
      v_out = ctx.new_var("e_agg_out")
      v_irow = ctx.new_var("irow")
      v_args = ctx.new_var("args")
  
      ctx.add_line("{args} = [[] for i in range({n})]",
        args=v_args, n=len(e.args))
  
      # Iterate through the rows in the group to evaluate each argument
      with ctx.indent("for {irow} in {v_in}: ", irow=v_irow, v_in=v_in):
        for idx, arg in enumerate(e.args):
          v_arg = self.compile_expr(ctx, arg, v_irow)
          ctx.add_line("%s[%d].append(%s)" % (v_args, idx, v_arg))
  
      line = "%s = UDFRegistry.registry()['%s'](*%s)" % (v_out, e.name, v_args)
      ctx.add_line(line)
      return v_out
code_tokens: def agg_func ( self , ctx , e , v_in ) : v_out = ctx . new_var ( "e_agg_out" ) v_irow = ctx . new_var ( "irow" ) v_args = ctx . new_var ( "args" ) ctx . add_line ( "{args} = [[] for i in range({n})]" , args = v_args , n = len ( e . args ) ) with ctx . indent ( "for {irow} in {v_in}: " , irow = v_irow , v_in = v_in ) : for idx , arg in enumerate ( e . args ) : v_arg = self . compile_expr ( ctx , arg , v_irow ) ctx . add_line ( "%s[%d].append(%s)" % ( v_args , idx , v_arg ) ) line = "%s = UDFRegistry.registry()['%s'](*%s)" % ( v_out , e . name , v_args ) ctx . add_line ( line ) return v_out
short_docstring: This is "sloppy" compilation because it still relies on
  the UDFRegistry and calls the UDF in interpreted mode.
short_docstring_tokens: This is " sloppy " compilation because it still relies on the UDFRegistry and calls the UDF in interpreted mode .
comment: """
      This is "sloppy" compilation because it still relies on 
      the UDFRegistry and calls the UDF in interpreted mode.
  
      See UDFTranslator to be able to directly generate code for UDFs.
      """$SEP$# Iterate through the rows in the group to evaluate each argument