pathwaycom/pathway · error · ValueError
Received `id` argument but was not expecting any. Not every
Error message
Received `id` argument but was not expecting any. Not every join type supports `id` argument.
What it means
The 'id' kwarg of a join names the output id column (a ColumnReference such as left.id or right.t.id) and is only supported by joins that actually preserve/derive row identities (e.g. join_any/asof variants), not by plain inner/left/right/outer joins. This handler runs with allow_id=False, so passing id=... to an unsupported join raises this ValueError.
Source
Thrown at python/pathway/internals/arg_handlers.py:102
elif isinstance(how, JoinMode):
pass
elif isinstance(how, str):
raise ValueError(
"Received `how` argument of join that is a string.\n"
+ "You probably want to use one of "
+ "JoinMode.INNER, JoinMode.LEFT, JoinMode.RIGHT or JoinMode.OUTER values."
)
else:
raise ValueError(
"How argument of join should be one of "
+ "JoinMode.INNER, JoinMode.LEFT, JoinMode.RIGHT or JoinMode.OUTER values."
)
if "id" in kwargs:
id = kwargs.pop("id")
processed_kwargs["id"] = id
if not allow_id:
raise ValueError(
"Received `id` argument but was not expecting any.\n"
+ "Not every join type supports `id` argument."
)
elif id is None:
pass
elif isinstance(id, str):
raise ValueError(
"Received `id` argument of join that is a string.\n"
+ f"Did you mean <table>.{id}"
+ f" instead of {repr(id)}?"
)
elif not isinstance(id, expr.ColumnReference):
raise ValueError(
"The id argument of a join has to be a ColumnReference."
)
if "defaults" in kwargs:
processed_kwargs["defaults"] = kwargs.pop("defaults")View on GitHub (pinned to fa2f74a464)
Solutions
- Remove the id kwarg from this join type.
- If you need row identity in the output, use a join type that supports id (e.g. asof joins) or rename a column afterwards with .rename().
- Check the specific join method's signature for supported kwargs.
Example fix
# before t1.join_inner(t2, t1.k == t2.k, id=t1.id) # after t1.join_inner(t2, t1.k == t2.k)
Defensive patterns
Strategy: validation
Validate before calling
SUPPORTS_ID = {"join_any", "asof_join_left", "asof_join_right"}
if method in SUPPORTS_ID:
result = getattr(t1, method)(t2, *on, id=t1.id)
else:
result = getattr(t1, method)(t2, *on) Prevention
- Check the join method's signature: id= is only supported where row identity is defined.
- Remove id= when switching from asof/io joins to plain inner/left/right/outer joins.
When it happens
Trigger: t1.join_inner(t2, t1.k == t2.k, id=t1.id); passing id to join/join_left/join_right/join_outer; carrying id= over when copying an asof_join example into a regular join.
Common situations: Copy-pasting io.asof_join_left(..., id=...) snippets into standard joins; assuming every join can name its output id column.
Related errors
- Received `how` argument but was not expecting any. Consider
- Received `id` argument of join that is a string. Did you mea
- The id argument of a join has to be a ColumnReference.
- Cannot assign id's for this join type.
- Received `how` argument of join that is a string. You probab
AI-assisted analysis of pathwaycom/pathway@fa2f74a464 (2026-08-15).
Data as JSON: /api/errors/d39a9a36441a98b0.
Report an issue: GitHub.