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

  1. Remove the id kwarg from this join type.
  2. 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().
  3. 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

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


AI-assisted analysis of pathwaycom/pathway@fa2f74a464 (2026-08-15). Data as JSON: /api/errors/d39a9a36441a98b0. Report an issue: GitHub.