@@ -350,6 +350,33 @@ start failing on it without anything in the task changing. Suppress it on the
350350constructor only - it stays a real finding on an ordinary function , which is
351351why it is not in the `ignore` list in `pyproject.toml`.
352352
353+ # # An argument the task never reads
354+
355+ `ARG002` complains about an unused method argument , and a task declaring
356+ `FixedNumberOfInputs([])` generates its own entities - so `execute ()` never
357+ reads `inputs` , while `WorkflowPlugin` decides the signature all the same. A
358+ `TransformPlugin` or a `PluginAction` ignoring an argument the framework
359+ supplies is the same case.
360+
361+ This is the standing exception the lint rules describe, so it needs no fresh
362+ decision either. Suppress the code on the argument, with the reason above it:
363+
364+ ```python
365+ def execute (
366+ self ,
367+ # This task has no input ports, so it never reads inputs - but the
368+ # signature is the one WorkflowPlugin declares.
369+ inputs : Sequence[Entities], # noqa: ARG002
370+ context : ExecutionContext,
371+ ) -> Entities:
372+ ```
373+
374+ Do not rename it to ` _inputs ` instead. Ruff accepts the underscore and mypy
375+ permits the rename, but the name is part of the API the caller uses:
376+ ` execute(inputs=(), context=TestExecutionContext()) ` is a keyword call, which is
377+ how ` tests/test_example.py ` and the ` plugin-testing ` skill invoke a task, and it
378+ raises ` TypeError ` against a renamed argument.
379+
353380## Parameters that carry secrets
354381
355382A password, token or API key is typed, never a plain string:
0 commit comments