diff --git a/crates/ruff_linter/resources/test/fixtures/airflow/AIR302_names.py b/crates/ruff_linter/resources/test/fixtures/airflow/AIR302_names.py index 91f97477746324..d19501cf3d7a9d 100644 --- a/crates/ruff_linter/resources/test/fixtures/airflow/AIR302_names.py +++ b/crates/ruff_linter/resources/test/fixtures/airflow/AIR302_names.py @@ -44,6 +44,7 @@ from airflow.lineage.hook import DatasetLineageInfo from airflow.listeners.spec.dataset import on_dataset_changed, on_dataset_created from airflow.metrics.validators import AllowListValidator, BlockListValidator +from airflow.models.baseoperator import chain, chain_linear, cross_downstream from airflow.operators import dummy_operator from airflow.operators.branch_operator import BaseBranchOperator from airflow.operators.dagrun_operator import TriggerDagRunLink, TriggerDagRunOperator diff --git a/crates/ruff_linter/src/rules/airflow/rules/removal_in_3.rs b/crates/ruff_linter/src/rules/airflow/rules/removal_in_3.rs index 205a42939c6817..eadfd989c4c55e 100644 --- a/crates/ruff_linter/src/rules/airflow/rules/removal_in_3.rs +++ b/crates/ruff_linter/src/rules/airflow/rules/removal_in_3.rs @@ -751,11 +751,18 @@ fn check_name(checker: &Checker, expr: &Expr, range: TextRange) { } // airflow.utils.helpers - ["airflow", "utils", "helpers", "chain"] => { - Replacement::Name("airflow.models.baseoperator.chain") - } + ["airflow", "utils", "helpers", "chain"] => Replacement::Name("airflow.sdk.chain"), ["airflow", "utils", "helpers", "cross_downstream"] => { - Replacement::Name("airflow.models.baseoperator.cross_downstream") + Replacement::Name("airflow.sdk.cross_downstream") + } + + // airflow.models.baseoperator + ["airflow", "models", "baseoperator", "chain"] => Replacement::Name("airflow.sdk.chain"), + ["airflow", "models", "baseoperator", "chain_linear"] => { + Replacement::Name("airflow.sdk.chain_linear") + } + ["airflow", "models", "baseoperator", "cross_downstream"] => { + Replacement::Name("airflow.sdk.cross_downstream") } // airflow.utils.state diff --git a/crates/ruff_linter/src/rules/airflow/snapshots/ruff_linter__rules__airflow__tests__AIR302_AIR302_names.py.snap b/crates/ruff_linter/src/rules/airflow/snapshots/ruff_linter__rules__airflow__tests__AIR302_AIR302_names.py.snap index aa9d2c2b088fb9..27937e682936b9 100644 --- a/crates/ruff_linter/src/rules/airflow/snapshots/ruff_linter__rules__airflow__tests__AIR302_AIR302_names.py.snap +++ b/crates/ruff_linter/src/rules/airflow/snapshots/ruff_linter__rules__airflow__tests__AIR302_AIR302_names.py.snap @@ -1,972 +1,972 @@ --- source: crates/ruff_linter/src/rules/airflow/mod.rs -snapshot_kind: text +assertion_line: 29 --- -AIR302_names.py:106:1: AIR302 `airflow.PY36` is removed in Airflow 3.0 +AIR302_names.py:107:1: AIR302 `airflow.PY36` is removed in Airflow 3.0 | -105 | # airflow root -106 | PY36, PY37, PY38, PY39, PY310, PY311, PY312 +106 | # airflow root +107 | PY36, PY37, PY38, PY39, PY310, PY311, PY312 | ^^^^ AIR302 -107 | DatasetFromRoot() +108 | DatasetFromRoot() | = help: Use `sys.version_info` instead -AIR302_names.py:106:7: AIR302 `airflow.PY37` is removed in Airflow 3.0 +AIR302_names.py:107:7: AIR302 `airflow.PY37` is removed in Airflow 3.0 | -105 | # airflow root -106 | PY36, PY37, PY38, PY39, PY310, PY311, PY312 +106 | # airflow root +107 | PY36, PY37, PY38, PY39, PY310, PY311, PY312 | ^^^^ AIR302 -107 | DatasetFromRoot() +108 | DatasetFromRoot() | = help: Use `sys.version_info` instead -AIR302_names.py:106:13: AIR302 `airflow.PY38` is removed in Airflow 3.0 +AIR302_names.py:107:13: AIR302 `airflow.PY38` is removed in Airflow 3.0 | -105 | # airflow root -106 | PY36, PY37, PY38, PY39, PY310, PY311, PY312 +106 | # airflow root +107 | PY36, PY37, PY38, PY39, PY310, PY311, PY312 | ^^^^ AIR302 -107 | DatasetFromRoot() +108 | DatasetFromRoot() | = help: Use `sys.version_info` instead -AIR302_names.py:106:19: AIR302 `airflow.PY39` is removed in Airflow 3.0 +AIR302_names.py:107:19: AIR302 `airflow.PY39` is removed in Airflow 3.0 | -105 | # airflow root -106 | PY36, PY37, PY38, PY39, PY310, PY311, PY312 +106 | # airflow root +107 | PY36, PY37, PY38, PY39, PY310, PY311, PY312 | ^^^^ AIR302 -107 | DatasetFromRoot() +108 | DatasetFromRoot() | = help: Use `sys.version_info` instead -AIR302_names.py:106:25: AIR302 `airflow.PY310` is removed in Airflow 3.0 +AIR302_names.py:107:25: AIR302 `airflow.PY310` is removed in Airflow 3.0 | -105 | # airflow root -106 | PY36, PY37, PY38, PY39, PY310, PY311, PY312 +106 | # airflow root +107 | PY36, PY37, PY38, PY39, PY310, PY311, PY312 | ^^^^^ AIR302 -107 | DatasetFromRoot() +108 | DatasetFromRoot() | = help: Use `sys.version_info` instead -AIR302_names.py:106:32: AIR302 `airflow.PY311` is removed in Airflow 3.0 +AIR302_names.py:107:32: AIR302 `airflow.PY311` is removed in Airflow 3.0 | -105 | # airflow root -106 | PY36, PY37, PY38, PY39, PY310, PY311, PY312 +106 | # airflow root +107 | PY36, PY37, PY38, PY39, PY310, PY311, PY312 | ^^^^^ AIR302 -107 | DatasetFromRoot() +108 | DatasetFromRoot() | = help: Use `sys.version_info` instead -AIR302_names.py:106:39: AIR302 `airflow.PY312` is removed in Airflow 3.0 +AIR302_names.py:107:39: AIR302 `airflow.PY312` is removed in Airflow 3.0 | -105 | # airflow root -106 | PY36, PY37, PY38, PY39, PY310, PY311, PY312 +106 | # airflow root +107 | PY36, PY37, PY38, PY39, PY310, PY311, PY312 | ^^^^^ AIR302 -107 | DatasetFromRoot() +108 | DatasetFromRoot() | = help: Use `sys.version_info` instead -AIR302_names.py:107:1: AIR302 `airflow.Dataset` is removed in Airflow 3.0 +AIR302_names.py:108:1: AIR302 `airflow.Dataset` is removed in Airflow 3.0 | -105 | # airflow root -106 | PY36, PY37, PY38, PY39, PY310, PY311, PY312 -107 | DatasetFromRoot() +106 | # airflow root +107 | PY36, PY37, PY38, PY39, PY310, PY311, PY312 +108 | DatasetFromRoot() | ^^^^^^^^^^^^^^^ AIR302 -108 | -109 | # airflow.api_connexion.security +109 | +110 | # airflow.api_connexion.security | = help: Use `airflow.sdk.definitions.asset.Asset` instead -AIR302_names.py:110:1: AIR302 `airflow.api_connexion.security.requires_access` is removed in Airflow 3.0 +AIR302_names.py:111:1: AIR302 `airflow.api_connexion.security.requires_access` is removed in Airflow 3.0 | -109 | # airflow.api_connexion.security -110 | requires_access, requires_access_dataset +110 | # airflow.api_connexion.security +111 | requires_access, requires_access_dataset | ^^^^^^^^^^^^^^^ AIR302 -111 | -112 | # airflow.auth.managers +112 | +113 | # airflow.auth.managers | = help: Use `airflow.api_connexion.security.requires_access_*` instead -AIR302_names.py:110:18: AIR302 `airflow.api_connexion.security.requires_access_dataset` is removed in Airflow 3.0 +AIR302_names.py:111:18: AIR302 `airflow.api_connexion.security.requires_access_dataset` is removed in Airflow 3.0 | -109 | # airflow.api_connexion.security -110 | requires_access, requires_access_dataset +110 | # airflow.api_connexion.security +111 | requires_access, requires_access_dataset | ^^^^^^^^^^^^^^^^^^^^^^^ AIR302 -111 | -112 | # airflow.auth.managers +112 | +113 | # airflow.auth.managers | = help: Use `airflow.api_connexion.security.requires_access_asset` instead -AIR302_names.py:113:1: AIR302 `airflow.auth.managers.base_auth_manager.is_authorized_dataset` is removed in Airflow 3.0 +AIR302_names.py:114:1: AIR302 `airflow.auth.managers.base_auth_manager.is_authorized_dataset` is removed in Airflow 3.0 | -112 | # airflow.auth.managers -113 | is_authorized_dataset +113 | # airflow.auth.managers +114 | is_authorized_dataset | ^^^^^^^^^^^^^^^^^^^^^ AIR302 -114 | DatasetDetails() +115 | DatasetDetails() | = help: Use `airflow.auth.managers.base_auth_manager.is_authorized_asset` instead -AIR302_names.py:114:1: AIR302 `airflow.auth.managers.models.resource_details.DatasetDetails` is removed in Airflow 3.0 +AIR302_names.py:115:1: AIR302 `airflow.auth.managers.models.resource_details.DatasetDetails` is removed in Airflow 3.0 | -112 | # airflow.auth.managers -113 | is_authorized_dataset -114 | DatasetDetails() +113 | # airflow.auth.managers +114 | is_authorized_dataset +115 | DatasetDetails() | ^^^^^^^^^^^^^^ AIR302 -115 | -116 | # airflow.configuration +116 | +117 | # airflow.configuration | = help: Use `airflow.auth.managers.models.resource_details.AssetDetails` instead -AIR302_names.py:117:1: AIR302 `airflow.configuration.get` is removed in Airflow 3.0 +AIR302_names.py:118:1: AIR302 `airflow.configuration.get` is removed in Airflow 3.0 | -116 | # airflow.configuration -117 | get, getboolean, getfloat, getint, has_option, remove_option, as_dict, set +117 | # airflow.configuration +118 | get, getboolean, getfloat, getint, has_option, remove_option, as_dict, set | ^^^ AIR302 | = help: Use `airflow.configuration.conf.get` instead -AIR302_names.py:117:6: AIR302 `airflow.configuration.getboolean` is removed in Airflow 3.0 +AIR302_names.py:118:6: AIR302 `airflow.configuration.getboolean` is removed in Airflow 3.0 | -116 | # airflow.configuration -117 | get, getboolean, getfloat, getint, has_option, remove_option, as_dict, set +117 | # airflow.configuration +118 | get, getboolean, getfloat, getint, has_option, remove_option, as_dict, set | ^^^^^^^^^^ AIR302 | = help: Use `airflow.configuration.conf.getboolean` instead -AIR302_names.py:117:18: AIR302 `airflow.configuration.getfloat` is removed in Airflow 3.0 +AIR302_names.py:118:18: AIR302 `airflow.configuration.getfloat` is removed in Airflow 3.0 | -116 | # airflow.configuration -117 | get, getboolean, getfloat, getint, has_option, remove_option, as_dict, set +117 | # airflow.configuration +118 | get, getboolean, getfloat, getint, has_option, remove_option, as_dict, set | ^^^^^^^^ AIR302 | = help: Use `airflow.configuration.conf.getfloat` instead -AIR302_names.py:117:28: AIR302 `airflow.configuration.getint` is removed in Airflow 3.0 +AIR302_names.py:118:28: AIR302 `airflow.configuration.getint` is removed in Airflow 3.0 | -116 | # airflow.configuration -117 | get, getboolean, getfloat, getint, has_option, remove_option, as_dict, set +117 | # airflow.configuration +118 | get, getboolean, getfloat, getint, has_option, remove_option, as_dict, set | ^^^^^^ AIR302 | = help: Use `airflow.configuration.conf.getint` instead -AIR302_names.py:117:36: AIR302 `airflow.configuration.has_option` is removed in Airflow 3.0 +AIR302_names.py:118:36: AIR302 `airflow.configuration.has_option` is removed in Airflow 3.0 | -116 | # airflow.configuration -117 | get, getboolean, getfloat, getint, has_option, remove_option, as_dict, set +117 | # airflow.configuration +118 | get, getboolean, getfloat, getint, has_option, remove_option, as_dict, set | ^^^^^^^^^^ AIR302 | = help: Use `airflow.configuration.conf.has_option` instead -AIR302_names.py:117:48: AIR302 `airflow.configuration.remove_option` is removed in Airflow 3.0 +AIR302_names.py:118:48: AIR302 `airflow.configuration.remove_option` is removed in Airflow 3.0 | -116 | # airflow.configuration -117 | get, getboolean, getfloat, getint, has_option, remove_option, as_dict, set +117 | # airflow.configuration +118 | get, getboolean, getfloat, getint, has_option, remove_option, as_dict, set | ^^^^^^^^^^^^^ AIR302 | = help: Use `airflow.configuration.conf.remove_option` instead -AIR302_names.py:117:63: AIR302 `airflow.configuration.as_dict` is removed in Airflow 3.0 +AIR302_names.py:118:63: AIR302 `airflow.configuration.as_dict` is removed in Airflow 3.0 | -116 | # airflow.configuration -117 | get, getboolean, getfloat, getint, has_option, remove_option, as_dict, set +117 | # airflow.configuration +118 | get, getboolean, getfloat, getint, has_option, remove_option, as_dict, set | ^^^^^^^ AIR302 | = help: Use `airflow.configuration.conf.as_dict` instead -AIR302_names.py:117:72: AIR302 `airflow.configuration.set` is removed in Airflow 3.0 +AIR302_names.py:118:72: AIR302 `airflow.configuration.set` is removed in Airflow 3.0 | -116 | # airflow.configuration -117 | get, getboolean, getfloat, getint, has_option, remove_option, as_dict, set +117 | # airflow.configuration +118 | get, getboolean, getfloat, getint, has_option, remove_option, as_dict, set | ^^^ AIR302 | = help: Use `airflow.configuration.conf.set` instead -AIR302_names.py:121:1: AIR302 `airflow.contrib.aws_athena_hook.AWSAthenaHook` is removed in Airflow 3.0; The whole `airflow.contrib` module has been removed. +AIR302_names.py:122:1: AIR302 `airflow.contrib.aws_athena_hook.AWSAthenaHook` is removed in Airflow 3.0; The whole `airflow.contrib` module has been removed. | -120 | # airflow.contrib.* -121 | AWSAthenaHook() +121 | # airflow.contrib.* +122 | AWSAthenaHook() | ^^^^^^^^^^^^^ AIR302 -122 | -123 | # airflow.datasets +123 | +124 | # airflow.datasets | -AIR302_names.py:124:1: AIR302 `airflow.datasets.Dataset` is removed in Airflow 3.0 +AIR302_names.py:125:1: AIR302 `airflow.datasets.Dataset` is removed in Airflow 3.0 | -123 | # airflow.datasets -124 | Dataset() +124 | # airflow.datasets +125 | Dataset() | ^^^^^^^ AIR302 -125 | DatasetAlias() -126 | DatasetAliasEvent() +126 | DatasetAlias() +127 | DatasetAliasEvent() | = help: Use `airflow.sdk.definitions.asset.Asset` instead -AIR302_names.py:125:1: AIR302 `airflow.datasets.DatasetAlias` is removed in Airflow 3.0 +AIR302_names.py:126:1: AIR302 `airflow.datasets.DatasetAlias` is removed in Airflow 3.0 | -123 | # airflow.datasets -124 | Dataset() -125 | DatasetAlias() +124 | # airflow.datasets +125 | Dataset() +126 | DatasetAlias() | ^^^^^^^^^^^^ AIR302 -126 | DatasetAliasEvent() -127 | DatasetAll() +127 | DatasetAliasEvent() +128 | DatasetAll() | = help: Use `airflow.sdk.definitions.asset.AssetAlias` instead -AIR302_names.py:126:1: AIR302 `airflow.datasets.DatasetAliasEvent` is removed in Airflow 3.0 +AIR302_names.py:127:1: AIR302 `airflow.datasets.DatasetAliasEvent` is removed in Airflow 3.0 | -124 | Dataset() -125 | DatasetAlias() -126 | DatasetAliasEvent() +125 | Dataset() +126 | DatasetAlias() +127 | DatasetAliasEvent() | ^^^^^^^^^^^^^^^^^ AIR302 -127 | DatasetAll() -128 | DatasetAny() +128 | DatasetAll() +129 | DatasetAny() | -AIR302_names.py:127:1: AIR302 `airflow.datasets.DatasetAll` is removed in Airflow 3.0 +AIR302_names.py:128:1: AIR302 `airflow.datasets.DatasetAll` is removed in Airflow 3.0 | -125 | DatasetAlias() -126 | DatasetAliasEvent() -127 | DatasetAll() +126 | DatasetAlias() +127 | DatasetAliasEvent() +128 | DatasetAll() | ^^^^^^^^^^ AIR302 -128 | DatasetAny() -129 | Metadata() +129 | DatasetAny() +130 | Metadata() | = help: Use `airflow.sdk.definitions.asset.AssetAll` instead -AIR302_names.py:128:1: AIR302 `airflow.datasets.DatasetAny` is removed in Airflow 3.0 +AIR302_names.py:129:1: AIR302 `airflow.datasets.DatasetAny` is removed in Airflow 3.0 | -126 | DatasetAliasEvent() -127 | DatasetAll() -128 | DatasetAny() +127 | DatasetAliasEvent() +128 | DatasetAll() +129 | DatasetAny() | ^^^^^^^^^^ AIR302 -129 | Metadata() -130 | expand_alias_to_datasets +130 | Metadata() +131 | expand_alias_to_datasets | = help: Use `airflow.sdk.definitions.asset.AssetAny` instead -AIR302_names.py:129:1: AIR302 `airflow.datasets.metadata.Metadata` is removed in Airflow 3.0 +AIR302_names.py:130:1: AIR302 `airflow.datasets.metadata.Metadata` is removed in Airflow 3.0 | -127 | DatasetAll() -128 | DatasetAny() -129 | Metadata() +128 | DatasetAll() +129 | DatasetAny() +130 | Metadata() | ^^^^^^^^ AIR302 -130 | expand_alias_to_datasets +131 | expand_alias_to_datasets | = help: Use `airflow.sdk.definitions.asset.metadata.Metadata` instead -AIR302_names.py:130:1: AIR302 `airflow.datasets.expand_alias_to_datasets` is removed in Airflow 3.0 +AIR302_names.py:131:1: AIR302 `airflow.datasets.expand_alias_to_datasets` is removed in Airflow 3.0 | -128 | DatasetAny() -129 | Metadata() -130 | expand_alias_to_datasets +129 | DatasetAny() +130 | Metadata() +131 | expand_alias_to_datasets | ^^^^^^^^^^^^^^^^^^^^^^^^ AIR302 -131 | -132 | # airflow.datasets.manager +132 | +133 | # airflow.datasets.manager | = help: Use `airflow.sdk.definitions.asset.expand_alias_to_assets` instead -AIR302_names.py:134:1: AIR302 `airflow.datasets.manager.dataset_manager` is removed in Airflow 3.0 +AIR302_names.py:135:1: AIR302 `airflow.datasets.manager.dataset_manager` is removed in Airflow 3.0 | -132 | # airflow.datasets.manager -133 | DatasetManager() -134 | dataset_manager +133 | # airflow.datasets.manager +134 | DatasetManager() +135 | dataset_manager | ^^^^^^^^^^^^^^^ AIR302 -135 | resolve_dataset_manager +136 | resolve_dataset_manager | = help: Use `airflow.assets.manager` instead -AIR302_names.py:135:1: AIR302 `airflow.datasets.manager.resolve_dataset_manager` is removed in Airflow 3.0 +AIR302_names.py:136:1: AIR302 `airflow.datasets.manager.resolve_dataset_manager` is removed in Airflow 3.0 | -133 | DatasetManager() -134 | dataset_manager -135 | resolve_dataset_manager +134 | DatasetManager() +135 | dataset_manager +136 | resolve_dataset_manager | ^^^^^^^^^^^^^^^^^^^^^^^ AIR302 -136 | -137 | # airflow.hooks +137 | +138 | # airflow.hooks | = help: Use `airflow.assets.resolve_asset_manager` instead -AIR302_names.py:138:1: AIR302 `airflow.hooks.base_hook.BaseHook` is removed in Airflow 3.0 +AIR302_names.py:139:1: AIR302 `airflow.hooks.base_hook.BaseHook` is removed in Airflow 3.0 | -137 | # airflow.hooks -138 | BaseHook() +138 | # airflow.hooks +139 | BaseHook() | ^^^^^^^^ AIR302 -139 | -140 | # airflow.lineage.hook +140 | +141 | # airflow.lineage.hook | = help: Use `airflow.hooks.base.BaseHook` instead -AIR302_names.py:141:1: AIR302 `airflow.lineage.hook.DatasetLineageInfo` is removed in Airflow 3.0 +AIR302_names.py:142:1: AIR302 `airflow.lineage.hook.DatasetLineageInfo` is removed in Airflow 3.0 | -140 | # airflow.lineage.hook -141 | DatasetLineageInfo() +141 | # airflow.lineage.hook +142 | DatasetLineageInfo() | ^^^^^^^^^^^^^^^^^^ AIR302 -142 | -143 | # airflow.listeners.spec.dataset +143 | +144 | # airflow.listeners.spec.dataset | = help: Use `airflow.lineage.hook.AssetLineageInfo` instead -AIR302_names.py:144:1: AIR302 `airflow.listeners.spec.dataset.on_dataset_changed` is removed in Airflow 3.0 +AIR302_names.py:145:1: AIR302 `airflow.listeners.spec.dataset.on_dataset_changed` is removed in Airflow 3.0 | -143 | # airflow.listeners.spec.dataset -144 | on_dataset_changed +144 | # airflow.listeners.spec.dataset +145 | on_dataset_changed | ^^^^^^^^^^^^^^^^^^ AIR302 -145 | on_dataset_created +146 | on_dataset_created | = help: Use `airflow.listeners.spec.asset.on_asset_changed` instead -AIR302_names.py:145:1: AIR302 `airflow.listeners.spec.dataset.on_dataset_created` is removed in Airflow 3.0 +AIR302_names.py:146:1: AIR302 `airflow.listeners.spec.dataset.on_dataset_created` is removed in Airflow 3.0 | -143 | # airflow.listeners.spec.dataset -144 | on_dataset_changed -145 | on_dataset_created +144 | # airflow.listeners.spec.dataset +145 | on_dataset_changed +146 | on_dataset_created | ^^^^^^^^^^^^^^^^^^ AIR302 -146 | -147 | # airflow.metrics.validators +147 | +148 | # airflow.metrics.validators | = help: Use `airflow.listeners.spec.asset.on_asset_created` instead -AIR302_names.py:148:1: AIR302 `airflow.metrics.validators.AllowListValidator` is removed in Airflow 3.0 +AIR302_names.py:149:1: AIR302 `airflow.metrics.validators.AllowListValidator` is removed in Airflow 3.0 | -147 | # airflow.metrics.validators -148 | AllowListValidator() +148 | # airflow.metrics.validators +149 | AllowListValidator() | ^^^^^^^^^^^^^^^^^^ AIR302 -149 | BlockListValidator() +150 | BlockListValidator() | = help: Use `airflow.metrics.validators.PatternAllowListValidator` instead -AIR302_names.py:149:1: AIR302 `airflow.metrics.validators.BlockListValidator` is removed in Airflow 3.0 +AIR302_names.py:150:1: AIR302 `airflow.metrics.validators.BlockListValidator` is removed in Airflow 3.0 | -147 | # airflow.metrics.validators -148 | AllowListValidator() -149 | BlockListValidator() +148 | # airflow.metrics.validators +149 | AllowListValidator() +150 | BlockListValidator() | ^^^^^^^^^^^^^^^^^^ AIR302 -150 | -151 | # airflow.operators.dummy +151 | +152 | # airflow.operators.dummy | = help: Use `airflow.metrics.validators.PatternBlockListValidator` instead -AIR302_names.py:152:1: AIR302 `airflow.operators.dummy.EmptyOperator` is removed in Airflow 3.0 +AIR302_names.py:153:1: AIR302 `airflow.operators.dummy.EmptyOperator` is removed in Airflow 3.0 | -151 | # airflow.operators.dummy -152 | EmptyOperator() +152 | # airflow.operators.dummy +153 | EmptyOperator() | ^^^^^^^^^^^^^ AIR302 -153 | DummyOperator() +154 | DummyOperator() | = help: Use `airflow.operators.empty.EmptyOperator` instead -AIR302_names.py:153:1: AIR302 `airflow.operators.dummy.DummyOperator` is removed in Airflow 3.0 +AIR302_names.py:154:1: AIR302 `airflow.operators.dummy.DummyOperator` is removed in Airflow 3.0 | -151 | # airflow.operators.dummy -152 | EmptyOperator() -153 | DummyOperator() +152 | # airflow.operators.dummy +153 | EmptyOperator() +154 | DummyOperator() | ^^^^^^^^^^^^^ AIR302 -154 | -155 | # airflow.operators.dummy_operator +155 | +156 | # airflow.operators.dummy_operator | = help: Use `airflow.operators.empty.EmptyOperator` instead -AIR302_names.py:156:16: AIR302 `airflow.operators.dummy_operator.EmptyOperator` is removed in Airflow 3.0 +AIR302_names.py:157:16: AIR302 `airflow.operators.dummy_operator.EmptyOperator` is removed in Airflow 3.0 | -155 | # airflow.operators.dummy_operator -156 | dummy_operator.EmptyOperator() +156 | # airflow.operators.dummy_operator +157 | dummy_operator.EmptyOperator() | ^^^^^^^^^^^^^ AIR302 -157 | dummy_operator.DummyOperator() +158 | dummy_operator.DummyOperator() | = help: Use `airflow.operators.empty.EmptyOperator` instead -AIR302_names.py:157:16: AIR302 `airflow.operators.dummy_operator.DummyOperator` is removed in Airflow 3.0 +AIR302_names.py:158:16: AIR302 `airflow.operators.dummy_operator.DummyOperator` is removed in Airflow 3.0 | -155 | # airflow.operators.dummy_operator -156 | dummy_operator.EmptyOperator() -157 | dummy_operator.DummyOperator() +156 | # airflow.operators.dummy_operator +157 | dummy_operator.EmptyOperator() +158 | dummy_operator.DummyOperator() | ^^^^^^^^^^^^^ AIR302 -158 | -159 | # airflow.operators.branch_operator +159 | +160 | # airflow.operators.branch_operator | = help: Use `airflow.operators.empty.EmptyOperator` instead -AIR302_names.py:160:1: AIR302 `airflow.operators.branch_operator.BaseBranchOperator` is removed in Airflow 3.0 +AIR302_names.py:161:1: AIR302 `airflow.operators.branch_operator.BaseBranchOperator` is removed in Airflow 3.0 | -159 | # airflow.operators.branch_operator -160 | BaseBranchOperator() +160 | # airflow.operators.branch_operator +161 | BaseBranchOperator() | ^^^^^^^^^^^^^^^^^^ AIR302 -161 | -162 | # airflow.operators.dagrun_operator +162 | +163 | # airflow.operators.dagrun_operator | = help: Use `airflow.operators.branch.BaseBranchOperator` instead -AIR302_names.py:163:1: AIR302 `airflow.operators.dagrun_operator.TriggerDagRunLink` is removed in Airflow 3.0 +AIR302_names.py:164:1: AIR302 `airflow.operators.dagrun_operator.TriggerDagRunLink` is removed in Airflow 3.0 | -162 | # airflow.operators.dagrun_operator -163 | TriggerDagRunLink() +163 | # airflow.operators.dagrun_operator +164 | TriggerDagRunLink() | ^^^^^^^^^^^^^^^^^ AIR302 -164 | TriggerDagRunOperator() +165 | TriggerDagRunOperator() | = help: Use `airflow.operators.trigger_dagrun.TriggerDagRunLink` instead -AIR302_names.py:164:1: AIR302 `airflow.operators.dagrun_operator.TriggerDagRunOperator` is removed in Airflow 3.0 +AIR302_names.py:165:1: AIR302 `airflow.operators.dagrun_operator.TriggerDagRunOperator` is removed in Airflow 3.0 | -162 | # airflow.operators.dagrun_operator -163 | TriggerDagRunLink() -164 | TriggerDagRunOperator() +163 | # airflow.operators.dagrun_operator +164 | TriggerDagRunLink() +165 | TriggerDagRunOperator() | ^^^^^^^^^^^^^^^^^^^^^ AIR302 -165 | -166 | # airflow.operators.email_operator +166 | +167 | # airflow.operators.email_operator | = help: Use `airflow.operators.trigger_dagrun.TriggerDagRunOperator` instead -AIR302_names.py:167:1: AIR302 `airflow.operators.email_operator.EmailOperator` is removed in Airflow 3.0 +AIR302_names.py:168:1: AIR302 `airflow.operators.email_operator.EmailOperator` is removed in Airflow 3.0 | -166 | # airflow.operators.email_operator -167 | EmailOperator() +167 | # airflow.operators.email_operator +168 | EmailOperator() | ^^^^^^^^^^^^^ AIR302 -168 | -169 | # airflow.operators.latest_only_operator +169 | +170 | # airflow.operators.latest_only_operator | = help: Use `airflow.operators.email.EmailOperator` instead -AIR302_names.py:170:1: AIR302 `airflow.operators.latest_only_operator.LatestOnlyOperator` is removed in Airflow 3.0 +AIR302_names.py:171:1: AIR302 `airflow.operators.latest_only_operator.LatestOnlyOperator` is removed in Airflow 3.0 | -169 | # airflow.operators.latest_only_operator -170 | LatestOnlyOperator() +170 | # airflow.operators.latest_only_operator +171 | LatestOnlyOperator() | ^^^^^^^^^^^^^^^^^^ AIR302 -171 | -172 | # airflow.operators.python_operator +172 | +173 | # airflow.operators.python_operator | = help: Use `airflow.operators.latest_only.LatestOnlyOperator` instead -AIR302_names.py:173:1: AIR302 `airflow.operators.python_operator.BranchPythonOperator` is removed in Airflow 3.0 +AIR302_names.py:174:1: AIR302 `airflow.operators.python_operator.BranchPythonOperator` is removed in Airflow 3.0 | -172 | # airflow.operators.python_operator -173 | BranchPythonOperator() +173 | # airflow.operators.python_operator +174 | BranchPythonOperator() | ^^^^^^^^^^^^^^^^^^^^ AIR302 -174 | PythonOperator() -175 | PythonVirtualenvOperator() +175 | PythonOperator() +176 | PythonVirtualenvOperator() | = help: Use `airflow.operators.python.BranchPythonOperator` instead -AIR302_names.py:174:1: AIR302 `airflow.operators.python_operator.PythonOperator` is removed in Airflow 3.0 +AIR302_names.py:175:1: AIR302 `airflow.operators.python_operator.PythonOperator` is removed in Airflow 3.0 | -172 | # airflow.operators.python_operator -173 | BranchPythonOperator() -174 | PythonOperator() +173 | # airflow.operators.python_operator +174 | BranchPythonOperator() +175 | PythonOperator() | ^^^^^^^^^^^^^^ AIR302 -175 | PythonVirtualenvOperator() -176 | ShortCircuitOperator() +176 | PythonVirtualenvOperator() +177 | ShortCircuitOperator() | = help: Use `airflow.operators.python.PythonOperator` instead -AIR302_names.py:175:1: AIR302 `airflow.operators.python_operator.PythonVirtualenvOperator` is removed in Airflow 3.0 +AIR302_names.py:176:1: AIR302 `airflow.operators.python_operator.PythonVirtualenvOperator` is removed in Airflow 3.0 | -173 | BranchPythonOperator() -174 | PythonOperator() -175 | PythonVirtualenvOperator() +174 | BranchPythonOperator() +175 | PythonOperator() +176 | PythonVirtualenvOperator() | ^^^^^^^^^^^^^^^^^^^^^^^^ AIR302 -176 | ShortCircuitOperator() +177 | ShortCircuitOperator() | = help: Use `airflow.operators.python.PythonVirtualenvOperator` instead -AIR302_names.py:176:1: AIR302 `airflow.operators.python_operator.ShortCircuitOperator` is removed in Airflow 3.0 +AIR302_names.py:177:1: AIR302 `airflow.operators.python_operator.ShortCircuitOperator` is removed in Airflow 3.0 | -174 | PythonOperator() -175 | PythonVirtualenvOperator() -176 | ShortCircuitOperator() +175 | PythonOperator() +176 | PythonVirtualenvOperator() +177 | ShortCircuitOperator() | ^^^^^^^^^^^^^^^^^^^^ AIR302 -177 | -178 | # airflow.operators.subdag.* +178 | +179 | # airflow.operators.subdag.* | = help: Use `airflow.operators.python.ShortCircuitOperator` instead -AIR302_names.py:179:1: AIR302 `airflow.operators.subdag.SubDagOperator` is removed in Airflow 3.0; The whole `airflow.subdag` module has been removed. +AIR302_names.py:180:1: AIR302 `airflow.operators.subdag.SubDagOperator` is removed in Airflow 3.0; The whole `airflow.subdag` module has been removed. | -178 | # airflow.operators.subdag.* -179 | SubDagOperator() +179 | # airflow.operators.subdag.* +180 | SubDagOperator() | ^^^^^^^^^^^^^^ AIR302 -180 | -181 | # airflow.providers.amazon +181 | +182 | # airflow.providers.amazon | -AIR302_names.py:182:13: AIR302 `airflow.providers.amazon.auth_manager.avp.entities.AvpEntities.DATASET` is removed in Airflow 3.0 +AIR302_names.py:183:13: AIR302 `airflow.providers.amazon.auth_manager.avp.entities.AvpEntities.DATASET` is removed in Airflow 3.0 | -181 | # airflow.providers.amazon -182 | AvpEntities.DATASET +182 | # airflow.providers.amazon +183 | AvpEntities.DATASET | ^^^^^^^ AIR302 -183 | s3.create_dataset -184 | s3.convert_dataset_to_openlineage +184 | s3.create_dataset +185 | s3.convert_dataset_to_openlineage | = help: Use `airflow.providers.amazon.auth_manager.avp.entities.AvpEntities.ASSET` instead -AIR302_names.py:183:4: AIR302 `airflow.providers.amazon.aws.datasets.s3.create_dataset` is removed in Airflow 3.0 +AIR302_names.py:184:4: AIR302 `airflow.providers.amazon.aws.datasets.s3.create_dataset` is removed in Airflow 3.0 | -181 | # airflow.providers.amazon -182 | AvpEntities.DATASET -183 | s3.create_dataset +182 | # airflow.providers.amazon +183 | AvpEntities.DATASET +184 | s3.create_dataset | ^^^^^^^^^^^^^^ AIR302 -184 | s3.convert_dataset_to_openlineage -185 | s3.sanitize_uri +185 | s3.convert_dataset_to_openlineage +186 | s3.sanitize_uri | = help: Use `airflow.providers.amazon.aws.assets.s3.create_asset` instead -AIR302_names.py:184:4: AIR302 `airflow.providers.amazon.aws.datasets.s3.convert_dataset_to_openlineage` is removed in Airflow 3.0 +AIR302_names.py:185:4: AIR302 `airflow.providers.amazon.aws.datasets.s3.convert_dataset_to_openlineage` is removed in Airflow 3.0 | -182 | AvpEntities.DATASET -183 | s3.create_dataset -184 | s3.convert_dataset_to_openlineage +183 | AvpEntities.DATASET +184 | s3.create_dataset +185 | s3.convert_dataset_to_openlineage | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AIR302 -185 | s3.sanitize_uri +186 | s3.sanitize_uri | = help: Use `airflow.providers.amazon.aws.assets.s3.convert_asset_to_openlineage` instead -AIR302_names.py:185:4: AIR302 `airflow.providers.amazon.aws.datasets.s3.sanitize_uri` is removed in Airflow 3.0 +AIR302_names.py:186:4: AIR302 `airflow.providers.amazon.aws.datasets.s3.sanitize_uri` is removed in Airflow 3.0 | -183 | s3.create_dataset -184 | s3.convert_dataset_to_openlineage -185 | s3.sanitize_uri +184 | s3.create_dataset +185 | s3.convert_dataset_to_openlineage +186 | s3.sanitize_uri | ^^^^^^^^^^^^ AIR302 -186 | -187 | # airflow.providers.common.io +187 | +188 | # airflow.providers.common.io | = help: Use `airflow.providers.amazon.aws.assets.s3.sanitize_uri` instead -AIR302_names.py:188:16: AIR302 `airflow.providers.common.io.datasets.file.convert_dataset_to_openlineage` is removed in Airflow 3.0 +AIR302_names.py:189:16: AIR302 `airflow.providers.common.io.datasets.file.convert_dataset_to_openlineage` is removed in Airflow 3.0 | -187 | # airflow.providers.common.io -188 | common_io_file.convert_dataset_to_openlineage +188 | # airflow.providers.common.io +189 | common_io_file.convert_dataset_to_openlineage | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AIR302 -189 | common_io_file.create_dataset -190 | common_io_file.sanitize_uri +190 | common_io_file.create_dataset +191 | common_io_file.sanitize_uri | = help: Use `airflow.providers.common.io.assets.file.convert_asset_to_openlineage` instead -AIR302_names.py:189:16: AIR302 `airflow.providers.common.io.datasets.file.create_dataset` is removed in Airflow 3.0 +AIR302_names.py:190:16: AIR302 `airflow.providers.common.io.datasets.file.create_dataset` is removed in Airflow 3.0 | -187 | # airflow.providers.common.io -188 | common_io_file.convert_dataset_to_openlineage -189 | common_io_file.create_dataset +188 | # airflow.providers.common.io +189 | common_io_file.convert_dataset_to_openlineage +190 | common_io_file.create_dataset | ^^^^^^^^^^^^^^ AIR302 -190 | common_io_file.sanitize_uri +191 | common_io_file.sanitize_uri | = help: Use `airflow.providers.common.io.assets.file.create_asset` instead -AIR302_names.py:190:16: AIR302 `airflow.providers.common.io.datasets.file.sanitize_uri` is removed in Airflow 3.0 +AIR302_names.py:191:16: AIR302 `airflow.providers.common.io.datasets.file.sanitize_uri` is removed in Airflow 3.0 | -188 | common_io_file.convert_dataset_to_openlineage -189 | common_io_file.create_dataset -190 | common_io_file.sanitize_uri +189 | common_io_file.convert_dataset_to_openlineage +190 | common_io_file.create_dataset +191 | common_io_file.sanitize_uri | ^^^^^^^^^^^^ AIR302 -191 | -192 | # airflow.providers.fab +192 | +193 | # airflow.providers.fab | = help: Use `airflow.providers.common.io.assets.file.sanitize_uri` instead -AIR302_names.py:193:18: AIR302 `airflow.providers.fab.auth_manager.fab_auth_manager.is_authorized_dataset` is removed in Airflow 3.0 +AIR302_names.py:194:18: AIR302 `airflow.providers.fab.auth_manager.fab_auth_manager.is_authorized_dataset` is removed in Airflow 3.0 | -192 | # airflow.providers.fab -193 | fab_auth_manager.is_authorized_dataset +193 | # airflow.providers.fab +194 | fab_auth_manager.is_authorized_dataset | ^^^^^^^^^^^^^^^^^^^^^ AIR302 -194 | -195 | # airflow.providers.google +195 | +196 | # airflow.providers.google | = help: Use `airflow.providers.fab.auth_manager.fab_auth_manager.is_authorized_asset` instead -AIR302_names.py:198:5: AIR302 `airflow.providers.google.datasets.gcs.create_dataset` is removed in Airflow 3.0 +AIR302_names.py:199:5: AIR302 `airflow.providers.google.datasets.gcs.create_dataset` is removed in Airflow 3.0 | -196 | bigquery.sanitize_uri -197 | -198 | gcs.create_dataset +197 | bigquery.sanitize_uri +198 | +199 | gcs.create_dataset | ^^^^^^^^^^^^^^ AIR302 -199 | gcs.sanitize_uri -200 | gcs.convert_dataset_to_openlineage +200 | gcs.sanitize_uri +201 | gcs.convert_dataset_to_openlineage | = help: Use `airflow.providers.google.assets.gcs.create_asset` instead -AIR302_names.py:199:5: AIR302 `airflow.providers.google.datasets.gcs.sanitize_uri` is removed in Airflow 3.0 +AIR302_names.py:200:5: AIR302 `airflow.providers.google.datasets.gcs.sanitize_uri` is removed in Airflow 3.0 | -198 | gcs.create_dataset -199 | gcs.sanitize_uri +199 | gcs.create_dataset +200 | gcs.sanitize_uri | ^^^^^^^^^^^^ AIR302 -200 | gcs.convert_dataset_to_openlineage +201 | gcs.convert_dataset_to_openlineage | = help: Use `airflow.providers.google.assets.gcs.sanitize_uri` instead -AIR302_names.py:200:5: AIR302 `airflow.providers.google.datasets.gcs.convert_dataset_to_openlineage` is removed in Airflow 3.0 +AIR302_names.py:201:5: AIR302 `airflow.providers.google.datasets.gcs.convert_dataset_to_openlineage` is removed in Airflow 3.0 | -198 | gcs.create_dataset -199 | gcs.sanitize_uri -200 | gcs.convert_dataset_to_openlineage +199 | gcs.create_dataset +200 | gcs.sanitize_uri +201 | gcs.convert_dataset_to_openlineage | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AIR302 -201 | -202 | # airflow.providers.mysql +202 | +203 | # airflow.providers.mysql | = help: Use `airflow.providers.google.assets.gcs.convert_asset_to_openlineage` instead -AIR302_names.py:203:7: AIR302 `airflow.providers.mysql.datasets.mysql.sanitize_uri` is removed in Airflow 3.0 +AIR302_names.py:204:7: AIR302 `airflow.providers.mysql.datasets.mysql.sanitize_uri` is removed in Airflow 3.0 | -202 | # airflow.providers.mysql -203 | mysql.sanitize_uri +203 | # airflow.providers.mysql +204 | mysql.sanitize_uri | ^^^^^^^^^^^^ AIR302 -204 | -205 | # airflow.providers.openlineage +205 | +206 | # airflow.providers.openlineage | = help: Use `airflow.providers.mysql.assets.mysql.sanitize_uri` instead -AIR302_names.py:206:1: AIR302 `airflow.providers.openlineage.utils.utils.DatasetInfo` is removed in Airflow 3.0 +AIR302_names.py:207:1: AIR302 `airflow.providers.openlineage.utils.utils.DatasetInfo` is removed in Airflow 3.0 | -205 | # airflow.providers.openlineage -206 | DatasetInfo() +206 | # airflow.providers.openlineage +207 | DatasetInfo() | ^^^^^^^^^^^ AIR302 -207 | translate_airflow_dataset +208 | translate_airflow_dataset | = help: Use `airflow.providers.openlineage.utils.utils.AssetInfo` instead -AIR302_names.py:207:1: AIR302 `airflow.providers.openlineage.utils.utils.translate_airflow_dataset` is removed in Airflow 3.0 +AIR302_names.py:208:1: AIR302 `airflow.providers.openlineage.utils.utils.translate_airflow_dataset` is removed in Airflow 3.0 | -205 | # airflow.providers.openlineage -206 | DatasetInfo() -207 | translate_airflow_dataset +206 | # airflow.providers.openlineage +207 | DatasetInfo() +208 | translate_airflow_dataset | ^^^^^^^^^^^^^^^^^^^^^^^^^ AIR302 -208 | -209 | # airflow.providers.postgres +209 | +210 | # airflow.providers.postgres | = help: Use `airflow.providers.openlineage.utils.utils.translate_airflow_asset` instead -AIR302_names.py:210:10: AIR302 `airflow.providers.postgres.datasets.postgres.sanitize_uri` is removed in Airflow 3.0 +AIR302_names.py:211:10: AIR302 `airflow.providers.postgres.datasets.postgres.sanitize_uri` is removed in Airflow 3.0 | -209 | # airflow.providers.postgres -210 | postgres.sanitize_uri +210 | # airflow.providers.postgres +211 | postgres.sanitize_uri | ^^^^^^^^^^^^ AIR302 -211 | -212 | # airflow.providers.trino +212 | +213 | # airflow.providers.trino | = help: Use `airflow.providers.postgres.assets.postgres.sanitize_uri` instead -AIR302_names.py:213:7: AIR302 `airflow.providers.trino.datasets.trino.sanitize_uri` is removed in Airflow 3.0 +AIR302_names.py:214:7: AIR302 `airflow.providers.trino.datasets.trino.sanitize_uri` is removed in Airflow 3.0 | -212 | # airflow.providers.trino -213 | trino.sanitize_uri +213 | # airflow.providers.trino +214 | trino.sanitize_uri | ^^^^^^^^^^^^ AIR302 -214 | -215 | # airflow.secrets +215 | +216 | # airflow.secrets | = help: Use `airflow.providers.trino.assets.trino.sanitize_uri` instead -AIR302_names.py:218:1: AIR302 `airflow.secrets.local_filesystem.load_connections` is removed in Airflow 3.0 +AIR302_names.py:219:1: AIR302 `airflow.secrets.local_filesystem.load_connections` is removed in Airflow 3.0 | -216 | # get_connection -217 | LocalFilesystemBackend() -218 | load_connections +217 | # get_connection +218 | LocalFilesystemBackend() +219 | load_connections | ^^^^^^^^^^^^^^^^ AIR302 -219 | -220 | # airflow.security.permissions +220 | +221 | # airflow.security.permissions | = help: Use `airflow.secrets.local_filesystem.load_connections_dict` instead -AIR302_names.py:221:1: AIR302 `airflow.security.permissions.RESOURCE_DATASET` is removed in Airflow 3.0 +AIR302_names.py:222:1: AIR302 `airflow.security.permissions.RESOURCE_DATASET` is removed in Airflow 3.0 | -220 | # airflow.security.permissions -221 | RESOURCE_DATASET +221 | # airflow.security.permissions +222 | RESOURCE_DATASET | ^^^^^^^^^^^^^^^^ AIR302 -222 | -223 | # airflow.sensors.base_sensor_operator +223 | +224 | # airflow.sensors.base_sensor_operator | = help: Use `airflow.security.permissions.RESOURCE_ASSET` instead -AIR302_names.py:224:1: AIR302 `airflow.sensors.base_sensor_operator.BaseSensorOperator` is removed in Airflow 3.0 +AIR302_names.py:225:1: AIR302 `airflow.sensors.base_sensor_operator.BaseSensorOperator` is removed in Airflow 3.0 | -223 | # airflow.sensors.base_sensor_operator -224 | BaseSensorOperator() +224 | # airflow.sensors.base_sensor_operator +225 | BaseSensorOperator() | ^^^^^^^^^^^^^^^^^^ AIR302 -225 | -226 | # airflow.sensors.date_time_sensor +226 | +227 | # airflow.sensors.date_time_sensor | = help: Use `airflow.sensors.base.BaseSensorOperator` instead -AIR302_names.py:227:1: AIR302 `airflow.sensors.date_time_sensor.DateTimeSensor` is removed in Airflow 3.0 +AIR302_names.py:228:1: AIR302 `airflow.sensors.date_time_sensor.DateTimeSensor` is removed in Airflow 3.0 | -226 | # airflow.sensors.date_time_sensor -227 | DateTimeSensor() +227 | # airflow.sensors.date_time_sensor +228 | DateTimeSensor() | ^^^^^^^^^^^^^^ AIR302 -228 | -229 | # airflow.sensors.external_task +229 | +230 | # airflow.sensors.external_task | = help: Use `airflow.sensors.date_time.DateTimeSensor` instead -AIR302_names.py:230:1: AIR302 `airflow.sensors.external_task_sensor.ExternalTaskSensorLink` is removed in Airflow 3.0 +AIR302_names.py:231:1: AIR302 `airflow.sensors.external_task_sensor.ExternalTaskSensorLink` is removed in Airflow 3.0 | -229 | # airflow.sensors.external_task -230 | ExternalTaskSensorLink() +230 | # airflow.sensors.external_task +231 | ExternalTaskSensorLink() | ^^^^^^^^^^^^^^^^^^^^^^ AIR302 -231 | ExternalTaskMarker() -232 | ExternalTaskSensor() +232 | ExternalTaskMarker() +233 | ExternalTaskSensor() | = help: Use `airflow.sensors.external_task.ExternalDagLink` instead -AIR302_names.py:231:1: AIR302 `airflow.sensors.external_task_sensor.ExternalTaskMarker` is removed in Airflow 3.0 +AIR302_names.py:232:1: AIR302 `airflow.sensors.external_task_sensor.ExternalTaskMarker` is removed in Airflow 3.0 | -229 | # airflow.sensors.external_task -230 | ExternalTaskSensorLink() -231 | ExternalTaskMarker() +230 | # airflow.sensors.external_task +231 | ExternalTaskSensorLink() +232 | ExternalTaskMarker() | ^^^^^^^^^^^^^^^^^^ AIR302 -232 | ExternalTaskSensor() +233 | ExternalTaskSensor() | = help: Use `airflow.sensors.external_task.ExternalTaskMarker` instead -AIR302_names.py:232:1: AIR302 `airflow.sensors.external_task_sensor.ExternalTaskSensor` is removed in Airflow 3.0 +AIR302_names.py:233:1: AIR302 `airflow.sensors.external_task_sensor.ExternalTaskSensor` is removed in Airflow 3.0 | -230 | ExternalTaskSensorLink() -231 | ExternalTaskMarker() -232 | ExternalTaskSensor() +231 | ExternalTaskSensorLink() +232 | ExternalTaskMarker() +233 | ExternalTaskSensor() | ^^^^^^^^^^^^^^^^^^ AIR302 -233 | -234 | # airflow.sensors.external_task_sensor +234 | +235 | # airflow.sensors.external_task_sensor | = help: Use `airflow.sensors.external_task.ExternalTaskSensor` instead -AIR302_names.py:240:1: AIR302 `airflow.sensors.time_delta_sensor.TimeDeltaSensor` is removed in Airflow 3.0 +AIR302_names.py:241:1: AIR302 `airflow.sensors.time_delta_sensor.TimeDeltaSensor` is removed in Airflow 3.0 | -239 | # airflow.sensors.time_delta_sensor -240 | TimeDeltaSensor() +240 | # airflow.sensors.time_delta_sensor +241 | TimeDeltaSensor() | ^^^^^^^^^^^^^^^ AIR302 -241 | -242 | # airflow.timetables +242 | +243 | # airflow.timetables | = help: Use `airflow.sensors.time_delta.TimeDeltaSensor` instead -AIR302_names.py:243:1: AIR302 `airflow.timetables.datasets.DatasetOrTimeSchedule` is removed in Airflow 3.0 +AIR302_names.py:244:1: AIR302 `airflow.timetables.datasets.DatasetOrTimeSchedule` is removed in Airflow 3.0 | -242 | # airflow.timetables -243 | DatasetOrTimeSchedule() +243 | # airflow.timetables +244 | DatasetOrTimeSchedule() | ^^^^^^^^^^^^^^^^^^^^^ AIR302 -244 | DatasetTriggeredTimetable() +245 | DatasetTriggeredTimetable() | = help: Use `airflow.timetables.assets.AssetOrTimeSchedule` instead -AIR302_names.py:244:1: AIR302 `airflow.timetables.simple.DatasetTriggeredTimetable` is removed in Airflow 3.0 +AIR302_names.py:245:1: AIR302 `airflow.timetables.simple.DatasetTriggeredTimetable` is removed in Airflow 3.0 | -242 | # airflow.timetables -243 | DatasetOrTimeSchedule() -244 | DatasetTriggeredTimetable() +243 | # airflow.timetables +244 | DatasetOrTimeSchedule() +245 | DatasetTriggeredTimetable() | ^^^^^^^^^^^^^^^^^^^^^^^^^ AIR302 -245 | -246 | # airflow.triggers.external_task +246 | +247 | # airflow.triggers.external_task | = help: Use `airflow.timetables.simple.AssetTriggeredTimetable` instead -AIR302_names.py:247:1: AIR302 `airflow.triggers.external_task.TaskStateTrigger` is removed in Airflow 3.0 +AIR302_names.py:248:1: AIR302 `airflow.triggers.external_task.TaskStateTrigger` is removed in Airflow 3.0 | -246 | # airflow.triggers.external_task -247 | TaskStateTrigger() +247 | # airflow.triggers.external_task +248 | TaskStateTrigger() | ^^^^^^^^^^^^^^^^ AIR302 -248 | -249 | # airflow.utils.date +249 | +250 | # airflow.utils.date | -AIR302_names.py:250:7: AIR302 `airflow.utils.dates.date_range` is removed in Airflow 3.0 +AIR302_names.py:251:7: AIR302 `airflow.utils.dates.date_range` is removed in Airflow 3.0 | -249 | # airflow.utils.date -250 | dates.date_range +250 | # airflow.utils.date +251 | dates.date_range | ^^^^^^^^^^ AIR302 -251 | dates.days_ago +252 | dates.days_ago | -AIR302_names.py:251:7: AIR302 `airflow.utils.dates.days_ago` is removed in Airflow 3.0 +AIR302_names.py:252:7: AIR302 `airflow.utils.dates.days_ago` is removed in Airflow 3.0 | -249 | # airflow.utils.date -250 | dates.date_range -251 | dates.days_ago +250 | # airflow.utils.date +251 | dates.date_range +252 | dates.days_ago | ^^^^^^^^ AIR302 -252 | -253 | date_range +253 | +254 | date_range | = help: Use `pendulum.today('UTC').add(days=-N, ...)` instead -AIR302_names.py:253:1: AIR302 `airflow.utils.dates.date_range` is removed in Airflow 3.0 +AIR302_names.py:254:1: AIR302 `airflow.utils.dates.date_range` is removed in Airflow 3.0 | -251 | dates.days_ago -252 | -253 | date_range +252 | dates.days_ago +253 | +254 | date_range | ^^^^^^^^^^ AIR302 -254 | days_ago -255 | infer_time_unit +255 | days_ago +256 | infer_time_unit | -AIR302_names.py:254:1: AIR302 `airflow.utils.dates.days_ago` is removed in Airflow 3.0 +AIR302_names.py:255:1: AIR302 `airflow.utils.dates.days_ago` is removed in Airflow 3.0 | -253 | date_range -254 | days_ago +254 | date_range +255 | days_ago | ^^^^^^^^ AIR302 -255 | infer_time_unit -256 | parse_execution_date +256 | infer_time_unit +257 | parse_execution_date | = help: Use `pendulum.today('UTC').add(days=-N, ...)` instead -AIR302_names.py:255:1: AIR302 `airflow.utils.dates.infer_time_unit` is removed in Airflow 3.0 +AIR302_names.py:256:1: AIR302 `airflow.utils.dates.infer_time_unit` is removed in Airflow 3.0 | -253 | date_range -254 | days_ago -255 | infer_time_unit +254 | date_range +255 | days_ago +256 | infer_time_unit | ^^^^^^^^^^^^^^^ AIR302 -256 | parse_execution_date -257 | round_time +257 | parse_execution_date +258 | round_time | -AIR302_names.py:256:1: AIR302 `airflow.utils.dates.parse_execution_date` is removed in Airflow 3.0 +AIR302_names.py:257:1: AIR302 `airflow.utils.dates.parse_execution_date` is removed in Airflow 3.0 | -254 | days_ago -255 | infer_time_unit -256 | parse_execution_date +255 | days_ago +256 | infer_time_unit +257 | parse_execution_date | ^^^^^^^^^^^^^^^^^^^^ AIR302 -257 | round_time -258 | scale_time_units +258 | round_time +259 | scale_time_units | -AIR302_names.py:257:1: AIR302 `airflow.utils.dates.round_time` is removed in Airflow 3.0 +AIR302_names.py:258:1: AIR302 `airflow.utils.dates.round_time` is removed in Airflow 3.0 | -255 | infer_time_unit -256 | parse_execution_date -257 | round_time +256 | infer_time_unit +257 | parse_execution_date +258 | round_time | ^^^^^^^^^^ AIR302 -258 | scale_time_units +259 | scale_time_units | -AIR302_names.py:258:1: AIR302 `airflow.utils.dates.scale_time_units` is removed in Airflow 3.0 +AIR302_names.py:259:1: AIR302 `airflow.utils.dates.scale_time_units` is removed in Airflow 3.0 | -256 | parse_execution_date -257 | round_time -258 | scale_time_units +257 | parse_execution_date +258 | round_time +259 | scale_time_units | ^^^^^^^^^^^^^^^^ AIR302 -259 | -260 | # This one was not deprecated. +260 | +261 | # This one was not deprecated. | -AIR302_names.py:265:1: AIR302 `airflow.utils.dag_cycle_tester.test_cycle` is removed in Airflow 3.0 +AIR302_names.py:266:1: AIR302 `airflow.utils.dag_cycle_tester.test_cycle` is removed in Airflow 3.0 | -264 | # airflow.utils.dag_cycle_tester -265 | test_cycle +265 | # airflow.utils.dag_cycle_tester +266 | test_cycle | ^^^^^^^^^^ AIR302 -266 | -267 | # airflow.utils.dag_parsing_context +267 | +268 | # airflow.utils.dag_parsing_context | -AIR302_names.py:268:1: AIR302 `airflow.utils.dag_parsing_context.get_parsing_context` is removed in Airflow 3.0 +AIR302_names.py:269:1: AIR302 `airflow.utils.dag_parsing_context.get_parsing_context` is removed in Airflow 3.0 | -267 | # airflow.utils.dag_parsing_context -268 | get_parsing_context +268 | # airflow.utils.dag_parsing_context +269 | get_parsing_context | ^^^^^^^^^^^^^^^^^^^ AIR302 -269 | -270 | # airflow.utils.decorators +270 | +271 | # airflow.utils.decorators | = help: Use `airflow.sdk.get_parsing_context` instead -AIR302_names.py:271:1: AIR302 `airflow.utils.decorators.apply_defaults` is removed in Airflow 3.0; `apply_defaults` is now unconditionally done and can be safely removed. +AIR302_names.py:272:1: AIR302 `airflow.utils.decorators.apply_defaults` is removed in Airflow 3.0; `apply_defaults` is now unconditionally done and can be safely removed. | -270 | # airflow.utils.decorators -271 | apply_defaults +271 | # airflow.utils.decorators +272 | apply_defaults | ^^^^^^^^^^^^^^ AIR302 -272 | -273 | # airflow.utils.file +273 | +274 | # airflow.utils.file | -AIR302_names.py:275:1: AIR302 `airflow.utils.file.mkdirs` is removed in Airflow 3.0 +AIR302_names.py:276:1: AIR302 `airflow.utils.file.mkdirs` is removed in Airflow 3.0 | -273 | # airflow.utils.file -274 | TemporaryDirector() -275 | mkdirs +274 | # airflow.utils.file +275 | TemporaryDirector() +276 | mkdirs | ^^^^^^ AIR302 -276 | -277 | # airflow.utils.helpers +277 | +278 | # airflow.utils.helpers | = help: Use `pendulum.today('UTC').add(days=-N, ...)` instead -AIR302_names.py:278:1: AIR302 `airflow.utils.helpers.chain` is removed in Airflow 3.0 +AIR302_names.py:279:1: AIR302 `airflow.utils.helpers.chain` is removed in Airflow 3.0 | -277 | # airflow.utils.helpers -278 | chain +278 | # airflow.utils.helpers +279 | chain | ^^^^^ AIR302 -279 | cross_downstream +280 | cross_downstream | - = help: Use `airflow.models.baseoperator.chain` instead + = help: Use `airflow.sdk.chain` instead -AIR302_names.py:279:1: AIR302 `airflow.utils.helpers.cross_downstream` is removed in Airflow 3.0 +AIR302_names.py:280:1: AIR302 `airflow.utils.helpers.cross_downstream` is removed in Airflow 3.0 | -277 | # airflow.utils.helpers -278 | chain -279 | cross_downstream +278 | # airflow.utils.helpers +279 | chain +280 | cross_downstream | ^^^^^^^^^^^^^^^^ AIR302 -280 | -281 | # airflow.utils.state +281 | +282 | # airflow.utils.state | - = help: Use `airflow.models.baseoperator.cross_downstream` instead + = help: Use `airflow.sdk.cross_downstream` instead -AIR302_names.py:282:1: AIR302 `airflow.utils.state.SHUTDOWN` is removed in Airflow 3.0 +AIR302_names.py:283:1: AIR302 `airflow.utils.state.SHUTDOWN` is removed in Airflow 3.0 | -281 | # airflow.utils.state -282 | SHUTDOWN +282 | # airflow.utils.state +283 | SHUTDOWN | ^^^^^^^^ AIR302 -283 | terminating_states +284 | terminating_states | -AIR302_names.py:283:1: AIR302 `airflow.utils.state.terminating_states` is removed in Airflow 3.0 +AIR302_names.py:284:1: AIR302 `airflow.utils.state.terminating_states` is removed in Airflow 3.0 | -281 | # airflow.utils.state -282 | SHUTDOWN -283 | terminating_states +282 | # airflow.utils.state +283 | SHUTDOWN +284 | terminating_states | ^^^^^^^^^^^^^^^^^^ AIR302 -284 | -285 | # airflow.utils.trigger_rule +285 | +286 | # airflow.utils.trigger_rule | -AIR302_names.py:286:13: AIR302 `airflow.utils.trigger_rule.TriggerRule.DUMMY` is removed in Airflow 3.0 +AIR302_names.py:287:13: AIR302 `airflow.utils.trigger_rule.TriggerRule.DUMMY` is removed in Airflow 3.0 | -285 | # airflow.utils.trigger_rule -286 | TriggerRule.DUMMY +286 | # airflow.utils.trigger_rule +287 | TriggerRule.DUMMY | ^^^^^ AIR302 -287 | TriggerRule.NONE_FAILED_OR_SKIPPED +288 | TriggerRule.NONE_FAILED_OR_SKIPPED | -AIR302_names.py:287:13: AIR302 `airflow.utils.trigger_rule.TriggerRule.NONE_FAILED_OR_SKIPPED` is removed in Airflow 3.0 +AIR302_names.py:288:13: AIR302 `airflow.utils.trigger_rule.TriggerRule.NONE_FAILED_OR_SKIPPED` is removed in Airflow 3.0 | -285 | # airflow.utils.trigger_rule -286 | TriggerRule.DUMMY -287 | TriggerRule.NONE_FAILED_OR_SKIPPED +286 | # airflow.utils.trigger_rule +287 | TriggerRule.DUMMY +288 | TriggerRule.NONE_FAILED_OR_SKIPPED | ^^^^^^^^^^^^^^^^^^^^^^ AIR302 -288 | -289 | # airflow.www.auth +289 | +290 | # airflow.www.auth | -AIR302_names.py:290:1: AIR302 `airflow.www.auth.has_access` is removed in Airflow 3.0 +AIR302_names.py:291:1: AIR302 `airflow.www.auth.has_access` is removed in Airflow 3.0 | -289 | # airflow.www.auth -290 | has_access +290 | # airflow.www.auth +291 | has_access | ^^^^^^^^^^ AIR302 -291 | has_access_dataset +292 | has_access_dataset | = help: Use `airflow.www.auth.has_access_*` instead -AIR302_names.py:291:1: AIR302 `airflow.www.auth.has_access_dataset` is removed in Airflow 3.0 +AIR302_names.py:292:1: AIR302 `airflow.www.auth.has_access_dataset` is removed in Airflow 3.0 | -289 | # airflow.www.auth -290 | has_access -291 | has_access_dataset +290 | # airflow.www.auth +291 | has_access +292 | has_access_dataset | ^^^^^^^^^^^^^^^^^^ AIR302 -292 | -293 | # airflow.www.utils +293 | +294 | # airflow.www.utils | = help: Use `airflow.www.auth.has_access_dataset.has_access_asset` instead -AIR302_names.py:294:1: AIR302 `airflow.www.utils.get_sensitive_variables_fields` is removed in Airflow 3.0 +AIR302_names.py:295:1: AIR302 `airflow.www.utils.get_sensitive_variables_fields` is removed in Airflow 3.0 | -293 | # airflow.www.utils -294 | get_sensitive_variables_fields +294 | # airflow.www.utils +295 | get_sensitive_variables_fields | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AIR302 -295 | should_hide_value_for_key +296 | should_hide_value_for_key | = help: Use `airflow.utils.log.secrets_masker.get_sensitive_variables_fields` instead -AIR302_names.py:295:1: AIR302 `airflow.www.utils.should_hide_value_for_key` is removed in Airflow 3.0 +AIR302_names.py:296:1: AIR302 `airflow.www.utils.should_hide_value_for_key` is removed in Airflow 3.0 | -293 | # airflow.www.utils -294 | get_sensitive_variables_fields -295 | should_hide_value_for_key +294 | # airflow.www.utils +295 | get_sensitive_variables_fields +296 | should_hide_value_for_key | ^^^^^^^^^^^^^^^^^^^^^^^^^ AIR302 | = help: Use `airflow.utils.log.secrets_masker.should_hide_value_for_key` instead