This is an automated email from the ASF dual-hosted git repository.
ephraimanierobi pushed a change to branch v3-1-stable
in repository https://gitbox.apache.org/repos/asf/airflow.git
from 289b888f4b7 [v3-1-test] Fix python client NOTICE and wheel content
(#60539) (#60551)
add cc3f95779bf [v3-1-test] Fix docstring for
RuntimeTaskInstance.xcom_pull (#60220) (#60252)
add d00c4b6aa3d [v3-1-test] Add virtualization to grid view (#60241)
(#60285)
add c3000b14d45 [v3-1-test] Fix sidebar visibility issue when main content
exceeds viewport height (#59660) (#60286)
add 14492825c77 [v3-1-test] Fix table filters reseting when deleting a dag
(#60279) (#60287)
add 49d08fe87b6 [v3-1-test] Fix flaky release command (#60284) (#60291)
add 7f99c457101 [v3-1-test] Update version of Test Release command
(#60289) (#60295)
add 7bb60487e0c [v3-1-test] CI: Upgrade important CI environment (#60292)
(#60296)
add 5014dd32c12 [v3-1-test] Automatically add pydantic extra when
installing airflow 2 in breeze (#60264) (#60267)
add cb56e95dd40 [v3-1-test] Fix constraint mode when installing from dist
or version airflow (#60304) (#60305)
add 507db91c6f8 [v3-1-test] Move dags list filters to buttongroups
(#60298) (#60337)
add 18a55335b73 [v3-1-test] fix: reset pagination on DagList search
(#60326) (#60336)
add 22d59af4e3a [v3-1-test] Add description about Gen-AI contributions to
our guide (#60158) (#60332)
add e47bc6afd8c [v3-1-test] Cleanup tmp_file.py in DagBag test. (#60272)
(#60306)
add 9eb17092ef3 Sync airflowctl to v3-1-test (#60350)
add 63be2f3ff63 [v3-1-test] Add privacy section to PR guidelines and
template (#60367) (#60371)
add fa561ef46a1 [v3-1-test] Limit deltalake again to 1.3.1 due to missing
ARM .whl files (#60376) (#60378)
add 2803ec8420b CI: Upgrade important CI environment (#60375)
add 5d931fb08de [v3-1-test] Improve insert content when generate docker
file (#60393) (#60397)
add bf6ba58d984 update version for release test command + allowing svn
checkout even for dry run (#60309) (#60400)
add 1460d0b6dae Inherit core theme in React plugins (#60256) (#60405)
add c1c9625ffd7 [v3-1-test] Clean react plugin tools (#60419) (#60450)
add 0ce9a558443 [v3-1-test] Fix gantt chart styling (#60347) (#60457)
add 1edb2976e69 [v3-1-test] Remove experimental note from EdgeExecutor
(#60446) (#60489)
add 5810e06fe51 [v3-1-test] Add back template.significant.rst (#60490)
(#60493)
add f02a681ec3d [v3-1-test] Correct the access for the externalLogUrl
(#60412) (#60479)
add 503611e4fbc Upgrade react-dom-router in Airflow UI (#60316) (#60456)
add 7b226f1dd9b [v3-1-test] Unique run_id across manually triggered Dags
with schedules (#59477) (#60468)
add 0578ddc1e3e [v3-1-test] [main] Upgrade important CI environment
(#60475) (#60481)
add f42f2975b40 [v3-1-test] Fix bulletpoint in doc (#60422) (#60426)
add 4af4bbad220 [v3-1-test] Add Linux favour of installing dependencies
for release (#60368) (#60381)
add c79b063bf34 [v3-1-test] Remove unused logic in helm_template_generator
(#60188) (#60331)
add 82c7daf252a [v3-1-test] Fix dag-processor crashing due to MySql
deadlock errors (#60166) (#60418)
add 023e1577ba1 [v3-1-test] Fix Doc Link to Providers Page (#60277)
(#60288)
add 620aa0c4324 [v3-1-test] UI: Update PoolBar to separate Scheduled and
Deferred slots (#59270) (#60538)
add cf3863925a4 [v3-1-test] Update AI question header to 5th-level in PR
template and add separator (#60531) (#60556)
add 0e4b760e73c Improve Dags Filter UI (#60346) (#60547)
add 09cc4b38c6d [v3-1-test] Fix/backfill permission error handling
(#60582) (#60587)
add 7245988769d [v3-1-test] CI: Upgrade important CI environment (#60552)
(#60602)
add 290bed1e762 [v3-1-test] Update release command and guide (#60508)
(#60607)
add 1638e866b13 build: upgrade uv to 0.9.26 and ruff to 0.11.3 (#60622)
add eff3f5d336d [v3-1-test] increase-mysql-healthcheck-timeout (#60338)
(#60343)
add 8943b46e005 [v3-1-test] checking session.query() (#60510) (#60530)
add 9f16920714e [v3-1-test] Move row count and display toggle into
DataTable (#57680) (#60639)
add 71d2eed9526 feat: added toasters for permission denied (#57966)
(#58016) (#60646)
add 17533014833 [v3-1-test] Remove duplicate 'libgdbm-dev' from
install_os_dependencies (#60642) (#60660)
add 1d5f1c648e6 [v3-1-test] Complete missing Hebrew translations
(2026-01-16) (#60633) (#60686)
add b5950d1cea9 [v3-1-test] Fix breeze start-airflow mprocs output
interference (#60652) (#60678)
add c2260d4ba73 [v3-1-test] CI: Upgrade important CI environment (#60694)
(#60695)
add 97fca97f884 [v3-1-test] Relocate internal links from contributing docs
to COMMITTERS.rst (#60684) (#60691)
add f5b6be4d581 [v3-1-test] fix type error when date_time is str (#60414)
(#60578)
add 87215542bec [v3-1-test] Remove API error from disabling submit
(#60473) (#60658)
add 4934192c5d2 [v3-1-test] Fix Vite dev servers not starting in breeze
(#60735) (#60745)
add 53d8b706575 Grey out trigger button on API 403 (#60648) (#60777)
add 69f486d87bd [v3-1-test] Fix Spanish translation (#60775) (#60785)
add 5d2bd511681 [v3-1-test] Revert Fix breeze start-airflow mprocs output
interference #60652 (#60786) (#60788)
add 9f311e59372 [v3-1-test] Complete missing Arabic translations
(2026-01-16) (#60635) (#60782)
add 0748bde2f93 [v3-1-test] docs(contributing-docs): fix some typos and
unmatched parentheses (#60787) (#60790)
add 41dd6210199 [v3-1-test] improved a log message in the dag parsing.
(#60789) (#60814)
add e65328f3480 [v3-1-test] build: upgrade prek to 0.2.30 (#60816) (#60820)
add 05e7945270a [v3-1-test] CI: Upgrade important CI environment (#60827)
(#60829)
add aa566c39e5c [v3-1-test] apply gc.freeze in dag-processor (#60505)
(#60845)
add eb304eae6c3 Cache user object fetched per request in FAB auth manager
for improved performance. (#60274) (#60834)
add 7107afa130b [v3-1-test] Fix: In the log.exception() , the format
specifier for the first parameter is missing (#58295) (#60828)
add 75638013fb1 [v3-1-test] build: upgrade hatch to 1.16.3 (#60850)
(#60852)
add cb6e72359df [v3-1-test] Add checksum verification to Apache RAT
downloading in release instructions (#60841) (#60862)
add 7e97cce0a7a [v3-1-test] CI: Upgrade important CI environment (#60865)
(#60872)
add f21d1991a14 Fix slow log scrolling for large task logs (#60806)
(#60875)
add 91cf84df37b Convert Tasks Table from card to table mode (#60830)
(#60874)
add 656a5beeed3 Fix connection test API to restore masked password/extra
from existing connections (#59643) (#60873)
add a6555273135 Logout the user when the refresh token is no longer valid
(#60781) (#60881)
add afab83a7eaf [v3-1-test] Adding Airflow generic version for Breeze
installations for Airflow (#60809) (#60813)
add d83c0f50e0b Fix permissions check in import error APIs (#60801)
(#60884)
add 4795da45007 upgrade CI environment (#60929)
add fddf4a72406 Reschedule tasks on worker startup Dag load failures
instead of exiting (#59604) (#60926)
add f72116c250f [v3-1-test] Fix mypy checks in CI to also run for scripts
(#60898) (#60906)
add b7d1c41e61a Prevent Triggerer from crashing when a trigger event isn't
serializable (#60152)
add 95877c9c2e6 Fix DAG processor OOM || Avoid loading all TaskInstances
when checking DagVersion in write_dag (#60937) (#60962)
add c86a1831a63 CI: Upgrade important CI environment (#60964)
add b92722835f1 [v3-1-test] Use log_level for root logger instead of
hardcoded INFO level (#60784) (#60970)
add 937f4451a3d Revert "Prevent Triggerer from crashing when a trigger
event isn't serializable (#60152)" (#60976)
add 55a7d49bc3b [v3-1-test] Fix dag access control for dag_id in query
param (#60935) (#60959)
add 091d852122c [v3-1-test] Fix permissions on get_event_logs endpoint
(#60936) (#60958)
add 2b2a1684953 [v3-1-test] Exclude mysql-connector-python 9.6.0 version
(#60889) (#61000)
add d9754299155 CI: Upgrade important CI environment (#61006)
add 0167f876049 Prevent Triggerer from crashing when a trigger event isn't
serializable (#60152) (#60981)
add 4bcc723150d [v3-1-test] Add Dheeraj Turaga as codeowner to
airflow-core/executors (#61016) (#61020)
add 3a24bb4d841 CI: Upgrade important CI environment (#61030)
add 8fe044559bb [v3-1-test] CI: Upgrade important CI environment (#61022)
(#61031)
add 50a1d465a20 [v3-1-test] Fix ui get dags permission endpoint for user
without dag run permissions (#60979) (#60988)
add eda82d6f7d2 [v3-1-test] Simplify typing in TriggerRuleDep (#57733)
(#57779) (#57719)
add a5a20fa6baf [v3-1-test] Get rid of the bleeding edge of our prek-hooks
(#60452) (#61064)
add 540a96d87f2 [v3-1-test] Respect maximum page limit in API (#60989)
(#61073)
add da89723778a Add missing PL translations (#61099)
add 497f2acf16b [v3-1-test] Add bundle_path temporarily to sys.path during
DagBag parsing. (#55894) (#61053)
add dd729277506 Feature/close german translation gaps 2026 01 26 v3 1
(#61097)
add 788ed214751 [v3-1-test] Pool API improve slots validation (#61071)
(#61114)
add f8e4e46a333 [v3-1-test] Fix Simple Auth Manager UI dev server not
starting in breeze (#60932) (#61107)
add 47d7c3457a6 [v3-1-test] Plugins pagination fix #61055 (#61059)
(#61129)
add 7a42423a42a [v3-1-test] Remove unused method `is_default_pool` in Pool
model (#61084) (#61128)
add a55657dad18 [v3-1-test] Add possible actions when PR guidelines are
violated (#61112) (#61120)
add 83e4b5ffcdd Optimized DAG processing queue order on bundle refresh
(#60003)
add 42b2fee69a1 Refactor DAG file queuing and fix redundant processing
(#60124)
add 656c50eb712 updated comment for template var callable serialization
(#60224)
add 332310ef548 Docs: clarify BaseSensorOperator parameters in Sensors
guide (#60275)
add 5adf257d2d2 Use bulk DELETE for XComModel.clear() instead of loading
records (#60955)
add 75682e90f89 Update SerializedDagModel query to fetch DagVersion with
joinedload (#56422)
add 98aa1bba556 Eliminate serdag loading added in #56422 (#57537)
add 78ba0568775 Fix DAG processor OOM || Avoid loading all TaskInstances
when checking DagVersion in write_dag (#60937)
add 1f7b078c703 Fix `TriggerDagRunOperator` deferring when
`wait_for_completion=False` (#60052)
add e34da051d63 Add warning when Bundle path may not be accessible to
impersonated user (#60278)
add 5e63159404c Fix unnecessary DAG version churn when DAG file paths
change (#60799)
add 505b5f545a7 Close Catalan gap in v3-1-test (#61093)
add 3e14ad11f36 feat(i18n): fix Taiwaness Mandarian translation gap
(#61126)
add 8f644c87371 [v3-1-test] Fix asset scheduling for stale DAGs (#59337)
(#60022) (#61106)
add dec59193cab [v3-1-test] Change default mysql client type to mariadb in
Dockerfile.ci (#60683) (#60697)
add 45074811ef4 [v3-1-test] Add HITL operators to standard provider index
docs (#60681) (#60702)
add 99b57284d60 [v3-1-test] Add missing links to airflow.sdk classes and
functions in public interface docs (#61005) (#61012)
add 36c8bc58a79 [v3-1-test] Docs: clarify BaseSensorOperator parameters in
Sensors guide (#60275) (#60846)
add 85fbfe8e1af [v3-1-test] Fix release check for Python Client (#60839)
(#60842)
add 5a834e03884 Fix broken syntax highlighting in AIR rules note section
(#59188)
add 4196c9ed89b Fix airflow.utils.context.Context import path in Airflow 3
migration doc (#59937)
add 99c27b0eeda Fix minor display issue with migration to airflow 3 docs
(#60749)
add 883cd40c986 Manually backport fix reset pagination (#61169)
add 24e91316b1c Update year in NOTICE files (#61164)
add 4ac42ec2c7a [v3-1-test] Add prek hook to check NOTICE files for
content (#60699) (#60710)
add 1792f0761b4 Revert "Inherit core theme in React plugins (#60256)
(#60405)" (#61200)
add 1fadca98b9a [v3-1-test] Add note about Official Docker Image default
for load_examples (#60723) (#61179)
add f31715ce56c Fix react apps plugins router (#61206)
add 8cba37c6b3b fix(ui): avoid gantt annotation error during resize
(#60877)
add 5a2b2404cfe [v3-1-test] Add guardrail to handle DAG deserialization
errors in scheduler (#61162) (#61210)
add 52b7aeae508 [v3-1-test] Explicitly set table ordering (#60609) (#61216)
add dd1a86593f2 Fix import errors not showing on UI (#61163) (#61213)
add c34d2c36f2a [v3-1-test] Add 404 handling for non-existent Dag (#61131)
(#61225)
add 3b41866a2ee dag_processing: initialize versioned bundles for callbacks
(#52040) (#60734) (#61230)
add 08a5859832f [v3-1-test] Fix callback files losing priority during
queue resort (#61232) (#61243)
add d24ec9a649f Update Airflow Version to 3.1.7
add d82bb100d73 Update RELEASE_NOTES.rst
No new revisions were added by this update.
Summary of changes:
.gitattributes | 1 +
.github/CODEOWNERS | 2 +-
.github/PULL_REQUEST_TEMPLATE.md | 59 ++-
.github/actions/breeze/action.yml | 4 +-
.github/actions/install-prek/action.yml | 4 +-
.github/actions/post_tests_failure/action.yml | 6 +-
.github/actions/post_tests_success/action.yml | 2 +-
.github/workflows/airflow-distributions-tests.yml | 2 +-
.github/workflows/basic-tests.yml | 10 +-
.github/workflows/release_dockerhub_image.yml | 2 +-
.pre-commit-config.yaml | 27 +-
COMMITTERS.rst | 6 +
Dockerfile | 3 +-
Dockerfile.ci | 9 +-
NOTICE | 2 +-
README.md | 12 +-
RELEASE_NOTES.rst | 74 ++++
airflow-core/NOTICE | 2 +-
.../administration-and-deployment/dag-bundles.rst | 17 +
airflow-core/docs/best-practices.rst | 2 +-
airflow-core/docs/core-concepts/executor/index.rst | 2 +-
airflow-core/docs/core-concepts/sensors.rst | 64 +++
.../docs/installation/supported-versions.rst | 2 +-
.../docs/installation/upgrading_to_airflow3.rst | 7 +-
airflow-core/docs/public-airflow-interface.rst | 56 +--
airflow-core/docs/tutorial/hitl.rst | 9 +
airflow-core/pyproject.toml | 4 +-
airflow-core/src/airflow/__init__.py | 2 +-
.../api_fastapi/auth/managers/exceptions.py | 4 +-
.../api_fastapi/auth/middlewares/refresh_token.py | 34 +-
.../src/airflow/api_fastapi/common/parameters.py | 5 +-
.../api_fastapi/core_api/datamodels/dag_run.py | 5 +-
.../core_api/datamodels/import_error.py | 3 +-
.../api_fastapi/core_api/datamodels/pools.py | 6 +-
.../core_api/openapi/v2-rest-api-generated.yaml | 3 +
.../core_api/routes/public/connections.py | 19 +-
.../core_api/routes/public/event_logs.py | 9 +-
.../core_api/routes/public/import_error.py | 61 +--
.../api_fastapi/core_api/routes/public/log.py | 2 +-
.../airflow/api_fastapi/core_api/routes/ui/dags.py | 1 -
.../src/airflow/api_fastapi/core_api/security.py | 16 +-
airflow-core/src/airflow/assets/manager.py | 9 +-
.../src/airflow/cli/commands/dag_command.py | 18 +-
.../src/airflow/config_templates/config.yml | 36 +-
.../src/airflow/dag_processing/bundles/base.py | 2 +-
airflow-core/src/airflow/dag_processing/manager.py | 101 ++++-
.../src/airflow/dag_processing/processor.py | 28 +-
.../src/airflow/jobs/scheduler_job_runner.py | 23 +-
.../src/airflow/jobs/triggerer_job_runner.py | 89 +++--
airflow-core/src/airflow/models/asset.py | 17 +-
airflow-core/src/airflow/models/dagbag.py | 34 ++
airflow-core/src/airflow/models/pool.py | 17 -
airflow-core/src/airflow/models/serialized_dag.py | 18 +-
airflow-core/src/airflow/models/taskinstance.py | 12 +
airflow-core/src/airflow/models/xcom.py | 10 +-
airflow-core/src/airflow/serialization/helpers.py | 4 +-
.../airflow/serialization/serialized_objects.py | 21 +-
.../src/airflow/ti_deps/deps/base_ti_dep.py | 3 +-
.../airflow/ti_deps/deps/ready_to_reschedule.py | 36 +-
.../src/airflow/ti_deps/deps/trigger_rule_dep.py | 68 ++--
.../airflow/ui/openapi-gen/requests/schemas.gen.ts | 5 +-
airflow-core/src/airflow/ui/package.json | 10 +-
airflow-core/src/airflow/ui/pnpm-lock.yaml | 133 ++++---
.../airflow/ui/public/i18n/locales/ar/admin.json | 6 +
.../airflow/ui/public/i18n/locales/ar/assets.json | 9 +
.../airflow/ui/public/i18n/locales/ar/browse.json | 26 +-
.../airflow/ui/public/i18n/locales/ar/common.json | 32 +-
.../ui/public/i18n/locales/ar/components.json | 26 ++
.../src/airflow/ui/public/i18n/locales/ar/dag.json | 12 +
.../airflow/ui/public/i18n/locales/ar/dags.json | 5 +
.../ui/public/i18n/locales/ar/dashboard.json | 3 +-
.../airflow/ui/public/i18n/locales/ar/hitl.json | 3 +-
.../airflow/ui/public/i18n/locales/ca/common.json | 10 +-
.../ui/public/i18n/locales/ca/components.json | 4 +
.../airflow/ui/public/i18n/locales/de/common.json | 10 +-
.../ui/public/i18n/locales/de/components.json | 4 +
.../airflow/ui/public/i18n/locales/en/common.json | 10 +-
.../ui/public/i18n/locales/en/components.json | 4 +
.../src/airflow/ui/public/i18n/locales/en/dag.json | 6 +
.../airflow/ui/public/i18n/locales/es/common.json | 2 +-
.../airflow/ui/public/i18n/locales/he/admin.json | 6 +
.../airflow/ui/public/i18n/locales/he/browse.json | 26 +-
.../airflow/ui/public/i18n/locales/he/common.json | 21 +-
.../ui/public/i18n/locales/he/components.json | 16 +
.../ui/public/i18n/locales/he/dashboard.json | 3 +-
.../airflow/ui/public/i18n/locales/pl/common.json | 12 +-
.../ui/public/i18n/locales/pl/components.json | 4 +
.../ui/public/i18n/locales/zh-TW/common.json | 10 +-
.../ui/public/i18n/locales/zh-TW/components.json | 4 +
.../components/ActionAccordion/ActionAccordion.tsx | 2 +-
.../ui/src/components/Assets/AssetEvents.tsx | 2 +-
.../src/components/DagActions/DeleteDagButton.tsx | 10 +-
.../src/components/DagActions/RunBackfillForm.tsx | 25 +-
.../ui/src/components/DataTable/DataTable.test.tsx | 100 ++++-
.../ui/src/components/DataTable/DataTable.tsx | 34 +-
.../components/DataTable/ToggleTableDisplay.tsx | 58 +--
.../airflow/ui/src/components/DurationChart.tsx | 4 +-
.../src/airflow/ui/src/components/PoolBar.tsx | 126 +++---
.../ui/src/components/SearchDags/SearchDags.tsx | 2 +-
.../src/components/TriggerDag/TriggerDAGForm.tsx | 10 +-
.../src/components/ui/ButtonGroupToggle.test.tsx | 88 ++++
.../ui/src/components/ui/ButtonGroupToggle.tsx | 59 +++
.../src/airflow/ui/src/components/ui/index.ts | 1 +
.../src/airflow/ui/src/context/hover/Context.ts | 2 +
.../airflow/ui/src/context/hover/HoverProvider.tsx | 5 +-
.../src/airflow/ui/src/hooks/navigation/index.ts | 2 +
.../src/airflow/ui/src/hooks/navigation/types.ts | 8 +-
.../ui/src/hooks/navigation/useNavigation.ts | 37 +-
.../airflow/ui/src/hooks/useRequiredActionTabs.ts | 2 +-
.../src/airflow/ui/src/layouts/BaseLayout.tsx | 10 +-
.../ui/src/layouts/Details/DagRunSelect.tsx | 8 +-
.../ui/src/layouts/Details/DetailsLayout.tsx | 4 +-
.../airflow/ui/src/layouts/Details/Gantt/Gantt.tsx | 14 +-
.../airflow/ui/src/layouts/Details/Gantt/utils.ts | 24 +-
.../airflow/ui/src/layouts/Details/Grid/Bar.tsx | 31 +-
.../airflow/ui/src/layouts/Details/Grid/Grid.tsx | 127 ++++--
.../airflow/ui/src/layouts/Details/Grid/GridTI.tsx | 48 +--
.../layouts/Details/Grid/TaskInstancesColumn.tsx | 111 ++++--
.../ui/src/layouts/Details/Grid/TaskNames.tsx | 249 +++++++-----
.../src/layouts/Details/Grid/constants.ts} | 31 +-
.../ui/src/layouts/Details/PanelButtons.tsx | 6 +-
.../airflow/ui/src/pages/AssetsList/AssetsList.tsx | 15 +-
.../src/airflow/ui/src/pages/Configs/Configs.tsx | 2 +-
.../ui/src/pages/Connections/Connections.tsx | 13 +-
.../ui/src/pages/Dag/Backfills/Backfills.tsx | 2 +-
airflow-core/src/airflow/ui/src/pages/Dag/Dag.tsx | 7 +
.../src/airflow/ui/src/pages/Dag/DagNotFound.tsx | 70 ++++
.../airflow/ui/src/pages/Dag/Tasks/TaskCard.tsx | 99 -----
.../pages/Dag/Tasks/TaskFilters/TaskFilters.tsx | 6 +-
.../ui/src/pages/Dag/Tasks/TaskRecentRuns.tsx | 71 ----
.../src/airflow/ui/src/pages/Dag/Tasks/Tasks.tsx | 63 ++-
airflow-core/src/airflow/ui/src/pages/DagRuns.tsx | 3 +-
.../src/pages/DagsList/DagsFilters/DagsFilters.tsx | 60 ++-
.../pages/DagsList/DagsFilters/FavoriteFilter.tsx | 66 +--
.../pages/DagsList/DagsFilters/PausedFilter.tsx | 59 +--
.../DagsList/DagsFilters/RequiredActionFilter.tsx} | 30 +-
.../pages/DagsList/DagsFilters/StateFilters.tsx | 57 ++-
.../src/pages/DagsList/DagsFilters/TagFilter.tsx | 7 +-
.../ui/src/pages/DagsList/DagsList.test.tsx | 8 +-
.../src/airflow/ui/src/pages/DagsList/DagsList.tsx | 29 +-
.../pages/Dashboard/PoolSummary/PoolSummary.tsx | 4 +-
airflow-core/src/airflow/ui/src/pages/Error.tsx | 17 +-
.../src/airflow/ui/src/pages/Events/Events.tsx | 3 +-
.../src/airflow/ui/src/pages/ExternalView.tsx | 6 +-
.../pages/HITLTaskInstances/HITLTaskInstances.tsx | 22 +-
airflow-core/src/airflow/ui/src/pages/Plugins.tsx | 13 +-
.../src/airflow/ui/src/pages/Pools/PoolBarCard.tsx | 5 +-
.../src/airflow/ui/src/pages/Pools/Pools.tsx | 11 +-
.../src/airflow/ui/src/pages/Providers.tsx | 3 +-
.../src/airflow/ui/src/pages/ReactPlugin.tsx | 24 +-
airflow-core/src/airflow/ui/src/pages/Security.tsx | 2 +-
.../src/pages/TaskInstance/Logs/TaskLogContent.tsx | 97 +++--
.../ui/src/pages/TaskInstance/Logs/utils.ts | 51 +++
.../ui/src/pages/TaskInstances/TaskInstances.tsx | 3 +-
.../airflow/ui/src/pages/Variables/Variables.tsx | 13 +-
.../src/airflow/ui/src/pages/XCom/XCom.tsx | 3 +-
.../src/airflow/ui/src/queries/useTrigger.ts | 15 +-
airflow-core/src/airflow/utils/cli.py | 15 +-
airflow-core/src/airflow/utils/module_loading.py | 23 +-
.../auth/middlewares/test_refresh_token.py | 6 +-
.../core_api/routes/public/test_connections.py | 136 +++++++
.../core_api/routes/public/test_dag_run.py | 35 ++
.../core_api/routes/public/test_dag_warning.py | 2 +-
.../core_api/routes/public/test_event_logs.py | 4 +-
.../core_api/routes/public/test_import_error.py | 127 ++++--
.../core_api/routes/public/test_pools.py | 21 +-
.../core_api/routes/public/test_task_instances.py | 10 +-
.../core_api/routes/ui/test_backfills.py | 2 +-
.../core_api/routes/ui/test_structure.py | 10 +-
.../unit/api_fastapi/core_api/test_security.py | 3 +
airflow-core/tests/unit/assets/test_manager.py | 40 +-
.../tests/unit/cli/commands/test_dag_command.py | 9 +-
.../tests/unit/dag_processing/bundles/test_base.py | 28 +-
.../tests/unit/dag_processing/test_manager.py | 178 ++++++++-
.../tests/unit/dag_processing/test_processor.py | 29 ++
airflow-core/tests/unit/jobs/test_scheduler_job.py | 39 +-
airflow-core/tests/unit/jobs/test_triggerer_job.py | 28 +-
airflow-core/tests/unit/models/test_dag.py | 4 +-
airflow-core/tests/unit/models/test_dagbag.py | 105 ++++-
airflow-core/tests/unit/models/test_pool.py | 8 -
.../unit/serialization/test_dag_serialization.py | 41 +-
.../unit/serialization/test_serialized_objects.py | 35 ++
.../ti_deps/deps/test_ready_to_reschedule_dep.py | 21 +-
.../tests/unit/utils/test_module_loading.py | 70 +++-
airflow-ctl-tests/pyproject.toml | 6 +-
.../tests/airflowctl_tests/conftest.py | 111 ++----
.../tests/airflowctl_tests/constants.py | 7 +-
.../airflowctl_tests/fixtures/pools_export.json | 38 ++
.../fixtures/test_connections.json | 11 +
.../airflowctl_tests/fixtures/test_pools.json | 8 +
.../airflowctl_tests/fixtures/test_variables.json | 7 +
.../fixtures/variables_export.json | 8 +
.../airflowctl_tests/test_airflowctl_commands.py | 222 ++++++++---
airflow-ctl/.pre-commit-config.yaml | 2 +-
airflow-ctl/NOTICE | 2 +-
airflow-ctl/RELEASE_NOTES.rst | 4 +-
airflow-ctl/docs/conf.py | 12 +-
airflow-ctl/docs/images/command_hashes.txt | 4 +-
airflow-ctl/docs/images/output_connections.svg | 141 +++----
airflow-ctl/docs/images/output_variables.svg | 114 +++---
.../docs/installation/installing-from-pypi.rst | 5 +-
.../docs/installation/installing-from-sources.rst | 22 +-
airflow-ctl/newsfragments/59850.significant.rst | 30 ++
airflow-ctl/pyproject.toml | 20 +-
airflow-ctl/src/airflowctl/__init__.py | 2 +-
.../src/airflowctl/api/datamodels/generated.py | 10 +-
airflow-ctl/src/airflowctl/ctl/cli_config.py | 30 +-
.../airflowctl/ctl/commands/variable_command.py | 22 -
airflow-ctl/tests/airflow_ctl/api/test_client.py | 2 +-
.../tests/airflow_ctl/api/test_operations.py | 8 +-
.../airflow_ctl/ctl/commands/test_dag_command.py | 8 +-
.../ctl/commands/test_variable_command.py | 20 -
chart/.pre-commit-config.yaml | 3 +-
chart/NOTICE | 2 +-
contributing-docs/01_roles_in_airflow_project.rst | 5 -
contributing-docs/03_contributors_quick_start.rst | 4 +-
contributing-docs/05_pull_requests.rst | 95 ++++-
contributing-docs/11_documentation_building.rst | 2 +-
contributing-docs/12_provider_distributions.rst | 2 +-
.../13_airflow_dependencies_and_extras.rst | 6 +-
contributing-docs/testing/unit_tests.rst | 2 +-
dev/README_RELEASE_AIRFLOW.md | 39 +-
dev/README_RELEASE_AIRFLOWCTL.md | 15 +-
dev/README_RELEASE_HELM_CHART.md | 11 +-
dev/README_RELEASE_PROVIDERS.md | 17 +-
dev/README_RELEASE_PYTHON_CLIENT.md | 15 +-
dev/breeze/doc/ci/02_images.md | 4 +-
dev/breeze/pyproject.toml | 4 +-
.../src/airflow_breeze/commands/ci_commands.py | 4 +-
.../commands/release_candidate_command.py | 22 +-
.../src/airflow_breeze/commands/release_command.py | 37 +-
.../commands/release_management_commands.py | 18 +-
dev/breeze/src/airflow_breeze/global_constants.py | 4 +-
.../airflow_breeze/utils/check_release_files.py | 11 +-
dev/breeze/src/airflow_breeze/utils/run_utils.py | 17 +-
dev/breeze/tests/test_release_candidate_command.py | 7 +-
dev/breeze/uv.lock | 441 +++++++++++----------
.../react_plugin_template/src/theme.ts | 4 -
devel-common/pyproject.toml | 3 +-
docker-stack-docs/README.md | 10 +-
.../extending/add-airflow-configuration/Dockerfile | 2 +-
.../extending/add-apt-packages/Dockerfile | 2 +-
.../add-build-essential-extend/Dockerfile | 2 +-
.../extending/add-providers/Dockerfile | 2 +-
.../add-pypi-packages-constraints/Dockerfile | 2 +-
.../extending/add-pypi-packages-uv/Dockerfile | 2 +-
.../extending/add-pypi-packages/Dockerfile | 2 +-
.../extending/add-requirement-packages/Dockerfile | 2 +-
.../extending/custom-providers/Dockerfile | 2 +-
.../extending/embedding-dags/Dockerfile | 2 +-
.../extending/writable-directory/Dockerfile | 2 +-
docker-stack-docs/entrypoint.rst | 14 +-
docs/spelling_wordlist.txt | 2 +
generated/PYPI_README.md | 10 +-
go-sdk/.pre-commit-config.yaml | 3 +-
go-sdk/NOTICE | 2 +-
.../tests/chart_utils/helm_template_generator.py | 5 +-
.../chart_utils/ingress-networking-v1beta1.json | 46 ---
newsfragments/template.significant.rst | 33 ++
providers-summary-docs/index.rst | 10 +-
providers/airbyte/NOTICE | 2 +-
providers/alibaba/NOTICE | 2 +-
providers/amazon/NOTICE | 2 +-
providers/apache/beam/NOTICE | 2 +-
providers/apache/cassandra/NOTICE | 2 +-
providers/apache/drill/NOTICE | 2 +-
providers/apache/druid/NOTICE | 2 +-
providers/apache/flink/NOTICE | 2 +-
providers/apache/hdfs/NOTICE | 2 +-
providers/apache/hive/NOTICE | 2 +-
providers/apache/iceberg/NOTICE | 2 +-
providers/apache/impala/NOTICE | 2 +-
providers/apache/kafka/NOTICE | 2 +-
providers/apache/kylin/NOTICE | 2 +-
providers/apache/livy/NOTICE | 2 +-
providers/apache/pig/NOTICE | 2 +-
providers/apache/pinot/NOTICE | 2 +-
providers/apache/spark/NOTICE | 2 +-
providers/apache/tinkerpop/NOTICE | 2 +-
providers/apprise/NOTICE | 2 +-
providers/arangodb/NOTICE | 2 +-
providers/asana/NOTICE | 2 +-
providers/atlassian/jira/NOTICE | 2 +-
providers/celery/NOTICE | 2 +-
providers/cloudant/NOTICE | 2 +-
providers/cncf/kubernetes/NOTICE | 2 +-
providers/cohere/NOTICE | 2 +-
providers/common/compat/NOTICE | 2 +-
.../common/compat/module_loading}/__init__.py | 0
providers/common/io/NOTICE | 2 +-
providers/common/messaging/NOTICE | 2 +-
providers/common/sql/NOTICE | 2 +-
providers/databricks/NOTICE | 2 +-
providers/databricks/pyproject.toml | 2 +-
providers/datadog/NOTICE | 2 +-
providers/dbt/cloud/NOTICE | 2 +-
providers/dingding/NOTICE | 2 +-
providers/discord/NOTICE | 2 +-
providers/docker/NOTICE | 2 +-
providers/edge3/NOTICE | 2 +-
providers/elasticsearch/NOTICE | 2 +-
providers/exasol/NOTICE | 2 +-
providers/fab/3rd-party-licenses/LICENSES-ui.txt | 2 +-
providers/fab/NOTICE | 2 +-
providers/facebook/NOTICE | 2 +-
providers/ftp/NOTICE | 2 +-
providers/git/NOTICE | 2 +-
providers/github/NOTICE | 2 +-
providers/google/NOTICE | 2 +-
.../providers/google/3rd-party-licenses/NOTICE | 2 +-
providers/grpc/NOTICE | 2 +-
providers/hashicorp/NOTICE | 2 +-
providers/http/NOTICE | 2 +-
providers/imap/NOTICE | 2 +-
providers/influxdb/NOTICE | 2 +-
providers/jdbc/NOTICE | 2 +-
providers/jenkins/NOTICE | 2 +-
providers/keycloak/NOTICE | 2 +-
providers/microsoft/azure/NOTICE | 2 +-
providers/microsoft/mssql/NOTICE | 2 +-
providers/microsoft/psrp/NOTICE | 2 +-
providers/microsoft/winrm/NOTICE | 2 +-
providers/mongo/NOTICE | 2 +-
providers/mysql/NOTICE | 2 +-
providers/mysql/docs/index.rst | 19 +-
providers/mysql/pyproject.toml | 6 +-
providers/neo4j/NOTICE | 2 +-
providers/odbc/NOTICE | 2 +-
providers/openai/NOTICE | 2 +-
providers/openfaas/NOTICE | 2 +-
providers/openlineage/NOTICE | 2 +-
providers/opensearch/NOTICE | 2 +-
providers/opsgenie/NOTICE | 2 +-
providers/oracle/NOTICE | 2 +-
providers/pagerduty/NOTICE | 2 +-
providers/papermill/NOTICE | 2 +-
providers/pgvector/NOTICE | 2 +-
providers/pinecone/NOTICE | 2 +-
providers/postgres/NOTICE | 2 +-
providers/presto/NOTICE | 2 +-
providers/qdrant/NOTICE | 2 +-
providers/redis/NOTICE | 2 +-
providers/salesforce/NOTICE | 2 +-
providers/samba/NOTICE | 2 +-
providers/segment/NOTICE | 2 +-
providers/sendgrid/NOTICE | 2 +-
providers/sftp/NOTICE | 2 +-
providers/singularity/NOTICE | 2 +-
providers/slack/NOTICE | 2 +-
providers/smtp/NOTICE | 2 +-
providers/snowflake/NOTICE | 2 +-
providers/sqlite/NOTICE | 2 +-
providers/ssh/NOTICE | 2 +-
providers/standard/NOTICE | 2 +-
providers/standard/docs/operators/hitl.rst | 44 ++
providers/tableau/NOTICE | 2 +-
providers/telegram/NOTICE | 2 +-
providers/teradata/NOTICE | 2 +-
providers/trino/NOTICE | 2 +-
providers/vertica/NOTICE | 2 +-
providers/weaviate/NOTICE | 2 +-
providers/yandex/NOTICE | 2 +-
providers/ydb/NOTICE | 2 +-
providers/zendesk/NOTICE | 2 +-
pyproject.toml | 8 +-
reproducible_build.yaml | 4 +-
scripts/ci/docker-compose/backend-mysql.yml | 4 +-
.../ci/prek/check_airflowctl_command_coverage.py | 150 +++++++
.../prek/check_contextmanager_class_decorators.py | 0
scripts/ci/prek/check_imports_in_providers.py | 2 +-
...ck_schema_defaults.py => check_notice_files.py} | 40 +-
scripts/ci/prek/compile_ui_assets_dev.py | 36 +-
scripts/ci/prek/inline_scripts_in_docker.py | 2 +-
scripts/ci/prek/mypy_folder.py | 1 +
.../ci/prek/prevent_deprecated_sqlalchemy_usage.py | 6 +-
scripts/ci/prek/ruff_format.py | 2 +-
scripts/ci/prek/supported_versions.py | 2 +-
scripts/ci/prek/upgrade_important_versions.py | 9 +-
scripts/docker/install_os_dependencies.sh | 1 -
.../in_container/install_airflow_and_providers.py | 22 +
.../in_container/run_capture_airflowctl_help.py | 6 +-
scripts/tools/setup_breeze | 2 +-
.../src/airflow_shared/logging/structlog.py | 2 +-
shared/logging/tests/logging/test_structlog.py | 13 +
task-sdk/NOTICE | 2 +-
task-sdk/pyproject.toml | 2 +-
task-sdk/src/airflow/sdk/__init__.py | 2 +-
task-sdk/src/airflow/sdk/definitions/dag.py | 6 +-
.../src/airflow/sdk/execution_time/task_runner.py | 154 +++++--
.../task_sdk/execution_time/test_task_runner.py | 193 ++++++++-
390 files changed, 5137 insertions(+), 2386 deletions(-)
copy airflow-ctl/src/airflowctl/__init__.py =>
airflow-core/src/airflow/api_fastapi/auth/managers/exceptions.py (86%)
create mode 100644
airflow-core/src/airflow/ui/src/components/ui/ButtonGroupToggle.test.tsx
create mode 100644
airflow-core/src/airflow/ui/src/components/ui/ButtonGroupToggle.tsx
copy
airflow-core/src/airflow/{api_fastapi/auth/managers/simple/ui/src/router.tsx =>
ui/src/layouts/Details/Grid/constants.ts} (54%)
create mode 100644 airflow-core/src/airflow/ui/src/pages/Dag/DagNotFound.tsx
delete mode 100644 airflow-core/src/airflow/ui/src/pages/Dag/Tasks/TaskCard.tsx
delete mode 100644
airflow-core/src/airflow/ui/src/pages/Dag/Tasks/TaskRecentRuns.tsx
copy airflow-core/src/airflow/ui/src/{components/ui/ResetButton.tsx =>
pages/DagsList/DagsFilters/RequiredActionFilter.tsx} (60%)
create mode 100644
airflow-core/src/airflow/ui/src/pages/TaskInstance/Logs/utils.ts
create mode 100644
airflow-ctl-tests/tests/airflowctl_tests/fixtures/pools_export.json
create mode 100644
airflow-ctl-tests/tests/airflowctl_tests/fixtures/test_connections.json
create mode 100644
airflow-ctl-tests/tests/airflowctl_tests/fixtures/test_pools.json
create mode 100644
airflow-ctl-tests/tests/airflowctl_tests/fixtures/test_variables.json
create mode 100644
airflow-ctl-tests/tests/airflowctl_tests/fixtures/variables_export.json
create mode 100644 airflow-ctl/newsfragments/59850.significant.rst
delete mode 100644 helm-tests/tests/chart_utils/ingress-networking-v1beta1.json
create mode 100644 newsfragments/template.significant.rst
copy {airflow-core/src/airflow/_shared =>
providers/common/compat/src/airflow/providers/common/compat/module_loading}/__init__.py
(100%)
create mode 100644 providers/standard/docs/operators/hitl.rst
create mode 100755 scripts/ci/prek/check_airflowctl_command_coverage.py
mode change 100644 => 100755
scripts/ci/prek/check_contextmanager_class_decorators.py
copy scripts/ci/prek/{check_schema_defaults.py => check_notice_files.py} (53%)