This is an automated email from the ASF dual-hosted git repository.

potiuk pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/main by this push:
     new 57b12fe0ce Resolve dag serialization deprecations in tests (#40006)
57b12fe0ce is described below

commit 57b12fe0ce14487188da2c12a7bbfa1108008301
Author: Gopal Dirisala <39794726+dir...@users.noreply.github.com>
AuthorDate: Sun Jun 2 13:49:42 2024 +0530

    Resolve dag serialization deprecations in tests (#40006)
---
 tests/deprecations_ignore.yml                 |  3 ---
 tests/serialization/test_dag_serialization.py | 36 ++++++++++++++++++++++-----
 tests/serialization/test_pydantic_models.py   |  4 ++-
 3 files changed, 33 insertions(+), 10 deletions(-)

diff --git a/tests/deprecations_ignore.yml b/tests/deprecations_ignore.yml
index b89b41355a..541d89898f 100644
--- a/tests/deprecations_ignore.yml
+++ b/tests/deprecations_ignore.yml
@@ -136,9 +136,6 @@
 
 # Serialization
 - 
tests/serialization/test_dag_serialization.py::TestStringifiedDAGs::test_custom_dep_detector
-- 
tests/serialization/test_dag_serialization.py::TestStringifiedDAGs::test_dag_params_roundtrip
-- 
tests/serialization/test_dag_serialization.py::TestStringifiedDAGs::test_task_params_roundtrip
-- 
tests/serialization/test_pydantic_models.py::test_serializing_pydantic_dataset_event
 
 
 # WWW
diff --git a/tests/serialization/test_dag_serialization.py 
b/tests/serialization/test_dag_serialization.py
index fbefe71d28..093b7fba76 100644
--- a/tests/serialization/test_dag_serialization.py
+++ b/tests/serialization/test_dag_serialization.py
@@ -45,7 +45,7 @@ import airflow
 from airflow.datasets import Dataset
 from airflow.decorators import teardown
 from airflow.decorators.base import DecoratedOperator
-from airflow.exceptions import AirflowException, SerializationError
+from airflow.exceptions import AirflowException, RemovedInAirflow3Warning, 
SerializationError
 from airflow.hooks.base import BaseHook
 from airflow.models.baseoperator import BaseOperator
 from airflow.models.connection import Connection
@@ -934,7 +934,14 @@ class TestStringifiedDAGs:
         """
         Test that params work both on Serialized DAGs & Tasks
         """
-        dag = DAG(dag_id="simple_dag", params=val)
+        if val and any([True for k, v in val.items() if isinstance(v, set)]):
+            with pytest.warns(
+                RemovedInAirflow3Warning,
+                match="The use of non-json-serializable params is deprecated 
and will be removed in a future release",
+            ):
+                dag = DAG(dag_id="simple_dag", params=val)
+        else:
+            dag = DAG(dag_id="simple_dag", params=val)
         BaseOperator(task_id="simple_task", dag=dag, start_date=datetime(2019, 
8, 1))
 
         serialized_dag_json = SerializedDAG.to_json(dag)
@@ -943,7 +950,15 @@ class TestStringifiedDAGs:
 
         assert "params" in serialized_dag["dag"]
 
-        deserialized_dag = SerializedDAG.from_dict(serialized_dag)
+        if val and any([True for k, v in val.items() if isinstance(v, set)]):
+            with pytest.warns(
+                RemovedInAirflow3Warning,
+                match="The use of non-json-serializable params is deprecated 
and will be removed in a future release",
+            ):
+                deserialized_dag = SerializedDAG.from_dict(serialized_dag)
+
+        else:
+            deserialized_dag = SerializedDAG.from_dict(serialized_dag)
         deserialized_simple_task = deserialized_dag.task_dict["simple_task"]
         assert expected_val == deserialized_dag.params.dump()
         assert expected_val == deserialized_simple_task.params.dump()
@@ -1011,15 +1026,24 @@ class TestStringifiedDAGs:
         Test that params work both on Serialized DAGs & Tasks
         """
         dag = DAG(dag_id="simple_dag")
-        BaseOperator(task_id="simple_task", dag=dag, params=val, 
start_date=datetime(2019, 8, 1))
+        if val and any([True for k, v in val.items() if isinstance(v, set)]):
+            with pytest.warns(
+                RemovedInAirflow3Warning,
+                match="The use of non-json-serializable params is deprecated 
and will be removed in a future release",
+            ):
+                BaseOperator(task_id="simple_task", dag=dag, params=val, 
start_date=datetime(2019, 8, 1))
+                serialized_dag = SerializedDAG.to_dict(dag)
+                deserialized_dag = SerializedDAG.from_dict(serialized_dag)
+        else:
+            BaseOperator(task_id="simple_task", dag=dag, params=val, 
start_date=datetime(2019, 8, 1))
+            serialized_dag = SerializedDAG.to_dict(dag)
+            deserialized_dag = SerializedDAG.from_dict(serialized_dag)
 
-        serialized_dag = SerializedDAG.to_dict(dag)
         if val:
             assert "params" in serialized_dag["dag"]["tasks"][0]["__var"]
         else:
             assert "params" not in serialized_dag["dag"]["tasks"][0]["__var"]
 
-        deserialized_dag = SerializedDAG.from_dict(serialized_dag)
         deserialized_simple_task = deserialized_dag.task_dict["simple_task"]
         assert expected_val == deserialized_simple_task.params.dump()
 
diff --git a/tests/serialization/test_pydantic_models.py 
b/tests/serialization/test_pydantic_models.py
index 522399d1fc..048faebf54 100644
--- a/tests/serialization/test_pydantic_models.py
+++ b/tests/serialization/test_pydantic_models.py
@@ -215,12 +215,14 @@ def test_serializing_pydantic_dataset_event(session, 
create_task_instance, creat
         with_dagrun_type=DagRunType.MANUAL,
         session=session,
     )
+    execution_date = timezone.utcnow()
     dr = dag.create_dagrun(
         run_id="test2",
         run_type=DagRunType.DATASET_TRIGGERED,
-        execution_date=timezone.utcnow(),
+        execution_date=execution_date,
         state=None,
         session=session,
+        data_interval=(execution_date, execution_date),
     )
     ds1_event = DatasetEvent(dataset_id=1)
     ds2_event_1 = DatasetEvent(dataset_id=2)

Reply via email to