Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

AIP-72: Add Taskflow API support & template rendering in Task SDK #45444

Merged
merged 2 commits into from
Jan 7, 2025

Conversation

kaxil
Copy link
Member

@kaxil kaxil commented Jan 6, 2025

closes #45232
part of #44481

The Templater class has been moved to the Task SDK to align with the language-specific aspects of template rendering. Templating logic is inherently tied to Python constructs. By keeping the Templater class within the Task SDK, we ensure that the core templating logic remains coupled with language-specific implementations.

Options I had were keeping it on the Schdeuler or the Execution side of Task SDK, neither of which is ideal as we would want to change the code in definition like DAG, Operator alongwith how it renders.

With tutorial_taskflow_api:

image

With example_xcom_args:

image

^ Add meaningful description above
Read the Pull Request Guidelines for more information.
In case of fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
In case of a new dependency, check compliance with the ASF 3rd Party License Policy.
In case of backwards incompatible changes please leave a note in a newsfragment file, named {pr_number}.significant.rst or {issue_number}.significant.rst, in newsfragments.

@kaxil kaxil added area:task-execution-interface-aip72 AIP-72: Task Execution Interface (TEI) aka Task SDK area:task-sdk labels Jan 6, 2025
@kaxil kaxil force-pushed the get-xcom-arg-working branch from 7866bb2 to 8b92225 Compare January 6, 2025 23:52
closes apache#45232

The Templater class has been moved to the Task SDK to align with the language-specific aspects of template rendering. Templating logic is inherently tied to Python constructs. By keeping the Templater class within the Task SDK, we ensure that the core templating logic remains coupled with language-specific implementations.

Options I had were keeping it on the Schdeuler or the Execution side of Task SDK, neither of which is ideal as we would want to change the code in definition like DAG, Operator alongwith how it renders.
@kaxil kaxil force-pushed the get-xcom-arg-working branch 3 times, most recently from ce4eba6 to 077ce3b Compare January 7, 2025 07:57
@kaxil kaxil force-pushed the get-xcom-arg-working branch from 077ce3b to 83b3218 Compare January 7, 2025 08:50
@kaxil kaxil merged commit b2a244b into apache:main Jan 7, 2025
86 checks passed
@kaxil kaxil deleted the get-xcom-arg-working branch January 7, 2025 09:38
agupta01 pushed a commit to agupta01/airflow that referenced this pull request Jan 13, 2025
…ache#45444)

closes apache#45232
part of apache#44481

The Templater class has been moved to the Task SDK to align with the language-specific aspects of template rendering. Templating logic is inherently tied to Python constructs. By keeping the Templater class within the Task SDK, we ensure that the core templating logic remains coupled with language-specific implementations.

Options I had were keeping it on the Schdeuler or the Execution side of Task SDK, neither of which is ideal as we would want to change the code in definition like DAG, Operator alongwith how it renders.

With [`tutorial_taskflow_api`](https://github.com/apache/airflow/blob/5581e65fd5575364fbf2c0e5c8cf4f4afe2b841b/airflow/example_dags/tutorial_taskflow_api.py#L38):

<img width="1705" alt="image" src="https://github.com/user-attachments/assets/c84327ed-5956-4f48-ab32-97a77ae44016" />

---
With [`example_xcom_args`](https://github.com/apache/airflow/blob/5581e65fd5575364fbf2c0e5c8cf4f4afe2b841b/airflow/example_dags/example_xcomargs.py):

<img width="1720" alt="image" src="https://github.com/user-attachments/assets/f9e0190f-1030-437d-ab6b-8247a5f8cdb0" />
HariGS-DB pushed a commit to HariGS-DB/airflow that referenced this pull request Jan 16, 2025
…ache#45444)

closes apache#45232
part of apache#44481

The Templater class has been moved to the Task SDK to align with the language-specific aspects of template rendering. Templating logic is inherently tied to Python constructs. By keeping the Templater class within the Task SDK, we ensure that the core templating logic remains coupled with language-specific implementations.

Options I had were keeping it on the Schdeuler or the Execution side of Task SDK, neither of which is ideal as we would want to change the code in definition like DAG, Operator alongwith how it renders.

With [`tutorial_taskflow_api`](https://github.com/apache/airflow/blob/5581e65fd5575364fbf2c0e5c8cf4f4afe2b841b/airflow/example_dags/tutorial_taskflow_api.py#L38):

<img width="1705" alt="image" src="https://github.com/user-attachments/assets/c84327ed-5956-4f48-ab32-97a77ae44016" />

---
With [`example_xcom_args`](https://github.com/apache/airflow/blob/5581e65fd5575364fbf2c0e5c8cf4f4afe2b841b/airflow/example_dags/example_xcomargs.py):

<img width="1720" alt="image" src="https://github.com/user-attachments/assets/f9e0190f-1030-437d-ab6b-8247a5f8cdb0" />
got686-yandex pushed a commit to got686-yandex/airflow that referenced this pull request Jan 30, 2025
…ache#45444)

closes apache#45232
part of apache#44481

The Templater class has been moved to the Task SDK to align with the language-specific aspects of template rendering. Templating logic is inherently tied to Python constructs. By keeping the Templater class within the Task SDK, we ensure that the core templating logic remains coupled with language-specific implementations.

Options I had were keeping it on the Schdeuler or the Execution side of Task SDK, neither of which is ideal as we would want to change the code in definition like DAG, Operator alongwith how it renders.

With [`tutorial_taskflow_api`](https://github.com/apache/airflow/blob/5581e65fd5575364fbf2c0e5c8cf4f4afe2b841b/airflow/example_dags/tutorial_taskflow_api.py#L38):

<img width="1705" alt="image" src="https://github.com/user-attachments/assets/c84327ed-5956-4f48-ab32-97a77ae44016" />

---
With [`example_xcom_args`](https://github.com/apache/airflow/blob/5581e65fd5575364fbf2c0e5c8cf4f4afe2b841b/airflow/example_dags/example_xcomargs.py):

<img width="1720" alt="image" src="https://github.com/user-attachments/assets/f9e0190f-1030-437d-ab6b-8247a5f8cdb0" />
@kaxil kaxil mentioned this pull request Feb 18, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area:providers area:task-execution-interface-aip72 AIP-72: Task Execution Interface (TEI) aka Task SDK area:task-sdk provider:cncf-kubernetes Kubernetes provider related issues provider:standard
Development

Successfully merging this pull request may close these issues.

Add support for Taskflow API in Task SDK & template rendering
2 participants