Hi everyone, Sending an email here to consolidate an update to the AIP-31 that has happened while we have been implementing this.
When AIP-31 was proposed, the proposal mentioned that all operators would have a __call__ method which would be used to define DAG in a functional manner. While implementing this with the SIG Functional Ops team, we decided to change that requirement and replace it with a better integration with templated_fields and a new property in BaseOperator called output. The idea is that (see AIP DAG example for variable reference) get_ip() == get_ip.output. I updated the AIP-31 doc to reflect those changes. Also took the chance to clean the doc a bit to reword some smaller stuff, in order to make it easier for consumption by people outside of this group in the future. Update diff: https://cwiki.apache.org/confluence/pages/diffpagesbyversion.action?pageId=148638736&selectedPageVersions=12&selectedPageVersions=11 Updated AIP-31: https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=148638736 Regarding the output property change, you can follow this discussion in the current Airflow PR between me and Ash, to understand better the motivations behind it: https://github.com/apache/airflow/pull/8962/files#r441004317. A short summary: The main reason for this change was that sometimes templated args in operators are required on initialization (example: subject on EmailOperator). This meant that you needed to add a placeholder value on initialization, and then specify the XComArg that needed to be used instead in the __call__ method. This seemed a bit confusing, so when implementing we decided to rollback the __call__ addition to BaseOperator. This made it difficult to get XComArg from an operator as the initializer returns an instance of the operator instead of an XComArg compared to the proposed __call__ method. For that, we proposed to add a new property output to BaseOperator that would generate an XComArg for the operator with return_value as the default key. An example of how different the DAG looks between the previous AIP and the new update can be found here: https://github.com/apache/airflow/pull/8962/files#r441013469 With that said, I will follow Ash recommendation and try to get a lazy consensus on this change: Allow 48h for committers and developers to comment/bring up objections on the change. If no objection is raised by Thursday June 18th at 1PM MST, we will move forward with the change and merge https://github.com/apache/airflow/pull/8962 PR. Thanks everyone for all the work on this change! 🎉 Gerard Casas Saez Twitter | Cortex | @casassaez