I'm obviously in favour of the way the AIP was written, and that's for two 
primary reasons.

1. It's analogous to setup and teardown in testing frameworks where you don't 
ever explicitly call them - the framework handles it for you.
2. `task1 >> task2 >> teardown_task` to me falsely implies that teardown 
depends on task2, But it doesn't. It only depends on the "scope being exited".

And as for the Zen of Python point: python itself doesn't even follow them 
well. There are three ways of formatting strings in python.

On thinking a bit more about it, I think I have a counter point to where I 
think explicit dependencies lead to a false expectation:

```
with TaskGroup("tg1"):
    task1 ≥≥ teardown_task

    task2 >> task3 >> task4 >> task5
```

Does teardown run as soon as task 1 is finished, or when all of task1 and task5 
are finished?

I very strongly believe that teardown should only run at the end of a TaskGroup 
- a hard rule on this makes it easier for users to reason about and understand 
it. If it's only as a result of it's explicit dependencies then it means users 
have to reason about when each teardown task is run in each situation as it 
might be different from dag to dag.

In this case the teardown is akin to a "finally" block in python, and the 
TaskGroup is the "try" block, which I hope is a concept that almost everyone 
writing DAGs will understand and be able to relate too.

Teardown tasks are already special in a number of ways (clearing behaviour, 
special failure rules for resulting dag run, different trigger rule) so users 
need to know how it works.

So I vote for keeping it implicit only, but if we as a community favour 
explicit only then we need to have an enforced requirement that there only 
leaves of a TG can be teardown (if they are in use) -- i.e. `[taak1, task5] >> 
teardown_task` would be required in this case.

(And a similar role for set up. If there are any, the only root tasks in a TG 
must be set up)

Ash 

On 23 March 2023 22:16:42 GMT, Pierre Jeambrun <pierrejb...@gmail.com> wrote:
>I am also in favor of explicit relationships only.
>
>From a person who didn't work on AIP-52, it seems easier to understand what
>is going on without having to dive into the setup/teardown documentation.
>
>Le jeu. 23 mars 2023 à 22:53, Jed Cunningham <jedcunning...@apache.org> a
>écrit :
>
>> I've been working closely with Daniel on AIP-52 for a while now, but I'll
>> still share my thoughts here.
>>
>> I'm also in favor of only supporting explicit relationships.
>>
>> In my opinion, even if multiple setup/teardown per scope never materialize,
>> explicit relationships are still a better choice due to the clarity it
>> brings today.
>>

Reply via email to