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

vincbeck 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 32d242f18ac Add display_filename parameter to SlackAPIFileOperator 
(#62112)
32d242f18ac is described below

commit 32d242f18ac18ba9994e239faf98c661e1da668a
Author: yuseok89 <[email protected]>
AuthorDate: Thu Feb 19 07:14:05 2026 +0900

    Add display_filename parameter to SlackAPIFileOperator (#62112)
    
    * feat(slack): add display_filename to SlackAPIFileOperator
    
    * fix(slack): fix Sphinx spellcheck for display_filename docstring
---
 .../src/airflow/providers/slack/operators/slack.py | 19 +++++++-
 .../slack/tests/unit/slack/operators/test_slack.py | 50 ++++++++++++++++++++++
 2 files changed, 68 insertions(+), 1 deletion(-)

diff --git a/providers/slack/src/airflow/providers/slack/operators/slack.py 
b/providers/slack/src/airflow/providers/slack/operators/slack.py
index 0eb502624b0..20f6ef7516c 100644
--- a/providers/slack/src/airflow/providers/slack/operators/slack.py
+++ b/providers/slack/src/airflow/providers/slack/operators/slack.py
@@ -183,7 +183,7 @@ class SlackAPIFileOperator(SlackAPIOperator):
             filetype="txt",
         )
 
-        # Send file content
+        # Send file content with a custom display name
         slack_operator_file_content = SlackAPIFileOperator(
             task_id="slack_file_upload_2",
             dag=dag,
@@ -191,6 +191,17 @@ class SlackAPIFileOperator(SlackAPIOperator):
             channels="#general",
             initial_comment="Hello World!",
             content="file content in txt",
+            display_filename="test.txt",
+        )
+
+        # Upload a file with a custom display name
+        slack_operator_file_display = SlackAPIFileOperator(
+            task_id="slack_file_upload_3",
+            dag=dag,
+            slack_conn_id="slack",
+            channels="#general",
+            filename="/files/dags/test.txt",
+            display_filename="custom_test.txt",
         )
 
     :param channels: Comma-separated list of channel names or IDs where the 
file will be shared.
@@ -200,6 +211,8 @@ class SlackAPIFileOperator(SlackAPIOperator):
     :param filetype: slack filetype. (templated) See: 
https://api.slack.com/types/file#file_types
     :param content: file content. (templated)
     :param title: title of file. (templated)
+    :param display_filename: displayed filename in Slack. Overrides the 
default name
+        derived from ``filename``. (templated)
     :param snippet_type: Syntax type for the snippet being uploaded.(templated)
     :param method_version: The version of the method of Slack SDK Client to be 
used, either "v1" or "v2".
     """
@@ -211,6 +224,7 @@ class SlackAPIFileOperator(SlackAPIOperator):
         "filetype",
         "content",
         "title",
+        "display_filename",
         "snippet_type",
     )
     ui_color = "#44BEDF"
@@ -223,6 +237,7 @@ class SlackAPIFileOperator(SlackAPIOperator):
         filetype: str | None = None,
         content: str | None = None,
         title: str | None = None,
+        display_filename: str | None = None,
         method_version: Literal["v1", "v2"] | None = None,
         snippet_type: str | None = None,
         **kwargs,
@@ -234,6 +249,7 @@ class SlackAPIFileOperator(SlackAPIOperator):
         self.filetype = filetype
         self.content = content
         self.title = title
+        self.display_filename = display_filename
         self.method_version = method_version
         self.snippet_type = snippet_type
 
@@ -257,6 +273,7 @@ class SlackAPIFileOperator(SlackAPIOperator):
             # For historical reason SlackAPIFileOperator use filename as 
reference to file
             file=self.filename,
             content=self.content,
+            filename=self.display_filename,
             initial_comment=self.initial_comment,
             title=self.title,
             snippet_type=self.snippet_type,
diff --git a/providers/slack/tests/unit/slack/operators/test_slack.py 
b/providers/slack/tests/unit/slack/operators/test_slack.py
index 304cd8ee8b2..dc4d5cde672 100644
--- a/providers/slack/tests/unit/slack/operators/test_slack.py
+++ b/providers/slack/tests/unit/slack/operators/test_slack.py
@@ -234,6 +234,7 @@ class TestSlackAPIFileOperator:
                 channels="#test-channel",
                 content="test-content",
                 file=None,
+                filename=None,
                 initial_comment=initial_comment,
                 title=title,
                 snippet_type=snippet_type,
@@ -260,7 +261,56 @@ class TestSlackAPIFileOperator:
                 channels="C1234567890",
                 content=None,
                 file="/dev/null",
+                filename=None,
                 initial_comment=initial_comment,
                 title=title,
                 snippet_type=snippet_type,
             )
+
+    def test_api_call_params_with_content_and_display_filename(self):
+        """Test that content upload uses display_filename as the displayed 
name."""
+        op = SlackAPIFileOperator(
+            task_id="slack",
+            slack_conn_id=SLACK_API_TEST_CONNECTION_ID,
+            channels="#test-channel",
+            content="test-content",
+            display_filename="test.txt",
+            initial_comment="test",
+        )
+        with mock.patch(
+            
"airflow.providers.slack.operators.slack.SlackHook.send_file_v1_to_v2"
+        ) as mock_send_file:
+            op.execute({})
+            mock_send_file.assert_called_once_with(
+                channels="#test-channel",
+                content="test-content",
+                file=None,
+                filename="test.txt",
+                initial_comment="test",
+                title=None,
+                snippet_type=None,
+            )
+
+    def test_api_call_params_with_file_and_display_filename(self):
+        """Test that file upload uses display_filename as the displayed 
name."""
+        op = SlackAPIFileOperator(
+            task_id="slack",
+            slack_conn_id=SLACK_API_TEST_CONNECTION_ID,
+            channels="#test-channel",
+            filename="/path/to/file.txt",
+            display_filename="custom_test.txt",
+            initial_comment="test",
+        )
+        with mock.patch(
+            
"airflow.providers.slack.operators.slack.SlackHook.send_file_v1_to_v2"
+        ) as mock_send_file:
+            op.execute({})
+            mock_send_file.assert_called_once_with(
+                channels="#test-channel",
+                content=None,
+                file="/path/to/file.txt",
+                filename="custom_test.txt",
+                initial_comment="test",
+                title=None,
+                snippet_type=None,
+            )

Reply via email to