Skip to content

Commit dc29e9d

Browse files
committed
feat(AIR303): extend the following rules
* airflow.sensors.external_task_sensor.ExternalTaskMarker → airflow.providers.standard.sensors.external_task.ExternalTaskMarker * airflow.sensors.external_task_sensor.ExternalTaskSensor → airflow.providers.standard.sensors.external_task.ExternalTaskSensor * airflow.sensors.external_task_sensor.ExternalTaskSensorLink → airflow.providers.standard.sensors.external_task.ExternalTaskSensorLink * airflow.sensors.time_delta_sensor.TimeDeltaSensor → airflow.providers.standard.sensors.time_delta.TimeDeltaSensor * airflow.operators.dagrun_operator.TriggerDagRunLink → airflow.providers.standard.operators.trigger_dagrun.TriggerDagRunLink * airflow.operators.dagrun_operator.TriggerDagRunOperator → airflow.providers.standard.operators.trigger_dagrun.TriggerDagRunOperator * airflow.operators.python_operator.BranchPythonOperator → airflow.providers.standard.operators.python.BranchPythonOperator * airflow.operators.python_operator.PythonOperator → airflow.providers.standard.operators.python.PythonOperator * airflow.operators.python_operator.PythonVirtualenvOperator → airflow.providers.standard.operators.python.PythonVirtualenvOperator * airflow.operators.python_operator.ShortCircuitOperator → airflow.providers.standard.operators.python.ShortCircuitOperator * airflow.operators.latest_only_operator.LatestOnlyOperator → airflow.providers.standard.operators.latest_only.LatestOnlyOperator * airflow.sensors.date_time_sensor.DateTimeSensor → airflow.providers.standard.sensors.DateTimeSensor
1 parent 3101104 commit dc29e9d

File tree

4 files changed

+323
-37
lines changed

4 files changed

+323
-37
lines changed

crates/ruff_linter/resources/test/fixtures/airflow/AIR302_names.py

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -72,20 +72,20 @@
7272
from airflow.security.permissions import RESOURCE_DATASET
7373
from airflow.sensors.base_sensor_operator import BaseSensorOperator
7474

75-
from airflow.sensors.external_task import (
76-
ExternalTaskMarker,
77-
ExternalTaskSensor,
78-
ExternalTaskSensorLink,
79-
)
80-
from airflow.sensors.external_task_sensor import (
81-
ExternalTaskMarker as ExternalTaskMarkerFromExternalTaskSensor,
82-
)
83-
from airflow.sensors.external_task_sensor import (
84-
ExternalTaskSensor as ExternalTaskSensorFromExternalTaskSensor,
85-
)
86-
from airflow.sensors.external_task_sensor import (
87-
ExternalTaskSensorLink as ExternalTaskSensorLinkFromExternalTaskSensor,
88-
)
75+
76+
77+
78+
79+
80+
81+
82+
83+
84+
85+
86+
87+
88+
8989
from airflow.sensors.time_delta_sensor import TimeDeltaSensor
9090
from airflow.timetables.datasets import DatasetOrTimeSchedule
9191
from airflow.timetables.simple import DatasetTriggeredTimetable

crates/ruff_linter/resources/test/fixtures/airflow/AIR303.py

Lines changed: 55 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -433,8 +433,62 @@
433433
dummy_operator.DummyOperator()
434434
dummy_operator.EmptyOperator()
435435

436-
from airflow.operators.email import EmailOperator
437436
from airflow.operators import email_operator
437+
from airflow.operators.email import EmailOperator
438438

439439
EmailOperator()
440440
email_operator.EmailOperator()
441+
442+
from airflow.operators import dagrun_operator, dummy_operator, python_operator
443+
from airflow.operators.dummy import DummyOperator, EmptyOperator
444+
from airflow.operators.email_operator import EmailOperator
445+
from airflow.operators.python import (
446+
BranchPythonOperator,
447+
PythonOperator,
448+
PythonVirtualenvOperator,
449+
ShortCircuitOperator,
450+
)
451+
from airflow.sensors.date_time_sensor import DateTimeSensor
452+
from airflow.sensors.external_task import (
453+
ExternalTaskMarker,
454+
ExternalTaskSensor,
455+
ExternalTaskSensorLink,
456+
)
457+
from airflow.sensors.external_task_sensor import (
458+
ExternalTaskMarker as ExternalTaskMarkerFromExternalTaskSensor,
459+
)
460+
from airflow.sensors.external_task_sensor import (
461+
ExternalTaskSensor as ExternalTaskSensorFromExternalTaskSensor,
462+
)
463+
from airflow.sensors.external_task_sensor import (
464+
ExternalTaskSensorLink as ExternalTaskSensorLinkFromExternalTaskSensor,
465+
)
466+
467+
dagrun_operator.TriggerDagRunLink()
468+
dagrun_operator.TriggerDagRunOperator()
469+
470+
# airflow.sensors.date_time_sensor
471+
DateTimeSensor()
472+
473+
# airflow.sensors.external_task
474+
ExternalTaskSensorLink()
475+
ExternalTaskMarker()
476+
ExternalTaskSensor()
477+
478+
# airflow.sensors.external_task_sensor
479+
ExternalTaskMarkerFromExternalTaskSensor()
480+
ExternalTaskSensorFromExternalTaskSensor()
481+
ExternalTaskSensorLinkFromExternalTaskSensor()
482+
483+
# airflow.sensors.time_delta_sensor
484+
TimeDeltaSensor()
485+
486+
# airflow.operators
487+
python_operator.BranchPythonOperator()
488+
python_operator.PythonOperator()
489+
python_operator.PythonVirtualenvOperator()
490+
python_operator.ShortCircuitOperator()
491+
BranchPythonOperator()
492+
PythonOperator()
493+
PythonVirtualenvOperator()
494+
ShortCircuitOperator()

crates/ruff_linter/src/rules/airflow/rules/moved_to_provider_in_3.rs

Lines changed: 68 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -882,30 +882,84 @@ fn check_names_moved_to_provider(checker: &Checker, expr: &Expr, ranged: TextRan
882882

883883

884884
// apache-airflow-providers-standard
885-
["airflow", "operators", "dummy" | "dummy_operator", "EmptyOperator" | "DummyOperator"] => Replacement::ProviderName{
886-
name: "airflow.providers.standard.operators.empty.EmptyOperator",
885+
["airflow", "operators", "bash_operator", "BashOperator"] => Replacement::ProviderName{
886+
name: "airflow.providers.standard.operators.bash.BashOperator",
887887
provider: "standard",
888-
version: "0.1.0"
888+
version: "0.0.1"
889889
},
890-
["airflow", "sensors", "filesystem", "FileSensor"] => Replacement::ProviderName{
891-
name: "airflow.providers.standard.sensors.filesystem.FileSensor",
890+
["airflow", "operators", "dagrun_operator" | "trigger_dagrun", rest @ .. ] => match &rest {
891+
["TriggerDagRunLink"] => Replacement::ProviderName{
892+
name: "airflow.providers.standard.operators.trigger_dagrun.TriggerDagRunLink",
893+
provider: "standard",
894+
version: "0.0.2"
895+
},
896+
["TriggerDagRunOperator"] => Replacement::ProviderName{
897+
name: "airflow.providers.standard.operators.trigger_dagrun.TriggerDagRunOperator",
898+
provider: "standard",
899+
version: "0.0.2"
900+
},
901+
_ => return
902+
}
903+
["airflow", "operators", "dummy" | "dummy_operator", "EmptyOperator" | "DummyOperator"] => Replacement::ProviderName{
904+
name: "airflow.providers.standard.operators.empty.EmptyOperator",
892905
provider: "standard",
893906
version: "0.0.2"
894907
},
895-
["airflow", "operators", "trigger_dagrun", "TriggerDagRunOperator"] => Replacement::ProviderName{
896-
name: "airflow.providers.standard.operators.trigger_dagrun.TriggerDagRunOperator",
908+
["airflow", "operators", "latest_only_operator" | "latest_only", "LatestOnlyOperator"] => Replacement::ProviderName{
909+
name: "airflow.providers.standard.operators.latest_only.LatestOnlyOperator",
897910
provider: "standard",
898-
version: "0.0.2"
911+
version: "0.0.3"
899912
},
900-
["airflow", "sensors", "external_task", "ExternalTaskMarker"] => Replacement::ProviderName{
901-
name: "airflow.providers.standard.sensors.external_task.ExternalTaskMarker",
913+
["airflow", "operators", "python_operator"| "python", rest @ ..] => match &rest {
914+
["BranchPythonOperator"] => Replacement::ProviderName{
915+
name: "airflow.providers.standard.operators.python.BranchPythonOperator",
916+
provider: "standard",
917+
version: "0.0.1"
918+
},
919+
["PythonOperator"] => Replacement::ProviderName{
920+
name: "airflow.providers.standard.operators.python.PythonOperator",
921+
provider: "standard",
922+
version: "0.0.1"
923+
},
924+
["PythonVirtualenvOperator"] => Replacement::ProviderName{
925+
name: "airflow.providers.standard.operators.python.PythonVirtualenvOperator",
926+
provider: "standard",
927+
version: "0.0.1"
928+
},
929+
["ShortCircuitOperator"] => Replacement::ProviderName{
930+
name: "airflow.providers.standard.operators.python.ShortCircuitOperator",
931+
provider: "standard",
932+
version: "0.0.1"
933+
},
934+
_ => return
935+
}
936+
["airflow", "sensors", "external_task_sensor" | "external_task", rest @..] => match &rest {
937+
["ExternalTaskSensor"] => Replacement::ProviderName{
938+
name: "airflow.providers.standard.sensors.external_task.ExternalTaskSensor",
939+
provider: "standard",
940+
version: "0.0.3"
941+
},
942+
["ExternalTaskSensorLink"] => Replacement::ProviderName{
943+
name: "airflow.providers.standard.sensors.external_task.ExternalTaskSensorLink",
944+
provider: "standard",
945+
version: "0.0.3"
946+
},
947+
["ExternalTaskMarker"] => Replacement::ProviderName{
948+
name: "airflow.providers.standard.sensors.external_task.ExternalTaskMarker",
949+
provider: "standard",
950+
version: "0.0.3"
951+
},
952+
_ => return
953+
}
954+
["airflow", "sensors", "filesystem", "FileSensor"] => Replacement::ProviderName{
955+
name: "airflow.providers.standard.sensors.filesystem.FileSensor",
902956
provider: "standard",
903-
version: "0.0.3"
957+
version: "0.0.2"
904958
},
905-
["airflow", "sensors", "external_task", "ExternalTaskSensor"] => Replacement::ProviderName{
906-
name: "airflow.providers.standard.sensors.external_task.ExternalTaskSensor",
959+
["airflow", "sensors", "time_delta_sensor", "TimeDeltaSensor"] => Replacement::ProviderName{
960+
name: "airflow.providers.standard.sensors.time_delta.TimeDeltaSensor",
907961
provider: "standard",
908-
version: "0.0.3"
962+
version: "0.1.0"
909963
},
910964

911965
// apache-airflow-providers-sqlite

0 commit comments

Comments
 (0)