This is an automated email from the ASF dual-hosted git repository.
dependabot[bot] pushed a change to branch
dependabot/npm_and_yarn/registry/registry-package-updates-4bcf68a93c
in repository https://gitbox.apache.org/repos/asf/airflow.git
discard 25805204459 Bump the registry-package-updates group across 1 directory
with 3 updates
add b3d283faa76 improve system test failure logging (#65410)
add 3e46e28302c clean up redundant api server uri generation (#65277)
add 668328b247b [main] CI: Upgrade important CI environment (#65401)
add f1cd3f9504d Fix DAG auto-pause ordering to use run_after (#65207)
add 17f7eb24aac Update alpine version in pgbouncer and pgbouncer-exporter
(#65413) (#65417)
add cba9be3789d Add default GO_VERSION for pgbouncer-exporter Dockerfile
(#65446)
add c5a8b4ba1fe fix: update dependencies to fix dependabot alarms in
providers.common.ai (#65048)
add 832a74ff86a Widen BaseExecutor method signatures to accept WorkloadKey
(#65392)
add 71e2b874ade Ignore .kiro dir for Kiro AI IDE (#65448)
add 97e3997a549 Sync DagRunProtocol with DagRun model in task-sdk (#65347)
add cb412555fb1 Remove metric_tables.rst (#65262)
add e9ccf0751b1 Bump stash/restore to retry-capable revision with
fail-on-download (#65268)
add 6c598e2a787 Catch TypeError for non-datetime since_time in _write_logs
(#65232)
add 277f01c280a Fix KubernetesPodOperator to forward pod log levels to
Airflow task logs (#64829)
add 75058c04cfa Fix to check for last 30 days instead of 2 months (#65397)
add 667e6ac0720 Fix constraints diff status handling in
ci_diff_constraints script (#65456)
add 13bb6a07598 Embed GPG keys in repo for Docker build (#65408)
add b84b695a22b Bump the uv-dependency-updates group across 1 directory
with 2 updates (#65441)
add 4c3f841b411 test: add e2e opensearch remote logging test (#65374)
add b41b11d3fc1 Avoid false recovery alerts when failed job lookup fails
(#64863)
add 1a0efe7d456 Include TI UUID in scheduler, DAG processor, triggerer,
and worker logs (#65458)
add c905ad858a1 Bump eslint-plugin-unicorn (#65429)
add bbc448fc386 Fix task CLI map_index bounds validation (#64133)
add 5709502ecc2 Use monotonic clock for prek command timing (#65481)
add ea9f13c70dd Prepare airflow-ctl 0.1.4rc1 release (#65468)
add c50832d6d52 Mark tests as fixme for asset details and connection
deletion (#65487)
add 41accfc6f7d Fix airflow-ctl missing pyyaml runtime dependency (#65489)
add 7e85e7bea5a Validate task identity token claims with a typed schema
(#63604)
add a90202d270b Fix ti.start_date showing deferral-resume time instead of
original start time (#63247)
add 418af2bb7ea Support log_output for PapermillOperator (#65170)
add 938ccf3b2fc KPO: treat registry 5xx errors as transient during pod
startup (#65490)
add 90f8746d74c Bump the edge-ui-package-updates group across 1 directory
with 20 updates (#65434)
add 141fe205baf docs: define translation agent skill guidelines for German
(de) locale (#65115)
add 67e7cc1912c Stop masking quarantined unit test failures (#65500)
add 297d398d12b Improve airflow-ctl release automation: gh-token fallback
and better categorization (#65503)
add 6beb5217c56 Fix publish-docs Update Provider Registry job for
non-provider distributions (#65506)
add 357aca83376 airflow-ctl release doc: fill remaining follow-up gaps
(#65508)
add e9aa3aa3e57 Remove dead airflow-ctl/newsfragments directory (unused by
changelog tooling) (#65507)
add 6a6b6ff409f Strip userinfo from OpenSearch host URL before using it as
task-log label (#65509)
add 9cdbc3c6a5a Release airflow-ctl: document GPG, PR-first, sanity
checks, and follow-ups (#65501)
add 57f54cdd844 Fix airflow-ctl release verification instructions (#65510)
add cafa9479377 fix CI error: AttributeError: 'TaskInstance' object has no
attribute 'run' (#65514)
add b7fcda5136f Revert "Stop masking quarantined unit test failures
(#65500)" (#65515)
add 6bc3e204c8f Rename Cloud Composer service in the operator docs (#64257)
add cdf2e393765 Add Hindi locale translation agent skill (#62066)
add 80281f294d5 Add extended sysinfo for Edge worker (#65472)
add 820e9d2a98e fix graph view not auto-refreshing task states during DAG
run (#65518)
add b31376e37be Lower-bind FAB provider, to latest line. (#65523)
add 0c88719c168 Split constraint update workflow for stable branches
(#65526)
add 4f3b228be1a Isolate non-provider mypy hooks per distribution with
dedicated .build/ venvs (#65492)
add a8cb40a57c7 Fix flaky Stackdriver test timeout caused by leaked
watchtower handler (#65488)
add 01888df3ae9 Filter external dependency nodes by readable DAGs in
structure_data endpoint (#65342)
add f6a354d970d Improve Graph View Performance (#65031)
add e36d10a5196 Add per-DAG authorization to partitioned_dag_runs
endpoints (#65344)
add e9d106667c7 Add name fields to SDK deadline alerts (#64926)
add b2dadd2b762 Fix OTel timer metrics using Gauge instead of Histogram
(#64207)
add 44ae2bc5efb Feature/cursor pagination task instances UI (#64953)
add d3e7d369587 Return list of destination URIs from S3ToGCSOperator
(#64851)
add 1193073f908 Respect dag processor config option to show parsing logs
on stdout (#65528)
add 8d4e2352e34 Bump the auth-ui-package-updates group across 1 directory
with 2 updates (#65425)
add 8ed50aebe9d Work around jpype1 1.7.0 missing macOS arm64 wheels in
jdbc provider (#65532)
add 68dd49371eb Bump ts-morph (#65427)
add d2396a53048 fix(fab): use naming_convention for 02ca36b0235b
batch_alter_table on SQLite (#65540)
add 3a40713353c [main] CI: Upgrade important CI environment (#65521)
add 3dd2ba09ec6 Only fail provider dependency checks on main (#65551)
add ba58ee13fc4 Fix OpenAPI spec: add ExtraMenuItem description (Pydantic
2.13.1 now emits docstrings) (#65544)
add de625757506 Add dev/sync_fork.sh helper to sync fork branches with
upstream (#65550)
add 7d13c2cd025 unmock Graph component in Graph.test.tsx so hook
assertions are reached (#65555)
add c95e0580724 Update SystemsManagerParameterStoreBackend to support
multi-team (#65396)
add 25c9c0557e6 Update SecretsManagerBackend to support multi-team (#65395)
add 5fc030aeac3 Add tests for execute_complete success and error paths
(#64119)
add f99b7c07187 render cleanup RBAC only for KubernetesExecutor (#65539)
add 46091257c05 remove duplicate fallback branch in
airflowPodSecurityContextsIds helper (#65558)
add d41310a2901 [Helm-Chart] BugFix: Wrong broker URL secret ref (#65006)
add 43556cc3608 Fix run_id_pattern pipe OR operator dropping single-term
edge cases (#65190)
add df421a3a17b Fix Helm chart image volume schema validation (#65409)
add b8deb334909 fix(amazon): Support AWS China region endpoints in
RedshiftSQLHook OpenLineage identifier parsing (#65483)
add 92475038280 Bump the fab-ui-package-updates group across 1 directory
with 3 updates (#65567)
add 0a00d058c69 Add pagination to grid view, and adjust grid if linking to
old runs (#65388)
add 26e2e786f46 Set per-Python-version lower bounds for jpype1 in JDBC
provider (#65572)
add 0a67541ba00 Use project-pinned uv and check min version in prek hooks
(#65531)
add b529f1218d7 Release docs: port airflowctl fixes and guidance to other
components (#65576)
add aa54031f3ce Allow accessing a TaskGroup's members via `[]` (#64430)
add 7c3eacc3cfb Fix UI log fetch crash when ti.hostname is empty (#64285)
add 33e64a1dd67 Follow-up fixes for double-encode trigger PR (#64823)
add d551b3ba603 fix: disable SQLite FK checks in 0111 migration downgrade
(#65545)
add 1e14a3d6bcd Add quota project id support to Google cloud base hook
(#56324)
add f957a38821f Avoid unspecced MagicMock for execute_complete context in
S3ToGCS test (#65087)
add 7ea2fe88ee6 feat: Add rendered map_index template to OL events (#65529)
add 74e320cfbb8 Explain xcom_pull behaviour without task_ids in docs
(#65406)
add 8b401f28f03 Fix backfill params not overriding existing DAG run conf
(#64939)
add cc1c56c269f Make werkzeug import optional in Google provider test
conftest (#65581)
add a1e5e2d822e Release airflow-ctl from dedicated airflow-ctl/vX-Y-*
branches (#65574)
add 1d3983884de Refactor DAG processor run lifecycle into before/after
hooks (#65593)
add de845f3086a Refactor DAG processor priority file claiming hook (#65559)
add 7e01004596a Define translation agent skill guidelines for Hebrew (he)
locale (#65122)
add 981b0e218c5 Fix async engine missing pool_recycle and pool_pre_ping
configuration (#65276)
add 1fb2d0e3648 Support ordering XCom entries in the REST API and UI
(#65418)
add 551870b59dd Update `AwsAuthManager` to support multi-team #65371
(#65393)
add 4af7776f633 Fix `mypy-scripts` and `check-distribution-gitignore`
hooks (#65611)
add 5caf8ac986d Fix: Correct grammatical error in AWS IAM Identity Center
documentation (#65603)
add dae48ba722c feat: enable queue up new tasks (#63484)
add 25f07dce44b Fix flaky K8s xcom tests on ARM runners hitting 120s
pod-start timeout (#65598)
add 136d2ae31d2 Bump typescript from 5.9.3 to 6.0.2 in
/airflow-core/src/airflow/api_fastapi/auth/managers/simple/ui (#65426)
add 098b9d4d1da AGENTS: require tracking issue for PRs that apply a
workaround (#65612)
add a6f76b1a37b Fix airflow-ctl fallback for failed constrained installs
(#65013)
add 89a021cd72f Fix airflowctl dagrun list crash when --state is omitted
(#65608)
add 9a5485d04fd Branch airflow-ctl release branches from core vX-Y-stable,
not vX-Y-test (#65606)
add 43763b965de Improve standalone authentication documentation for
Airflow 3.x (#65330)
add b90710803a4 Add RELEASE_NOTES.rst and Chart.yaml changes for 1.21.0
(#65569)
add 01c4c1d4231 Allow string conversion to datetime for since_time in KPO
logs (#65498)
add e16871edab9 Cap airflow-ctl httpx dependency below 1.0 (#65607)
add 0319298ce78 Small improvements on Helm release (#65633)
add 1f984f3368c Use fast-forward for airflow-ctl -test to -stable sync,
not squash (#65637)
add e61b8a0ef5b Protect airflow-ctl/v0-1-stable and wire up backport label
(#65610)
add c588c665afc Fix e2e flaky in AssetDetailPage and ConnectionsPage tests
(#65494)
add 2e1f71d8af7 Forward MySQL SSL params from sql_alchemy_conn to airflow
db shell (#65575)
add 1cc6f5425af Make Mypy plugins installable (#61422)
add 4b329005714 Bump sendgrid>=6.12.5 (#65635)
add 51bd898bd62 Add multi team secret support to VaultBackend (#65493)
add 82b34628ddb [main] Upgrade important CI environment (#65657)
add 3783d919293 Airflow 3.2.1 has been released (#65665)
add dbd97f26819 Chart: Default airflow version to 3.2.1 (#65666)
add c43c778a76d Fix mypy plugin loading after airflow_mypy distribution
migration (#65668)
add 205eae19e63 Stop dumping full Click context dict in
update-breeze-cmd-output (#65667)
add 0bcec1d359d Fix passing labels to BQ job (#65663)
add 1812de86d6b Add on_kill() hook to BaseTrigger to handle user actions
on triggers (#65590)
add deb9948d049 Add Dutch (nl) translation agent skill guidelines (#62763)
add 578ab8e7272 Fix Google Dataflow hook failing import when apache-beam
not installed (#65659)
add 381a0d33974 Bump uv required-version floor to 0.11.7 (#65670)
add d59d32a9595 Implement on_kill() trigger hook for Databricks triggers
(#65672)
add 8a4984e30d7 Mark Snowflake connection form `Proxy Port` field optional
(#65444)
add 294c92e5f05 Fix Azure provider hooks ignoring cloud_environment
connection extra (#65320)
add 2d4eb59b352 Adds the DAG run ID to the grid bar tooltip and also
surfaces it in the task instance tooltip in the grid view. (#65626)
add ba3da41e806 Fix SQS CreateQueue type error by casting attributes to
string (#65649)
add e3af47b7740 Simplify i18n policy (#65630)
add e80e8946789 Update Compute SSH docuemntation about TPC (#65662)
add 9aa4dfb6ec5 Fix: Prevent Breeze crash when self-upgrade check fails
(#65656)
add 052d27f4179 Fix DetachedInstanceError in OpenLineage listener by using
safe_getattr (#65579)
add 5a1f6ed0239 Keep DualStatsManager as a try/except import as it is soon
going to be removed (#65676)
add c1281c6959f Bump eslint (#65681)
add f74bcadb7ab Carry RC-N-1 checkboxes forward into RC-N testing issue
(#65644)
add 3ce6444836f Providers wave 2026-04-21 (#65614)
add a3383b70946 Fix macOS `SIGSEGV` in task execution by using
`fork`+`exec` (#64874)
add 9a25acd2098 Amend staging doc URL in release verification email
generation (#65693)
add de9cf0d1fc4 Remove "translation freeze" logic from breeze selective
checks (#65684)
add b8c6a3f0181 ADO-513 Remove cache from image (#65134)
add db7eab370eb Remove global variables in airflow.settings (#61917)
add 3b188b904fb Pre-assign external_executor_id at queuing time to prevent
duplicate execution on scheduler crash (#65594)
add 3562b16d3db Bump i18next-http-backend in /airflow-core/src/airflow/ui
(#65686)
add 27d07cbc9e9 Revert "Remove global variables in airflow.settings
(#61917)" (#65718)
add b71a2f5e8d5 Updates example go dag (#64493)
add 1b4d9bba4da Remove stray ellipsis from Plugin Management Interface
docs (#65717)
add 9f0093503cd Updating documentation to reflect on_kill()/cleanup() for
triggers (#65671)
add dade40feff4 Clarify Airflow's focus on batch-oriented workflows
(#65723)
add 555f35576e3 Updates the is_url_safe method to reject urls with ///
(#65557)
add fe1c03bad93 Add test coverage for
AzureBatchHook.wait_for_all_node_state (#63765)
add 504694ec67d Fix dag run clear existing tasks (#65628)
add 6dcfb1a7c70 Implement comm handlers for callback supervisor (#65269)
add 86806861cc0 Add multi-team lookup to Lockbox backend (#65695)
add 462b8e15961 Add multi-team lookup to Azure Key Vault backend (#65692)
add 5f918917879 Add team name to task CTX (#65617)
add c57abb98ec6 Add cursor based pagination for get_dag_runs endpoint
(#65604)
add b2e7b87bdda Add Snowflake data quality operator examples to provider
docs and system tests (#65623)
add 5d6f1c12c6f Add multi-team lookup to Kubernetes secrets backend
(#65694)
add 2b6e8181e3a Two-token mechanism for task execution to prevent token
expiration while tasks wait in executor queues (#60108)
add 93ad61e63d6 Improve Playwright test patterns in xcoms page object
#63966 (#65645)
add 31c83302260 Fix import cast missing error in dag_run api route (#65748)
add 2a8ecf11b5d [main] CI: Upgrade important CI environment (#65753)
add 7cff1b1edad Correcting `version_added` for `[triggerer]
on_kill_timeout` (#65757)
add b22d7516e07 Update python client version/changelog for 3.2.1 release
(#65770)
add 7336ed4371c Update search parameters to better leverage DB indexes
(#64963)
add 8354e86b845 Honor AUTH_ROLE_PUBLIC in FastAPI API server (#65685)
add c9e175d31fb fix celery version compact issue (#65752)
add 1f4fa482217 Bump the registry-package-updates group across 1 directory
with 3 updates
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 (25805204459)
\
N -- N -- N
refs/heads/dependabot/npm_and_yarn/registry/registry-package-updates-4bcf68a93c
(1f4fa482217)
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:
.asf.yaml | 5 +
.github/CODEOWNERS | 1 +
.github/actions/install-prek/action.yml | 4 +-
.../actions/prepare_breeze_and_image/action.yml | 3 +-
.github/actions/prepare_single_ci_image/action.yml | 3 +-
.github/boring-cyborg.yml | 9 +
.github/skills/airflow-translations/locales/de.md | 306 ++++
.github/skills/airflow-translations/locales/he.md | 206 +++
.github/skills/airflow-translations/locales/hi.md | 73 +
.github/skills/airflow-translations/locales/nl.md | 147 ++
.github/workflows/additional-prod-image-tests.yml | 16 +
.github/workflows/airflow-e2e-tests.yml | 4 +-
.github/workflows/basic-tests.yml | 8 +-
.github/workflows/ci-amd-arm.yml | 2 +
.github/workflows/ci-image-build.yml | 6 +-
.github/workflows/ci-image-checks.yml | 4 +-
.github/workflows/prod-image-build.yml | 2 +-
.github/workflows/publish-docs-to-s3.yml | 6 +-
...h.yml => update-constraints-on-push-stable.yml} | 6 +-
.github/workflows/update-constraints-on-push.yml | 3 +-
.gitignore | 3 +
.pre-commit-config.yaml | 44 +-
AGENTS.md | 51 +-
Dockerfile | 41 +-
Dockerfile.ci | 32 +-
README.md | 2 +-
RELEASE_NOTES.rst | 77 +
airflow-core/.pre-commit-config.yaml | 4 +-
.../logging-monitoring/.gitignore | 1 +
.../logging-monitoring/metric_tables.rst | 129 --
.../docs/administration-and-deployment/plugins.rst | 2 -
.../docs/authoring-and-scheduling/deferring.rst | 7 +-
airflow-core/docs/best-practices.rst | 2 +-
airflow-core/docs/core-concepts/xcoms.rst | 4 +
airflow-core/docs/index.rst | 4 -
.../docs/installation/supported-versions.rst | 2 +-
.../docs/installation/upgrading_to_airflow3.rst | 12 +
.../docs/security/jwt_token_authentication.rst | 61 +-
airflow-core/docs/start.rst | 28 +-
airflow-core/newsfragments/64207.significant.rst | 1 +
airflow-core/newsfragments/64963.significant.rst | 1 +
airflow-core/newsfragments/65269.significant.rst | 1 +
airflow-core/newsfragments/65590.feature.rst | 1 +
airflow-core/pyproject.toml | 6 +-
.../api_fastapi/auth/managers/base_auth_manager.py | 13 +
.../auth/managers/simple/simple_auth_manager.py | 10 +
.../auth/managers/simple/ui/package.json | 10 +-
.../auth/managers/simple/ui/pnpm-lock.yaml | 437 +++---
.../auth/managers/simple/ui/src/login/Login.tsx | 2 +-
.../auth/managers/simple/ui/tsconfig.app.json | 1 -
.../auth/managers/simple/ui/tsconfig.node.json | 1 -
.../src/airflow/api_fastapi/auth/tokens.py | 10 +-
.../src/airflow/api_fastapi/common/cursors.py | 2 +-
.../src/airflow/api_fastapi/common/parameters.py | 356 ++++-
.../src/airflow/api_fastapi/core_api/app.py | 7 +-
.../api_fastapi/core_api/datamodels/backfills.py | 2 +-
.../api_fastapi/core_api/datamodels/dag_run.py | 41 +-
.../core_api/datamodels/task_instances.py | 31 +
.../api_fastapi/core_api/datamodels/ui/deadline.py | 5 +-
.../api_fastapi/core_api/openapi/_private_ui.yaml | 154 +-
.../core_api/openapi/v2-rest-api-generated.yaml | 1427 +++++++++++++++++--
.../api_fastapi/core_api/routes/public/assets.py | 14 +-
.../core_api/routes/public/backfills.py | 3 +
.../core_api/routes/public/connections.py | 4 +-
.../api_fastapi/core_api/routes/public/dag_run.py | 190 ++-
.../api_fastapi/core_api/routes/public/dag_tags.py | 4 +-
.../api_fastapi/core_api/routes/public/dags.py | 16 +-
.../core_api/routes/public/event_logs.py | 30 +-
.../api_fastapi/core_api/routes/public/hitl.py | 6 +
.../core_api/routes/public/import_error.py | 4 +-
.../api_fastapi/core_api/routes/public/pools.py | 4 +-
.../core_api/routes/public/task_instances.py | 32 +-
.../core_api/routes/public/variables.py | 4 +-
.../api_fastapi/core_api/routes/public/xcom.py | 27 +-
.../airflow/api_fastapi/core_api/routes/ui/dags.py | 6 +
.../airflow/api_fastapi/core_api/routes/ui/grid.py | 7 +-
.../core_api/routes/ui/partitioned_dag_runs.py | 12 +-
.../api_fastapi/core_api/routes/ui/structure.py | 14 +-
.../src/airflow/api_fastapi/core_api/security.py | 6 +
.../src/airflow/api_fastapi/execution_api/app.py | 18 +-
.../execution_api/datamodels/taskinstance.py | 10 +
.../api_fastapi/execution_api/datamodels/token.py | 23 +-
.../execution_api/routes/task_instances.py | 27 +-
.../airflow/api_fastapi/execution_api/security.py | 49 +-
.../api_fastapi/execution_api/versions/__init__.py | 7 +
.../execution_api/versions/v2026_04_06.py | 13 +
.../versions/{v2025_11_05.py => v2026_04_17.py} | 12 +-
.../src/airflow/cli/commands/db_command.py | 57 +-
.../src/airflow/cli/commands/task_command.py | 4 +-
.../src/airflow/config_templates/config.yml | 13 +
airflow-core/src/airflow/configuration.py | 1 +
airflow-core/src/airflow/dag_processing/manager.py | 63 +-
.../src/airflow/dag_processing/processor.py | 52 +-
.../src/airflow/executors/base_executor.py | 68 +-
.../src/airflow/executors/local_executor.py | 17 +-
.../src/airflow/executors/workloads/base.py | 10 +-
.../src/airflow/executors/workloads/task.py | 1 +
.../src/airflow/executors/workloads/types.py | 10 +-
.../src/airflow/jobs/scheduler_job_runner.py | 80 +-
.../src/airflow/jobs/triggerer_job_runner.py | 79 +-
.../0111_3_3_0_add_timetable_periodic_to_dag.py | 7 +-
airflow-core/src/airflow/models/backfill.py | 29 +-
airflow-core/src/airflow/models/dagrun.py | 4 +-
airflow-core/src/airflow/models/serialized_dag.py | 39 +-
airflow-core/src/airflow/models/taskinstance.py | 11 +-
airflow-core/src/airflow/models/trigger.py | 4 +-
airflow-core/src/airflow/serialization/decoders.py | 1 +
.../src/airflow/serialization/definitions/dag.py | 17 +
.../airflow/serialization/definitions/deadline.py | 2 +
airflow-core/src/airflow/serialization/encoders.py | 1 +
airflow-core/src/airflow/settings.py | 18 +
airflow-core/src/airflow/triggers/base.py | 36 +
.../src/airflow/ui/openapi-gen/queries/common.ts | 113 +-
.../ui/openapi-gen/queries/ensureQueryData.ts | 245 +++-
.../src/airflow/ui/openapi-gen/queries/prefetch.ts | 245 +++-
.../src/airflow/ui/openapi-gen/queries/queries.ts | 258 +++-
.../src/airflow/ui/openapi-gen/queries/suspense.ts | 245 +++-
.../airflow/ui/openapi-gen/requests/schemas.gen.ts | 136 +-
.../ui/openapi-gen/requests/services.gen.ts | 201 ++-
.../airflow/ui/openapi-gen/requests/types.gen.ts | 308 +++-
airflow-core/src/airflow/ui/package.json | 2 +-
airflow-core/src/airflow/ui/pnpm-lock.yaml | 38 +-
airflow-core/src/airflow/ui/public/i18n/README.md | 446 ++----
.../airflow/ui/public/i18n/locales/de/README.md | 129 --
.../ui/public/i18n/locales/en/components.json | 4 +-
.../src/airflow/ui/public/i18n/locales/en/dag.json | 2 +
.../airflow/ui/public/i18n/locales/nl/README.md | 40 +
.../components/ActionAccordion/ActionAccordion.tsx | 1 +
.../ui/src/components/Clear/Run/ClearRunDialog.tsx | 29 +-
.../src/components/DagActions/RunBackfillForm.tsx | 13 +-
.../ui/src/components/DataTable/DataTable.tsx | 54 +-
.../ui/src/components/DataTable/searchParams.ts | 20 +-
.../airflow/ui/src/components/DataTable/types.ts | 1 +
.../ui/src/components/FilterBar/FilterBar.tsx | 42 +-
.../src/airflow/ui/src/components/Graph/Edge.tsx | 22 +-
.../ui/src/components/Graph/elkGraphUtils.ts | 361 +++++
.../ui/src/components/Graph/reactflowUtils.ts | 51 +-
.../ui/src/components/Graph/useGraphLayout.ts | 243 +---
.../ui/src/components/SearchDags/SearchDags.tsx | 4 +-
.../ui/src/components/TaskInstanceTooltip.test.tsx | 21 +
.../ui/src/components/TaskInstanceTooltip.tsx | 7 +-
.../src/airflow/ui/src/constants/localStorage.ts | 7 -
.../src/airflow/ui/src/constants/searchParams.ts | 4 +
.../airflow/ui/src/hooks/useRequiredActionTabs.ts | 2 +-
.../ui/src/layouts/Details/DetailsLayout.tsx | 150 +-
.../airflow/ui/src/layouts/Details/Gantt/Gantt.tsx | 3 +
.../ui/src/layouts/Details/Graph/Graph.test.tsx | 151 ++
.../airflow/ui/src/layouts/Details/Graph/Graph.tsx | 196 ++-
.../airflow/ui/src/layouts/Details/Grid/Grid.tsx | 67 +-
.../Details/Grid/GridButton.test.tsx} | 37 +-
.../ui/src/layouts/Details/Grid/GridButton.tsx | 2 +
.../layouts/Details/Grid/GridPaginationButtons.tsx | 88 ++
.../airflow/ui/src/layouts/Details/Grid/GridTI.tsx | 7 +-
.../layouts/Details/Grid/useGridPagination.test.ts | 162 +++
.../src/layouts/Details/Grid/useGridPagination.ts | 77 +
.../Details/GridFilters.tsx} | 15 +-
.../ui/src/layouts/Details/PanelButtons.tsx | 239 +---
.../airflow/ui/src/pages/AssetsList/AssetsList.tsx | 2 +-
.../ui/src/pages/Connections/Connections.tsx | 2 +-
.../airflow/ui/src/pages/Dag/Overview/Overview.tsx | 1 +
airflow-core/src/airflow/ui/src/pages/DagRuns.tsx | 20 +-
.../src/airflow/ui/src/pages/Events/Events.tsx | 10 +-
.../pages/HITLTaskInstances/HITLTaskInstances.tsx | 4 +-
.../src/airflow/ui/src/pages/Pools/Pools.tsx | 2 +-
.../ui/src/pages/TaskInstance/AssetEvents.tsx | 2 +-
.../ui/src/pages/TaskInstances/TaskInstances.tsx | 23 +-
.../airflow/ui/src/pages/Variables/Variables.tsx | 2 +-
.../src/airflow/ui/src/pages/XCom/XCom.tsx | 22 +-
.../airflow/ui/src/queries/useClearDagRunDryRun.ts | 7 +-
.../airflow/ui/src/queries/useCreateBackfill.ts | 2 +-
.../airflow/ui/src/queries/useDagTagsInfinite.ts | 7 +-
.../src/airflow/ui/src/queries/useDags.tsx | 4 +-
.../src/airflow/ui/src/queries/useGridRuns.ts | 3 +
.../airflow/ui/src/queries/useUpdateHITLDetail.ts | 2 +-
.../src/airflow/ui/src/utils/useFiltersHandler.ts | 2 +
.../airflow/ui/tests/e2e/pages/AssetDetailPage.ts | 7 +
.../airflow/ui/tests/e2e/pages/ConnectionsPage.ts | 27 +-
.../src/airflow/ui/tests/e2e/pages/XComsPage.ts | 86 +-
.../airflow/ui/tests/e2e/specs/connections.spec.ts | 6 +-
.../src/airflow/ui/tests/e2e/specs/xcoms.spec.ts | 8 +
airflow-core/src/airflow/ui/testsSetup.ts | 13 +
.../src/airflow/utils/log/file_task_handler.py | 13 +-
.../src/airflow/utils/orm_event_handlers.py | 2 +
airflow-core/src/airflow/utils/sqlalchemy.py | 31 +-
.../tests/unit/always/test_example_dags.py | 3 +-
.../tests/unit/always/test_project_structure.py | 1 +
.../managers/simple/test_simple_auth_manager.py | 10 +
.../tests/unit/api_fastapi/auth/test_tokens.py | 28 +
.../unit/api_fastapi/common/test_parameters.py | 219 ++-
.../core_api/routes/public/test_assets.py | 32 +
.../core_api/routes/public/test_connections.py | 1 +
.../core_api/routes/public/test_dag_run.py | 373 +++++
.../core_api/routes/public/test_dag_tags.py | 19 +
.../core_api/routes/public/test_dags.py | 5 +-
.../core_api/routes/public/test_hitl.py | 6 +
.../core_api/routes/public/test_pools.py | 7 +
.../core_api/routes/public/test_task_instances.py | 103 ++
.../core_api/routes/public/test_variables.py | 1 +
.../api_fastapi/core_api/routes/ui/test_dags.py | 2 +
.../core_api/routes/ui/test_deadlines.py | 29 +-
.../routes/ui/test_partitioned_dag_runs.py | 24 +-
.../core_api/routes/ui/test_structure.py | 29 +-
.../unit/api_fastapi/core_api/test_security.py | 20 +
.../unit/api_fastapi/execution_api/conftest.py | 23 +-
.../api_fastapi/execution_api/test_security.py | 20 +-
.../execution_api/versions/head/test_dag_runs.py | 1 +
.../execution_api/versions/head/test_router.py | 6 +-
.../versions/head/test_task_instances.py | 289 +++-
.../versions/v2026_04_17}/__init__.py | 0
.../versions/v2026_04_17/test_task_instances.py | 86 ++
.../tests/unit/cli/commands/test_db_command.py | 60 +
.../tests/unit/cli/commands/test_task_command.py | 11 +-
airflow-core/tests/unit/core/test_settings.py | 65 +-
.../tests/unit/dag_processing/test_collection.py | 10 +-
.../tests/unit/dag_processing/test_manager.py | 103 ++
.../tests/unit/dag_processing/test_processor.py | 59 +
.../tests/unit/executors/test_base_executor.py | 32 +-
.../tests/unit/executors/test_local_executor.py | 14 +-
.../tests/unit/executors/test_workloads.py | 25 +-
airflow-core/tests/unit/jobs/test_scheduler_job.py | 42 +-
airflow-core/tests/unit/jobs/test_triggerer_job.py | 82 ++
airflow-core/tests/unit/models/test_backfill.py | 150 ++
airflow-core/tests/unit/models/test_dag.py | 161 +++
.../tests/unit/models/test_deadline_alert.py | 4 -
.../tests/unit/models/test_serialized_dag.py | 62 +
.../tests/unit/serialization/test_encoders.py | 59 +-
.../ti_deps/deps/test_mapped_task_upstream_dep.py | 47 +-
.../tests/unit/utils/log/test_file_task_handler.py | 31 +
airflow-ctl-tests/.pre-commit-config.yaml | 9 +-
airflow-ctl-tests/pyproject.toml | 7 +-
airflow-ctl/.pre-commit-config.yaml | 4 +-
airflow-ctl/RELEASE_NOTES.rst | 39 +
airflow-ctl/newsfragments/59850.significant.rst | 30 -
airflow-ctl/pyproject.toml | 11 +-
airflow-ctl/src/airflowctl/__init__.py | 2 +-
.../src/airflowctl/api/datamodels/generated.py | 58 +-
airflow-ctl/src/airflowctl/api/operations.py | 13 +-
.../tests/airflow_ctl/api/test_operations.py | 14 +
.../.pre-commit-config.yaml | 13 +-
.../docker/opensearch.yml | 11 +-
airflow-e2e-tests/pyproject.toml | 7 +-
.../tests/airflow_e2e_tests/conftest.py | 31 +-
.../tests/airflow_e2e_tests/constants.py | 1 +
.../e2e_test_utils/base_remote_log_search_test.py | 5 +-
.../airflow_e2e_tests/e2e_test_utils/clients.py | 5 -
.../test_remote_logging_elasticsearch.py | 4 -
.../remote_log_opensearch_tests}/__init__.py | 0
.../test_remote_logging_opensearch.py} | 6 +-
chart/.pre-commit-config.yaml | 2 +-
chart/Chart.yaml | 227 ++-
chart/RELEASE_NOTES.rst | 81 ++
chart/dockerfiles/pgbouncer-exporter/Dockerfile | 4 +-
.../pgbouncer-exporter/build_and_push.sh | 2 +-
chart/dockerfiles/pgbouncer/Dockerfile | 2 +-
chart/dockerfiles/pgbouncer/build_and_push.sh | 2 +-
chart/newsfragments/61915.significant.rst | 1 -
chart/newsfragments/61919.significant.rst | 1 -
chart/newsfragments/61960.significant.rst | 1 -
chart/newsfragments/61961.significant.rst | 1 -
chart/newsfragments/61962.significant.rst | 1 -
chart/newsfragments/62030.significant.rst | 1 -
chart/newsfragments/62048.significant.rst | 1 -
chart/newsfragments/62054.significant.rst | 1 -
chart/newsfragments/64730.significant.rst | 1 -
chart/newsfragments/64734.significant.rst | 1 -
chart/newsfragments/64739.significant.rst | 1 -
chart/newsfragments/64741.significant.rst | 1 -
chart/newsfragments/64746.significant.rst | 1 -
chart/newsfragments/64841.significant.rst | 3 -
chart/newsfragments/64860.significant.rst | 1 -
chart/newsfragments/64976.significant.rst | 1 -
chart/newsfragments/64980.significant.rst | 1 -
chart/newsfragments/64982.significant.rst | 1 -
chart/newsfragments/65027.significant.rst | 1 -
chart/newsfragments/65030.significant.rst | 1 -
chart/newsfragments/65033.significant.rst | 1 -
chart/newsfragments/65056.significant.rst | 1 -
chart/newsfragments/65059.significant.rst | 1 -
chart/newsfragments/65666.significant.rst | 3 +
chart/pyproject.toml | 2 +-
chart/reproducible_build.yaml | 4 +-
chart/templates/_helpers.yaml | 12 +-
chart/templates/rbac/pod-cleanup-role.yaml | 2 +-
chart/templates/rbac/pod-cleanup-rolebinding.yaml | 2 +-
chart/templates/secrets/redis-secrets.yaml | 4 +-
chart/values.schema.json | 240 +++-
chart/values.yaml | 11 +-
clients/python/CHANGELOG.md | 7 +
clients/python/pyproject.toml | 2 +-
clients/python/version.txt | 2 +-
contributing-docs/08_static_code_checks.rst | 58 +-
contributing-docs/10_working_with_git.rst | 32 +
{airflow-ctl-tests => dev}/.pre-commit-config.yaml | 13 +-
dev/README_RELEASE_AIRFLOW.md | 174 ++-
dev/README_RELEASE_AIRFLOWCTL.md | 562 +++++++-
dev/README_RELEASE_HELM_CHART.md | 63 +-
dev/README_RELEASE_MYPY.md | 243 ++++
dev/README_RELEASE_PROVIDERS.md | 106 +-
dev/README_RELEASE_PYTHON_CLIENT.md | 102 +-
dev/airflow_mypy/plugin/__init__.py | 17 -
dev/breeze/doc/03_developer_tasks.rst | 22 +-
dev/breeze/doc/09_release_management_tasks.rst | 23 +
dev/breeze/doc/ci/02_images.md | 4 +-
dev/breeze/doc/ci/04_selective_checks.md | 24 +-
dev/breeze/doc/images/output_pr_auto-triage.svg | 28 +-
dev/breeze/doc/images/output_pr_auto-triage.txt | 2 +-
.../doc/images/output_release-management.svg | 46 +-
.../doc/images/output_release-management.txt | 2 +-
...lease-management_prepare-mypy-distributions.svg | 128 ++
...lease-management_prepare-mypy-distributions.txt | 1 +
.../output_setup_check-all-params-in-groups.svg | 54 +-
.../output_setup_check-all-params-in-groups.txt | 2 +-
.../output_setup_regenerate-command-images.svg | 62 +-
.../output_setup_regenerate-command-images.txt | 2 +-
.../images/output_testing_airflow-e2e-tests.svg | 24 +-
.../images/output_testing_airflow-e2e-tests.txt | 2 +-
dev/breeze/pyproject.toml | 2 +-
.../airflow_breeze/commands/developer_commands.py | 5 +
.../src/airflow_breeze/commands/pr_commands.py | 8 +-
.../commands/release_candidate_command.py | 3 +
.../commands/release_management_commands.py | 70 +-
.../commands/release_management_commands_config.py | 17 +
.../src/airflow_breeze/commands/setup_commands.py | 4 +-
.../airflow_breeze/commands/testing_commands.py | 4 +-
.../src/airflow_breeze/configure_rich_click.py | 2 +
dev/breeze/src/airflow_breeze/global_constants.py | 4 +-
.../airflow_breeze/utils/docker_command_utils.py | 2 +
.../src/airflow_breeze/utils/environment_check.py | 90 ++
dev/breeze/src/airflow_breeze/utils/path_utils.py | 28 +-
.../src/airflow_breeze/utils/reproducible.py | 2 +-
.../src/airflow_breeze/utils/selective_checks.py | 108 +-
.../src/airflow_breeze/utils/workflow_status.py | 9 +-
dev/breeze/tests/test_environment_check.py | 86 ++
.../tests/test_reinstall_if_setup_changed.py | 54 +
dev/breeze/tests/test_selective_checks.py | 315 ++++-
dev/breeze/uv.lock | 132 +-
dev/mypy/.gitignore | 10 +
.../keycloak => dev/mypy}/.pre-commit-config.yaml | 20 +-
LICENSE => dev/mypy/LICENSE | 0
NOTICE => dev/mypy/NOTICE | 0
dev/{system_tests => mypy}/README.md | 45 +-
CONTRIBUTING.rst => dev/mypy/RELEASE_NOTES.rst | 16 +-
.../mypy}/newsfragments/config.toml | 2 +-
dev/mypy/pyproject.toml | 129 ++
.../mypy/src/airflow_mypy}/__init__.py | 2 +-
.../src/airflow_mypy/plugins}/__init__.py | 0
.../src/airflow_mypy/plugins}/decorators.py | 0
.../src/airflow_mypy/plugins}/outputs.py | 0
dev/mypy/tests/test_plugins.py | 52 +
dev/pyproject.toml | 73 +-
dev/registry/pyproject.toml | 2 +-
dev/stats/get_important_pr_candidates.py | 4 +-
dev/sync_fork.sh | 62 +
devel-common/pyproject.toml | 9 +-
.../src/tests_common/test_utils/mock_executor.py | 3 +-
.../src/tests_common/test_utils/version_compat.py | 2 +
docker-stack-docs/pyproject.toml | 2 +-
.../.pre-commit-config.yaml | 13 +-
docker-tests/pyproject.toml | 7 +-
.../test_docker_compose_quick_start.py | 2 +-
docker-tests/tests/docker_tests/test_prod_image.py | 2 +-
docs/spelling_wordlist.txt | 2 +
go-sdk/.pre-commit-config.yaml | 2 +-
go-sdk/README.md | 2 +-
go-sdk/edge/worker.go | 5 +-
go-sdk/example/bundle/main.go | 8 +-
go-sdk/pkg/config/config.go | 8 +-
.../.pre-commit-config.yaml | 13 +-
helm-tests/pyproject.toml | 7 +-
.../airflow_aux/test_basic_helm_chart.py | 12 +-
helm-tests/tests/helm_tests/other/test_redis.py | 45 +-
helm-tests/tests/helm_tests/security/test_rbac.py | 21 +
.../.pre-commit-config.yaml | 13 +-
kubernetes-tests/pyproject.toml | 7 +-
.../tests/kubernetes_tests/basic_pod.yaml | 2 +-
.../tests/kubernetes_tests/test_base.py | 4 +-
.../test_kubernetes_pod_operator.py | 24 +-
prod_image_installed_providers.txt | 1 +
providers-summary-docs/pyproject.toml | 2 +-
providers/.last_release_date.txt | 2 +-
providers/.pre-commit-config.yaml | 2 +-
.../airflow/providers/airbyte/operators/airbyte.py | 2 +-
.../tests/unit/airbyte/operators/test_airbyte.py | 47 +
providers/amazon/README.rst | 6 +-
.../docs/auth-manager/setup/identity-center.rst | 2 +-
providers/amazon/docs/changelog.rst | 28 +
providers/amazon/docs/index.rst | 6 +-
providers/amazon/provider.yaml | 3 +-
providers/amazon/pyproject.toml | 6 +-
.../src/airflow/providers/amazon/__init__.py | 2 +-
.../amazon/aws/auth_manager/avp/entities.py | 1 +
.../amazon/aws/auth_manager/avp/facade.py | 22 +-
.../amazon/aws/auth_manager/avp/schema.json | 198 ++-
.../amazon/aws/auth_manager/aws_auth_manager.py | 30 +
.../providers/amazon/aws/hooks/redshift_sql.py | 4 +
.../src/airflow/providers/amazon/aws/hooks/sqs.py | 3 +-
.../amazon/aws/secrets/secrets_manager.py | 15 +-
.../amazon/aws/secrets/systems_manager.py | 16 +-
.../aws/auth_manager/test_aws_auth_manager.py | 132 +-
.../unit/amazon/aws/hooks/test_redshift_sql.py | 12 +
.../amazon/tests/unit/amazon/aws/hooks/test_sqs.py | 23 +
.../amazon/aws/log/test_cloudwatch_task_handler.py | 21 +
.../amazon/aws/secrets/test_secrets_manager.py | 24 +
.../amazon/aws/secrets/test_systems_manager.py | 21 +
.../hive/tests/unit/apache/hive/hooks/test_hive.py | 3 +-
.../tests/unit/apache/hive/operators/test_hive.py | 5 +
providers/apache/kafka/README.rst | 6 +-
providers/apache/kafka/docs/changelog.rst | 12 +
providers/apache/kafka/docs/index.rst | 6 +-
providers/apache/kafka/provider.yaml | 3 +-
providers/apache/kafka/pyproject.toml | 6 +-
.../src/airflow/providers/apache/kafka/__init__.py | 2 +-
providers/celery/README.rst | 6 +-
providers/celery/docs/changelog.rst | 17 +
providers/celery/docs/index.rst | 6 +-
providers/celery/provider.yaml | 3 +-
providers/celery/pyproject.toml | 6 +-
.../src/airflow/providers/celery/__init__.py | 2 +-
.../providers/celery/executors/celery_executor.py | 43 +-
.../celery/executors/celery_executor_utils.py | 20 +-
.../src/airflow/providers/celery/version_compat.py | 3 +-
.../unit/celery/executors/test_celery_executor.py | 95 ++
providers/cncf/kubernetes/README.rst | 6 +-
providers/cncf/kubernetes/docs/changelog.rst | 18 +
providers/cncf/kubernetes/docs/index.rst | 6 +-
.../kubernetes-secrets-backend.rst | 60 +
providers/cncf/kubernetes/provider.yaml | 3 +-
providers/cncf/kubernetes/pyproject.toml | 6 +-
.../airflow/providers/cncf/kubernetes/__init__.py | 2 +-
.../providers/cncf/kubernetes/operators/pod.py | 19 +-
.../secrets/kubernetes_secrets_backend.py | 77 +-
.../providers/cncf/kubernetes/utils/pod_manager.py | 61 +-
.../unit/cncf/kubernetes/operators/test_pod.py | 43 +
.../secrets/test_kubernetes_secrets_backend.py | 118 +-
.../unit/cncf/kubernetes/utils/test_pod_manager.py | 171 ++-
providers/common/ai/.pre-commit-config.yaml | 2 +-
providers/common/ai/README.rst | 6 +-
providers/common/ai/docs/changelog.rst | 15 +
providers/common/ai/docs/index.rst | 6 +-
providers/common/ai/provider.yaml | 3 +-
providers/common/ai/pyproject.toml | 8 +-
.../ai/src/airflow/providers/common/ai/__init__.py | 2 +-
.../providers/common/ai/plugins/www/package.json | 6 +-
.../providers/common/ai/plugins/www/pnpm-lock.yaml | 610 ++++++--
providers/common/compat/.pre-commit-config.yaml | 2 +-
providers/common/sql/README.rst | 6 +-
providers/common/sql/docs/changelog.rst | 12 +
providers/common/sql/docs/index.rst | 6 +-
providers/common/sql/provider.yaml | 3 +-
providers/common/sql/pyproject.toml | 6 +-
.../src/airflow/providers/common/sql/__init__.py | 2 +-
providers/databricks/README.rst | 6 +-
providers/databricks/docs/changelog.rst | 17 +
providers/databricks/docs/index.rst | 6 +-
providers/databricks/provider.yaml | 3 +-
providers/databricks/pyproject.toml | 6 +-
.../src/airflow/providers/databricks/__init__.py | 2 +-
.../providers/databricks/triggers/databricks.py | 16 +
.../unit/databricks/triggers/test_databricks.py | 12 +
providers/edge3/.pre-commit-config.yaml | 2 +-
providers/edge3/README.rst | 6 +-
providers/edge3/docs/changelog.rst | 25 +
providers/edge3/docs/deployment.rst | 42 +
providers/edge3/docs/img/edge_sysinfo.png | Bin 0 -> 95807 bytes
providers/edge3/docs/index.rst | 6 +-
providers/edge3/docs/migrations-ref.rst | 5 +-
providers/edge3/provider.yaml | 19 +-
providers/edge3/pyproject.toml | 8 +-
.../edge3/src/airflow/providers/edge3/__init__.py | 2 +-
.../src/airflow/providers/edge3/cli/api_client.py | 2 +-
.../edge3/cli/example_extended_sysinfo.py | 63 +
.../src/airflow/providers/edge3/cli/worker.py | 45 +-
.../providers/edge3/executors/edge_executor.py | 13 +-
.../airflow/providers/edge3/get_provider_info.py | 7 +
...0005_3_5_0_replace_individual_counters_with_.py | 62 +
.../edge3/src/airflow/providers/edge3/models/db.py | 1 +
.../airflow/providers/edge3/models/edge_worker.py | 84 +-
.../providers/edge3/plugins/www/package.json | 40 +-
.../providers/edge3/plugins/www/pnpm-lock.yaml | 1403 +++++++++---------
.../www/src/components/WorkerSysinfoBadge.tsx | 141 ++
.../edge3/plugins/www/src/pages/WorkerPage.tsx | 24 +-
.../providers/edge3/worker_api/datamodels.py | 3 +-
.../providers/edge3/worker_api/routes/jobs.py | 15 +-
.../providers/edge3/worker_api/routes/ui.py | 2 +-
.../providers/edge3/worker_api/routes/worker.py | 30 +-
.../edge3/worker_api/v2-edge-generated.yaml | 10 +
.../edge3/tests/unit/edge3/cli/test_worker.py | 40 +-
.../unit/edge3/executors/test_edge_executor.py | 28 +-
providers/edge3/tests/unit/edge3/models/test_db.py | 27 +-
.../unit/edge3/worker_api/routes/test_jobs.py | 14 +-
.../unit/edge3/worker_api/routes/test_worker.py | 29 +-
providers/elasticsearch/AGENTS.md | 28 +
providers/elasticsearch/README.rst | 6 +-
providers/elasticsearch/docs/changelog.rst | 14 +
providers/elasticsearch/docs/index.rst | 6 +-
providers/elasticsearch/provider.yaml | 3 +-
providers/elasticsearch/pyproject.toml | 6 +-
.../airflow/providers/elasticsearch/__init__.py | 2 +-
providers/fab/.pre-commit-config.yaml | 2 +-
providers/fab/README.rst | 6 +-
providers/fab/docs/changelog.rst | 25 +
providers/fab/docs/index.rst | 6 +-
providers/fab/provider.yaml | 19 +-
providers/fab/pyproject.toml | 8 +-
.../fab/src/airflow/providers/fab/__init__.py | 2 +-
.../providers/fab/auth_manager/fab_auth_manager.py | 62 +-
.../providers/fab/auth_manager/middleware.py | 57 +
.../src/airflow/providers/fab/get_provider_info.py | 7 +
.../0001_3_5_0_fix_fab_db_inconsistencies.py | 15 +-
providers/fab/src/airflow/providers/fab/www/app.py | 9 +
.../fab/src/airflow/providers/fab/www/package.json | 8 +-
.../src/airflow/providers/fab/www/pnpm-lock.yaml | 180 +--
.../unit/fab/auth_manager/test_fab_auth_manager.py | 83 ++
.../tests/unit/fab/auth_manager/test_middleware.py | 95 ++
providers/google/README.rst | 6 +-
providers/google/docs/changelog.rst | 30 +
providers/google/docs/connections/gcp.rst | 84 +-
providers/google/docs/connections/gcp_ssh.rst | 55 +
providers/google/docs/index.rst | 6 +-
.../google/docs/operators/cloud/cloud_composer.rst | 12 +-
.../google/docs/operators/cloud/compute_ssh.rst | 48 +
providers/google/provider.yaml | 3 +-
providers/google/pyproject.toml | 6 +-
.../src/airflow/providers/google/__init__.py | 2 +-
.../providers/google/cloud/hooks/compute_ssh.py | 22 +-
.../providers/google/cloud/hooks/dataflow.py | 16 +-
.../providers/google/cloud/operators/bigquery.py | 9 +-
.../providers/google/cloud/transfers/s3_to_gcs.py | 44 +-
.../providers/google/common/hooks/base_google.py | 81 +-
providers/google/tests/conftest.py | 7 +-
.../unit/google/cloud/operators/test_bigquery.py | 52 +
.../unit/google/cloud/transfers/test_s3_to_gcs.py | 117 +-
.../unit/google/common/hooks/test_base_google.py | 53 +
providers/hashicorp/README.rst | 6 +-
providers/hashicorp/docs/changelog.rst | 11 +
providers/hashicorp/docs/index.rst | 6 +-
providers/hashicorp/provider.yaml | 3 +-
providers/hashicorp/pyproject.toml | 6 +-
.../src/airflow/providers/hashicorp/__init__.py | 2 +-
.../airflow/providers/hashicorp/secrets/vault.py | 39 +-
.../tests/unit/hashicorp/secrets/test_vault.py | 196 +++
providers/jdbc/README.rst | 21 +-
providers/jdbc/docs/changelog.rst | 13 +
providers/jdbc/docs/index.rst | 21 +-
providers/jdbc/provider.yaml | 3 +-
providers/jdbc/pyproject.toml | 19 +-
.../jdbc/src/airflow/providers/jdbc/__init__.py | 2 +-
providers/keycloak/.pre-commit-config.yaml | 2 +-
providers/microsoft/azure/README.rst | 6 +-
providers/microsoft/azure/docs/changelog.rst | 12 +
providers/microsoft/azure/docs/index.rst | 6 +-
.../docs/secrets-backends/azure-key-vault.rst | 20 +
providers/microsoft/azure/provider.yaml | 3 +-
providers/microsoft/azure/pyproject.toml | 6 +-
.../airflow/providers/microsoft/azure/__init__.py | 2 +-
.../providers/microsoft/azure/hooks/base_azure.py | 31 +-
.../microsoft/azure/hooks/container_instance.py | 10 +-
.../providers/microsoft/azure/secrets/key_vault.py | 36 +-
.../unit/microsoft/azure/hooks/test_base_azure.py | 40 +
.../tests/unit/microsoft/azure/hooks/test_batch.py | 111 +-
.../azure/hooks/test_container_instance.py | 86 ++
.../unit/microsoft/azure/secrets/test_key_vault.py | 40 +
providers/openlineage/README.rst | 6 +-
providers/openlineage/docs/changelog.rst | 16 +
providers/openlineage/docs/index.rst | 6 +-
providers/openlineage/provider.yaml | 3 +-
providers/openlineage/pyproject.toml | 6 +-
.../src/airflow/providers/openlineage/__init__.py | 2 +-
.../airflow/providers/openlineage/utils/utils.py | 23 +-
.../tests/unit/openlineage/utils/test_utils.py | 25 +
providers/opensearch/AGENTS.md | 28 +
providers/opensearch/README.rst | 6 +-
providers/opensearch/docs/changelog.rst | 26 +
providers/opensearch/docs/index.rst | 6 +-
providers/opensearch/provider.yaml | 3 +-
providers/opensearch/pyproject.toml | 6 +-
.../src/airflow/providers/opensearch/__init__.py | 2 +-
.../providers/opensearch/log/os_task_handler.py | 28 +-
.../unit/opensearch/log/test_os_task_handler.py | 16 +
providers/papermill/README.rst | 6 +-
providers/papermill/docs/changelog.rst | 12 +
providers/papermill/docs/index.rst | 6 +-
providers/papermill/provider.yaml | 3 +-
providers/papermill/pyproject.toml | 6 +-
.../src/airflow/providers/papermill/__init__.py | 2 +-
.../providers/papermill/operators/papermill.py | 5 +
.../unit/papermill/operators/test_papermill.py | 16 +
providers/sendgrid/README.rst | 17 +-
providers/sendgrid/docs/changelog.rst | 11 +
providers/sendgrid/docs/index.rst | 17 +-
providers/sendgrid/provider.yaml | 3 +-
providers/sendgrid/pyproject.toml | 13 +-
.../src/airflow/providers/sendgrid/__init__.py | 2 +-
providers/sftp/README.rst | 8 +-
providers/sftp/docs/changelog.rst | 12 +
providers/sftp/docs/index.rst | 6 +-
providers/sftp/provider.yaml | 3 +-
providers/sftp/pyproject.toml | 6 +-
.../sftp/src/airflow/providers/sftp/__init__.py | 2 +-
providers/smtp/README.rst | 6 +-
providers/smtp/docs/changelog.rst | 8 +
providers/smtp/docs/index.rst | 6 +-
providers/smtp/provider.yaml | 3 +-
providers/smtp/pyproject.toml | 6 +-
.../smtp/src/airflow/providers/smtp/__init__.py | 2 +-
providers/snowflake/README.rst | 6 +-
providers/snowflake/docs/changelog.rst | 13 +
providers/snowflake/docs/index.rst | 6 +-
providers/snowflake/docs/operators/snowflake.rst | 51 +
providers/snowflake/provider.yaml | 3 +-
providers/snowflake/pyproject.toml | 6 +-
.../src/airflow/providers/snowflake/__init__.py | 2 +-
.../airflow/providers/snowflake/hooks/snowflake.py | 7 +-
.../tests/system/snowflake/example_snowflake.py | 67 +-
.../tests/unit/snowflake/hooks/test_snowflake.py | 34 +
providers/ssh/README.rst | 8 +-
providers/ssh/docs/changelog.rst | 11 +
providers/ssh/docs/index.rst | 6 +-
providers/ssh/provider.yaml | 3 +-
providers/ssh/pyproject.toml | 6 +-
.../ssh/src/airflow/providers/ssh/__init__.py | 2 +-
.../yandex-cloud-lockbox-secret-backend.rst | 42 +
.../airflow/providers/yandex/secrets/lockbox.py | 40 +-
.../tests/unit/yandex/secrets/test_lockbox.py | 60 +-
pyproject.toml | 23 +-
registry/package.json | 2 +-
registry/pnpm-lock.yaml | 18 +-
reproducible_build.yaml | 4 +-
.../.pre-commit-config.yaml | 13 +-
scripts/ci/constraints/ci_diff_constraints.sh | 15 +-
scripts/ci/prek/AGENTS.md | 9 +-
scripts/ci/prek/check_distribution_gitignore.py | 2 +-
scripts/ci/prek/check_imports_in_providers.py | 2 +-
scripts/ci/prek/check_shared_mypy_hooks.py | 92 ++
scripts/ci/prek/common_prek_utils.py | 96 +-
scripts/ci/prek/inline_scripts_in_docker.py | 2 +
scripts/ci/prek/known_airflow_exceptions.txt | 2 +-
scripts/ci/prek/mypy_local_folder.py | 250 ----
scripts/ci/prek/ruff_format.py | 2 +-
...un_mypy_full_dist_local_venv_or_breeze_in_ci.py | 350 +++++
scripts/ci/prek/supported_versions.py | 2 +-
scripts/ci/prek/sync_uv_min_version_markers.py | 114 ++
scripts/ci/prek/update_airflow_pyproject_toml.py | 2 +-
scripts/ci/prek/update_docker_gpg_keys.py | 104 ++
scripts/ci/prek/upgrade_important_versions.py | 7 +
scripts/ci/prek/vendor_k8s_json_schema.py | 2 +-
scripts/ci/testing/run_system_tests.sh | 4 +-
scripts/ci/testing/run_unit_tests.sh | 4 +
scripts/docker/common.sh | 25 +-
scripts/docker/install_os_dependencies.sh | 2 +-
scripts/docker/keys/mariadb.asc | 51 +
scripts/docker/keys/microsoft.asc | 24 +
scripts/docker/keys/postgres.asc | 64 +
scripts/docker/keys/python-3.10.asc | 109 ++
scripts/in_container/bin/generate_mprocs_config.py | 2 +
.../in_container/install_airflow_and_providers.py | 17 +-
scripts/pyproject.toml | 68 +-
.../ci/prek/test_sync_uv_min_version_markers.py | 70 +
scripts/tools/setup_breeze | 2 +-
.../configuration}/.pre-commit-config.yaml | 13 +-
shared/configuration/pyproject.toml | 6 +-
.../src/airflow_shared/configuration/parser.py | 12 +-
.../dagnode}/.pre-commit-config.yaml | 13 +-
shared/dagnode/pyproject.toml | 6 +-
shared/dagnode/tests/dagnode/test_node.py | 6 +-
.../listeners}/.pre-commit-config.yaml | 13 +-
shared/listeners/pyproject.toml | 6 +-
.../logging}/.pre-commit-config.yaml | 13 +-
shared/logging/pyproject.toml | 6 +-
.../src/airflow_shared/logging/_noncaching.py | 3 +-
.../module_loading}/.pre-commit-config.yaml | 13 +-
shared/module_loading/pyproject.toml | 6 +-
.../observability}/.pre-commit-config.yaml | 13 +-
shared/observability/pyproject.toml | 6 +-
.../src/airflow_shared/observability/common.py | 22 +-
.../observability/metrics/metrics_template.yaml | 6 +
.../observability/metrics/otel_logger.py | 60 +-
.../airflow_shared/observability/metrics/stats.py | 1 +
.../observability/metrics/test_otel_logger.py | 47 +-
.../plugins_manager}/.pre-commit-config.yaml | 13 +-
shared/plugins_manager/pyproject.toml | 6 +-
.../providers_discovery}/.pre-commit-config.yaml | 15 +-
shared/providers_discovery/pyproject.toml | 6 +-
.../secrets_backend}/.pre-commit-config.yaml | 13 +-
shared/secrets_backend/pyproject.toml | 6 +-
.../src/airflow_shared/secrets_backend/base.py | 2 +-
.../secrets_masker}/.pre-commit-config.yaml | 13 +-
shared/secrets_masker/pyproject.toml | 6 +-
.../tests/secrets_masker/test_secrets_masker.py | 2 +-
.../serialization}/.pre-commit-config.yaml | 13 +-
shared/serialization/pyproject.toml | 6 +-
.../template_rendering}/.pre-commit-config.yaml | 15 +-
shared/template_rendering/pyproject.toml | 6 +-
.../timezones}/.pre-commit-config.yaml | 13 +-
shared/timezones/pyproject.toml | 6 +-
.../src/airflow_shared/timezones/timezone.py | 8 +-
.../.pre-commit-config.yaml | 13 +-
task-sdk-integration-tests/pyproject.toml | 7 +-
task-sdk/.pre-commit-config.yaml | 4 +-
task-sdk/pyproject.toml | 6 +-
.../src/airflow/sdk/api/datamodels/_generated.py | 4 +-
task-sdk/src/airflow/sdk/definitions/deadline.py | 2 +
task-sdk/src/airflow/sdk/definitions/taskgroup.py | 4 +
.../sdk/execution_time/callback_supervisor.py | 141 +-
task-sdk/src/airflow/sdk/execution_time/comms.py | 4 +-
task-sdk/src/airflow/sdk/execution_time/context.py | 5 +
.../airflow/sdk/execution_time/request_handlers.py | 75 +
.../src/airflow/sdk/execution_time/supervisor.py | 285 ++--
.../src/airflow/sdk/execution_time/task_runner.py | 22 +-
task-sdk/src/airflow/sdk/types.py | 17 +-
.../tests/task_sdk/definitions/test_taskgroup.py | 25 +
.../execution_time/test_callback_supervisor.py | 117 +-
.../tests/task_sdk/execution_time/test_context.py | 14 +
.../task_sdk/execution_time/test_supervisor.py | 128 +-
uv.lock | 1487 +++++++++++---------
715 files changed, 22034 insertions(+), 5992 deletions(-)
create mode 100644 .github/skills/airflow-translations/locales/de.md
create mode 100644 .github/skills/airflow-translations/locales/he.md
create mode 100644 .github/skills/airflow-translations/locales/hi.md
create mode 100644 .github/skills/airflow-translations/locales/nl.md
copy .github/workflows/{update-constraints-on-push.yml =>
update-constraints-on-push-stable.yml} (98%)
create mode 100644
airflow-core/docs/administration-and-deployment/logging-monitoring/.gitignore
delete mode 100644
airflow-core/docs/administration-and-deployment/logging-monitoring/metric_tables.rst
create mode 100644 airflow-core/newsfragments/64207.significant.rst
create mode 100644 airflow-core/newsfragments/64963.significant.rst
create mode 100644 airflow-core/newsfragments/65269.significant.rst
create mode 100644 airflow-core/newsfragments/65590.feature.rst
copy
airflow-core/src/airflow/api_fastapi/execution_api/versions/{v2025_11_05.py =>
v2026_04_17.py} (73%)
delete mode 100644 airflow-core/src/airflow/ui/public/i18n/locales/de/README.md
create mode 100644 airflow-core/src/airflow/ui/public/i18n/locales/nl/README.md
create mode 100644
airflow-core/src/airflow/ui/src/components/Graph/elkGraphUtils.ts
create mode 100644
airflow-core/src/airflow/ui/src/layouts/Details/Graph/Graph.test.tsx
copy
airflow-core/src/airflow/ui/src/{pages/Connections/NothingFoundInfo.test.tsx =>
layouts/Details/Grid/GridButton.test.tsx} (52%)
create mode 100644
airflow-core/src/airflow/ui/src/layouts/Details/Grid/GridPaginationButtons.tsx
create mode 100644
airflow-core/src/airflow/ui/src/layouts/Details/Grid/useGridPagination.test.ts
create mode 100644
airflow-core/src/airflow/ui/src/layouts/Details/Grid/useGridPagination.ts
copy airflow-core/src/airflow/ui/src/{components/Assets/AssetEventsFilter.tsx
=> layouts/Details/GridFilters.tsx} (80%)
copy airflow-core/{src/airflow/_shared =>
tests/unit/api_fastapi/execution_api/versions/v2026_04_17}/__init__.py (100%)
create mode 100644
airflow-core/tests/unit/api_fastapi/execution_api/versions/v2026_04_17/test_task_instances.py
delete mode 100644 airflow-ctl/newsfragments/59850.significant.rst
copy {airflow-ctl-tests => airflow-e2e-tests}/.pre-commit-config.yaml (77%)
copy scripts/ci/docker-compose/integration-opensearch.yml =>
airflow-e2e-tests/docker/opensearch.yml (83%)
copy {airflow-core/src/airflow/_shared =>
airflow-e2e-tests/tests/airflow_e2e_tests/remote_log_opensearch_tests}/__init__.py
(100%)
copy
airflow-e2e-tests/tests/airflow_e2e_tests/{remote_log_elasticsearch_tests/test_remote_logging_elasticsearch.py
=> remote_log_opensearch_tests/test_remote_logging_opensearch.py} (81%)
delete mode 100644 chart/newsfragments/61915.significant.rst
delete mode 100644 chart/newsfragments/61919.significant.rst
delete mode 100644 chart/newsfragments/61960.significant.rst
delete mode 100644 chart/newsfragments/61961.significant.rst
delete mode 100644 chart/newsfragments/61962.significant.rst
delete mode 100644 chart/newsfragments/62030.significant.rst
delete mode 100644 chart/newsfragments/62048.significant.rst
delete mode 100644 chart/newsfragments/62054.significant.rst
delete mode 100644 chart/newsfragments/64730.significant.rst
delete mode 100644 chart/newsfragments/64734.significant.rst
delete mode 100644 chart/newsfragments/64739.significant.rst
delete mode 100644 chart/newsfragments/64741.significant.rst
delete mode 100644 chart/newsfragments/64746.significant.rst
delete mode 100644 chart/newsfragments/64841.significant.rst
delete mode 100644 chart/newsfragments/64860.significant.rst
delete mode 100644 chart/newsfragments/64976.significant.rst
delete mode 100644 chart/newsfragments/64980.significant.rst
delete mode 100644 chart/newsfragments/64982.significant.rst
delete mode 100644 chart/newsfragments/65027.significant.rst
delete mode 100644 chart/newsfragments/65030.significant.rst
delete mode 100644 chart/newsfragments/65033.significant.rst
delete mode 100644 chart/newsfragments/65056.significant.rst
delete mode 100644 chart/newsfragments/65059.significant.rst
create mode 100644 chart/newsfragments/65666.significant.rst
copy {airflow-ctl-tests => dev}/.pre-commit-config.yaml (77%)
create mode 100644 dev/README_RELEASE_MYPY.md
delete mode 100644 dev/airflow_mypy/plugin/__init__.py
create mode 100644
dev/breeze/doc/images/output_release-management_prepare-mypy-distributions.svg
create mode 100644
dev/breeze/doc/images/output_release-management_prepare-mypy-distributions.txt
create mode 100644 dev/breeze/tests/test_environment_check.py
create mode 100644 dev/breeze/tests/test_reinstall_if_setup_changed.py
create mode 100644 dev/mypy/.gitignore
copy {providers/keycloak => dev/mypy}/.pre-commit-config.yaml (66%)
copy LICENSE => dev/mypy/LICENSE (100%)
copy NOTICE => dev/mypy/NOTICE (100%)
copy dev/{system_tests => mypy}/README.md (52%)
copy CONTRIBUTING.rst => dev/mypy/RELEASE_NOTES.rst (58%)
rename {airflow-ctl => dev/mypy}/newsfragments/config.toml (97%)
create mode 100644 dev/mypy/pyproject.toml
copy {airflow-ctl/src/airflowctl => dev/mypy/src/airflow_mypy}/__init__.py
(97%)
rename dev/{airflow_mypy => mypy/src/airflow_mypy/plugins}/__init__.py (100%)
rename dev/{airflow_mypy/plugin =>
mypy/src/airflow_mypy/plugins}/decorators.py (100%)
rename dev/{airflow_mypy/plugin => mypy/src/airflow_mypy/plugins}/outputs.py
(100%)
create mode 100644 dev/mypy/tests/test_plugins.py
create mode 100755 dev/sync_fork.sh
copy {airflow-ctl-tests => docker-tests}/.pre-commit-config.yaml (77%)
copy {airflow-ctl-tests => helm-tests}/.pre-commit-config.yaml (77%)
copy {airflow-ctl-tests => kubernetes-tests}/.pre-commit-config.yaml (77%)
create mode 100644 providers/edge3/docs/img/edge_sysinfo.png
create mode 100644
providers/edge3/src/airflow/providers/edge3/cli/example_extended_sysinfo.py
create mode 100644
providers/edge3/src/airflow/providers/edge3/migrations/versions/0005_3_5_0_replace_individual_counters_with_.py
create mode 100644
providers/edge3/src/airflow/providers/edge3/plugins/www/src/components/WorkerSysinfoBadge.tsx
create mode 100644 providers/elasticsearch/AGENTS.md
create mode 100644
providers/fab/src/airflow/providers/fab/auth_manager/middleware.py
create mode 100644 providers/fab/tests/unit/fab/auth_manager/test_middleware.py
create mode 100644 providers/opensearch/AGENTS.md
copy {airflow-ctl-tests => scripts}/.pre-commit-config.yaml (77%)
create mode 100755 scripts/ci/prek/check_shared_mypy_hooks.py
delete mode 100755 scripts/ci/prek/mypy_local_folder.py
create mode 100755
scripts/ci/prek/run_mypy_full_dist_local_venv_or_breeze_in_ci.py
create mode 100755 scripts/ci/prek/sync_uv_min_version_markers.py
create mode 100755 scripts/ci/prek/update_docker_gpg_keys.py
create mode 100644 scripts/docker/keys/mariadb.asc
create mode 100644 scripts/docker/keys/microsoft.asc
create mode 100644 scripts/docker/keys/postgres.asc
create mode 100644 scripts/docker/keys/python-3.10.asc
create mode 100644 scripts/tests/ci/prek/test_sync_uv_min_version_markers.py
copy {airflow-ctl-tests => shared/configuration}/.pre-commit-config.yaml (77%)
copy {airflow-ctl-tests => shared/dagnode}/.pre-commit-config.yaml (77%)
copy {airflow-ctl-tests => shared/listeners}/.pre-commit-config.yaml (77%)
copy {airflow-ctl-tests => shared/logging}/.pre-commit-config.yaml (77%)
copy {airflow-ctl-tests => shared/module_loading}/.pre-commit-config.yaml (77%)
copy {airflow-ctl-tests => shared/observability}/.pre-commit-config.yaml (77%)
copy {airflow-ctl-tests => shared/plugins_manager}/.pre-commit-config.yaml
(77%)
copy {airflow-ctl-tests => shared/providers_discovery}/.pre-commit-config.yaml
(75%)
copy {airflow-ctl-tests => shared/secrets_backend}/.pre-commit-config.yaml
(77%)
copy {airflow-ctl-tests => shared/secrets_masker}/.pre-commit-config.yaml (77%)
copy {airflow-ctl-tests => shared/serialization}/.pre-commit-config.yaml (77%)
copy {airflow-ctl-tests => shared/template_rendering}/.pre-commit-config.yaml
(75%)
copy {airflow-ctl-tests => shared/timezones}/.pre-commit-config.yaml (77%)
copy {airflow-ctl-tests => task-sdk-integration-tests}/.pre-commit-config.yaml
(76%)
create mode 100644 task-sdk/src/airflow/sdk/execution_time/request_handlers.py