def evalOrderBy(ctx, part): res = evalPart(ctx, part.p) for e in reversed(part.expr): reverse = bool(e.order and e.order == 'DESC') res = sorted(res, key=lambda x: _val(value(x, e.expr, variables=True)), reverse=reverse) return res