Less is more. I like the lack of "as dag".

I think it's not really a breaking change.

We can easily argue we are adding functionality rather than introducing a
breaking change. I think the only reason why someone would create a DAG in
a function is to return it and eventually add it to globals(). That's what
also a number of guides on the internet will tell people to do.

And if they did that, that is no-change for them - the DAG will be added to
globals automatically, adding it again is a no-op.

Surely it needs an explanation, something along the lines "It used to be
needed to add to globals, now it's not. If you actually created a DAG and
did not add it to globals, then you really have to rethink what and why you
are doing it :).

J..



On Tue, Aug 2, 2022 at 2:09 PM Felix Uellendall <felue...@pm.me.invalid>
wrote:

> Ah I should have checked your PR, sorry. I was looking at the first
> example. In general I like the idea of removing the `as dag` in the context
> manager syntax.
>
> Best,
> Felix
>
>
>
> Sent with Proton Mail <https://proton.me/> secure email.
>
> ------- Original Message -------
> On Tuesday, August 2nd, 2022 at 13:29, Pankaj Koti <
> pankajkoti...@gmail.com> wrote:
>
> Will this impact DAG file processing time?
>
> If we consider to include the change, we might also need to consider
> informing the user that such functions need to be lightweight inline with
> what we've here for top-level-code best practices:
> https://airflow.apache.org/docs/apache-airflow/stable/best-practices.html#top-level-python-code
>
> On Tue, 2 Aug 2022 at 16:48, Felix Uellendall <felue...@pm.me.invalid>
> wrote:
>
>> Hey Ash,
>>
>> I personally don't like it, because it is not obvious to me.
>>
>> Also what happens if you return the `dag_2` variable and set the return
>> value in the global context to `dag_2` as well? This is how I used to do it
>> when generating DAGs - and in my opinion this is pythonic way of doing it
>> without any magic. I mean magic is nice as long as it works..
>>
>> Keep in mind that also some people use functions to hide the dag creation
>> i.e. factory pattern to clearly separate it from callers context (e.g.
>> business logic). Your solution would blurry this line.
>>
>> So I am leaning towards a "No", but keen to know what others think :)
>>
>> Best,
>> Felix
>>
>>
>> Sent with Proton Mail <https://proton.me/> secure email.
>>
>> ------- Original Message -------
>> On Tuesday, August 2nd, 2022 at 12:43, Ash Berlin-Taylor <a...@apache.org>
>> wrote:
>>
>> Hello all,
>>
>> I'm on a bit of a kick thinking about developer (specifically DAG author)
>> experience and if there is anything we can
>>
>> Some time ago there was a previous conversation about if we should/could
>> "autoregister" DAGs, rather than just looking at the objects in the top
>> level (globals()) of a file, an I knocked up this PR
>>
>> https://github.com/apache/airflow/pull/23592
>>
>> The question I have for you all is do we think this is good idea? It does
>> somewhat subtly change the behaviour in a few cases. Lets take this example
>> this from the docs
>> https://airflow.apache.org/docs/apache-airflow/stable/concepts/dags.html#loading-dags
>>
>> dag_1 = DAG('this_dag_will_be_discovered')
>> def my_function():
>>     dag_2 = DAG('but_this_dag_will_not')
>>
>> my_function()
>>
>> As implemented right now the second dag won't get picked up (as the auto
>> registration is handled in the context manager, but if the example was
>> changed to use a context manager it will get loaded/discovered:
>>
>> with DAG('this_dag_will_be_discovered'):
>>
>>     EmptyOperator(task_id='task')
>>
>>
>> def my_function(): with DAG('so_will_this_dag_now'):
>>
>>         EmptyOperator(task_id='task')
>>
>>
>> my_function()
>>
>> With the change in my PR both DAGs would be picked up. Does that count
>> as a breaking change do you think? Is this behaviour more helpful to users,
>> or do we think it would be confusing?
>>
>> (If I get a few thumbs up I will update the docs in my PR to cover this
>> new behaviour.)
>>
>> -ash
>>
>>
>>
>
> --
> Best regards,
> Pankaj Koti
> +91 97300 79985
>
>
>

Reply via email to