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
Summary
The standard filtered
map(x, predicate, transform)form compiles but raisesValueError: too many values to unpack (expected 2)during evaluation. The equivalentfilter(...).map(...)expression completes normally.Reproduction
Save the following as
repro.py.Run:
Actual result
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
cel-python-reproduction.zip