feat: Add dynamically emitted asset events to OpenLineage#65727
Merged
mobuchowski merged 1 commit intoapache:mainfrom Apr 29, 2026
Merged
feat: Add dynamically emitted asset events to OpenLineage#65727mobuchowski merged 1 commit intoapache:mainfrom
mobuchowski merged 1 commit intoapache:mainfrom
Conversation
e3a8f87 to
475a7fe
Compare
475a7fe to
50c05d5
Compare
mobuchowski
approved these changes
Apr 29, 2026
Contributor
mobuchowski
left a comment
There was a problem hiding this comment.
Some nits, no blockers.
seruman
pushed a commit
to seruman/airflow
that referenced
this pull request
Apr 30, 2026
79 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
On Airflow 3, tasks can emit asset events at runtime in several ways beyond statically declaring inlets=/outlets= on the operator. Today OpenLineage only sees the static declarations - anything the task produces dynamically is invisible to OL unless a dedicated extractor or hook-lineage reader picks it up.
This PR closes this gap and adds those dynamic assets into:
Static inlets / outlets behavior is unchanged. Dynamic assets are appended to the static ones; nothing static is dropped, replaced, or rewritten. If a task has no dynamic events, the emitted facet is identical to before.
Inlets are unaffected by this PR - Airflow has no runtime inlet_events emission path that adds new inlets, so the static list remains the source of truth on the input side.
There is also a small change to use
ProvidersManagerTaskRuntimefrom task sdk instead of legacyProvidersManagerfrom core, as it's raising deprecation warning.How users emit these events
-> OL outlet =
"[{'uri': 's3://bucket/file.txt', 'extra': {'rows': '42'}, 'asset_type': 'asset_event_from_alias', 'source_alias': 'my-alias'}]"-> OL outlet =
"[{'uri': 's3://bucket/file.txt', 'extra': {'rows': 42}, 'asset_type': 'asset_event'}]"-> Same as .2 above
Was generative AI tooling used to co-author this PR?
Generated-by: Claude following the guidelines
{pr_number}.significant.rst, in airflow-core/newsfragments. You can add this file in a follow-up commit after the PR is created so you know the PR number.