---
source: crates/ruff_linter/src/rules/airflow/mod.rs
---
AIR302 [*] `airflow.operators.bash_operator.BashOperator` is moved into `standard` provider in Airflow 3.0;
  --> AIR302_standard.py:20:1
   |
18 | )
19 |
20 | BashOperator()
   | ^^^^^^^^^^^^
21 |
22 | TriggerDagRunLink()
   |
help: Install `apache-airflow-providers-standard>=0.0.1` and use `BashOperator` from `airflow.providers.standard.operators.bash` instead.
   |
2  |
   - from airflow.operators.bash_operator import BashOperator
3  | from airflow.operators.dagrun_operator import (
--------------------------------------------------------------------------------
17 | )
18 + from airflow.providers.standard.operators.bash import BashOperator
19 |
   |
note: This is an unsafe fix and may change runtime behavior

AIR302 [*] `airflow.operators.dagrun_operator.TriggerDagRunLink` is moved into `standard` provider in Airflow 3.0;
  --> AIR302_standard.py:22:1
   |
20 | BashOperator()
21 |
22 | TriggerDagRunLink()
   | ^^^^^^^^^^^^^^^^^
23 | TriggerDagRunOperator()
   |
help: Install `apache-airflow-providers-standard>=0.0.2` and use `TriggerDagRunLink` from `airflow.providers.standard.operators.trigger_dagrun` instead.
   |
4  | from airflow.operators.dagrun_operator import (
   -     TriggerDagRunLink,
5  |     TriggerDagRunOperator,
--------------------------------------------------------------------------------
17 | )
18 + from airflow.providers.standard.operators.trigger_dagrun import TriggerDagRunLink
19 |
   |
note: This is an unsafe fix and may change runtime behavior

AIR302 [*] `airflow.operators.dagrun_operator.TriggerDagRunOperator` is moved into `standard` provider in Airflow 3.0;
  --> AIR302_standard.py:23:1
   |
22 | TriggerDagRunLink()
23 | TriggerDagRunOperator()
   | ^^^^^^^^^^^^^^^^^^^^^
24 |
25 | LatestOnlyOperator()
   |
help: Install `apache-airflow-providers-standard>=0.0.2` and use `TriggerDagRunOperator` from `airflow.providers.standard.operators.trigger_dagrun` instead.
   |
5  |     TriggerDagRunLink,
   -     TriggerDagRunOperator,
6  | )
--------------------------------------------------------------------------------
17 | )
18 + from airflow.providers.standard.operators.trigger_dagrun import TriggerDagRunOperator
19 |
   |
note: This is an unsafe fix and may change runtime behavior

AIR302 [*] `airflow.operators.latest_only_operator.LatestOnlyOperator` is moved into `standard` provider in Airflow 3.0;
  --> AIR302_standard.py:25:1
   |
23 | TriggerDagRunOperator()
24 |
25 | LatestOnlyOperator()
   | ^^^^^^^^^^^^^^^^^^
26 |
27 | BranchPythonOperator()
   |
help: Install `apache-airflow-providers-standard>=0.0.3` and use `LatestOnlyOperator` from `airflow.providers.standard.operators.latest_only` instead.
   |
7  | )
   - from airflow.operators.latest_only_operator import LatestOnlyOperator
8  | from airflow.operators.python_operator import (
--------------------------------------------------------------------------------
17 | )
18 + from airflow.providers.standard.operators.latest_only import LatestOnlyOperator
19 |
   |
note: This is an unsafe fix and may change runtime behavior

AIR302 [*] `airflow.operators.python_operator.BranchPythonOperator` is moved into `standard` provider in Airflow 3.0;
  --> AIR302_standard.py:27:1
   |
25 | LatestOnlyOperator()
26 |
27 | BranchPythonOperator()
   | ^^^^^^^^^^^^^^^^^^^^
28 | PythonOperator()
29 | PythonVirtualenvOperator()
   |
help: Install `apache-airflow-providers-standard>=0.0.1` and use `BranchPythonOperator` from `airflow.providers.standard.operators.python` instead.
   |
9  | from airflow.operators.python_operator import (
   -     BranchPythonOperator,
10 |     PythonOperator,
--------------------------------------------------------------------------------
17 | )
18 + from airflow.providers.standard.operators.python import BranchPythonOperator
19 |
   |
note: This is an unsafe fix and may change runtime behavior

AIR302 [*] `airflow.operators.python_operator.PythonOperator` is moved into `standard` provider in Airflow 3.0;
  --> AIR302_standard.py:28:1
   |
27 | BranchPythonOperator()
28 | PythonOperator()
   | ^^^^^^^^^^^^^^
29 | PythonVirtualenvOperator()
30 | ShortCircuitOperator()
   |
help: Install `apache-airflow-providers-standard>=0.0.1` and use `PythonOperator` from `airflow.providers.standard.operators.python` instead.
   |
10 |     BranchPythonOperator,
   -     PythonOperator,
11 |     PythonVirtualenvOperator,
--------------------------------------------------------------------------------
17 | )
18 + from airflow.providers.standard.operators.python import PythonOperator
19 |
   |
note: This is an unsafe fix and may change runtime behavior

AIR302 [*] `airflow.operators.python_operator.PythonVirtualenvOperator` is moved into `standard` provider in Airflow 3.0;
  --> AIR302_standard.py:29:1
   |
27 | BranchPythonOperator()
28 | PythonOperator()
29 | PythonVirtualenvOperator()
   | ^^^^^^^^^^^^^^^^^^^^^^^^
30 | ShortCircuitOperator()
   |
help: Install `apache-airflow-providers-standard>=0.0.1` and use `PythonVirtualenvOperator` from `airflow.providers.standard.operators.python` instead.
   |
11 |     PythonOperator,
   -     PythonVirtualenvOperator,
12 |     ShortCircuitOperator,
--------------------------------------------------------------------------------
17 | )
18 + from airflow.providers.standard.operators.python import PythonVirtualenvOperator
19 |
   |
note: This is an unsafe fix and may change runtime behavior

AIR302 [*] `airflow.operators.python_operator.ShortCircuitOperator` is moved into `standard` provider in Airflow 3.0;
  --> AIR302_standard.py:30:1
   |
28 | PythonOperator()
29 | PythonVirtualenvOperator()
30 | ShortCircuitOperator()
   | ^^^^^^^^^^^^^^^^^^^^
31 |
32 | ExternalTaskMarker()
   |
help: Install `apache-airflow-providers-standard>=0.0.1` and use `ShortCircuitOperator` from `airflow.providers.standard.operators.python` instead.
   |
12 |     PythonVirtualenvOperator,
   -     ShortCircuitOperator,
13 | )
--------------------------------------------------------------------------------
17 | )
18 + from airflow.providers.standard.operators.python import ShortCircuitOperator
19 |
   |
note: This is an unsafe fix and may change runtime behavior

AIR302 [*] `airflow.sensors.external_task_sensor.ExternalTaskMarker` is moved into `standard` provider in Airflow 3.0;
  --> AIR302_standard.py:32:1
   |
30 | ShortCircuitOperator()
31 |
32 | ExternalTaskMarker()
   | ^^^^^^^^^^^^^^^^^^
33 | ExternalTaskSensor()
   |
help: Install `apache-airflow-providers-standard>=0.0.3` and use `ExternalTaskMarker` from `airflow.providers.standard.sensors.external_task` instead.
   |
15 | from airflow.sensors.external_task_sensor import (
   -     ExternalTaskMarker,
16 |     ExternalTaskSensor,
17 | )
18 + from airflow.providers.standard.sensors.external_task import ExternalTaskMarker
19 |
   |
note: This is an unsafe fix and may change runtime behavior

AIR302 [*] `airflow.sensors.external_task_sensor.ExternalTaskSensor` is moved into `standard` provider in Airflow 3.0;
  --> AIR302_standard.py:33:1
   |
32 | ExternalTaskMarker()
33 | ExternalTaskSensor()
   | ^^^^^^^^^^^^^^^^^^
   |
help: Install `apache-airflow-providers-standard>=0.0.3` and use `ExternalTaskSensor` from `airflow.providers.standard.sensors.external_task` instead.
   |
16 |     ExternalTaskMarker,
   -     ExternalTaskSensor,
17 | )
18 + from airflow.providers.standard.sensors.external_task import ExternalTaskSensor
19 |
   |
note: This is an unsafe fix and may change runtime behavior

AIR302 [*] `airflow.hooks.subprocess.SubprocessResult` is moved into `standard` provider in Airflow 3.0;
  --> AIR302_standard.py:38:1
   |
36 | from airflow.hooks.subprocess import SubprocessResult
37 |
38 | SubprocessResult()
   | ^^^^^^^^^^^^^^^^
39 |
40 | from airflow.hooks.subprocess import working_directory
   |
help: Install `apache-airflow-providers-standard>=0.0.3` and use `SubprocessResult` from `airflow.providers.standard.hooks.subprocess` instead.
   |
35 |
   - from airflow.hooks.subprocess import SubprocessResult
36 + from airflow.providers.standard.hooks.subprocess import SubprocessResult
37 |
   |
note: This is an unsafe fix and may change runtime behavior

AIR302 [*] `airflow.hooks.subprocess.working_directory` is moved into `standard` provider in Airflow 3.0;
  --> AIR302_standard.py:42:1
   |
40 | from airflow.hooks.subprocess import working_directory
41 |
42 | working_directory()
   | ^^^^^^^^^^^^^^^^^
43 |
44 | from airflow.operators.datetime import target_times_as_dates
   |
help: Install `apache-airflow-providers-standard>=0.0.3` and use `working_directory` from `airflow.providers.standard.hooks.subprocess` instead.
   |
39 |
   - from airflow.hooks.subprocess import working_directory
40 + from airflow.providers.standard.hooks.subprocess import working_directory
41 |
   |
note: This is an unsafe fix and may change runtime behavior

AIR302 [*] `airflow.operators.datetime.target_times_as_dates` is moved into `standard` provider in Airflow 3.0;
  --> AIR302_standard.py:46:1
   |
44 | from airflow.operators.datetime import target_times_as_dates
45 |
46 | target_times_as_dates()
   | ^^^^^^^^^^^^^^^^^^^^^
47 |
48 | from airflow.operators.trigger_dagrun import TriggerDagRunLink
   |
help: Install `apache-airflow-providers-standard>=0.0.1` and use `target_times_as_dates` from `airflow.providers.standard.operators.datetime` instead.
   |
43 |
   - from airflow.operators.datetime import target_times_as_dates
44 + from airflow.providers.standard.operators.datetime import target_times_as_dates
45 |
   |
note: This is an unsafe fix and may change runtime behavior

AIR302 [*] `airflow.operators.trigger_dagrun.TriggerDagRunLink` is moved into `standard` provider in Airflow 3.0;
  --> AIR302_standard.py:50:1
   |
48 | from airflow.operators.trigger_dagrun import TriggerDagRunLink
49 |
50 | TriggerDagRunLink()
   | ^^^^^^^^^^^^^^^^^
51 |
52 | from airflow.sensors.external_task import ExternalTaskSensorLink
   |
help: Install `apache-airflow-providers-standard>=0.0.2` and use `TriggerDagRunLink` from `airflow.providers.standard.operators.trigger_dagrun` instead.
   |
47 |
   - from airflow.operators.trigger_dagrun import TriggerDagRunLink
48 + from airflow.providers.standard.operators.trigger_dagrun import TriggerDagRunLink
49 |
   |
note: This is an unsafe fix and may change runtime behavior

AIR302 [*] `airflow.sensors.external_task.ExternalTaskSensorLink` is moved into `standard` provider in Airflow 3.0;
  --> AIR302_standard.py:54:1
   |
52 | from airflow.sensors.external_task import ExternalTaskSensorLink
53 |
54 | ExternalTaskSensorLink()
   | ^^^^^^^^^^^^^^^^^^^^^^
55 |
56 | from airflow.sensors.time_delta import WaitSensor
   |
help: Install `apache-airflow-providers-standard>=0.0.3` and use `ExternalDagLink` from `airflow.providers.standard.sensors.external_task` instead.
   |
52 | from airflow.sensors.external_task import ExternalTaskSensorLink
53 + from airflow.providers.standard.sensors.external_task import ExternalDagLink
54 |
   - ExternalTaskSensorLink()
55 + ExternalDagLink()
56 |
   |

AIR302 [*] `airflow.sensors.time_delta.WaitSensor` is moved into `standard` provider in Airflow 3.0;
  --> AIR302_standard.py:58:1
   |
56 | from airflow.sensors.time_delta import WaitSensor
57 |
58 | WaitSensor()
   | ^^^^^^^^^^
59 |
60 | from airflow.operators.dummy import DummyOperator
   |
help: Install `apache-airflow-providers-standard>=0.0.1` and use `WaitSensor` from `airflow.providers.standard.sensors.time_delta` instead.
   |
55 |
   - from airflow.sensors.time_delta import WaitSensor
56 + from airflow.providers.standard.sensors.time_delta import WaitSensor
57 |
   |
note: This is an unsafe fix and may change runtime behavior

AIR302 [*] `airflow.operators.dummy.DummyOperator` is moved into `standard` provider in Airflow 3.0;
  --> AIR302_standard.py:62:1
   |
60 | from airflow.operators.dummy import DummyOperator
61 |
62 | DummyOperator()
   | ^^^^^^^^^^^^^
63 |
64 | from airflow.operators.dummy import EmptyOperator
   |
help: Install `apache-airflow-providers-standard>=0.0.2` and use `EmptyOperator` from `airflow.providers.standard.operators.empty` instead.
   |
60 | from airflow.operators.dummy import DummyOperator
61 + from airflow.providers.standard.operators.empty import EmptyOperator
62 |
   - DummyOperator()
63 + EmptyOperator()
64 |
   |

AIR302 [*] `airflow.operators.dummy.EmptyOperator` is moved into `standard` provider in Airflow 3.0;
  --> AIR302_standard.py:66:1
   |
64 | from airflow.operators.dummy import EmptyOperator
65 |
66 | EmptyOperator()
   | ^^^^^^^^^^^^^
67 |
68 | from airflow.operators.dummy_operator import DummyOperator
   |
help: Install `apache-airflow-providers-standard>=0.0.2` and use `EmptyOperator` from `airflow.providers.standard.operators.empty` instead.
   |
63 |
   - from airflow.operators.dummy import EmptyOperator
64 + from airflow.providers.standard.operators.empty import EmptyOperator
65 |
   |
note: This is an unsafe fix and may change runtime behavior

AIR302 [*] `airflow.operators.dummy_operator.DummyOperator` is moved into `standard` provider in Airflow 3.0;
  --> AIR302_standard.py:70:1
   |
68 | from airflow.operators.dummy_operator import DummyOperator
69 |
70 | DummyOperator()
   | ^^^^^^^^^^^^^
71 |
72 | from airflow.operators.dummy_operator import EmptyOperator
   |
help: Install `apache-airflow-providers-standard>=0.0.2` and use `EmptyOperator` from `airflow.providers.standard.operators.empty` instead.
   |
68 | from airflow.operators.dummy_operator import DummyOperator
69 + from airflow.providers.standard.operators.empty import EmptyOperator
70 |
   |
note: This is an unsafe fix and may change runtime behavior

AIR302 [*] `airflow.operators.dummy_operator.EmptyOperator` is moved into `standard` provider in Airflow 3.0;
  --> AIR302_standard.py:74:1
   |
72 | from airflow.operators.dummy_operator import EmptyOperator
73 |
74 | EmptyOperator()
   | ^^^^^^^^^^^^^
75 |
76 | from airflow.sensors.external_task_sensor import ExternalTaskSensorLink
   |
help: Install `apache-airflow-providers-standard>=0.0.2` and use `EmptyOperator` from `airflow.providers.standard.operators.empty` instead.
   |
71 |
   - from airflow.operators.dummy_operator import EmptyOperator
72 + from airflow.providers.standard.operators.empty import EmptyOperator
73 |
   |
note: This is an unsafe fix and may change runtime behavior

AIR302 [*] `airflow.sensors.external_task_sensor.ExternalTaskSensorLink` is moved into `standard` provider in Airflow 3.0;
  --> AIR302_standard.py:78:1
   |
76 | from airflow.sensors.external_task_sensor import ExternalTaskSensorLink
77 |
78 | ExternalTaskSensorLink()
   | ^^^^^^^^^^^^^^^^^^^^^^
   |
help: Install `apache-airflow-providers-standard>=0.0.3` and use `ExternalDagLink` from `airflow.providers.standard.sensors.external_task` instead.
   |
76 | from airflow.sensors.external_task_sensor import ExternalTaskSensorLink
77 + from airflow.providers.standard.sensors.external_task import ExternalDagLink
78 |
   - ExternalTaskSensorLink()
79 + ExternalDagLink()
   |
