You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by GitBox <gi...@apache.org> on 2021/09/30 12:36:10 UTC

[GitHub] [airflow] eladkal commented on a change in pull request #17421: Add ShortCircuitOperator configurability for respecting downstream trigger rules

eladkal commented on a change in pull request #17421:
URL: https://github.com/apache/airflow/pull/17421#discussion_r719360368



##########
File path: airflow/operators/python.py
##########
@@ -185,16 +186,37 @@ def execute(self, context: Dict):
 class ShortCircuitOperator(PythonOperator, SkipMixin):
     """
     Allows a workflow to continue only if a condition is met. Otherwise, the
-    workflow "short-circuits" and downstream tasks are skipped.
+    workflow "short-circuits" and downstream tasks are skipped. The short-circuiting can be configured to
+    operated in one of two modes: "hard" or "soft".  In "hard" mode, the default mode, all downstream tasks
+    are skipped without considering the ``trigger_rule`` defined for tasks.  In "soft" mode, the
+    ``trigger_rule`` is respected.
 
     The ShortCircuitOperator is derived from the PythonOperator. It evaluates a
-    condition and short-circuits the workflow if the condition is False. Any
-    downstream tasks are marked with a state of "skipped". If the condition is
-    True, downstream tasks proceed as normal.
+    condition and short-circuits the workflow if the condition is False. Any downstream tasks are marked with
+    a state of "skipped" based on the short-circuiting mode configured. If the condition is True, downstream
+    tasks proceed as normal.
 
-    The condition is determined by the result of `python_callable`.
+    The condition is determined by the result of ``python_callable``.
+
+    :param mode: If set to "hard", all downstream tasks from this operator task will be skipped.  This is
+        the default behavior.  If set to "soft", downstream tasks will be skipped but the ``trigger_rule``
+        defined for a task will be respected.
+    :type mode: bool
     """
 
+    modes = ["hard", "soft"]

Review comment:
       I wonder if it would be better to have:
   ```suggestion
       downstream_trigger_rules_mode = ["respect", "ignore"]
   ```
   At least for me i can understand from the parameter name and option what it means without looking it up in the docstring/documentation. WDYT?




-- 
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-unsubscribe@airflow.apache.org

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