@@ -64,6 +64,9 @@ impl Violation for Airflow3Removal {
6464 Replacement :: AutoImport { path : _, name : _ } => {
6565 format ! ( "`{deprecated}` is removed in Airflow 3.0" )
6666 }
67+ Replacement :: SourceModuleMoved { name : _, module : _ } => {
68+ format ! ( "`{deprecated}` is removed in Airflow 3.0" )
69+ }
6770 }
6871 }
6972
@@ -72,6 +75,9 @@ impl Violation for Airflow3Removal {
7275 match replacement {
7376 Replacement :: Name ( name) => Some ( format ! ( "Use `{name}` instead" ) ) ,
7477 Replacement :: AutoImport { path, name } => Some ( format ! ( "Use `{path}.{name}` instead" ) ) ,
78+ Replacement :: SourceModuleMoved { name, module } => {
79+ Some ( format ! ( "Use `{module}.{name}` instead" ) )
80+ }
7581 _ => None ,
7682 }
7783 }
@@ -593,43 +599,38 @@ fn check_name(checker: &Checker, expr: &Expr, range: TextRange) {
593599 }
594600
595601 // airflow.configuration
596- [ "airflow" , "configuration" , rest] => match * rest {
597- "get" => Replacement :: Name ( "airflow.configuration.conf.get" ) ,
598- "getboolean" => Replacement :: Name ( "airflow.configuration.conf.getboolean" ) ,
599- "getfloat" => Replacement :: Name ( "airflow.configuration.conf.getfloat" ) ,
600- "getint" => Replacement :: Name ( "airflow.configuration.conf.getint" ) ,
601- "has_option" => Replacement :: Name ( "airflow.configuration.conf.has_option" ) ,
602- "remove_option" => Replacement :: Name ( "airflow.configuration.conf.remove_option" ) ,
603- "as_dict" => Replacement :: Name ( "airflow.configuration.conf.as_dict" ) ,
604- "set" => Replacement :: Name ( "airflow.configuration.conf.set" ) ,
605- _ => return ,
602+ [ "airflow" , "configuration" , rest @ ( "as_dict" | "get" | "getboolean" | "getfloat" | "getint" | "has_option"
603+ | "remove_option" | "set" ) ] => Replacement :: SourceModuleMoved {
604+ name : ( * rest) . to_string ( ) ,
605+ module : "airflow.configuration.conf" ,
606606 } ,
607607
608608 // airflow.contrib.*
609609 [ "airflow" , "contrib" , ..] => {
610610 Replacement :: Message ( "The whole `airflow.contrib` module has been removed." )
611611 }
612612
613+ // airflow.datasets.manager
614+ [ "airflow" , "datasets" , "manager" , rest] => match * rest {
615+ "DatasetManager" => Replacement :: Name ( "airflow.assets.manager.AssetManager" ) ,
616+ "dataset_manager" => Replacement :: Name ( "airflow.assets.manager.asset_manager" ) ,
617+ "resolve_dataset_manager" => Replacement :: Name ( "airflow.assets.resolve_asset_manager" ) ,
618+ _ => return ,
619+ } ,
620+ [ "airflow" , "datasets" , "metadata" , "Metadata" ] => {
621+ Replacement :: Name ( "airflow.sdk.Metadata" )
622+ }
613623 // airflow.datasets
614624 [ "airflow" , "Dataset" ] | [ "airflow" , "datasets" , "Dataset" ] => Replacement :: AutoImport {
615625 path : "airflow.sdk" ,
616626 name : "Asset" ,
617627 } ,
618- [ "airflow" , "datasets" , rest @ ..] => match & rest {
619- [ "DatasetAliasEvent" ] => Replacement :: None ,
620- [ "DatasetAlias" ] => Replacement :: Name ( "airflow.sdk.AssetAlias" ) ,
621- [ "DatasetAll" ] => Replacement :: Name ( "airflow.sdk.AssetAll" ) ,
622- [ "DatasetAny" ] => Replacement :: Name ( "airflow.sdk.AssetAny" ) ,
623- [ "expand_alias_to_datasets" ] => Replacement :: Name ( "airflow.sdk.expand_alias_to_assets" ) ,
624- [ "metadata" , "Metadata" ] => Replacement :: Name ( "airflow.sdk.Metadata" ) ,
625- // airflow.datasets.manager
626- [ "manager" , "DatasetManager" ] => Replacement :: Name ( "airflow.assets.AssetManager" ) ,
627- [ "manager" , "dataset_manager" ] => {
628- Replacement :: Name ( "airflow.assets.manager.asset_manager" )
629- }
630- [ "manager" , "resolve_dataset_manager" ] => {
631- Replacement :: Name ( "airflow.assets.resolve_asset_manager" )
632- }
628+ [ "airflow" , "datasets" , rest] => match * rest {
629+ "DatasetAliasEvent" => Replacement :: None ,
630+ "DatasetAlias" => Replacement :: Name ( "airflow.sdk.AssetAlias" ) ,
631+ "DatasetAll" => Replacement :: Name ( "airflow.sdk.AssetAll" ) ,
632+ "DatasetAny" => Replacement :: Name ( "airflow.sdk.AssetAny" ) ,
633+ "expand_alias_to_datasets" => Replacement :: Name ( "airflow.sdk.expand_alias_to_assets" ) ,
633634 _ => return ,
634635 } ,
635636
@@ -645,11 +646,11 @@ fn check_name(checker: &Checker, expr: &Expr, range: TextRange) {
645646
646647 // airflow.listeners.spec
647648 // TODO: this is removed
648- [ "airflow" , "listeners" , "spec" , "dataset" , rest @ .. ] => match & rest {
649- [ "on_dataset_created" ] => {
649+ [ "airflow" , "listeners" , "spec" , "dataset" , rest] => match * rest {
650+ "on_dataset_created" => {
650651 Replacement :: Name ( "airflow.listeners.spec.asset.on_asset_created" )
651652 }
652- [ "on_dataset_changed" ] => {
653+ "on_dataset_changed" => {
653654 Replacement :: Name ( "airflow.listeners.spec.asset.on_asset_changed" )
654655 }
655656 _ => return ,
@@ -668,9 +669,10 @@ fn check_name(checker: &Checker, expr: &Expr, range: TextRange) {
668669
669670 // airflow.models.baseoperator
670671 [ "airflow" , "models" , "baseoperator" , rest] => match * rest {
671- "chain" => Replacement :: Name ( "airflow.sdk.chain" ) ,
672- "chain_linear" => Replacement :: Name ( "airflow.sdk.chain_linear" ) ,
673- "cross_downstream" => Replacement :: Name ( "airflow.sdk.cross_downstream" ) ,
672+ "chain" | "chain_linear" | "cross_downstream" => Replacement :: SourceModuleMoved {
673+ name : ( * rest) . to_string ( ) ,
674+ module : "airflow.sdk" ,
675+ } ,
674676 "BaseOperatorLink" => {
675677 Replacement :: Name ( "airflow.sdk.definitions.baseoperatorlink.BaseOperatorLink" )
676678 }
@@ -797,14 +799,15 @@ fn check_name(checker: &Checker, expr: &Expr, range: TextRange) {
797799 } ,
798800
799801 // airflow.providers.common.io
800- [ "airflow" , "providers" , "common" , "io" , rest @ ..] => match & rest {
801- [ "datasets" , "file" , "create_dataset" ] => {
802+ // airflow.providers.common.io.datasets.file
803+ [ "airflow" , "providers" , "common" , "io" , "datasets" , "file" , rest] => match * rest {
804+ "create_dataset" => {
802805 Replacement :: Name ( "airflow.providers.common.io.assets.file.create_asset" )
803806 }
804- [ "datasets" , "file" , " convert_dataset_to_openlineage"] => Replacement :: Name (
807+ " convert_dataset_to_openlineage" => Replacement :: Name (
805808 "airflow.providers.common.io.assets.file.convert_asset_to_openlineage" ,
806809 ) ,
807- [ "datasets" , "file" , " sanitize_uri"] => {
810+ " sanitize_uri" => {
808811 Replacement :: Name ( "airflow.providers.common.io.assets.file.sanitize_uri" )
809812 }
810813 _ => return ,
@@ -818,17 +821,18 @@ fn check_name(checker: &Checker, expr: &Expr, range: TextRange) {
818821 }
819822
820823 // airflow.providers.google
821- [ "airflow" , "providers" , "google" , rest @ ..] => match & rest {
822- [ "datasets" , "bigquery" , "create_dataset" ] => {
824+ // airflow.providers.google.datasets
825+ [ "airflow" , "providers" , "google" , "datasets" , rest @ ..] => match & rest {
826+ [ "bigquery" , "create_dataset" ] => {
823827 Replacement :: Name ( "airflow.providers.google.assets.bigquery.create_asset" )
824828 }
825- [ "datasets" , " gcs", "create_dataset" ] => {
829+ [ "gcs" , "create_dataset" ] => {
826830 Replacement :: Name ( "airflow.providers.google.assets.gcs.create_asset" )
827831 }
828- [ "datasets" , " gcs", "convert_dataset_to_openlineage" ] => Replacement :: Name (
832+ [ "gcs" , "convert_dataset_to_openlineage" ] => Replacement :: Name (
829833 "airflow.providers.google.assets.gcs.convert_asset_to_openlineage" ,
830834 ) ,
831- [ "datasets" , " gcs", "sanitize_uri" ] => {
835+ [ "gcs" , "sanitize_uri" ] => {
832836 Replacement :: Name ( "airflow.providers.google.assets.gcs.sanitize_uri" )
833837 }
834838 _ => return ,
@@ -845,12 +849,13 @@ fn check_name(checker: &Checker, expr: &Expr, range: TextRange) {
845849 }
846850
847851 // airflow.providers.openlineage
848- [ "airflow" , "providers" , "openlineage" , rest @ ..] => match & rest {
849- [ "utils" , "utils" , "DatasetInfo" ] => {
852+ // airflow.providers.openlineage.utils.utils
853+ [ "airflow" , "providers" , "openlineage" , "utils" , "utils" , rest] => match * rest {
854+ "DatasetInfo" => {
850855 Replacement :: Name ( "airflow.providers.openlineage.utils.utils.AssetInfo" )
851856 }
852857
853- [ "utils" , "utils" , " translate_airflow_dataset"] => Replacement :: Name (
858+ " translate_airflow_dataset" => Replacement :: Name (
854859 "airflow.providers.openlineage.utils.utils.translate_airflow_asset" ,
855860 ) ,
856861 _ => return ,
0 commit comments