This is an automated email from the ASF dual-hosted git repository.
jason810496 pushed a change to branch jason/lang-sdk-e2e/08-native-e2e
in repository https://gitbox.apache.org/repos/asf/airflow.git
discard de018a0279a Exclude airflowignore_all from the license check
discard b4fe99230eb Rework the lang-SDK k8s harness for mixed-language and
native Dag tests
discard ba9b3af058d Keep the k8s lang-SDK values comment within the YAML line
limit
discard 9b33b9707cf Read a native Dag example's served Dags with bundleDags
discard 467ee783335 Say which coordinator runs the native e2e Java tasks
discard 26506514641 Drop the dag_bundle_name reason from the k8s native
TypeScript skip
discard 06bee939561 Parse native Dags in the e2e by class, not by Dag bundle
name
discard 21edb13d82c Name the skipped-branch e2e test after what it checks
discard c0cb19d8ba8 Document how the TypeScript example's native Dag gets
parsed
discard 1952c5a3692 Explain why the k8s native TypeScript Dag test is skipped
discard a3d7fecc6be Pack the TypeScript example against the built SDK
discard be7962f1860 Build the TypeScript SDK before packing the k8s example
bundle
discard f2538855d93 Key the Lang-SDK e2e jobs on native Dag modules only
discard 3f7bf7df81d Build the k8s TypeScript artifacts only for the native Dag
test
discard 2ca5fb4e859 Share the Dag run lookup and the native Java queue name
discard a06f097f088 Run the Lang-SDK e2e jobs when native Dag parsing changes
discard e49e3a775c4 Add a native Java Dag to the compose e2e
discard ace918a4c56 Keep the containerized Java build's Maven repository on
the host
discard cbab218b1fe Check the native TypeScript Dag's source and triggered run
discard d79bbc9b645 Parse the native TypeScript Dag in the compose e2e
discard 1e7616bea50 TS SDK: cover native TypeScript Dags end to end
discard cba80f349db Java SDK: Bound the describe run and keep its payload to
the bundle JAR
discard 69ad51eaf9a Java SDK: Pack each native Dag's source file into the
bundle JAR
discard 78a344a238b Java SDK: Record the class that declares each Dag and
describe it on request
discard 2ad331f4d33 Java SDK: Mark the native Dag capabilities as shipping in
3.4
discard e053d8ffc9d Java SDK: Keep one unserializable Dag from failing a whole
bundle's parse
discard ba8f6a29e06 Java SDK: Carry a native Dag's call arguments as argument
bindings
discard 47c8e5b7afa Java SDK: Build a native Dag's timetable the way Python
does
discard ca577878a39 Java SDK: Run the serialization conformance check on every
file that steers it
discard 38d2fa9807d Java SDK: Check native Dag serialization against Airflow's
discard 2de1e31583f Java SDK: Write each Dag tag once, as Python does
discard e53785eda1b Java SDK: Serialize a native Dag's task groups
discard 164e9589de0 Java SDK: Leave out the email flags a Java task cannot act
on
discard 278343e460d Java SDK: Leave config-backed Dag fields for Airflow to
fill in
discard b14b93580fd Test that the conformance check compares Dag params
discard 5974f53a198 Java SDK: Serialize native Dags to DagSerialization v3 on
parse requests
discard 0619d10021e Java SDK: Group a native Dag's tasks with task groups
add 508267cda9b Fix Snowflake UTC usage in TestSnowflakeRestTokenProvider
(#74393)
add 2a62e03fc03 Add missing Taiwanese Mandarin UI translations (#74223)
add a2cf3289367 Go SDK: answer the Dag-parsing request from Serve (#74391)
add 7f653e67153 Fix UI lint erros failing static checks (#74402)
add 4cab3cf055c [AIP-94] Mark dags clear as migrated to airflowctl (#74384)
add 634d6bd7242 Enforce execution_timeout from the task supervisor side
(#73806)
add 9af3db03639 Keep get_dag_details and get_pools database queries off
the API server event loop (#74247)
add 104a8691b93 Add a test that a mapped task group skip decision stays
within its Dag run (#74390)
add ef495f35a30 Add `max_retries` to `AgentSkillsToolset` (#74381)
add 9f241d42332 Add toolset overview and MCP tool filtering example to
`common.ai` docs (#74378)
add 4ef67b4e0c6 Tell the model a pinned hook argument is fixed for every
allowed method (#74380)
add 73a4ffa3a53 Avoid a full asset table scan per request in simple auth
manager (#72934)
add 96582adf66f Respect run on latest version when clearing a running Dag
run (#71425)
add ccd96d21597 Regenerate the stale TS SDK supervisor types (#74412)
add 11cbf4da098 Allow a custom Kubernetes client factory for
KubernetesExecutor (#73014)
add 57183056ca7 Fix AsyncToSync error in Databricks deferrable operators
on Airflow 3.0 (#74406)
add 0b4039e250c Upgrade UI major dependencies: msw, vitest, react-table
and mermaid (#74369)
add 8b115c0be65 Verify SSH host keys by default in SSH and SFTP hooks
(#73419)
add 77e0906dc31 Scope plugin views on any entity field, not a fixed
criteria set (#74278)
add 4da2ad1e2b3 Document HTTP statuses that route helpers raise (#74027)
add 05dec276c72 Let the task endpoint describe a task at a given Dag
version (#74365)
add 19d20a091dc UI: Add 'Mark as Skipped' option to Task Instance actions
(#72425)
add d38e9ceb749 Fix date range filter inputs committing on every keystroke
(#74011)
add 37032a47d49 Bump the fab-ui-package-updates group across 1 directory
with 2 updates (#74418)
add 37dad4c1df2 Fix codespell failure on main in DateRangeFilter test
(#74430)
add fe4481cc8e5 Fix Databricks async connection test on Airflow before 3.1
(#74427)
add 8043c703de1 Java SDK: Group a native Dag's tasks with task groups
(#74230)
add 1921597eeff Go SDK: embed each native Dag's source file in the bundle
(#74342)
add 01b977568e2 Java SDK: Serialize native Dags to DagSerialization v3
(#71190)
add 46d3c59dfec Parse native Go Dags and show each Dag's own source
(#74341)
add ddb905f0ee0 Fix airflowctl dags get-tags crashing whenever a Dag has
tags (#73743)
add 9c9346c8065 Reconnect SMTP hooks after leaving a context manager
(#74416)
add 08205150190 i18n(ko): Align particles after Dag with the agreed
pronunciation (#73799)
add 7264093c4fb Java SDK: Record the class that declares each Dag and
describe it on request
add 9c3d305a531 Java SDK: Pack each native Dag's source file into the
bundle JAR
add 1365791abbd Java SDK: Bound the describe run and keep its payload to
the bundle JAR
add 1ef47f48ee0 Java SDK: Show each Dag's own source and find it outside
the package layout
add e410e22c689 Java SDK: Pick one of two tasks with a condition
add 8125524010d Java SDK: Choose one of several tasks with a branch
add 542db5dffa7 Java SDK: Trigger another Dag's run from a native Java Dag
add 7802bd64752 Go SDK: add the supervisor calls a TriggerDagRun task makes
add 4e12db7465b Go SDK: take the logical date of TriggerDagRun as a
time.Time
add b648adfd434 Go SDK: run TriggerDagRun tasks in the Go runtime
add 4d405553a4d Go SDK: give a TriggerDagRun task the Dag's queue
add e22559a009e Go SDK: document how the runtime runs a TriggerDagRun task
add 81f7654fba6 Go SDK: add a native Dag example
add 911c98c70ea Pack and parse native Go Dags in the go_sdk e2e mode
add 01dee954ee2 Cover native Go Dags in the go_sdk e2e test
add 73bdd97f813 TS SDK: cover native TypeScript Dags end to end
add 8b3e71197eb Parse the native TypeScript Dag in the compose e2e
add d89110630d1 Check the native TypeScript Dag's source and triggered run
add f0c5ed2dedc Keep the containerized Java build's Maven repository on
the host
add e0a6c2bb99e Add a native Java Dag to the compose e2e
add efa6a836e9c Run the Lang-SDK e2e jobs when native Dag parsing changes
add e229dc71a89 Share the Dag run lookup and the native Java queue name
add 103793d0c6c Build the k8s TypeScript artifacts only for the native Dag
test
add 72a5eeab155 Key the Lang-SDK e2e jobs on native Dag modules only
add c12f8ded57a Build the TypeScript SDK before packing the k8s example
bundle
add 5fdc0d47dac Pack the TypeScript example against the built SDK
add 125ae7d1ee4 Explain why the k8s native TypeScript Dag test is skipped
add 07b3aad7af6 Document how the TypeScript example's native Dag gets
parsed
add a5c39d85078 Name the skipped-branch e2e test after what it checks
add 0c90a7ef4ad Parse native Dags in the e2e by class, not by Dag bundle
name
add fa860ec7d9e Drop the dag_bundle_name reason from the k8s native
TypeScript skip
add 153d88113ac Say which coordinator runs the native e2e Java tasks
add dc4b1daac33 Read a native Dag example's served Dags with bundleDags
add 829a2914506 Keep the k8s lang-SDK values comment within the YAML line
limit
add f00d8c4111d Rework the lang-SDK k8s harness for mixed-language and
native Dag tests
add c76d1de6211 Exclude airflowignore_all from the license check
This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version. This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:
* -- * -- B -- O -- O -- O (de018a0279a)
\
N -- N -- N refs/heads/jason/lang-sdk-e2e/08-native-e2e
(c76d1de6211)
You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.
Any revisions marked "omit" are not gone; other references still
refer to them. Any revisions marked "discard" are gone forever.
No new revisions were added by this update.
Summary of changes:
.agents/skills/airflow-translations/locales/ko.md | 18 +
.pre-commit-config.yaml | 4 +-
.../0007-taskflow-across-language-boundary.md | 5 +
.../0015-per-dag-source-in-bundle-artifact.md | 15 +-
.../docs/administration-and-deployment/plugins.rst | 172 +++--
.../authoring-and-scheduling/language-sdks/go.rst | 64 +-
.../language-sdks/java.rst | 28 +-
airflow-core/docs/core-concepts/tasks.rst | 28 +-
airflow-core/newsfragments/69148.feature.rst | 1 -
airflow-core/newsfragments/73806.improvement.rst | 1 +
airflow-core/newsfragments/74278.feature.rst | 1 +
.../auth/managers/simple/simple_auth_manager.py | 30 +
.../api_fastapi/core_api/datamodels/dags.py | 14 +-
.../api_fastapi/core_api/datamodels/plugins.py | 31 +-
.../api_fastapi/core_api/datamodels/pools.py | 6 +-
.../api_fastapi/core_api/openapi/_private_ui.yaml | 6 +
.../core_api/openapi/v2-rest-api-generated.yaml | 98 +--
.../api_fastapi/core_api/routes/public/dags.py | 8 +-
.../api_fastapi/core_api/routes/public/pools.py | 2 +-
.../core_api/routes/public/task_state_store.py | 2 +-
.../api_fastapi/core_api/routes/public/tasks.py | 29 +-
.../api_fastapi/core_api/routes/ui/calendar.py | 4 +-
.../api_fastapi/execution_api/routes/hitl.py | 6 +-
.../execution_api/routes/task_instances.py | 12 +-
.../src/airflow/cli/commands/dag_command.py | 1 +
.../src/airflow/config_templates/config.yml | 4 +-
airflow-core/src/airflow/models/dagrun.py | 4 +-
airflow-core/src/airflow/models/taskinstance.py | 107 ++-
airflow-core/src/airflow/plugins_manager.py | 216 +++++-
.../src/airflow/ui/openapi-gen/queries/common.ts | 5 +-
.../ui/openapi-gen/queries/ensureQueryData.ts | 10 +-
.../src/airflow/ui/openapi-gen/queries/prefetch.ts | 10 +-
.../src/airflow/ui/openapi-gen/queries/queries.ts | 10 +-
.../src/airflow/ui/openapi-gen/queries/suspense.ts | 10 +-
.../airflow/ui/openapi-gen/requests/schemas.gen.ts | 108 +--
.../ui/openapi-gen/requests/services.gen.ts | 10 +
.../airflow/ui/openapi-gen/requests/types.gen.ts | 29 +-
airflow-core/src/airflow/ui/package.json | 10 +-
airflow-core/src/airflow/ui/pnpm-lock.yaml | 599 +++++++--------
.../airflow/ui/public/i18n/locales/en/dags.json | 1 +
.../airflow/ui/public/i18n/locales/ko/assets.json | 4 +-
.../ui/public/i18n/locales/ko/components.json | 4 +-
.../src/airflow/ui/public/i18n/locales/ko/dag.json | 2 +-
.../airflow/ui/public/i18n/locales/ko/dags.json | 4 +-
.../ui/public/i18n/locales/zh-TW/admin.json | 1 +
.../ui/public/i18n/locales/zh-TW/assets.json | 1 +
.../ui/public/i18n/locales/zh-TW/browse.json | 30 +
.../ui/public/i18n/locales/zh-TW/common.json | 38 +-
.../ui/public/i18n/locales/zh-TW/components.json | 17 +-
.../airflow/ui/public/i18n/locales/zh-TW/dag.json | 68 ++
.../airflow/ui/public/i18n/locales/zh-TW/dags.json | 13 +-
.../ui/public/i18n/locales/zh-TW/dashboard.json | 17 +-
.../ui/src/components/ActionAccordion/columns.tsx | 9 +-
.../ui/src/components/Assets/AssetEvent.test.tsx | 2 +-
.../src/components/Assets/TriggeredRuns.test.tsx | 2 +-
.../src/components/Banner/BackfillBanner.test.tsx | 2 +-
.../src/components/Banner/DrainingBanner.test.tsx | 2 +-
.../TaskInstance/ClearTaskInstanceDialog.test.tsx | 4 +-
.../DagActions/PartitionPreviewTable.tsx | 3 +-
.../components/DagActions/RunBackfillForm.test.tsx | 2 +-
.../components/DagActions/inlineMessage.test.tsx | 2 +-
.../src/components/DagDeactivatedBanner.test.tsx | 2 +-
.../ui/src/components/DataTable/CardList.tsx | 14 +-
.../DataTable/DataTable.columnVisibility.test.tsx | 5 +-
.../DataTable/DataTable.stateChange.test.tsx | 101 +++
.../ui/src/components/DataTable/DataTable.test.tsx | 40 +-
.../ui/src/components/DataTable/DataTable.tsx | 75 +-
.../src/components/DataTable/FilterMenuButton.tsx | 12 +-
.../ui/src/components/DataTable/TableList.test.tsx | 11 +-
.../ui/src/components/DataTable/TableList.tsx | 18 +-
.../features.ts} | 27 +-
.../ui/src/components/DataTable/skeleton.tsx | 3 +-
.../airflow/ui/src/components/DataTable/types.ts | 18 +-
.../ui/src/components/FilterBar/FilterBar.test.tsx | 2 +-
.../src/components/FilterBar/filters/DateInput.tsx | 10 +-
.../FilterBar/filters/DateRangeFilter.test.tsx | 164 ++++-
.../FilterBar/filters/DateRangeFilter.tsx | 4 +
.../FilterBar/filters/DateRangeInputs.tsx | 8 +-
.../components/FlexibleForm/FieldObject.test.tsx | 2 +-
.../ui/src/components/Graph/TaskLink.test.tsx | 2 +-
.../ui/src/components/ImportErrorCount.test.tsx | 2 +-
.../airflow/ui/src/components/JsonEditor.test.tsx | 2 +-
.../TaskInstance/MarkTaskInstanceAsButton.tsx | 17 +-
.../TaskInstance/MarkTaskInstanceAsDialog.test.tsx | 71 +-
.../TaskInstance/MarkTaskInstanceAsDialog.tsx | 26 +-
.../airflow/ui/src/components/MarkAs/utils.test.ts | 46 +-
.../src/airflow/ui/src/components/MarkAs/utils.ts | 12 +-
.../ui/src/components/MarkdownModal.test.tsx | 2 +-
.../airflow/ui/src/components/NotePreview.test.tsx | 2 +-
.../src/airflow/ui/src/components/PoolBar.test.tsx | 2 +-
.../ui/src/components/PresetFiltersMenu.test.tsx | 2 +-
.../ui/src/components/RenderedJsonField.test.tsx | 2 +-
.../airflow/ui/src/components/StatsCard.test.tsx | 2 +-
.../ui/src/components/TaskInstanceTooltip.test.tsx | 2 +-
.../airflow/ui/src/components/TeamName.test.tsx | 2 +-
.../airflow/ui/src/components/TogglePause.test.tsx | 2 +-
.../TriggerDag/PausedDagOptions.test.tsx | 2 +-
.../TriggerDag/TriggerDAGButton.test.tsx | 2 +-
.../components/TriggerDag/TriggerDAGForm.test.tsx | 2 +-
.../components/TriggerDag/TriggerDAGModal.test.tsx | 2 +-
.../src/components/VersionCompareSelect.test.tsx | 2 +-
.../ui/src/components/renderStructuredLog.test.tsx | 2 +-
.../src/airflow/ui/src/hooks/useAdvancedSearch.ts | 6 +-
.../src/airflow/ui/src/hooks/useDateRangeFilter.ts | 117 ++-
.../ui/src/hooks/usePluginAppliesToContext.test.ts | 12 +
.../ui/src/hooks/usePluginAppliesToContext.ts | 12 +-
.../airflow/ui/src/hooks/usePluginTabs.test.tsx | 10 +-
.../ui/src/layouts/Details/DagBreadcrumb.test.tsx | 2 +-
.../ui/src/layouts/Details/Grid/Grid.test.tsx | 2 +-
.../src/layouts/Details/Grid/GridButton.test.tsx | 2 +-
.../ui/src/layouts/Details/Grid/GridTI.test.tsx | 2 +-
.../ui/src/layouts/Details/PanelButtons.test.tsx | 2 +-
.../airflow/ui/src/layouts/Nav/DocsButton.test.tsx | 2 +-
.../ui/src/layouts/Nav/LanguageSelector.test.tsx | 2 +-
.../src/airflow/ui/src/layouts/Nav/Nav.test.tsx | 2 +-
.../airflow/ui/src/layouts/Nav/NavButton.test.tsx | 2 +-
.../ui/src/layouts/Nav/PluginMenus.test.tsx | 2 +-
.../ui/src/layouts/Nav/UserSettingsButton.test.tsx | 2 +-
.../Asset/AssetStateStore/AssetStateStore.tsx | 6 +-
.../src/pages/Asset/CreateAssetEventModal.test.tsx | 2 +-
.../src/airflow/ui/src/pages/Asset/Header.test.tsx | 2 +-
.../ui/src/pages/AssetsList/AssetsList.test.tsx | 4 +-
.../airflow/ui/src/pages/AssetsList/AssetsList.tsx | 3 +-
.../pages/AssetsList/DependencyPopover.test.tsx | 2 +-
.../src/airflow/ui/src/pages/Configs/Configs.tsx | 3 +-
.../src/pages/Connections/ConnectionForm.test.tsx | 2 +-
.../ui/src/pages/Connections/Connections.tsx | 5 +-
.../pages/Connections/NothingFoundInfo.test.tsx | 2 +-
.../pages/Dag/Backfills/BackfillDagRunsModal.tsx | 3 +-
.../ui/src/pages/Dag/Backfills/Backfills.test.tsx | 2 +-
.../ui/src/pages/Dag/Backfills/Backfills.tsx | 3 +-
.../Dag/Backfills/BackfillsDateFilter.test.tsx | 2 +-
.../ui/src/pages/Dag/Code/FileLocation.test.tsx | 2 +-
.../airflow/ui/src/pages/Dag/DagHeader.test.tsx | 4 +-
.../ui/src/pages/Dag/DeadlineAlertsBadge.test.tsx | 2 +-
.../src/airflow/ui/src/pages/Dag/Header.test.tsx | 2 +-
.../ui/src/pages/Dag/Overview/Overview.test.tsx | 4 +-
.../src/airflow/ui/src/pages/Dag/Tasks/Tasks.tsx | 3 +-
.../pages/Dag/Versions/VersionDiff.i18n.test.tsx | 2 +-
.../ui/src/pages/Dag/Versions/VersionDiff.test.tsx | 2 +-
.../ui/src/pages/Dag/Versions/Versions.test.tsx | 2 +-
.../airflow/ui/src/pages/DagBundle/BundleFiles.tsx | 3 +-
.../ui/src/pages/DagBundles/DagBundles.test.tsx | 4 +-
.../airflow/ui/src/pages/DagBundles/DagBundles.tsx | 3 +-
.../src/pages/DagRuns/BulkDeleteDagRunsButton.tsx | 3 +-
.../airflow/ui/src/pages/DagRuns/DagRuns.test.tsx | 2 +-
.../src/airflow/ui/src/pages/DagRuns/DagRuns.tsx | 8 +-
.../DagsList/DagFolderTree/DagFolderTree.test.tsx | 2 +-
.../DagsList/DagsFilters/DagsFilters.test.tsx | 2 +-
.../ui/src/pages/DagsList/DagsList.test.tsx | 4 +-
.../ui/src/pages/DagsList/DagsListColumns.tsx | 3 +-
.../src/pages/DagsList/PartitionScheduleModal.tsx | 3 +-
.../pages/DagsList/RecentTaskStateCountsColumn.tsx | 4 +-
.../ui/src/pages/Dashboard/AlertContent.test.tsx | 2 +-
.../ui/src/pages/Dashboard/Dashboard.test.tsx | 2 +-
.../ui/src/pages/Dashboard/Health/Health.test.tsx | 2 +-
.../Dashboard/PoolSummary/PoolSummary.test.tsx | 2 +-
.../ui/src/pages/Dashboard/Stats/Stats.test.tsx | 2 +-
.../src/airflow/ui/src/pages/Deadlines/index.tsx | 6 +-
.../src/airflow/ui/src/pages/Events/Events.tsx | 3 +-
.../pages/HITLTaskInstances/HITLTaskInstances.tsx | 3 +-
airflow-core/src/airflow/ui/src/pages/Jobs.tsx | 8 +-
.../src/airflow/ui/src/pages/LandingPage.test.tsx | 2 +-
.../src/airflow/ui/src/pages/Providers.tsx | 3 +-
.../src/airflow/ui/src/pages/ReactPlugin.test.tsx | 2 +-
.../src/airflow/ui/src/pages/Run/Header.test.tsx | 2 +-
.../ui/src/pages/Task/Overview/Overview.test.tsx | 4 +-
.../ui/src/pages/TaskInstance/DefaultTab.test.tsx | 2 +-
.../ui/src/pages/TaskInstance/Details.test.tsx | 2 +-
.../ui/src/pages/TaskInstance/ExtraLinks.test.tsx | 2 +-
.../ui/src/pages/TaskInstance/Header.test.tsx | 2 +-
.../TaskInstance/Logs/LogSearchInput.test.tsx | 2 +-
.../ui/src/pages/TaskInstance/Logs/Logs.test.tsx | 2 +-
.../pages/TaskInstance/Logs/LogsSelection.test.tsx | 2 +-
.../pages/TaskInstance/RenderedTemplates.test.tsx | 2 +-
.../ui/src/pages/TaskInstances/TaskInstances.tsx | 3 +-
.../ui/src/pages/TaskStateStore/TaskStateStore.tsx | 3 +-
.../airflow/ui/src/pages/Variables/Variables.tsx | 7 +-
.../src/airflow/ui/src/pages/XCom/XCom.tsx | 3 +-
.../airflow/ui/src/pages/XCom/XComEntry.test.tsx | 4 +-
.../ui/src/queries/useRecentTaskStateCounts.tsx | 2 +-
.../airflow/ui/src/queries/useTogglePause.test.tsx | 2 +-
.../airflow/ui/src/utils/pluginAppliesTo.test.ts | 303 +++++---
.../src/airflow/ui/src/utils/pluginAppliesTo.ts | 202 ++++--
.../renderMermaid.test.ts} | 31 +-
.../src/airflow/ui/src/utils/renderMermaid.ts | 10 +-
airflow-core/src/airflow/ui/testsSetup.ts | 2 +-
.../managers/simple/test_simple_auth_manager.py | 74 ++
airflow-core/tests/unit/api_fastapi/conftest.py | 28 +
.../core_api/routes/public/test_assets.py | 8 +-
.../core_api/routes/public/test_dags.py | 7 +
.../core_api/routes/public/test_plugins.py | 30 +-
.../core_api/routes/public/test_pools.py | 8 +
.../core_api/routes/public/test_tasks.py | 35 +
.../api_fastapi/core_api/routes/ui/test_assets.py | 12 +-
.../unit/cli/commands/test_command_deprecations.py | 1 +
.../unit/cli/commands/test_plugins_command.py | 4 +-
.../lang_sdk_fixtures/go_native.json | 2 +-
.../tests/unit/dag_processing/test_processor.py | 1 +
airflow-core/tests/unit/jobs/test_triggerer_job.py | 1 +
airflow-core/tests/unit/models/test_cleartasks.py | 232 ++++++
airflow-core/tests/unit/plugins/test_plugin.py | 4 +-
.../tests/unit/plugins/test_plugins_manager.py | 220 +++++-
.../deps/test_not_previously_skipped_dep.py | 22 +
.../airflowctl_tests/test_airflowctl_commands.py | 1 +
.../src/airflowctl/api/datamodels/generated.py | 24 +-
airflow-ctl/src/airflowctl/ctl/cli_config.py | 12 +-
.../tests/airflow_ctl/ctl/test_cli_config.py | 96 +++
airflow-e2e-tests/docker/go.yml | 7 +
.../tests/airflow_e2e_tests/conftest.py | 43 +-
.../tests/airflow_e2e_tests/constants.py | 3 +
.../go_sdk_tests/test_go_sdk_native_dag.py | 211 ++++++
dev/breeze/doc/ci/04_selective_checks.md | 6 +
.../src/airflow_breeze/utils/selective_checks.py | 14 +
dev/breeze/tests/test_selective_checks.py | 88 ++-
go-sdk/README.md | 8 +-
go-sdk/airflow/bundle.go | 107 ++-
go-sdk/airflow/bundle_test.go | 125 ++++
go-sdk/airflow/conformance_test.go | 6 +
go-sdk/airflow/dag.go | 11 +-
.../level.go => airflow/dag_factory_test.go} | 11 +-
go-sdk/airflow/dag_source_test.go | 65 ++
go-sdk/airflow/serialize.go | 36 +-
go-sdk/airflow/serialize_test.go | 52 +-
go-sdk/airflow/serve.go | 13 +-
go-sdk/airflow/serve_test.go | 102 ++-
go-sdk/airflow/spec.gen.go | 3 +-
go-sdk/airflow/trigger_dag_run.go | 71 +-
go-sdk/airflow/trigger_dag_run_test.go | 10 +-
go-sdk/cmd/airflow-go-pack/inspect.go | 59 +-
go-sdk/cmd/airflow-go-pack/inspect_test.go | 89 ++-
go-sdk/cmd/airflow-go-pack/main.go | 9 +-
go-sdk/cmd/airflow-go-pack/pack.go | 123 +++-
.../cmd/airflow-go-pack/pack_integration_test.go | 21 +-
go-sdk/cmd/airflow-go-pack/pack_test.go | 102 ++-
go-sdk/cmd/airflow-go-pack/sources.go | 256 +++++++
go-sdk/cmd/airflow-go-pack/sources_test.go | 430 +++++++++++
.../airflow-go-pack/testdata/handlersonly/main.go} | 23 +-
.../testdata/multidag/factory/factory.go} | 18 +-
.../airflow-go-pack/testdata/multidag}/main.go | 38 +-
.../testdata/multidag/reports/reports.go} | 18 +-
go-sdk/example/bundle/Justfile | 4 +-
go-sdk/example/native/main.go | 177 +++++
.../logging/attrs.go => example/native/report.go} | 24 +-
go-sdk/internal/airflowmetadata/airflowmetadata.go | 3 +
go-sdk/internal/bundle/doc.go | 9 +-
go-sdk/internal/bundle/task.go | 19 +
go-sdk/internal/bundle/trigger.go | 64 ++
go-sdk/internal/genspec/authoring.go | 2 +-
go-sdk/pkg/execution/client.go | 46 ++
go-sdk/pkg/execution/client_test.go | 136 ++++
go-sdk/pkg/execution/dag_parse.go | 79 ++
go-sdk/pkg/execution/dag_parse_test.go | 202 ++++++
.../pkg/execution/genmodels/discriminators.gen.go | 4 +
go-sdk/pkg/execution/genmodels/models.gen.go | 18 +-
go-sdk/pkg/execution/integration_test.go | 65 +-
go-sdk/pkg/execution/metadata.go | 5 +
go-sdk/pkg/execution/metadata_test.go | 36 +
go-sdk/pkg/execution/server.go | 22 +-
go-sdk/pkg/execution/task_runner.go | 38 +-
go-sdk/pkg/execution/trigger_runner.go | 418 +++++++++++
go-sdk/pkg/execution/trigger_runner_test.go | 648 +++++++++++++++++
go-sdk/schema/supervisor-schema.json | 21 +
java-sdk/README.md | 6 +-
java-sdk/capabilities.yaml | 18 +-
.../example/nativedag/AnnotationExample.java | 45 +-
.../example/nativedag/InterfaceExample.java | 57 +-
.../apache/airflow/sdk/plugin/AirflowSdkPlugin.kt | 6 +-
.../apache/airflow/sdk/plugin/PackDagSources.kt | 32 +-
.../airflow/sdk/plugin/AirflowSdkPluginTest.kt | 105 ++-
.../org/apache/airflow/sdk/BuilderProcessor.kt | 363 ++++++++--
.../kotlin/org/apache/airflow/sdk/BuilderTest.kt | 804 ++++++++++++++++++++-
.../ci/prek/check_serialization_conformance.py | 11 +-
java-sdk/sdk/build.gradle.kts | 70 ++
java-sdk/sdk/module.md | 6 +-
.../main/kotlin/org/apache/airflow/sdk/Branch.kt | 291 ++++++++
.../main/kotlin/org/apache/airflow/sdk/Bundle.kt | 15 +-
.../kotlin/org/apache/airflow/sdk/Condition.kt | 218 ++++++
.../main/kotlin/org/apache/airflow/sdk/DagDef.kt | 294 ++++++--
.../main/kotlin/org/apache/airflow/sdk/Decider.kt | 90 +++
.../src/main/kotlin/org/apache/airflow/sdk/Deps.kt | 105 ++-
.../main/kotlin/org/apache/airflow/sdk/Endpoint.kt | 15 +-
.../kotlin/org/apache/airflow/sdk/TaskGroupRef.kt | 112 ++-
.../kotlin/org/apache/airflow/sdk/TriggerDagRun.kt | 202 ++++++
.../org/apache/airflow/sdk/execution/Client.kt | 88 +++
.../org/apache/airflow/sdk/execution/Logger.kt | 5 +
.../org/apache/airflow/sdk/execution/Serde.kt | 212 +++++-
.../org/apache/airflow/sdk/execution/Task.kt | 42 +-
.../apache/airflow/sdk/execution/TriggerRunner.kt | 318 ++++++++
.../kotlin/org/apache/airflow/sdk/internal/Ids.kt} | 27 +-
.../kotlin/org/apache/airflow/sdk/internal/Refs.kt | 71 +-
.../org/apache/airflow/sdk/ArgTestSupport.kt | 21 +-
.../kotlin/org/apache/airflow/sdk/ArgValuesTest.kt | 11 +
.../kotlin/org/apache/airflow/sdk/BranchTest.kt | 175 +++++
.../kotlin/org/apache/airflow/sdk/ClientTest.kt | 22 +
.../kotlin/org/apache/airflow/sdk/ConditionTest.kt | 179 +++++
.../kotlin/org/apache/airflow/sdk/TaskGroupTest.kt | 68 +-
.../org/apache/airflow/sdk/TriggerDagRunTest.kt | 190 +++++
.../airflow/sdk/conformance/SerializeJava.kt | 104 ++-
.../org/apache/airflow/sdk/execution/CommTest.kt | 156 ++++
.../org/apache/airflow/sdk/execution/SerdeTest.kt | 51 +-
.../org/apache/airflow/sdk/execution/TaskTest.kt | 266 +++++++
.../airflow/sdk/execution/TriggerRunnerTest.kt | 432 +++++++++++
.../apache/airflow/sdk/internal/ArgValuesTest.kt | 21 +-
.../org/apache/airflow/sdk/internal/RefsTest.kt | 49 +-
.../unit/amazon/aws/transfers/test_s3_to_sftp.py | 12 +
.../unit/amazon/aws/transfers/test_sftp_to_s3.py | 12 +
providers/cncf/kubernetes/provider.yaml | 24 +
.../kubernetes/executors/kubernetes_executor.py | 19 +-
.../executors/kubernetes_executor_utils.py | 17 +-
.../providers/cncf/kubernetes/get_provider_info.py | 14 +
.../providers/cncf/kubernetes/kube_client.py | 43 ++
.../executors/test_kubernetes_executor.py | 175 ++++-
.../tests/unit/cncf/kubernetes/test_kube_client.py | 96 ++-
providers/common/ai/docs/toolsets/datafusion.rst | 26 +-
providers/common/ai/docs/toolsets/hook.rst | 27 +-
providers/common/ai/docs/toolsets/index.rst | 211 +++---
providers/common/ai/docs/toolsets/logging.rst | 9 +-
providers/common/ai/docs/toolsets/mcp.rst | 45 +-
.../common/ai/docs/toolsets/object_storage.rst | 4 +-
providers/common/ai/docs/toolsets/skills.rst | 28 +-
providers/common/ai/docs/toolsets/sql.rst | 7 +-
.../common/ai/example_dags/example_agent_skills.py | 2 +
.../common/ai/example_dags/example_mcp.py | 35 +-
.../airflow/providers/common/ai/toolsets/hook.py | 28 +-
.../airflow/providers/common/ai/toolsets/skills.py | 15 +-
.../providers/common/ai/utils/tool_definition.py | 2 +-
.../ai/tests/unit/common/ai/toolsets/test_hook.py | 109 +--
.../tests/unit/common/ai/toolsets/test_skills.py | 47 +-
providers/databricks/pyproject.toml | 2 +-
.../providers/databricks/hooks/databricks_base.py | 8 +
.../tests/unit/databricks/hooks/test_databricks.py | 27 +
.../providers/3rd-party-licenses/LICENSES-ui.txt | 2 +-
.../fab/src/airflow/providers/fab/www/package.json | 4 +-
.../src/airflow/providers/fab/www/pnpm-lock.yaml | 30 +-
providers/sftp/docs/changelog.rst | 16 +
providers/sftp/docs/connections/sftp.rst | 2 +-
providers/sftp/pyproject.toml | 2 +-
.../sftp/src/airflow/providers/sftp/hooks/sftp.py | 38 +-
.../src/airflow/providers/sftp/operators/sftp.py | 1 +
.../src/airflow/providers/sftp/triggers/sftp.py | 22 +-
providers/sftp/tests/unit/sftp/hooks/test_sftp.py | 205 +++++-
.../sftp/tests/unit/sftp/operators/test_sftp.py | 31 +-
.../smtp/src/airflow/providers/smtp/hooks/smtp.py | 10 +-
providers/smtp/tests/unit/smtp/hooks/test_smtp.py | 42 ++
.../tests/unit/smtp/notifications/test_smtp.py | 27 +
.../tests/unit/snowflake/utils/test__rest_auth.py | 4 +-
providers/ssh/docs/changelog.rst | 15 +
providers/ssh/docs/connections/ssh.rst | 2 +-
.../ssh/src/airflow/providers/ssh/hooks/ssh.py | 71 +-
providers/ssh/tests/unit/ssh/hooks/test_ssh.py | 67 +-
.../ssh/tests/unit/ssh/hooks/test_ssh_async.py | 64 ++
scripts/ci/lang_sdk_serialization/test_dags.yaml | 2 +-
.../ci/prek/check_openapi_exception_doc_in_sync.py | 201 +++++-
.../test_check_openapi_exception_doc_in_sync.py | 114 ++-
.../plugins_manager/plugins_manager.py | 12 +-
task-sdk/docs/airflow-metadata.schema.json | 49 +-
task-sdk/docs/executable-bundle-spec.rst | 86 ++-
.../airflow/sdk/coordinators/_bundle_metadata.py | 16 +
.../src/airflow/sdk/coordinators/_dag_importer.py | 1 +
.../sdk/coordinators/executable/_bundle_reader.py | 195 +++++
.../sdk/coordinators/executable/_dag_importer.py | 105 +++
.../sdk/coordinators/executable/coordinator.py | 108 ++-
.../airflow/sdk/coordinators/java/_dag_importer.py | 4 +-
task-sdk/src/airflow/sdk/execution_time/comms.py | 8 +
.../airflow/sdk/execution_time/schema/schema.json | 21 +
.../src/airflow/sdk/execution_time/supervisor.py | 50 +-
.../src/airflow/sdk/execution_time/task_runner.py | 2 +
.../coordinators/executable/_bundle_test_utils.py | 98 +++
.../coordinators/executable/test_bundle_reader.py | 217 ++++++
.../coordinators/executable/test_coordinator.py | 168 ++++-
.../coordinators/executable/test_dag_importer.py | 283 ++++++++
.../coordinators/java/test_dag_importer.py | 19 +
.../task_sdk/execution_time/test_supervisor.py | 154 +++-
.../task_sdk/execution_time/test_task_runner.py | 12 +-
ts-sdk/src/generated/supervisor.ts | 104 +--
376 files changed, 15326 insertions(+), 2400 deletions(-)
delete mode 100644 airflow-core/newsfragments/69148.feature.rst
create mode 100644 airflow-core/newsfragments/73806.improvement.rst
create mode 100644 airflow-core/newsfragments/74278.feature.rst
create mode 100644
airflow-core/src/airflow/ui/src/components/DataTable/DataTable.stateChange.test.tsx
copy airflow-core/src/airflow/ui/src/components/{DAGWarningsModal.test.tsx =>
DataTable/features.ts} (62%)
copy
providers/edge3/src/airflow/providers/edge3/plugins/www/src/components/StateBadge.tsx
=> airflow-core/src/airflow/ui/src/components/MarkAs/utils.test.ts (57%)
copy airflow-core/src/airflow/ui/src/{components/StatsCard.test.tsx =>
utils/renderMermaid.test.ts} (58%)
create mode 100644
airflow-e2e-tests/tests/airflow_e2e_tests/go_sdk_tests/test_go_sdk_native_dag.py
copy go-sdk/{pkg/logging/level.go => airflow/dag_factory_test.go} (79%)
create mode 100644 go-sdk/airflow/dag_source_test.go
create mode 100644 go-sdk/cmd/airflow-go-pack/sources.go
create mode 100644 go-sdk/cmd/airflow-go-pack/sources_test.go
copy go-sdk/{pkg/logging/attrs.go =>
cmd/airflow-go-pack/testdata/handlersonly/main.go} (65%)
copy go-sdk/{pkg/logging/attrs.go =>
cmd/airflow-go-pack/testdata/multidag/factory/factory.go} (74%)
copy go-sdk/{airflow/testdata/foreignnode =>
cmd/airflow-go-pack/testdata/multidag}/main.go (56%)
copy go-sdk/{pkg/logging/attrs.go =>
cmd/airflow-go-pack/testdata/multidag/reports/reports.go} (73%)
create mode 100644 go-sdk/example/native/main.go
copy go-sdk/{pkg/logging/attrs.go => example/native/report.go} (64%)
create mode 100644 go-sdk/internal/bundle/trigger.go
create mode 100644 go-sdk/pkg/execution/dag_parse.go
create mode 100644 go-sdk/pkg/execution/dag_parse_test.go
create mode 100644 go-sdk/pkg/execution/trigger_runner.go
create mode 100644 go-sdk/pkg/execution/trigger_runner_test.go
create mode 100644
java-sdk/sdk/src/main/kotlin/org/apache/airflow/sdk/Branch.kt
create mode 100644
java-sdk/sdk/src/main/kotlin/org/apache/airflow/sdk/Condition.kt
create mode 100644
java-sdk/sdk/src/main/kotlin/org/apache/airflow/sdk/Decider.kt
copy airflow-core/src/airflow/ui/src/hooks/useShowTeam.ts =>
java-sdk/sdk/src/main/kotlin/org/apache/airflow/sdk/Endpoint.kt (69%)
create mode 100644
java-sdk/sdk/src/main/kotlin/org/apache/airflow/sdk/TriggerDagRun.kt
create mode 100644
java-sdk/sdk/src/main/kotlin/org/apache/airflow/sdk/execution/TriggerRunner.kt
copy
java-sdk/sdk/src/{test/kotlin/org/apache/airflow/sdk/internal/RegistrarTest.kt
=> main/kotlin/org/apache/airflow/sdk/internal/Ids.kt} (54%)
create mode 100644
java-sdk/sdk/src/test/kotlin/org/apache/airflow/sdk/BranchTest.kt
create mode 100644
java-sdk/sdk/src/test/kotlin/org/apache/airflow/sdk/ConditionTest.kt
create mode 100644
java-sdk/sdk/src/test/kotlin/org/apache/airflow/sdk/TriggerDagRunTest.kt
create mode 100644
java-sdk/sdk/src/test/kotlin/org/apache/airflow/sdk/execution/TriggerRunnerTest.kt
create mode 100644
task-sdk/src/airflow/sdk/coordinators/executable/_bundle_reader.py
create mode 100644
task-sdk/src/airflow/sdk/coordinators/executable/_dag_importer.py
create mode 100644
task-sdk/tests/task_sdk/coordinators/executable/_bundle_test_utils.py
create mode 100644
task-sdk/tests/task_sdk/coordinators/executable/test_bundle_reader.py
create mode 100644
task-sdk/tests/task_sdk/coordinators/executable/test_dag_importer.py