File tree Expand file tree Collapse file tree 3 files changed +27
-0
lines changed Expand file tree Collapse file tree 3 files changed +27
-0
lines changed Original file line number Diff line number Diff line change 27
27
import os
28
28
import sys
29
29
import types
30
+ import warnings
30
31
from pathlib import Path
31
32
from typing import TYPE_CHECKING , Any , Iterable
32
33
@@ -431,6 +432,17 @@ def initialize_ti_deps_plugins():
431
432
registered_ti_dep_classes = {}
432
433
433
434
for plugin in plugins :
435
+ if not plugin .ti_deps :
436
+ continue
437
+
438
+ from airflow .exceptions import RemovedInAirflow3Warning
439
+
440
+ warnings .warn (
441
+ "Using custom `ti_deps` on operators has been removed in Airflow 3.0" ,
442
+ RemovedInAirflow3Warning ,
443
+ stacklevel = 1 ,
444
+ )
445
+
434
446
registered_ti_dep_classes .update (
435
447
{qualname (ti_dep .__class__ ): ti_dep .__class__ for ti_dep in plugin .ti_deps }
436
448
)
Original file line number Diff line number Diff line change 28
28
29
29
import pytest
30
30
31
+ from airflow .exceptions import RemovedInAirflow3Warning
31
32
from airflow .hooks .base import BaseHook
32
33
from airflow .listeners .listener import get_listener_manager
33
34
from airflow .plugins_manager import AirflowPlugin
@@ -270,6 +271,17 @@ class AirflowAdminMenuLinksPlugin(AirflowPlugin):
270
271
),
271
272
]
272
273
274
+ def test_deprecate_ti_deps (self ):
275
+ class DeprecatedTIDeps (AirflowPlugin ):
276
+ name = "ti_deps"
277
+
278
+ ti_deps = [mock .MagicMock ()]
279
+
280
+ with mock_plugin_manager (plugins = [DeprecatedTIDeps ()]), pytest .warns (RemovedInAirflow3Warning ):
281
+ from airflow import plugins_manager
282
+
283
+ plugins_manager .initialize_ti_deps_plugins ()
284
+
273
285
def test_should_not_warning_about_fab_plugins (self , caplog ):
274
286
class AirflowAdminViewsPlugin (AirflowPlugin ):
275
287
name = "test_admin_views_plugin"
Original file line number Diff line number Diff line change @@ -539,6 +539,7 @@ def sorted_serialized_dag(dag_dict: dict):
539
539
return actual , expected
540
540
541
541
@pytest .mark .db_test
542
+ @pytest .mark .filterwarnings ("ignore::airflow.exceptions.RemovedInAirflow3Warning" )
542
543
def test_deserialization_across_process (self ):
543
544
"""A serialized DAG can be deserialized in another process."""
544
545
@@ -1596,6 +1597,7 @@ def test_deps_sorted(self):
1596
1597
"airflow.ti_deps.deps.trigger_rule_dep.TriggerRuleDep" ,
1597
1598
]
1598
1599
1600
+ @pytest .mark .filterwarnings ("ignore::airflow.exceptions.RemovedInAirflow3Warning" )
1599
1601
def test_error_on_unregistered_ti_dep_serialization (self ):
1600
1602
# trigger rule not registered through the plugin system will not be serialized
1601
1603
class DummyTriggerRule (BaseTIDep ):
@@ -1634,6 +1636,7 @@ def test_error_on_unregistered_ti_dep_deserialization(self):
1634
1636
SerializedBaseOperator .deserialize_operator (serialize_op )
1635
1637
1636
1638
@pytest .mark .db_test
1639
+ @pytest .mark .filterwarnings ("ignore::airflow.exceptions.RemovedInAirflow3Warning" )
1637
1640
def test_serialize_and_deserialize_custom_ti_deps (self ):
1638
1641
from test_plugin import CustomTestTriggerRule
1639
1642
You can’t perform that action at this time.
0 commit comments