docs: def eval_expr(expr, context):
      """Recursively evaluates a compiled expression using the specified context.
      Dict instances can contain a "__kwargs" key which will be used to update the
      dict with its content
      """
      if isinstance(expr, list):
          rv = []
          for item in expr:
              rv.append(eval_expr(item, context))
          return rv
      if isinstance(expr, dict):
          rv = {}
          for k, v in expr.iteritems():
              rv[k] = eval_expr(v, context)
          kwargs = rv.pop("__kwargs", None)
          if kwargs:
              rv.update(kwargs)
          return rv
      if isinstance(expr, Expression):
          return expr.eval(context)
      return expr