|
1 | 1 | use crate::checkers::ast::Checker; |
2 | | -use crate::importer::ImportRequest; |
| 2 | +use crate::rules::airflow::helpers::{Replacement, is_airflow_builtin_or_provider}; |
3 | 3 | use crate::rules::airflow::helpers::{ |
4 | | - Replacement, is_airflow_builtin_or_provider, is_guarded_by_try_except, |
| 4 | + generate_import_edit, generate_remove_and_runtime_import_edit, is_guarded_by_try_except, |
5 | 5 | }; |
6 | 6 | use crate::{Edit, Fix, FixAvailability, Violation}; |
7 | 7 | use ruff_macros::{ViolationMetadata, derive_message_formats}; |
@@ -211,7 +211,7 @@ fn check_name(checker: &Checker, expr: &Expr, range: TextRange) { |
211 | 211 | name: "AssetAny", |
212 | 212 | }, |
213 | 213 | "expand_alias_to_datasets" => Replacement::AutoImport { |
214 | | - module: "airflow.sdk", |
| 214 | + module: "airflow.models.asset", |
215 | 215 | name: "expand_alias_to_assets", |
216 | 216 | }, |
217 | 217 | _ => return, |
@@ -256,7 +256,7 @@ fn check_name(checker: &Checker, expr: &Expr, range: TextRange) { |
256 | 256 | name: (*rest).to_string(), |
257 | 257 | }, |
258 | 258 | ["airflow", "models", "baseoperatorlink", "BaseOperatorLink"] => Replacement::AutoImport { |
259 | | - module: "airflow.sdk.definitions.baseoperatorlink", |
| 259 | + module: "airflow.sdk", |
260 | 260 | name: "BaseOperatorLink", |
261 | 261 | }, |
262 | 262 | // airflow.model..DAG |
@@ -301,22 +301,16 @@ fn check_name(checker: &Checker, expr: &Expr, range: TextRange) { |
301 | 301 | if is_guarded_by_try_except(expr, module, name, checker.semantic()) { |
302 | 302 | return; |
303 | 303 | } |
304 | | - |
305 | | - checker |
306 | | - .report_diagnostic( |
307 | | - Airflow3SuggestedUpdate { |
308 | | - deprecated: qualified_name.to_string(), |
309 | | - replacement: replacement.clone(), |
310 | | - }, |
311 | | - range, |
312 | | - ) |
313 | | - .try_set_fix(|| { |
314 | | - let (import_edit, binding) = checker.importer().get_or_import_symbol( |
315 | | - &ImportRequest::import_from(module, name), |
316 | | - expr.start(), |
317 | | - checker.semantic(), |
318 | | - )?; |
319 | | - let replacement_edit = Edit::range_replacement(binding, range); |
320 | | - Ok(Fix::safe_edits(import_edit, [replacement_edit])) |
321 | | - }); |
| 304 | + let mut diagnostic = checker.report_diagnostic( |
| 305 | + Airflow3SuggestedUpdate { |
| 306 | + deprecated: qualified_name.to_string(), |
| 307 | + replacement: replacement.clone(), |
| 308 | + }, |
| 309 | + range, |
| 310 | + ); |
| 311 | + if let Some(fix) = generate_import_edit(expr, checker, module, name, range) |
| 312 | + .or_else(|| generate_remove_and_runtime_import_edit(expr, checker, module, name)) |
| 313 | + { |
| 314 | + diagnostic.set_fix(fix); |
| 315 | + } |
322 | 316 | } |
0 commit comments