Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -47,3 +47,16 @@

DummyOperator()
EmptyOperator()

from airflow.hooks.subprocess import SubprocessResult
SubprocessResult()
from airflow.hooks.subprocess import working_directory
working_directory()
from airflow.operators.datetime import target_times_as_dates
target_times_as_dates()
from airflow.operators.trigger_dagrun import TriggerDagRunLink
TriggerDagRunLink()
from airflow.sensors.external_task import ExternalTaskSensorLink
ExternalTaskSensorLink()
from airflow.sensors.time_delta import WaitSensor
WaitSensor()
20 changes: 10 additions & 10 deletions crates/ruff_linter/resources/test/fixtures/airflow/AIR312.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@

from airflow.hooks.filesystem import FSHook
from airflow.hooks.package_index import PackageIndexHook
from airflow.hooks.subprocess import SubprocessHook, SubprocessResult, working_directory
from airflow.hooks.subprocess import SubprocessHook
from airflow.operators.bash import BashOperator
from airflow.operators.datetime import BranchDateTimeOperator, target_times_as_dates
from airflow.operators.datetime import BranchDateTimeOperator
from airflow.operators.empty import EmptyOperator
from airflow.operators.latest_only import LatestOnlyOperator
from airflow.operators.python import (
Expand All @@ -13,16 +13,16 @@
PythonVirtualenvOperator,
ShortCircuitOperator,
)
from airflow.operators.trigger_dagrun import TriggerDagRunLink, TriggerDagRunOperator
from airflow.operators.trigger_dagrun import TriggerDagRunOperator
from airflow.operators.weekday import BranchDayOfWeekOperator
from airflow.sensors.date_time import DateTimeSensor, DateTimeSensorAsync
from airflow.sensors.external_task import (
ExternalTaskMarker,
ExternalTaskSensor,
ExternalTaskSensorLink,

)
from airflow.sensors.filesystem import FileSensor
from airflow.sensors.time_delta import TimeDeltaSensor, TimeDeltaSensorAsync, WaitSensor
from airflow.sensors.time_delta import TimeDeltaSensor, TimeDeltaSensorAsync
from airflow.sensors.time_sensor import TimeSensor, TimeSensorAsync
from airflow.sensors.weekday import DayOfWeekSensor
from airflow.triggers.external_task import DagStateTrigger, WorkflowTrigger
Expand All @@ -31,10 +31,10 @@

FSHook()
PackageIndexHook()
SubprocessHook(), SubprocessResult(), working_directory()
SubprocessHook()
BashOperator()
BranchDateTimeOperator(), target_times_as_dates()
TriggerDagRunLink(), TriggerDagRunOperator()
BranchDateTimeOperator()
TriggerDagRunOperator()
EmptyOperator()
LatestOnlyOperator()
(
Expand All @@ -45,10 +45,10 @@
)
BranchDayOfWeekOperator()
DateTimeSensor(), DateTimeSensorAsync()
ExternalTaskMarker(), ExternalTaskSensor(), ExternalTaskSensorLink()
ExternalTaskMarker(), ExternalTaskSensor()
FileSensor()
TimeSensor(), TimeSensorAsync()
TimeDeltaSensor(), TimeDeltaSensorAsync(), WaitSensor()
TimeDeltaSensor(), TimeDeltaSensorAsync()
DayOfWeekSensor()
DagStateTrigger(), WorkflowTrigger()
FileTrigger()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1078,6 +1078,17 @@ fn check_names_moved_to_provider(checker: &Checker, expr: &Expr, ranged: TextRan
},

// apache-airflow-providers-standard
[
"airflow",
"hooks",
"subprocess",
rest @ ("SubprocessResult" | "working_directory"),
] => ProviderReplacement::SourceModuleMovedToProvider {
name: (*rest).to_string(),
module: "airflow.providers.standard.hooks.subprocess",
provider: "standard",
version: "0.0.3",
},
["airflow", "operators", "bash_operator", "BashOperator"] => {
ProviderReplacement::AutoImport {
module: "airflow.providers.standard.operators.bash",
Expand All @@ -1097,6 +1108,25 @@ fn check_names_moved_to_provider(checker: &Checker, expr: &Expr, ranged: TextRan
provider: "standard",
version: "0.0.2",
},
[
"airflow",
"operators",
"trigger_dagrun",
"TriggerDagRunLink",
] => ProviderReplacement::AutoImport {
module: "airflow.providers.standard.operators.trigger_dagrun",
name: "TriggerDagRunLink",
provider: "standard",
version: "0.0.2",
},
["airflow", "operators", "datetime", "target_times_as_dates"] => {
ProviderReplacement::AutoImport {
module: "airflow.providers.standard.operators.datetime",
name: "target_times_as_dates",
provider: "standard",
version: "0.0.1",
}
}
[
"airflow",
"operators",
Expand Down Expand Up @@ -1133,17 +1163,34 @@ fn check_names_moved_to_provider(checker: &Checker, expr: &Expr, ranged: TextRan
provider: "standard",
version: "0.0.1",
},
[
"airflow",
"sensors",
"external_task",
"ExternalTaskSensorLink",
] => ProviderReplacement::AutoImport {
module: "airflow.providers.standard.sensors.external_task",
name: "ExternalDagLink",
provider: "standard",
version: "0.0.3",
},
[
"airflow",
"sensors",
"external_task_sensor",
rest @ ("ExternalTaskMarker" | "ExternalTaskSensor" | "ExternalTaskSensorLink"),
] => ProviderReplacement::SourceModuleMovedToProvider {
name: (*rest).to_string(),
module: "airflow.providers.standard.sensors.external_task",
name: (*rest).to_string(),
provider: "standard",
version: "0.0.3",
},
["airflow", "sensors", "time_delta", "WaitSensor"] => ProviderReplacement::AutoImport {
module: "airflow.providers.standard.sensors.time_delta",
name: "WaitSensor",
provider: "standard",
version: "0.0.1",
},

_ => return,
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -127,14 +127,9 @@ fn check_names_moved_to_provider(checker: &Checker, expr: &Expr, ranged: TextRan
version: "0.0.1",
}
}
[
"airflow",
"hooks",
"subprocess",
rest @ ("SubprocessHook" | "SubprocessResult" | "working_directory"),
] => ProviderReplacement::SourceModuleMovedToProvider {
name: (*rest).to_string(),
["airflow", "hooks", "subprocess", "SubprocessHook"] => ProviderReplacement::AutoImport {
module: "airflow.providers.standard.hooks.subprocess",
name: "SubprocessHook",
provider: "standard",
version: "0.0.3",
},
Expand All @@ -144,25 +139,22 @@ fn check_names_moved_to_provider(checker: &Checker, expr: &Expr, ranged: TextRan
provider: "standard",
version: "0.0.1",
},
[
"airflow",
"operators",
"datetime",
rest @ ("BranchDateTimeOperator" | "target_times_as_dates"),
] => ProviderReplacement::SourceModuleMovedToProvider {
name: (*rest).to_string(),
module: "airflow.providers.standard.operators.datetime",
provider: "standard",
version: "0.0.1",
},
["airflow", "operators", "datetime", "BranchDateTimeOperator"] => {
ProviderReplacement::AutoImport {
module: "airflow.providers.standard.operators.datetime",
name: "BranchDateTimeOperator",
provider: "standard",
version: "0.0.1",
}
}
[
"airflow",
"operators",
"trigger_dagrun",
rest @ ("TriggerDagRunLink" | "TriggerDagRunOperator"),
] => ProviderReplacement::SourceModuleMovedToProvider {
name: (*rest).to_string(),
"TriggerDagRunOperator",
] => ProviderReplacement::AutoImport {
module: "airflow.providers.standard.operators.trigger_dagrun",
name: "TriggerDagRunOperator",
provider: "standard",
version: "0.0.2",
},
Expand Down Expand Up @@ -245,7 +237,7 @@ fn check_names_moved_to_provider(checker: &Checker, expr: &Expr, ranged: TextRan
"airflow",
"sensors",
"time_delta",
rest @ ("TimeDeltaSensor" | "TimeDeltaSensorAsync" | "WaitSensor"),
rest @ ("TimeDeltaSensor" | "TimeDeltaSensorAsync"),
] => ProviderReplacement::SourceModuleMovedToProvider {
name: (*rest).to_string(),
module: "airflow.providers.standard.sensors.time_delta",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -153,5 +153,80 @@ AIR302_standard.py:49:1: AIR302 `airflow.operators.dummy_operator.EmptyOperator`
48 | DummyOperator()
49 | EmptyOperator()
| ^^^^^^^^^^^^^ AIR302
50 |
51 | from airflow.hooks.subprocess import SubprocessResult
|
= help: Install `apache-airflow-providers-standard>=0.0.2` and use `airflow.providers.standard.operators.empty.EmptyOperator` instead.

AIR302_standard.py:52:1: AIR302 `airflow.hooks.subprocess.SubprocessResult` is moved into `standard` provider in Airflow 3.0;
|
51 | from airflow.hooks.subprocess import SubprocessResult
52 | SubprocessResult()
| ^^^^^^^^^^^^^^^^ AIR302
53 | from airflow.hooks.subprocess import working_directory
54 | working_directory()
|
= help: Install `apache-airflow-providers-standard>=0.0.3` and use `airflow.providers.standard.hooks.subprocess.SubprocessResult` instead.

AIR302_standard.py:54:1: AIR302 `airflow.hooks.subprocess.working_directory` is moved into `standard` provider in Airflow 3.0;
|
52 | SubprocessResult()
53 | from airflow.hooks.subprocess import working_directory
54 | working_directory()
| ^^^^^^^^^^^^^^^^^ AIR302
55 | from airflow.operators.datetime import target_times_as_dates
56 | target_times_as_dates()
|
= help: Install `apache-airflow-providers-standard>=0.0.3` and use `airflow.providers.standard.hooks.subprocess.working_directory` instead.

AIR302_standard.py:56:1: AIR302 `airflow.operators.datetime.target_times_as_dates` is moved into `standard` provider in Airflow 3.0;
|
54 | working_directory()
55 | from airflow.operators.datetime import target_times_as_dates
56 | target_times_as_dates()
| ^^^^^^^^^^^^^^^^^^^^^ AIR302
57 | from airflow.operators.trigger_dagrun import TriggerDagRunLink
58 | TriggerDagRunLink()
|
= help: Install `apache-airflow-providers-standard>=0.0.1` and use `airflow.providers.standard.operators.datetime.target_times_as_dates` instead.

AIR302_standard.py:58:1: AIR302 `airflow.operators.trigger_dagrun.TriggerDagRunLink` is moved into `standard` provider in Airflow 3.0;
|
56 | target_times_as_dates()
57 | from airflow.operators.trigger_dagrun import TriggerDagRunLink
58 | TriggerDagRunLink()
| ^^^^^^^^^^^^^^^^^ AIR302
59 | from airflow.sensors.external_task import ExternalTaskSensorLink
60 | ExternalTaskSensorLink()
|
= help: Install `apache-airflow-providers-standard>=0.0.2` and use `airflow.providers.standard.operators.trigger_dagrun.TriggerDagRunLink` instead.

AIR302_standard.py:60:1: AIR302 [*] `airflow.sensors.external_task.ExternalTaskSensorLink` is moved into `standard` provider in Airflow 3.0;
|
58 | TriggerDagRunLink()
59 | from airflow.sensors.external_task import ExternalTaskSensorLink
60 | ExternalTaskSensorLink()
| ^^^^^^^^^^^^^^^^^^^^^^ AIR302
61 | from airflow.sensors.time_delta import WaitSensor
62 | WaitSensor()
|
= help: Install `apache-airflow-providers-standard>=0.0.3` and use `airflow.providers.standard.sensors.external_task.ExternalDagLink` instead.

ℹ Safe fix
57 57 | from airflow.operators.trigger_dagrun import TriggerDagRunLink
58 58 | TriggerDagRunLink()
59 59 | from airflow.sensors.external_task import ExternalTaskSensorLink
60 |-ExternalTaskSensorLink()
60 |+from airflow.providers.standard.sensors.external_task import ExternalDagLink
61 |+ExternalDagLink()
61 62 | from airflow.sensors.time_delta import WaitSensor
62 63 | WaitSensor()

AIR302_standard.py:62:1: AIR302 `airflow.sensors.time_delta.WaitSensor` is moved into `standard` provider in Airflow 3.0;
|
60 | ExternalTaskSensorLink()
61 | from airflow.sensors.time_delta import WaitSensor
62 | WaitSensor()
| ^^^^^^^^^^ AIR302
|
= help: Install `apache-airflow-providers-standard>=0.0.1` and use `airflow.providers.standard.sensors.time_delta.WaitSensor` instead.
Loading
Loading