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

shahar1 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 f2802c459fe Preserve Dataform workflow invocation config (#53843) 
(#69161)
f2802c459fe is described below

commit f2802c459fe4c2012ba058035b812296b49fa0ed
Author: Deepak Jain <[email protected]>
AuthorDate: Wed Jul 22 22:53:25 2026 +0530

    Preserve Dataform workflow invocation config (#53843) (#69161)
---
 .../providers/google/cloud/hooks/dataform.py       |  2 ++
 .../tests/unit/google/cloud/hooks/test_dataform.py | 23 +++++++++++++++++++++-
 2 files changed, 24 insertions(+), 1 deletion(-)

diff --git 
a/providers/google/src/airflow/providers/google/cloud/hooks/dataform.py 
b/providers/google/src/airflow/providers/google/cloud/hooks/dataform.py
index 48162f1fd8c..9167689daa8 100644
--- a/providers/google/src/airflow/providers/google/cloud/hooks/dataform.py
+++ b/providers/google/src/airflow/providers/google/cloud/hooks/dataform.py
@@ -187,6 +187,8 @@ class DataformHook(GoogleBaseHook):
         """
         client = self.get_dataform_client()
         parent = 
f"projects/{project_id}/locations/{region}/repositories/{repository_id}"
+        if isinstance(workflow_invocation, dict):
+            workflow_invocation = WorkflowInvocation(workflow_invocation)
         return client.create_workflow_invocation(
             request={"parent": parent, "workflow_invocation": 
workflow_invocation},
             retry=retry,
diff --git a/providers/google/tests/unit/google/cloud/hooks/test_dataform.py 
b/providers/google/tests/unit/google/cloud/hooks/test_dataform.py
index 2dda5ffe431..c70492a7784 100644
--- a/providers/google/tests/unit/google/cloud/hooks/test_dataform.py
+++ b/providers/google/tests/unit/google/cloud/hooks/test_dataform.py
@@ -50,6 +50,12 @@ WORKFLOW_INVOCATION = {
         f"{REPOSITORY_ID}/compilationResults/{COMPILATION_RESULT_ID}"
     ),
 }
+FULL_REFRESH_WORKFLOW_INVOCATION = {
+    **WORKFLOW_INVOCATION,
+    "invocation_config": {
+        "fully_refresh_incremental_tables_enabled": True,
+    },
+}
 WORKFLOW_INVOCATION_ID = "test_workflow_invocation_id"
 PATH_TO_FOLDER = "path/to/folder"
 FILEPATH = "path/to/file.txt"
@@ -113,12 +119,27 @@ class TestDataformHook:
         )
         parent = 
f"projects/{PROJECT_ID}/locations/{REGION}/repositories/{REPOSITORY_ID}"
         
mock_client.return_value.create_workflow_invocation.assert_called_once_with(
-            request=dict(parent=parent, 
workflow_invocation=WORKFLOW_INVOCATION),
+            request=dict(parent=parent, 
workflow_invocation=WorkflowInvocation(WORKFLOW_INVOCATION)),
             retry=DEFAULT,
             timeout=None,
             metadata=(),
         )
 
+    @mock.patch(DATAFORM_STRING.format("DataformHook.get_dataform_client"))
+    def 
test_create_workflow_invocation_preserves_invocation_config_from_dict(self, 
mock_client):
+        self.hook.create_workflow_invocation(
+            project_id=PROJECT_ID,
+            region=REGION,
+            repository_id=REPOSITORY_ID,
+            workflow_invocation=FULL_REFRESH_WORKFLOW_INVOCATION,
+        )
+
+        request = 
mock_client.return_value.create_workflow_invocation.call_args.kwargs["request"]
+        workflow_invocation = request["workflow_invocation"]
+        assert isinstance(workflow_invocation, WorkflowInvocation)
+        assert workflow_invocation.compilation_result == 
WORKFLOW_INVOCATION["compilation_result"]
+        assert 
workflow_invocation.invocation_config.fully_refresh_incremental_tables_enabled 
is True
+
     @mock.patch(DATAFORM_STRING.format("DataformHook.get_dataform_client"))
     def test_get_workflow_invocation(self, mock_client):
         self.hook.get_workflow_invocation(

Reply via email to