vincbeck commented on code in PR #46391:
URL: https://github.com/apache/airflow/pull/46391#discussion_r1943416683


##########
providers/standard/src/airflow/providers/standard/triggers/file.py:
##########
@@ -75,3 +86,50 @@ async def run(self) -> typing.AsyncIterator[TriggerEvent]:
                         yield TriggerEvent(True)
                         return
             await asyncio.sleep(self.poke_interval)
+
+
+class FileDeleteTrigger(BaseEventTrigger):
+    """
+    A trigger that fires exactly once after it finds the requested file and 
then delete the file.
+
+    The difference between ``FileTrigger`` and ``FileDeleteTrigger`` is 
``FileDeleteTrigger`` can only find a
+    specific file. When this file is found out, ``FileDeleteTrigger`` return 
the content of this file after
+    deleting it.
+
+    :param filepath: File (relative to the base path set within the 
connection).
+    :param poke_interval: Time that the job should wait in between each try
+    """
+
+    def __init__(
+        self,
+        filepath: str,
+        poke_interval: float = 5.0,
+        **kwargs,
+    ):
+        super().__init__()
+        self.filepath = filepath
+        self.poke_interval = poke_interval
+
+    def serialize(self) -> tuple[str, dict[str, Any]]:
+        """Serialize FileDeleteTrigger arguments and classpath."""
+        return (
+            "airflow.providers.standard.triggers.file.FileDeleteTrigger",
+            {
+                "filepath": self.filepath,
+                "poke_interval": self.poke_interval,
+            },
+        )
+
+    async def run(self) -> typing.AsyncIterator[TriggerEvent]:

Review Comment:
   Good catch!



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscr...@airflow.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to