This is an automated email from the ASF dual-hosted git repository.
vatsrahul1001 pushed a change to branch backport-71e74bc-v3-4-test
in repository https://gitbox.apache.org/repos/asf/airflow.git
from 333b4aa5ec0 [v3-4-test] Add deadline callback log visibility to the
Dag Run view in UI (#73580)
add 20711a93ff0 [v3-4-test] Drain result_queue before dispatch in
LocalExecutor to prevent runtime dispatch deadlock (#70545) (#74949)
add c3198768122 [v3-4-test] Document that use_job_schedule also stops
asset-triggered Dag runs (#73952) (#74951)
add 49ba3a93813 [v3-4-test] Reduce db clean batch probe overhead (#74455)
(#74952)
add ef404c1dfc4 [v3-4-test] UI: Open nav sidebar menus on hover and add a
Dags menu (#74745) (#74953)
add fe36adbcb75 [v3-4-test] Implement delta argument coercion (#74749)
(#74959)
add 15aa6d1ea02 [v3-4-test] Close German Translation Gaps 2026-10-14
(#74760) (#74962)
add 88d425b7def [v3-4-test] Fix missing task.queued_duration metric in
Airflow 3 (#67592) (#74965)
add d0c8534d78f [v3-4-test] Make ZIP_REGEX case-insensitive to match .ZIP
archives (#74269) (#74967)
add c9d5458ac39 [v3-4-test] Fix /ui/dags recent-runs query degradation on
large, skewed dag_run tables (#74401) (#74966)
add e3df7e0c996 [v3-4-test] Fix clearing with upstream and downstream
selecting unrelated tasks (#74548) (#74968)
add b6317702326 [v3-4-test] Fix dag list renders (#74426) (#74956)
add 2ab2f4dfa1c [v3-4-test] Fix CLI --bundle-name finding no Dags in Git
bundles (#73377) (#74969)
add 726777fecaa [v3-4-test] Fix Lang-SDK decoder typing for pydantic 2.14
TypeForm signature (#74628) (#74970)
add 3b362887444 [v3-4-test] UI: Add clicked tags to the Dags list filters
instead of replacing them (#74622) (#74957)
add 662948d73a3 [v3-4-test] UI: Fold draining into the Dags Paused state
filter (#74668) (#74958)
add 15f3cee8e2c [v3-4-test] Add support for forwarding CeleryExecutor task
logs to stdout (#69597) (#74976)
add 7669248bf04 [v3-4-test] Stop the secrets backend lookup from importing
the task runner outside tasks (#74641) (#74980)
add 5a72d44a059 [v3-4-test] Fix `map_index_template` failing for
numeric-looking labels with `render_template_as_native_obj` (#71592) (#74978)
add 64602ce2af2 [v3-4-test] Highlight YAML Dag source in the Code tab
(#74633) (#74972)
add bcdf79333b5 [v3-4-test] UI: Add Select Recent Configurations dropdown
to Trigger Dag form (#70413) (#74977)
add 1b49b576299 [v3-4-test] UI: Use RadioCardRoot's typed onValueChange
instead of DOM casts (#73985) (#74979)
add 92acdf798db [v3-4-test] Point the TaskFlow tutorial's retries section
to resumable tasks (#74608) (#74984)
add 2be8e4b16fe [v3-4-test] Resolve loop iterations through family and
path columns on dynamic regions (#74892) (#74963)
add d3e95a3de54 [v3-4-test] Do not abort Dag run creation when a deadline
alert fails (#68917) (#74975)
add a52595fe4ed [v3-4-test] Batch triggerer unused trigger cleanup deletes
(#70961) (#74950)
add 4fcb7ae1d79 [v3-4-test] UI: Keep JSON text in string HITL params
instead of showing [object Object] (#74702) (#74961)
add 0b089451c91 [v3-4-test] UI: Drop the loading spinner for base React
plugins (#74762) (#74964)
add 8490971033a [v3-4-test] Fix flaky in-process Execution API transport
lifecycle test on MySQL (#74785) (#74985)
add 6a76fd81348 [v3-4-test] Remove unreachable break in get_bagged_dag
(#72332) (#74981)
add 3bfd7728e36 [v3-4-test] UI: Guard the remaining RadioCardRoot values
instead of casting (#74743) (#74989)
add 03206f0364a [v3-4-test] Close German Translation Gaps 2026-10-15
(#74802) (#74990)
add a248abe71c3 [v3-4-test] Refuse a HITL response for a request the task
has since replaced (#74688) (#74982)
add 295ec25fcf2 [v3-4-test] Cover YAML-generated Go Dags in the go_sdk e2e
test (#74636) (#74824)
add 5339b2d3f15 [v3-4-test] Show the actual value in two breeze and CI
script error messages (#74894) (#74925)
add f8e0c4bff0e [v3-4-test] UI: Keep unnamed columns out of the table
columns menu (#74774) (#74988)
add d0cd2183cf0 [v3-4-test] Pass Dag runs directly to Deadline references
(#70714) (#74986)
add 4bc3d859459 [v3-4-test] Fix Dag list run badges and counters not
refreshing after completion (#74734) (#74954)
add 3eeb0e95e50 [v3-4-test] Lazy-load the Code tab grammar from the Dag's
stored language (#74643) (#74987)
add 8bc811283ea Let plugin views be scoped to specific Assets (#74609)
(#74992)
add 717ad184ed6 [v3-4-test] Fix flaky static checks crashing on ts-sdk
node_modules during editable build (#74117) (#74999)
add af3fa8db653 Let retry policies reschedule a task without using a retry
(#74719) (#74993)
add c6b295a401b Merge branch 'v3-4-test' into backport-71e74bc-v3-4-test
No new revisions were added by this update.
Summary of changes:
.../docs/administration-and-deployment/plugins.rst | 7 +-
airflow-core/docs/core-concepts/tasks.rst | 89 ++++-
airflow-core/docs/howto/deadline-alerts.rst | 25 +-
airflow-core/docs/tutorial/hitl.rst | 6 +-
airflow-core/docs/tutorial/taskflow.rst | 5 +
airflow-core/newsfragments/67592.bugfix.rst | 1 +
airflow-core/newsfragments/68917.bugfix.rst | 1 +
airflow-core/newsfragments/69597.feature.rst | 1 +
airflow-core/newsfragments/70714.significant.rst | 1 +
.../api_fastapi/core_api/datamodels/hitl.py | 11 +-
.../core_api/openapi/v2-rest-api-generated.yaml | 11 +
.../api_fastapi/core_api/routes/public/hitl.py | 11 +
.../core_api/routes/public/task_instances.py | 33 +-
.../airflow/api_fastapi/core_api/routes/ui/dags.py | 31 +-
.../execution_api/routes/task_instances.py | 39 ++-
.../src/airflow/cli/commands/dag_command.py | 2 +
.../src/airflow/config_templates/config.yml | 28 +-
.../airflow/dag_processing/lang_sdk_processor.py | 11 +-
.../src/airflow/dag_processing/processor.py | 11 +-
.../airflow/example_dags/example_retry_policy.py | 26 +-
.../src/airflow/executors/base_executor.py | 7 +-
.../src/airflow/executors/local_executor.py | 1 +
.../0143_3_4_0_add_dynamic_region_storage.py | 6 +
airflow-core/src/airflow/models/deadline.py | 139 +++-----
airflow-core/src/airflow/models/dynamic_region.py | 212 ++++++++----
airflow-core/src/airflow/models/taskinstance.py | 30 +-
airflow-core/src/airflow/models/trigger.py | 63 ++--
airflow-core/src/airflow/plugins_manager.py | 7 +-
.../src/airflow/serialization/definitions/dag.py | 122 ++++---
.../airflow/serialization/definitions/deadline.py | 99 ++----
.../airflow/ui/openapi-gen/requests/schemas.gen.ts | 13 +
.../airflow/ui/openapi-gen/requests/types.gen.ts | 4 +
.../airflow/ui/public/i18n/locales/ca/dags.json | 14 +-
.../airflow/ui/public/i18n/locales/de/admin.json | 1 +
.../airflow/ui/public/i18n/locales/de/common.json | 18 ++
.../ui/public/i18n/locales/de/components.json | 8 +-
.../src/airflow/ui/public/i18n/locales/de/dag.json | 32 ++
.../airflow/ui/public/i18n/locales/de/dags.json | 26 +-
.../ui/public/i18n/locales/en/components.json | 2 +
.../airflow/ui/public/i18n/locales/en/dags.json | 14 +-
.../airflow/ui/public/i18n/locales/fr/dags.json | 14 +-
.../airflow/ui/public/i18n/locales/ko/dags.json | 14 +-
.../airflow/ui/public/i18n/locales/pl/dags.json | 14 +-
.../airflow/ui/public/i18n/locales/zh-CN/dags.json | 14 +-
.../airflow/ui/public/i18n/locales/zh-TW/dags.json | 14 +-
.../src/components/DagActions/RunBackfillForm.tsx | 11 +-
.../DataTable/DataTable.columnVisibility.test.tsx | 20 ++
.../ui/src/components/DataTable/DataTable.test.tsx | 8 -
.../ui/src/components/DataTable/DataTable.tsx | 26 +-
.../airflow/ui/src/components/DrainingBadge.tsx | 4 +-
.../FilterBar/filters/pausedStateParams.ts | 82 +++++
.../src/components/HITLReview/HITLReviewDetail.tsx | 8 +-
.../MonacoEditor/configureMonaco.test.ts | 34 +-
.../src/components/MonacoEditor/configureMonaco.ts | 120 ++-----
.../src/airflow/ui/src/components/TogglePause.tsx | 2 +-
.../TriggerDag/RecentConfigSelect.test.tsx | 152 +++++++++
.../components/TriggerDag/RecentConfigSelect.tsx | 113 +++++++
.../components/TriggerDag/TriggerDAGForm.test.tsx | 119 ++++++-
.../src/components/TriggerDag/TriggerDAGForm.tsx | 78 +++--
.../src/components/TriggerDag/TriggerDAGModal.tsx | 9 +-
.../airflow/ui/src/components/TriggerDag/types.ts | 5 +-
.../src/airflow/ui/src/constants/filterConfigs.tsx | 22 +-
.../ui/src/constants/reprocessBehaviourParams.ts | 8 +-
.../src/airflow/ui/src/hooks/useNearViewport.ts | 25 +-
.../ui/src/hooks/usePluginAppliesToContext.test.ts | 21 ++
.../ui/src/hooks/usePluginAppliesToContext.ts | 14 +-
.../src/airflow/ui/src/layouts/Nav/AdminButton.tsx | 20 +-
.../airflow/ui/src/layouts/Nav/BrowseButton.tsx | 20 +-
.../airflow/ui/src/layouts/Nav/DagsButton.test.tsx | 67 ++++
.../src/airflow/ui/src/layouts/Nav/DagsButton.tsx | 77 +++++
.../src/airflow/ui/src/layouts/Nav/DocsButton.tsx | 56 ++--
.../src/airflow/ui/src/layouts/Nav/Nav.tsx | 11 +-
.../airflow/ui/src/layouts/Nav/NavMenu.test.tsx | 90 ++++++
.../src/airflow/ui/src/layouts/Nav/NavMenu.tsx | 170 ++++++++++
.../src/airflow/ui/src/layouts/Nav/PluginMenus.tsx | 44 ++-
.../airflow/ui/src/layouts/Nav/SecurityButton.tsx | 26 +-
.../ui/src/layouts/Nav/UserSettingsButton.tsx | 190 ++++++-----
.../src/airflow/ui/src/mocks/handlers/dags.ts | 90 ++++--
.../Asset/AssetStateStore/AssetStateStore.tsx | 4 +-
.../src/pages/Asset/CreateAssetEventModal.test.tsx | 24 +-
.../ui/src/pages/Asset/CreateAssetEventModal.tsx | 12 +-
.../ui/src/pages/AssetsList/AssetsList.test.tsx | 5 +-
.../airflow/ui/src/pages/AssetsList/AssetsList.tsx | 3 +-
.../ui/src/pages/Connections/Connections.tsx | 4 +-
.../pages/Dag/Backfills/BackfillDagRunsModal.tsx | 3 +-
.../ui/src/pages/Dag/Backfills/Backfills.tsx | 15 +-
.../src/airflow/ui/src/pages/Dag/Tasks/Tasks.tsx | 2 -
.../airflow/ui/src/pages/DagBundle/BundleFiles.tsx | 3 +-
.../airflow/ui/src/pages/DagBundles/DagBundles.tsx | 3 +-
.../src/airflow/ui/src/pages/DagRuns/DagRuns.tsx | 1 +
.../src/airflow/ui/src/pages/DagsList/DagCard.tsx | 7 +-
.../airflow/ui/src/pages/DagsList/DagTags.test.tsx | 124 +++++++
.../src/airflow/ui/src/pages/DagsList/DagTags.tsx | 62 +++-
.../DagsList/DagsFilters/DagsFilters.test.tsx | 80 ++++-
.../src/pages/DagsList/DagsFilters/DagsFilters.tsx | 1 -
.../ui/src/pages/DagsList/DagsList.test.tsx | 14 +-
.../src/airflow/ui/src/pages/DagsList/DagsList.tsx | 218 +++++++------
.../DagsList/DagsListColumns.test.tsx} | 17 +-
.../ui/src/pages/DagsList/DagsListColumns.tsx | 255 ++++++++-------
.../src/pages/DagsList/DagsListCountsContext.tsx | 73 +++++
.../src/pages/DagsList/PartitionScheduleModal.tsx | 3 +-
.../pages/DagsList/RecentTaskStateCountsColumn.tsx | 35 +-
.../src/airflow/ui/src/pages/Deadlines/index.tsx | 3 +-
.../src/airflow/ui/src/pages/Events/Events.tsx | 3 +-
.../HITLTaskInstances/HITLResponseForm.test.tsx | 36 ++-
.../pages/HITLTaskInstances/HITLResponseForm.tsx | 6 +-
airflow-core/src/airflow/ui/src/pages/Jobs.tsx | 3 +-
.../src/airflow/ui/src/pages/ReactPlugin.test.tsx | 17 +
.../src/airflow/ui/src/pages/ReactPlugin.tsx | 4 +-
.../ui/src/pages/TaskInstance/HITLResponse.tsx | 2 +-
.../ui/src/pages/TaskInstances/TaskInstances.tsx | 1 +
.../ui/src/pages/TaskStateStore/TaskStateStore.tsx | 4 +-
.../pages/TaskStateStore/TaskStateStoreModal.tsx | 9 +-
.../ui/src/pages/Variables/ImportVariablesForm.tsx | 21 +-
.../airflow/ui/src/pages/Variables/Variables.tsx | 4 +-
.../src/airflow/ui/src/pages/XCom/XCom.tsx | 4 +-
.../ui/src/queries/useDagRunStateCounts.tsx | 2 +-
.../src/airflow/ui/src/queries/useDags.test.tsx | 101 ++++++
.../src/airflow/ui/src/queries/useDags.tsx | 5 +-
.../airflow/ui/src/queries/useUpdateHITLDetail.ts | 12 +-
airflow-core/src/airflow/ui/src/utils/hitl.test.ts | 48 ++-
airflow-core/src/airflow/ui/src/utils/hitl.ts | 20 +-
airflow-core/src/airflow/ui/src/utils/index.ts | 1 +
.../{formatNumber.test.ts => isOneOf.test.ts} | 17 +-
.../ui/rules/off.js => ui/src/utils/isOneOf.ts} | 15 +-
.../airflow/ui/src/utils/pluginAppliesTo.test.ts | 21 ++
.../src/airflow/ui/src/utils/pluginAppliesTo.ts | 6 +-
.../src/airflow/ui/src/utils/useFiltersHandler.ts | 1 -
airflow-core/src/airflow/ui/src/vite-env.d.ts | 23 +-
airflow-core/src/airflow/utils/cli.py | 4 +-
airflow-core/src/airflow/utils/db_cleanup.py | 4 +-
airflow-core/src/airflow/utils/file.py | 2 +-
airflow-core/src/airflow/utils/sqlalchemy.py | 5 +-
.../core_api/routes/public/test_extra_links.py | 7 +-
.../core_api/routes/public/test_hitl.py | 89 +++++
.../core_api/routes/public/test_task_instances.py | 103 ++++++
.../api_fastapi/core_api/routes/ui/test_dags.py | 51 +++
.../unit/api_fastapi/execution_api/test_app.py | 4 +
.../versions/head/test_task_instances.py | 360 +++++++++++++++++++++
.../tests/unit/cli/commands/test_dag_command.py | 69 ++++
.../tests/unit/executors/test_base_executor.py | 46 +++
.../tests/unit/executors/test_local_executor.py | 80 +++++
.../test_0143_add_dynamic_region_storage.py | 10 +-
.../test_0144_rename_stored_map_index.py | 12 +-
airflow-core/tests/unit/models/test_cleartasks.py | 85 ++++-
airflow-core/tests/unit/models/test_dagrun.py | 158 +++++++--
airflow-core/tests/unit/models/test_deadline.py | 257 +++------------
.../tests/unit/models/test_deadline_alert.py | 84 ++++-
.../tests/unit/models/test_dynamic_region.py | 233 ++++++++++++-
airflow-core/tests/unit/models/test_trigger.py | 218 ++++++++++++-
.../tests/unit/plugins/test_plugins_manager.py | 53 +++
.../serialization/definitions/test_deadline.py | 1 +
airflow-core/tests/unit/utils/test_cli_util.py | 60 ++++
airflow-core/tests/unit/utils/test_db_cleanup.py | 22 ++
airflow-core/tests/unit/utils/test_file.py | 16 +-
.../src/airflowctl/api/datamodels/generated.py | 7 +
airflow-e2e-tests/docker/go.yml | 5 +
.../tests/airflow_e2e_tests/conftest.py | 159 +++++----
.../tests/airflow_e2e_tests/constants.py | 4 +
.../airflow_e2e_tests/e2e_test_utils/clients.py | 32 ++
.../go_sdk_tests/test_go_sdk_dynamic_dag.py | 110 +++++++
dev/breeze/src/airflow_breeze/utils/github.py | 2 +-
docs/spelling_wordlist.txt | 1 +
go-sdk/example/dynamic/dags.go | 67 ++++
.../example/dynamic/dags.yaml | 10 +-
go-sdk/example/dynamic/main.go | 60 ++++
providers/celery/docs/celery_executor.rst | 51 +++
providers/celery/provider.yaml | 14 +
.../celery/executors/celery_executor_utils.py | 27 +-
.../airflow/providers/celery/get_provider_info.py | 7 +
.../unit/celery/executors/test_celery_executor.py | 124 ++++---
providers/common/ai/docs/retry_policies.rst | 4 +-
.../airflow/providers/common/ai/policies/retry.py | 18 +-
.../ai/tests/unit/common/ai/policies/test_retry.py | 37 ++-
.../providers/common/compat/_retry_policy.py | 5 +-
.../tests/unit/common/compat/test__retry_policy.py | 16 +
pyproject.toml | 7 +
scripts/ci/testing/summarize_captured_warnings.py | 2 +-
.../observability/metrics/metrics_template.yaml | 6 +
task-sdk/src/airflow/sdk/definitions/deadline.py | 37 ++-
.../src/airflow/sdk/definitions/retry_policy.py | 94 +++++-
.../sdk/execution_time/callback_supervisor.py | 2 +
.../src/airflow/sdk/execution_time/supervisor.py | 27 +-
.../src/airflow/sdk/execution_time/task_runner.py | 68 +++-
.../airflow/sdk/importers/yaml_importer/builder.py | 215 +++++++++---
.../task_sdk/definitions/test_retry_policy.py | 121 ++++++-
.../execution_time/test_callback_supervisor.py | 14 +
.../tests/task_sdk/execution_time/test_secrets.py | 20 ++
.../task_sdk/execution_time/test_supervisor.py | 54 ++++
.../task_sdk/execution_time/test_task_runner.py | 230 +++++++++++++
.../importers/yaml_importer/test_importer.py | 117 +++++++
191 files changed, 6422 insertions(+), 1722 deletions(-)
create mode 100644 airflow-core/newsfragments/67592.bugfix.rst
create mode 100644 airflow-core/newsfragments/68917.bugfix.rst
create mode 100644 airflow-core/newsfragments/69597.feature.rst
create mode 100644 airflow-core/newsfragments/70714.significant.rst
create mode 100644
airflow-core/src/airflow/ui/src/components/FilterBar/filters/pausedStateParams.ts
create mode 100644
airflow-core/src/airflow/ui/src/components/TriggerDag/RecentConfigSelect.test.tsx
create mode 100644
airflow-core/src/airflow/ui/src/components/TriggerDag/RecentConfigSelect.tsx
create mode 100644
airflow-core/src/airflow/ui/src/layouts/Nav/DagsButton.test.tsx
create mode 100644 airflow-core/src/airflow/ui/src/layouts/Nav/DagsButton.tsx
create mode 100644 airflow-core/src/airflow/ui/src/layouts/Nav/NavMenu.test.tsx
create mode 100644 airflow-core/src/airflow/ui/src/layouts/Nav/NavMenu.tsx
create mode 100644
airflow-core/src/airflow/ui/src/pages/DagsList/DagTags.test.tsx
copy airflow-core/src/airflow/ui/src/{utils/formatNumber.test.ts =>
pages/DagsList/DagsListColumns.test.tsx} (63%)
create mode 100644
airflow-core/src/airflow/ui/src/pages/DagsList/DagsListCountsContext.tsx
create mode 100644 airflow-core/src/airflow/ui/src/queries/useDags.test.tsx
copy airflow-core/src/airflow/ui/src/utils/{formatNumber.test.ts =>
isOneOf.test.ts} (69%)
copy
airflow-core/src/airflow/{api_fastapi/auth/managers/simple/ui/rules/off.js =>
ui/src/utils/isOneOf.ts} (67%)
create mode 100644
airflow-e2e-tests/tests/airflow_e2e_tests/go_sdk_tests/test_go_sdk_dynamic_dag.py
create mode 100644 go-sdk/example/dynamic/dags.go
copy
providers/google/tests/system/google/cloud/cloud_build/resources/example_cloud_build.yaml
=> go-sdk/example/dynamic/dags.yaml (82%)
create mode 100644 go-sdk/example/dynamic/main.go