Skip to content

Three-argument filtered map macro raises ValueError during evaluation #194

Description

@sinagkh

Summary

The standard filtered map(x, predicate, transform) form compiles but raises ValueError: too many values to unpack (expected 2) during evaluation. The equivalent filter(...).map(...) expression completes normally.

Reproduction

Save the following as repro.py.

from celpy import Environment

for expression in (
    "[1,2,3].map(x, x > 1, x+1)[0]",
    "[1,2,3].filter(x, x > 1).map(x, x+1)[0]",
):
    env = Environment()
    try:
        result = env.program(env.compile(expression)).evaluate({})
        print(expression, "=>", result)
    except Exception as exc:
        print(expression, "=>", type(exc).__name__, str(exc))

Run:

python -m pip install cel-python==0.5.0
python repro.py

Actual result

[1,2,3].map(x, x > 1, x+1)[0] => ValueError too many values to unpack (expected 2)
[1,2,3].filter(x, x > 1).map(x, x+1)[0] => 3

Expected behavior and why

Both expressions should return 3: filter [1,2,3] to [2,3], add one to each element, and select the first result.

CEL defines e.map(x, p, t) as the map transformation with predicate filtering before transformation:
https://github.com/cel-expr/cel-spec/blob/ba58ae5007845f3a1279b488cdeb79645ce958bb/doc/langdef.md#macros

Code-level observation and impact

The map evaluator unpacks two macro arguments where this form supplies three. This is an internal Python arity error rather than the normal evaluation of a supported CEL expression. If this macro overload is intentionally outside the supported profile, please clarify that scope; accepting the syntax and then raising an unpacking error is still an unhelpful failure mode for callers.

Environment

  • Package: cel-python 0.5.0
  • Runtime: CPython 3.13.3
  • OS: macOS 26.6.2, Apple Silicon / arm64
  • Reproduced: 2026-09-11

cel-python-reproduction.zip

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions