Skip to content

Commit 1bb93e7

Browse files
committed
feat(AIR301): apply AutoImport to cases that names has been changed in Airflow 3
1 parent 7cfea2f commit 1bb93e7

8 files changed

+890
-750
lines changed

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

Lines changed: 3 additions & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,7 @@
99
PY311,
1010
PY312,
1111
)
12-
from airflow.api_connexion.security import requires_access, requires_access_dataset
13-
14-
from airflow.auth.managers.models.resource_details import DatasetDetails
12+
from airflow.api_connexion.security import requires_access
1513
from airflow.configuration import (
1614
as_dict,
1715
get,
@@ -24,32 +22,13 @@
2422
)
2523
from airflow.contrib.aws_athena_hook import AWSAthenaHook
2624
from airflow.datasets import DatasetAliasEvent
27-
28-
29-
30-
31-
3225
from airflow.hooks.base_hook import BaseHook
33-
34-
35-
3626
from airflow.operators.subdag import SubDagOperator
37-
from airflow.providers.amazon.aws.auth_manager.avp.entities import AvpEntities
38-
from airflow.providers.amazon.aws.datasets import s3
39-
from airflow.providers.common.io.datasets import file as common_io_file
40-
from airflow.providers.fab.auth_manager import fab_auth_manager
41-
from airflow.providers.google.datasets import bigquery, gcs
4227
from airflow.providers.mysql.datasets import mysql
43-
from airflow.providers.openlineage.utils.utils import (
44-
DatasetInfo,
45-
translate_airflow_dataset,
46-
)
4728
from airflow.providers.postgres.datasets import postgres
4829
from airflow.providers.trino.datasets import trino
4930
from airflow.secrets.local_filesystem import LocalFilesystemBackend
50-
from airflow.security.permissions import RESOURCE_DATASET
5131
from airflow.sensors.base_sensor_operator import BaseSensorOperator
52-
5332
from airflow.triggers.external_task import TaskStateTrigger
5433
from airflow.utils import dates
5534
from airflow.utils.dag_cycle_tester import test_cycle
@@ -75,13 +54,9 @@
7554

7655
# airflow root
7756
PY36, PY37, PY38, PY39, PY310, PY311, PY312
78-
DatasetFromRoot()
7957

8058
# airflow.api_connexion.security
81-
requires_access, requires_access_dataset
82-
83-
84-
59+
requires_access
8560

8661

8762
# airflow.configuration
@@ -96,77 +71,16 @@
9671
DatasetAliasEvent()
9772

9873

99-
100-
101-
102-
10374
# airflow.hooks
10475
BaseHook()
10576

10677

107-
108-
109-
110-
111-
112-
113-
114-
115-
116-
117-
118-
119-
120-
# airflow.operators.branch_operator
121-
BaseBranchOperator()
122-
123-
# airflow.operators.dagrun_operator
124-
TriggerDagRunLink()
125-
TriggerDagRunOperator()
126-
127-
# airflow.operators.email_operator
128-
EmailOperator()
129-
130-
# airflow.operators.latest_only_operator
131-
LatestOnlyOperator()
132-
133-
# airflow.operators.python_operator
134-
BranchPythonOperator()
135-
PythonOperator()
136-
PythonVirtualenvOperator()
137-
ShortCircuitOperator()
138-
13978
# airflow.operators.subdag.*
14079
SubDagOperator()
14180

142-
# airflow.providers.amazon
143-
AvpEntities.DATASET
144-
s3.create_dataset
145-
s3.convert_dataset_to_openlineage
146-
s3.sanitize_uri
147-
148-
# airflow.providers.common.io
149-
common_io_file.convert_dataset_to_openlineage
150-
common_io_file.create_dataset
151-
common_io_file.sanitize_uri
152-
153-
# airflow.providers.fab
154-
fab_auth_manager.is_authorized_dataset
155-
156-
# airflow.providers.google
157-
bigquery.sanitize_uri
158-
159-
gcs.create_dataset
160-
gcs.sanitize_uri
161-
gcs.convert_dataset_to_openlineage
162-
16381
# airflow.providers.mysql
16482
mysql.sanitize_uri
16583

166-
# airflow.providers.openlineage
167-
DatasetInfo()
168-
translate_airflow_dataset
169-
17084
# airflow.providers.postgres
17185
postgres.sanitize_uri
17286

@@ -178,16 +92,10 @@
17892
LocalFilesystemBackend()
17993

18094

181-
182-
183-
18495
# airflow.sensors.base_sensor_operator
18596
BaseSensorOperator()
18697

18798

188-
189-
190-
19199
# airflow.triggers.external_task
192100
TaskStateTrigger()
193101

@@ -235,10 +143,10 @@
235143
TriggerRule.DUMMY
236144
TriggerRule.NONE_FAILED_OR_SKIPPED
237145

146+
238147
# airflow.www.auth
239148
has_access
240149

241-
242150
# airflow.www.utils
243151
get_sensitive_variables_fields
244152
should_hide_value_for_key
Lines changed: 22 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,45 @@
11
from __future__ import annotations
22

3-
from airflow.auth.managers.base_auth_manager import is_authorized_dataset
3+
from airflow.api_connexion.security import requires_access_dataset
4+
from airflow.auth.managers.models.resource_details import (
5+
DatasetDetails,
6+
is_authorized_dataset,
7+
)
48
from airflow.datasets.manager import (
59
DatasetManager,
610
dataset_manager,
711
resolve_dataset_manager,
812
)
913
from airflow.lineage.hook import DatasetLineageInfo
10-
from airflow.listeners.spec.dataset import (
11-
on_dataset_changed,
12-
on_dataset_created,
13-
)
14-
from airflow.metrics.validators import (
15-
AllowListValidator,
16-
BlockListValidator,
17-
)
18-
from airflow.secrets.local_filesystem import load_connections
14+
from airflow.metrics.validators import AllowListValidator, BlockListValidator
15+
from airflow.secrets.local_filesystm import load_connections
1916
from airflow.security.permissions import RESOURCE_DATASET
20-
from airflow.timetables.simple import DatasetTriggeredTimetable
2117
from airflow.www.auth import has_access_dataset
2218

23-
# airflow.datasets.manager
24-
DatasetManager()
25-
dataset_manager
26-
resolve_dataset_manager
19+
requires_access_dataset()
2720

28-
# airflow.auth.managers
29-
is_authorized_dataset
3021
DatasetDetails()
22+
is_authorized_dataset()
23+
24+
DatasetManager()
25+
dataset_manager()
26+
resolve_dataset_manager()
3127

32-
# airflow.lineage.hook
3328
DatasetLineageInfo()
3429

35-
# airflow.listeners.spec.dataset
36-
on_dataset_changed
37-
on_dataset_created
38-
# airflow.metrics.validators
3930
AllowListValidator()
4031
BlockListValidator()
4132

42-
# airflow.secrets.local_filesystem
4333
load_connections()
4434

45-
# airflow.security.permissions
4635
RESOURCE_DATASET
47-
# airflow.timetables
48-
DatasetTriggeredTimetable()
4936

50-
# airflow.www.auth
51-
has_access_dataset
37+
has_access_dataset()
38+
39+
from airflow.listeners.spec.dataset import (
40+
on_dataset_changed,
41+
on_dataset_created,
42+
)
43+
44+
on_dataset_created()
45+
on_dataset_changed()
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
from __future__ import annotations
2+
3+
from airflow.providers.amazon.aws.auth_manager.avp.entities.AvpEntities import DATASET
4+
from airflow.providers.amazon.aws.datasets.s3 import (
5+
convert_dataset_to_openlineage as s3_convert_dataset_to_openlineage,
6+
)
7+
from airflow.providers.amazon.aws.datasets.s3 import create_dataset as s3_create_dataset
8+
from airflow.providers.common.io.dataset.file import (
9+
convert_dataset_to_openlineage as io_convert_dataset_to_openlineage,
10+
)
11+
from airflow.providers.common.io.dataset.file import create_dataset as io_create_dataset
12+
from airflow.providers.fab.auth_manager.fab_auth_manager import is_authorized_dataset as fab_is_authorized_dataset
13+
from airflow.providers.google.datasets.bigquery import (
14+
create_dataset as bigquery_create_dataset,
15+
)
16+
from airflow.providers.google.datasets.gcs import (
17+
convert_dataset_to_openlineage as gcs_convert_dataset_to_openlineage,
18+
)
19+
from airflow.providers.google.datasets.gcs import create_dataset as gcs_create_dataset
20+
from airflow.providers.openlineage.utils.utils import (
21+
DatasetInfo,
22+
translate_airflow_dataset,
23+
)
24+
25+
DATASET
26+
27+
s3_create_dataset()
28+
s3_convert_dataset_to_openlineage()
29+
30+
io_create_dataset()
31+
io_convert_dataset_to_openlineage()
32+
33+
fab_is_authorized_dataset()
34+
35+
# airflow.providers.google.datasets.bigquery
36+
bigquery_create_dataset()
37+
# airflow.providers.google.datasets.gcs
38+
gcs_create_dataset()
39+
gcs_convert_dataset_to_openlineage()
40+
# airflow.providers.openlineage.utils.utils
41+
DatasetInfo()
42+
translate_airflow_dataset()
43+
#
44+
# airflow.secrets.local_filesystem
45+
load_connections()
46+
#
47+
# airflow.security.permissions
48+
RESOURCE_DATASET
49+
50+
# airflow.timetables
51+
DatasetTriggeredTimetable()
52+
#
53+
# airflow.www.auth
54+
has_access_dataset

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ mod tests {
1818
#[test_case(Rule::Airflow3Removal, Path::new("AIR301_args.py"))]
1919
#[test_case(Rule::Airflow3Removal, Path::new("AIR301_names.py"))]
2020
#[test_case(Rule::Airflow3Removal, Path::new("AIR301_names_fix.py"))]
21+
#[test_case(Rule::Airflow3Removal, Path::new("AIR301_provider_names_fix.py"))]
2122
#[test_case(Rule::Airflow3Removal, Path::new("AIR301_names_try.py"))]
2223
#[test_case(Rule::Airflow3Removal, Path::new("AIR301_class_attribute.py"))]
2324
#[test_case(Rule::Airflow3Removal, Path::new("AIR301_airflow_plugin.py"))]

0 commit comments

Comments
 (0)