---
source: crates/ruff_linter/src/rules/airflow/mod.rs
---
AIR202 [*] `@task`-decorated function relies on `multiple_outputs` inference
  --> AIR202.py:15:1
   |
15 | @task
   | ^^^^^
16 | def annotated_dict() -> dict:  # AIR202
17 |     return {"x": 1}
   |
help: Add `multiple_outputs=True`
   |
14 |
   - @task
15 + @task(multiple_outputs=True)
16 | def annotated_dict() -> dict:  # AIR202
   |
note: This is an unsafe fix and may change runtime behavior

AIR202 [*] `@task`-decorated function relies on `multiple_outputs` inference
  --> AIR202.py:20:1
   |
20 | @task()
   | ^^^^^^^
21 | def annotated_dict_subscript() -> dict[str, int]:  # AIR202
22 |     return {"x": 1}
   |
help: Add `multiple_outputs=True`
   |
19 |
   - @task()
20 + @task(multiple_outputs=True)
21 | def annotated_dict_subscript() -> dict[str, int]:  # AIR202
   |
note: This is an unsafe fix and may change runtime behavior

AIR202 [*] `@task`-decorated function relies on `multiple_outputs` inference
  --> AIR202.py:25:1
   |
25 | @task
   | ^^^^^
26 | def annotated_typing_dict() -> Dict[str, int]:  # AIR202
27 |     return {"x": 1}
   |
help: Add `multiple_outputs=True`
   |
24 |
   - @task
25 + @task(multiple_outputs=True)
26 | def annotated_typing_dict() -> Dict[str, int]:  # AIR202
   |
note: This is an unsafe fix and may change runtime behavior

AIR202 [*] `@task`-decorated function relies on `multiple_outputs` inference
  --> AIR202.py:30:1
   |
30 | @task
   | ^^^^^
31 | def annotated_typing_mapping() -> Mapping[str, int]:  # AIR202
32 |     return {"x": 1}
   |
help: Add `multiple_outputs=True`
   |
29 |
   - @task
30 + @task(multiple_outputs=True)
31 | def annotated_typing_mapping() -> Mapping[str, int]:  # AIR202
   |
note: This is an unsafe fix and may change runtime behavior

AIR202 [*] `@task`-decorated function relies on `multiple_outputs` inference
  --> AIR202.py:35:1
   |
35 | @task
   | ^^^^^
36 | def annotated_collections_abc_mapping() -> collections.abc.Mapping:  # AIR202
37 |     return {"x": 1}
   |
help: Add `multiple_outputs=True`
   |
34 |
   - @task
35 + @task(multiple_outputs=True)
36 | def annotated_collections_abc_mapping() -> collections.abc.Mapping:  # AIR202
   |
note: This is an unsafe fix and may change runtime behavior

AIR202 [*] `@task`-decorated function relies on `multiple_outputs` inference
  --> AIR202.py:40:1
   |
40 | @task
   | ^^^^^
41 | def annotated_mutable_mapping() -> MutableMapping[str, int]:  # AIR202
42 |     return {"x": 1}
   |
help: Add `multiple_outputs=True`
   |
39 |
   - @task
40 + @task(multiple_outputs=True)
41 | def annotated_mutable_mapping() -> MutableMapping[str, int]:  # AIR202
   |
note: This is an unsafe fix and may change runtime behavior

AIR202 [*] `@task`-decorated function relies on `multiple_outputs` inference
  --> AIR202.py:49:1
   |
49 | @task
   | ^^^^^
50 | def annotated_typed_dict() -> MyTD:  # AIR202
51 |     return {"x": 1}
   |
help: Add `multiple_outputs=True`
   |
48 |
   - @task
49 + @task(multiple_outputs=True)
50 | def annotated_typed_dict() -> MyTD:  # AIR202
   |
note: This is an unsafe fix and may change runtime behavior

AIR202 [*] `@task`-decorated function relies on `multiple_outputs` inference
  --> AIR202.py:54:1
   |
54 | @sdk_task
   | ^^^^^^^^^
55 | def annotated_dict_via_sdk() -> dict:  # AIR202
56 |     return {"x": 1}
   |
help: Add `multiple_outputs=True`
   |
53 |
   - @sdk_task
54 + @sdk_task(multiple_outputs=True)
55 | def annotated_dict_via_sdk() -> dict:  # AIR202
   |
note: This is an unsafe fix and may change runtime behavior

AIR202 [*] `@task`-decorated function relies on `multiple_outputs` inference
  --> AIR202.py:62:1
   |
62 | @task
   | ^^^^^
63 | def body_dict_literal():  # AIR202
64 |     return {"x": 1}
   |
help: Add `multiple_outputs=False`
   |
61 |
   - @task
62 + @task(multiple_outputs=False)
63 | def body_dict_literal():  # AIR202
   |
note: This is an unsafe fix and may change runtime behavior

AIR202 [*] `@task`-decorated function relies on `multiple_outputs` inference
  --> AIR202.py:67:1
   |
67 | @task
   | ^^^^^
68 | def body_dict_comp():  # AIR202
69 |     return {k: v for k, v in enumerate(range(3))}
   |
help: Add `multiple_outputs=False`
   |
66 |
   - @task
67 + @task(multiple_outputs=False)
68 | def body_dict_comp():  # AIR202
   |
note: This is an unsafe fix and may change runtime behavior

AIR202 [*] `@task`-decorated function relies on `multiple_outputs` inference
  --> AIR202.py:72:1
   |
72 | @task
   | ^^^^^
73 | def body_dict_call():  # AIR202
74 |     return dict(a=1)
   |
help: Add `multiple_outputs=False`
   |
71 |
   - @task
72 + @task(multiple_outputs=False)
73 | def body_dict_call():  # AIR202
   |
note: This is an unsafe fix and may change runtime behavior

AIR202 [*] `@task`-decorated function relies on `multiple_outputs` inference
  --> AIR202.py:77:1
   |
77 | @task
   | ^^^^^
78 | def body_dict_literal_annotated_non_mapping() -> int:  # AIR202
79 |     return {"x": 1}
   |
help: Add `multiple_outputs=False`
   |
76 |
   - @task
77 + @task(multiple_outputs=False)
78 | def body_dict_literal_annotated_non_mapping() -> int:  # AIR202
   |
note: This is an unsafe fix and may change runtime behavior

AIR202 [*] `@task`-decorated function relies on `multiple_outputs` inference
  --> AIR202.py:85:1
   |
85 | @task(retries=3)
   | ^^^^^^^^^^^^^^^^
86 | def call_form_with_kwarg() -> dict:  # AIR202
87 |     return {"x": 1}
   |
help: Add `multiple_outputs=True`
   |
84 |
   - @task(retries=3)
85 + @task(multiple_outputs=True, retries=3)
86 | def call_form_with_kwarg() -> dict:  # AIR202
   |
note: This is an unsafe fix and may change runtime behavior

AIR202 [*] `@task`-decorated function relies on `multiple_outputs` inference
  --> AIR202.py:90:1
   |
90 | / @task(
91 | |     retries=3,
92 | | )
   | |_^
93 |   def call_form_multiline() -> dict:  # AIR202
94 |       return {"x": 1}
   |
help: Add `multiple_outputs=True`
   |
90 | @task(
   -     retries=3,
91 +     multiple_outputs=True, retries=3,
92 | )
   |
note: This is an unsafe fix and may change runtime behavior

AIR202 [*] `@task`-decorated function relies on `multiple_outputs` inference
   --> AIR202.py:100:1
    |
100 | @task.branch
    | ^^^^^^^^^^^^
101 | def variant_branch():  # AIR202
102 |     return {"a": 1}
    |
help: Add `multiple_outputs=False`
    |
99  |
    - @task.branch
100 + @task.branch(multiple_outputs=False)
101 | def variant_branch():  # AIR202
    |
note: This is an unsafe fix and may change runtime behavior

AIR202 [*] `@task`-decorated function relies on `multiple_outputs` inference
   --> AIR202.py:105:1
    |
105 | @task.short_circuit
    | ^^^^^^^^^^^^^^^^^^^
106 | def variant_short_circuit():  # AIR202
107 |     return {"a": 1}
    |
help: Add `multiple_outputs=False`
    |
104 |
    - @task.short_circuit
105 + @task.short_circuit(multiple_outputs=False)
106 | def variant_short_circuit():  # AIR202
    |
note: This is an unsafe fix and may change runtime behavior

AIR202 [*] `@task`-decorated function relies on `multiple_outputs` inference
   --> AIR202.py:110:1
    |
110 | @task.virtualenv
    | ^^^^^^^^^^^^^^^^
111 | def variant_virtualenv() -> dict:  # AIR202
112 |     return {"a": 1}
    |
help: Add `multiple_outputs=True`
    |
109 |
    - @task.virtualenv
110 + @task.virtualenv(multiple_outputs=True)
111 | def variant_virtualenv() -> dict:  # AIR202
    |
note: This is an unsafe fix and may change runtime behavior

AIR202 [*] `@task`-decorated function relies on `multiple_outputs` inference
   --> AIR202.py:115:1
    |
115 | @task.docker(image="python:3.11")
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
116 | def variant_docker() -> Mapping[str, int]:  # AIR202
117 |     return {"a": 1}
    |
help: Add `multiple_outputs=True`
    |
114 |
    - @task.docker(image="python:3.11")
115 + @task.docker(multiple_outputs=True, image="python:3.11")
116 | def variant_docker() -> Mapping[str, int]:  # AIR202
    |
note: This is an unsafe fix and may change runtime behavior

AIR202 [*] `@task`-decorated function relies on `multiple_outputs` inference
   --> AIR202.py:120:1
    |
120 | @task.kubernetes
    | ^^^^^^^^^^^^^^^^
121 | def variant_kubernetes():  # AIR202
122 |     return {"a": 1}
    |
help: Add `multiple_outputs=False`
    |
119 |
    - @task.kubernetes
120 + @task.kubernetes(multiple_outputs=False)
121 | def variant_kubernetes():  # AIR202
    |
note: This is an unsafe fix and may change runtime behavior

AIR202 [*] `@task`-decorated function relies on `multiple_outputs` inference
   --> AIR202.py:125:1
    |
125 | @task.short_circuit(trigger_rule="all_done")
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
126 | def variant_short_circuit_call() -> dict:  # AIR202
127 |     return {"a": 1}
    |
help: Add `multiple_outputs=True`
    |
124 |
    - @task.short_circuit(trigger_rule="all_done")
125 + @task.short_circuit(multiple_outputs=True, trigger_rule="all_done")
126 | def variant_short_circuit_call() -> dict:  # AIR202
    |
note: This is an unsafe fix and may change runtime behavior
