---
source: crates/ruff_linter/src/rules/airflow/mod.rs
---
AIR301 `airflow.PY36` is removed in Airflow 3.0
  --> AIR301_names.py:38:1
   |
37 | # airflow root
38 | PY36, PY37, PY38, PY39, PY310, PY311, PY312
   | ^^^^
39 |
40 | # airflow.api_connexion.security
   |
help: Use `sys.version_info` instead

AIR301 `airflow.PY37` is removed in Airflow 3.0
  --> AIR301_names.py:38:7
   |
37 | # airflow root
38 | PY36, PY37, PY38, PY39, PY310, PY311, PY312
   |       ^^^^
39 |
40 | # airflow.api_connexion.security
   |
help: Use `sys.version_info` instead

AIR301 `airflow.PY38` is removed in Airflow 3.0
  --> AIR301_names.py:38:13
   |
37 | # airflow root
38 | PY36, PY37, PY38, PY39, PY310, PY311, PY312
   |             ^^^^
39 |
40 | # airflow.api_connexion.security
   |
help: Use `sys.version_info` instead

AIR301 `airflow.PY39` is removed in Airflow 3.0
  --> AIR301_names.py:38:19
   |
37 | # airflow root
38 | PY36, PY37, PY38, PY39, PY310, PY311, PY312
   |                   ^^^^
39 |
40 | # airflow.api_connexion.security
   |
help: Use `sys.version_info` instead

AIR301 `airflow.PY310` is removed in Airflow 3.0
  --> AIR301_names.py:38:25
   |
37 | # airflow root
38 | PY36, PY37, PY38, PY39, PY310, PY311, PY312
   |                         ^^^^^
39 |
40 | # airflow.api_connexion.security
   |
help: Use `sys.version_info` instead

AIR301 `airflow.PY311` is removed in Airflow 3.0
  --> AIR301_names.py:38:32
   |
37 | # airflow root
38 | PY36, PY37, PY38, PY39, PY310, PY311, PY312
   |                                ^^^^^
39 |
40 | # airflow.api_connexion.security
   |
help: Use `sys.version_info` instead

AIR301 `airflow.PY312` is removed in Airflow 3.0
  --> AIR301_names.py:38:39
   |
37 | # airflow root
38 | PY36, PY37, PY38, PY39, PY310, PY311, PY312
   |                                       ^^^^^
39 |
40 | # airflow.api_connexion.security
   |
help: Use `sys.version_info` instead

AIR301 `airflow.api_connexion.security.requires_access` is removed in Airflow 3.0
  --> AIR301_names.py:41:1
   |
40 | # airflow.api_connexion.security
41 | requires_access
   | ^^^^^^^^^^^^^^^
42 |
43 | # airflow.contrib.*
   |
help: Use `airflow.api_fastapi.core_api.security.requires_access_*` instead

AIR301 `airflow.contrib.aws_athena_hook.AWSAthenaHook` is removed in Airflow 3.0
  --> AIR301_names.py:44:1
   |
43 | # airflow.contrib.*
44 | AWSAthenaHook()
   | ^^^^^^^^^^^^^
   |
help: The whole `airflow.contrib` module has been removed.

AIR301 `airflow.datasets.DatasetAliasEvent` is removed in Airflow 3.0
  --> AIR301_names.py:48:1
   |
47 | # airflow.datasets
48 | DatasetAliasEvent()
   | ^^^^^^^^^^^^^^^^^
49 | DatasetEvent()
   |

AIR301 `airflow.datasets.DatasetEvent` is removed in Airflow 3.0
  --> AIR301_names.py:49:1
   |
47 | # airflow.datasets
48 | DatasetAliasEvent()
49 | DatasetEvent()
   | ^^^^^^^^^^^^
   |
help: `DatasetEvent` has been made private in Airflow 3. Use `dict[str, Any]` for the time being. An `AssetEvent` type will be added to the apache-airflow-task-sdk in a future version.

AIR301 `airflow.operators.subdag.SubDagOperator` is removed in Airflow 3.0
  --> AIR301_names.py:53:1
   |
52 | # airflow.operators.subdag.*
53 | SubDagOperator()
   | ^^^^^^^^^^^^^^
54 |
55 | # airflow.operators.postgres_operator
   |
help: The whole `airflow.subdag` module has been removed.

AIR301 `airflow.operators.postgres_operator.Mapping` is removed in Airflow 3.0
  --> AIR301_names.py:56:1
   |
55 | # airflow.operators.postgres_operator
56 | Mapping()
   | ^^^^^^^
57 |
58 | # airflow.secrets
   |

AIR301 `airflow.triggers.external_task.TaskStateTrigger` is removed in Airflow 3.0
  --> AIR301_names.py:64:1
   |
63 | # airflow.triggers.external_task
64 | TaskStateTrigger()
   | ^^^^^^^^^^^^^^^^
65 |
66 | # airflow.utils.date
   |

AIR301 `airflow.utils.dates.date_range` is removed in Airflow 3.0
  --> AIR301_names.py:67:1
   |
66 | # airflow.utils.date
67 | dates.date_range
   | ^^^^^^^^^^^^^^^^
68 | dates.days_ago
   |

AIR301 `airflow.utils.dates.days_ago` is removed in Airflow 3.0
  --> AIR301_names.py:68:1
   |
66 | # airflow.utils.date
67 | dates.date_range
68 | dates.days_ago
   | ^^^^^^^^^^^^^^
69 |
70 | date_range
   |
help: Use `pendulum.today('UTC').add(days=-N, ...)` instead

AIR301 `airflow.utils.dates.date_range` is removed in Airflow 3.0
  --> AIR301_names.py:70:1
   |
68 | dates.days_ago
69 |
70 | date_range
   | ^^^^^^^^^^
71 | days_ago
72 | infer_time_unit
   |

AIR301 `airflow.utils.dates.days_ago` is removed in Airflow 3.0
  --> AIR301_names.py:71:1
   |
70 | date_range
71 | days_ago
   | ^^^^^^^^
72 | infer_time_unit
73 | parse_execution_date
   |
help: Use `pendulum.today('UTC').add(days=-N, ...)` instead

AIR301 `airflow.utils.dates.infer_time_unit` is removed in Airflow 3.0
  --> AIR301_names.py:72:1
   |
70 | date_range
71 | days_ago
72 | infer_time_unit
   | ^^^^^^^^^^^^^^^
73 | parse_execution_date
74 | round_time
   |

AIR301 `airflow.utils.dates.parse_execution_date` is removed in Airflow 3.0
  --> AIR301_names.py:73:1
   |
71 | days_ago
72 | infer_time_unit
73 | parse_execution_date
   | ^^^^^^^^^^^^^^^^^^^^
74 | round_time
75 | scale_time_units
   |

AIR301 `airflow.utils.dates.round_time` is removed in Airflow 3.0
  --> AIR301_names.py:74:1
   |
72 | infer_time_unit
73 | parse_execution_date
74 | round_time
   | ^^^^^^^^^^
75 | scale_time_units
   |

AIR301 `airflow.utils.dates.scale_time_units` is removed in Airflow 3.0
  --> AIR301_names.py:75:1
   |
73 | parse_execution_date
74 | round_time
75 | scale_time_units
   | ^^^^^^^^^^^^^^^^
76 |
77 | # This one was not deprecated.
   |

AIR301 `airflow.utils.dag_cycle_tester.test_cycle` is removed in Airflow 3.0
  --> AIR301_names.py:82:1
   |
81 | # airflow.utils.dag_cycle_tester
82 | test_cycle
   | ^^^^^^^^^^
   |

AIR301 `airflow.utils.db.create_session` is removed in Airflow 3.0
  --> AIR301_names.py:86:1
   |
85 | # airflow.utils.db
86 | create_session
   | ^^^^^^^^^^^^^^
   |

AIR301 `airflow.utils.file.mkdirs` is removed in Airflow 3.0
  --> AIR301_names.py:90:1
   |
89 | # airflow.utils.file
90 | mkdirs
   | ^^^^^^
   |
help: Use `pathlib.Path({path}).mkdir` instead

AIR301 `airflow.utils.state.SHUTDOWN` is removed in Airflow 3.0
  --> AIR301_names.py:94:1
   |
93 | # airflow.utils.state
94 | SHUTDOWN
   | ^^^^^^^^
95 | terminating_states
   |

AIR301 `airflow.utils.state.terminating_states` is removed in Airflow 3.0
  --> AIR301_names.py:95:1
   |
93 | # airflow.utils.state
94 | SHUTDOWN
95 | terminating_states
   | ^^^^^^^^^^^^^^^^^^
96 |
97 | #  airflow.utils.trigger_rule
   |

AIR301 `airflow.utils.trigger_rule.TriggerRule.DUMMY` is removed in Airflow 3.0
  --> AIR301_names.py:98:1
   |
97 | #  airflow.utils.trigger_rule
98 | TriggerRule.DUMMY
   | ^^^^^^^^^^^^^^^^^
   |

AIR301 `airflow.www.auth.has_access` is removed in Airflow 3.0
   --> AIR301_names.py:102:1
    |
101 | # airflow.www.auth
102 | has_access
    | ^^^^^^^^^^
103 | has_access_dataset
    |

AIR301 `airflow.www.auth.has_access_dataset` is removed in Airflow 3.0
   --> AIR301_names.py:103:1
    |
101 | # airflow.www.auth
102 | has_access
103 | has_access_dataset
    | ^^^^^^^^^^^^^^^^^^
104 |
105 | # airflow.www.utils
    |

AIR301 `airflow.www.utils.get_sensitive_variables_fields` is removed in Airflow 3.0
   --> AIR301_names.py:106:1
    |
105 | # airflow.www.utils
106 | get_sensitive_variables_fields
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
107 | should_hide_value_for_key
    |

AIR301 `airflow.www.utils.should_hide_value_for_key` is removed in Airflow 3.0
   --> AIR301_names.py:107:1
    |
105 | # airflow.www.utils
106 | get_sensitive_variables_fields
107 | should_hide_value_for_key
    | ^^^^^^^^^^^^^^^^^^^^^^^^^
    |
