Not to disregard any PRs in the list, but I'd like to self-nominate one of
my PRs for PR of the month:: https://github.com/apache/airflow/pull/47339.

XComs as we know is a simple concept but when it comes to internals --
covering the model, serialization, deserialization, forward compatibility
with Airflow 3,
and multiple interaction points (TaskFlow API, core API, ti.xcom_push,
etc.).

This PR adds some key improvements:
1. Refactoring the BaseXCom class
- It splits BaseXCom into XComModel and BaseXCom.
- XComModel now strictly handles database/ORM operations.
- BaseXCom serves as the base for custom XCom backends.

2. Uses the above definition with task SDK
- BaseXCom now acts as an interface for interacting with XComs (set, get,
etc.) from the Task SDK to the execution API.

This has a few advantages now:
1. Now its explicit what belongs in XComModel (ORM-related) and what
belongs in custom XCom backends.
2. Instead of going through wrappers on BaseXCom while performing API
actions, API calls now directly interact with the ORM, making the code
easier to grok.
3. Improved backward compat with respect to Xcoms:
- XComModel handles serialization and deserialization consistently with
task SDK (uses *airflow.serialization.serde* module)
- Task SDK follows the same logic, eliminating any ambiguity across them.
- The DB stores JSON compliant objects, with clients responsible for their
own ser/deser now (task SDK will send serialised xcom to the execution api
server, and upon receiving xcoms, will deser them if needed)



Thanks & Regards,
Amogh Desai


On Tue, Mar 25, 2025 at 10:34 AM Abhishek Bhakat
<abhishek.bha...@astronomer.io.invalid> wrote:

> +1 for 47320
>
> - Avi
>
> On Mon, Mar 24, 2025 at 10:57 PM Briana Okyere
> <briana.oky...@astronomer.io.invalid> wrote:
>
> > Hey All,
> >
> > It’s once again time to vote for the PR of the Month!
> >
> > With the help of the `get_important_pr_candidates` script in dev/stats,
> > we've identified the following candidates:
> >
> > PR #47320: Disable ORM access from Tasks, DAG processing and Triggers <
> > https://github.com/apache/airflow/pull/47320
> > <https://github.com/apache/airflow/pull/44332>>
> >
> > PR #47433: AIP-84 | Add Auth for Dags <
> > https://github.com/apache/airflow/pull/47433
> > <https://github.com/apache/airflow/pull/44972>>
> >
> > PR #45300: AIP-81 - API Communication Mechanism <
> > https://github.com/apache/airflow/pull/45300
> > <https://github.com/apache/airflow/pull/44712>>
> >
> > PR #45960: feat(task_sdk): add support for inlet_events in Task Context <
> > https://github.com/apache/airflow/pull/45960
> > <https://github.com/apache/airflow/pull/45106>>
> >
> > PR #47432: Set JWT token to localStorage from cookies <
> > https://github.com/apache/airflow/pull/47432
> > <https://github.com/apache/airflow/pull/44899>>
> >
> > Please reply to this thread with your selection or offer your own
> > nominee(s).
> >
> > Voting will close on Friday, March 28th at 10 AM PST. The winner(s) will
> be
> > featured in the next issue of the Airflow newsletter.
> >
> > Also, if there’s an article or event that you think should be included in
> > this or a future issue of the newsletter, please drop me a line at <
> > briana.oky...@astronomer.io>
> >
> > --
> > Briana Okyere
> >
>

Reply via email to