def eval_agg_call(self, exp):
    "helper for eval_callx; evaluator for CallX that consume multiple rows"
    if not isinstance(self.c_row,list): raise TypeError('aggregate function expected a list of rows')
    if len(exp.args.children)!=1: raise ValueError('aggregate function expected a single value',exp.args)
    arg,=exp.args.children # intentional: error if len!=1
    vals=[Evaluator(c_r,self.nix,self.tables).eval(arg) for c_r in self.c_row]
    if not vals: return None
    if exp.f=='min': return min(vals)
    elif exp.f=='max': return max(vals)
    elif exp.f=='count': return len(vals)
    else: raise NotImplementedError('unk_func',exp.f)
def eval_agg_call ( self , exp ) : if not isinstance ( self . c_row , list ) : raise TypeError ( 'aggregate function expected a list of rows' ) if len ( exp . args . children ) != 1 : raise ValueError ( 'aggregate function expected a single value' , exp . args ) arg , = exp . args . children vals = [ Evaluator ( c_r , self . nix , self . tables ) . eval ( arg ) for c_r in self . c_row ] if not vals : return None if exp . f == 'min' : return min ( vals ) elif exp . f == 'max' : return max ( vals ) elif exp . f == 'count' : return len ( vals ) else : raise NotImplementedError ( 'unk_func' , exp . f )
helper for eval_callx; evaluator for CallX that consume multiple rows