luc-pimentel commented on PR #74323:
URL: https://github.com/apache/airflow/pull/74323#issuecomment-6398840694

   I noticed the TypeScript serializer and Python disagree on one shape and I 
am wondering whether that is the intended behavior or whether an issue or PR 
should be created for it.
   
   Group `outer` holds task `t` and an empty nested group `outer.spare`; 
`extract` and `load` are root tasks. With `spare.before(load)` declared first 
and `extract.before(spare)` second, Python draws `outer.t -> load`, while the 
TypeScript SDK draws `extract -> load`. The in-order shape and the parent 
fallback agree on both sides.
   
   | Edges in declaration order | Python 3.4.0b2 and main | TypeScript 
1.0.0-beta1 and main |
   | --- | --- | --- |
   | `extract.before(spare)`, `spare.before(load)` | `extract -> load` | 
`extract -> load` |
   | `spare.before(load)`, `extract.before(spare)` | `outer.t -> load` | 
`extract -> load` |
   | `extract.before(outer)`, `spare.before(load)` | `extract -> t -> load` | 
`extract -> t -> load` |
   
   Python resolves each `>>` when it is written, so `spare` has no upstream yet 
at that point, while `buildDagGraph` in `ts-sdk/src/sdk/dag-graph.ts` indexes 
every order edge before expanding any. The Go SDK gives the same result as 
TypeScript and documents it as the shared rule; the Java SDK, from reading 
`DagDef.kt`, follows Python.
   
   Is this the intended behavior for the TypeScript SDK, or should an issue or 
PR be created for it? Happy to send one if so.
   
   Checked with the conformance harness's `compare_dag` against the Python 
serializer from main and the released 3.4.0b2.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to