This is an automated email from the ASF dual-hosted git repository.
shahar1 pushed a change to branch backport-8693c08-v3-4-test
in repository https://gitbox.apache.org/repos/asf/airflow.git
discard 320cfeea83e [v3-4-test] Retry fork CI job listings in smaller pages
(#76327)
add a17e4c086db [v3-4-test] UI: Complete and fix Polish translations
(#76429)
add aae28371675 [v3-4-test] Note that the API server uses a second
database connection pool (#76430) (#76434)
add 42f7a251c9f Note that the API server uses a second database connection
pool (#76430) (#76433)
add b93a97912a5 [v3-4-test] Add screenshots and a review loop example to
the task loops docs (#76435) (#76448)
add eb025d365a4 Bump v3-4-test UI dependencies and upgrade happy-dom to 21
(#76441)
add 6ccb1b96ca5 Upgrade happy-dom to 21.0.4 in the simple auth manager UI
(#76447)
add 7746477b52f Snowflake, Databricks: emit query lineage via OpenLineage
public API (#73655) (#76450)
add f2840d11795 [v3-4-test] Run the dependency upgrade summary beside the
tests instead of after them (#76251) (#76438)
add c6cb20ff2ef [v3-4-test] Describe where the dependency upgrade summary
runs now (#76439) (#76454)
add 2cbd7b0b8ec Let non task callers set and delete variables over
execution API (#76375) (#76436)
add 0c031565d85 [v3-4-test] Keep the audit log off the API server event
loop (#76416) (#76431)
add 4d2f5e8cb92 [v3-4-test] UI: Complete the Spanish (es) translation
(#76087) (#76465)
add 6255c639377 Update French (fr) UI translations to 100% coverage
(#76461)
add da26242b719 [v3-4-test] UI: Complete the Italian translation (#76464)
add 6e4c51f99ed [v3-4-test] Document how to create a TypeScript SDK
project (#76374) (#76449)
add 3db206056b5 [v3-4-test] UI: Fix task groups not expanding when
localStorage is full (#76302) (#76452)
add 1c98dfa7fca [v3-4-test] Load Java Dags from a bundle path that holds a
colon (#76432) (#76459)
add 7d1fc46e0da [v3-4-test] Keep mapped tasks when clearing with run on
latest version (#76420) (#76468)
add 18a6d2daf0f Let asset watchers write asset state over the Execution
API (#76376) (#76469)
add 03b0d52f7fa UI: Label the Dag bundle file table as Parsed Files and
say what it lists (#76462) (#76471)
add 21716d101d6 [v3-4-test] CI: Upgrade important CI environment
add 689502c99bc [v3-4-test] Install apt-utils matching the image's apt on
hardened images (#76484) (#76485)
add adb86572b95 [v3-4-test] CI: Upgrade important CI environment
add c2c1d45aa49 [v3-4-test] Fix async engine datetimes being shifted on
non-UTC MySQL servers (#76505) (#76517)
add 7502772a7d5 [v3-4-test] Restore default ELK node placement in Graph
view (#76488) (#76492)
add a264c38fdd6 [v3-4-test] Fix scheduler memory spike when a Dag run has
a large conf (#73907) (#76252)
add d63fa3aaa1c [v3-4-test] Import TriggerRule from airflow.sdk in docs
examples (#76522) (#76526)
add 9d71c0c1d52 [v3-4-test] Remove machine-global pnpm config causing
.pnpm-store dir to be created in places (#76498) (#76501)
add 89eebb95fb9 [v3-4-test] Add code owners for the cncf.kubernetes
provider (#76371) (#76383)
add 465e0b8f206 [v3-4-test] Report failing fork job statuses only when the
failure persists (#76185) (#76396)
add 76839662c3e [v3-4-test] UI: Defer React plugin compatibility runtime
(#75083) (#76548)
add d28fcffcb44 [v3-4-test] Skip log accumulator disk spill when reading
finished task logs (#70671) (#75956)
add 24d904c3667 [v3-4-test] Lower severity of handled XCom misses (#73198)
(#76494)
add 5a6f07f36d2 [v3-4-test] Apply note before state in bulk Dag run update
so listeners see it (#74890) (#76523)
add b4236dab7d1 [v3-4-test] Fix duplicated asset events when
name_prefix_pattern matches all (#74816) (#76570)
add 1b9eb2bb179 [v3-4-test] Preserve task instance bulk selections across
pages (#75905) (#75983)
add 54d3fbc26e4 [v3-4-test] Make `JWTRefreshMiddleware` extensible via
`BaseAuthManager.get_jwt_refresh_middleware()` (#75868)
add ad1dc8eafa6 [v3-4-test] Add `partition_key` to the `DagRun Finished`
log line (#76557) (#76564)
add e4e96516c32 [v3-4-test] Catch lazy timetable errors when starting
queued runs (#76288) (#76292)
add a75e5b105fa [v3-4-test] Bump TypeScript SDK to 1.0.0 (#76578)
add 3e7f5c8a7cd [v3-4-test] Release the Java SDK 1.0.0 and pin its schema
URL to the published docs site (#75944) (#76577)
add ea9416d04c4 Stop labelling fork CI PRs that change CI files for
workflow approval (#76289) (#76582)
add 818f86b0232 [v3-4-test] Keep extra cookies set by a route in
JWTRefreshMiddleware (#75869)
add 2ef2c391642 [v3-4-test] Build only required prek hook environments in
CI jobs on a cache miss (#76111) (#76256)
add c81fb5c8681 [v3-4-test] Add script to remove constraints for
unsupported Python versions (#75333) (#76405)
add 499f3b06492 [v3-4-test] Keep the language SDKs marked experimental in
the docs (#76584)
add dac5d28c8e4 [v3-4-test] Hold back only build-info changes in fork CI
and stop drafting them (#76282) (#76394)
add b7abe16731b [v3-4-test] UI: Fix select filter pills staying open in
Safari (#76013) (#76589)
add 979904ed6a4 [v3-4-test] Set the TypeScript SDK version to 1.0.0-rc1
(#76594)
add 81614a039ff [v3-4-test] Return 404 when a DagRun disappears during
task API writes (#72907) (#76599)
add 01fee528881 [v3-4-test] UI: Keep Dag card columns aligned across cards
(#76004) (#76219)
add be83ebbbf86 [v3-4-test] Skip allowlisted non-PEP 440 docs versions
when publishing docs to S3 (#76020) (#76343)
add 4d016188e1e [v3-4-test] Retry fork CI job listings in smaller pages
(#76327)
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 (320cfeea83e)
\
N -- N -- N refs/heads/backport-8693c08-v3-4-test (4d016188e1e)
You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.
Any revisions marked "omit" are not gone; other references still
refer to them. Any revisions marked "discard" are gone forever.
No new revisions were added by this update.
Summary of changes:
.agents/skills/airflow-translations/locales/es.md | 34 +-
.agents/skills/airflow-translations/locales/it.md | 65 +-
.github/CODEOWNERS | 2 +-
.github/actions/install-prek/action.yml | 26 +-
.github/workflows/auto-approve-workflow-runs.yml | 8 +-
.github/workflows/ci-amd.yml | 17 +
.github/workflows/ci-arm.yml | 17 +
.github/workflows/dependency-upgrade-summary.yml | 104 +
.github/workflows/finalize-tests.yml | 60 -
.github/workflows/generate-constraints.yml | 2 +
.github/workflows/prod-image-build.yml | 2 +
.github/workflows/test-providers.yml | 4 +
.pre-commit-config.yaml | 4 +-
Dockerfile | 30 +-
Dockerfile.ci | 32 +-
.../language-sdks/java.rst | 21 +
.../language-sdks/typescript.rst | 46 +-
.../docs/authoring-and-scheduling/loops.rst | 155 +-
airflow-core/docs/best-practices.rst | 6 +-
airflow-core/docs/faq.rst | 3 +-
airflow-core/docs/img/ui-dark/loops_clear.png | Bin 0 -> 271661 bytes
airflow-core/docs/img/ui-dark/loops_decision.png | Bin 0 -> 73779 bytes
airflow-core/docs/img/ui-dark/loops_graph.png | Bin 0 -> 77163 bytes
airflow-core/docs/img/ui-dark/loops_iterations.png | Bin 0 -> 191319 bytes
.../docs/img/ui-dark/loops_iterations_tab.png | Bin 0 -> 156522 bytes
airflow-core/docs/img/ui-dark/loops_mapped.png | Bin 0 -> 179885 bytes
airflow-core/docs/img/ui-dark/loops_review.png | Bin 0 -> 244676 bytes
airflow-core/docs/img/ui-light/loops_clear.png | Bin 0 -> 268407 bytes
airflow-core/docs/img/ui-light/loops_decision.png | Bin 0 -> 72201 bytes
airflow-core/docs/img/ui-light/loops_graph.png | Bin 0 -> 78174 bytes
.../docs/img/ui-light/loops_iterations.png | Bin 0 -> 189121 bytes
.../docs/img/ui-light/loops_iterations_tab.png | Bin 0 -> 155523 bytes
airflow-core/docs/img/ui-light/loops_mapped.png | Bin 0 -> 177810 bytes
airflow-core/docs/img/ui-light/loops_review.png | Bin 0 -> 243231 bytes
airflow-core/newsfragments/76430.significant.rst | 11 +
airflow-core/pyproject.toml | 2 +-
airflow-core/src/airflow/api_fastapi/app.py | 18 +
.../api_fastapi/auth/managers/base_auth_manager.py | 14 +
.../auth/managers/simple/ui/package.json | 2 +-
.../auth/managers/simple/ui/pnpm-lock.yaml | 20 +-
.../api_fastapi/auth/middlewares/refresh_token.py | 99 +-
.../src/airflow/api_fastapi/core_api/app.py | 8 +-
.../api_fastapi/core_api/routes/public/assets.py | 2 +-
.../core_api/routes/public/task_state_store.py | 5 +-
.../core_api/services/public/dag_run.py | 4 +-
.../api_fastapi/execution_api/in_process.py | 3 +-
.../execution_api/routes/asset_state_store.py | 18 +-
.../execution_api/routes/task_state_store.py | 17 +-
.../api_fastapi/execution_api/routes/variables.py | 11 +-
.../airflow/api_fastapi/execution_api/security.py | 38 +
.../api_fastapi/execution_api/versions/__init__.py | 2 +
.../execution_api/versions/v2026_10_30.py | 16 +-
.../src/airflow/api_fastapi/logging/decorators.py | 36 +-
.../src/airflow/example_dags/example_task_loops.py | 4 +-
.../src/airflow/jobs/scheduler_job_runner.py | 2 +
airflow-core/src/airflow/models/dagrun.py | 25 +-
airflow-core/src/airflow/settings.py | 1 +
airflow-core/src/airflow/state/metastore.py | 5 +-
airflow-core/src/airflow/ui/package.json | 78 +-
airflow-core/src/airflow/ui/pnpm-lock.yaml | 1725 +++++++-------
.../airflow/ui/public/i18n/locales/ar/browse.json | 39 +
.../airflow/ui/public/i18n/locales/ca/browse.json | 5 +-
.../airflow/ui/public/i18n/locales/de/browse.json | 5 +-
.../airflow/ui/public/i18n/locales/el/browse.json | 5 +-
.../airflow/ui/public/i18n/locales/en/browse.json | 5 +-
.../airflow/ui/public/i18n/locales/es/admin.json | 15 +
.../airflow/ui/public/i18n/locales/es/assets.json | 5 +
.../airflow/ui/public/i18n/locales/es/browse.json | 35 +
.../airflow/ui/public/i18n/locales/es/common.json | 80 +-
.../ui/public/i18n/locales/es/components.json | 41 +-
.../src/airflow/ui/public/i18n/locales/es/dag.json | 134 ++
.../airflow/ui/public/i18n/locales/es/dags.json | 38 +-
.../ui/public/i18n/locales/es/dashboard.json | 22 +-
.../airflow/ui/public/i18n/locales/es/hitl.json | 2 +
.../airflow/ui/public/i18n/locales/fr/admin.json | 3 +
.../airflow/ui/public/i18n/locales/fr/browse.json | 8 +-
.../airflow/ui/public/i18n/locales/fr/common.json | 24 +
.../ui/public/i18n/locales/fr/components.json | 9 +
.../src/airflow/ui/public/i18n/locales/fr/dag.json | 64 +
.../airflow/ui/public/i18n/locales/fr/dags.json | 13 +-
.../ui/public/i18n/locales/fr/dashboard.json | 1 +
.../airflow/ui/public/i18n/locales/he/browse.json | 7 +-
.../airflow/ui/public/i18n/locales/hi/browse.json | 5 +-
.../airflow/ui/public/i18n/locales/it/admin.json | 55 +-
.../airflow/ui/public/i18n/locales/it/assets.json | 46 +-
.../airflow/ui/public/i18n/locales/it/browse.json | 85 +-
.../airflow/ui/public/i18n/locales/it/common.json | 344 ++-
.../ui/public/i18n/locales/it/components.json | 111 +-
.../src/airflow/ui/public/i18n/locales/it/dag.json | 265 +-
.../airflow/ui/public/i18n/locales/it/dags.json | 68 +-
.../ui/public/i18n/locales/it/dashboard.json | 47 +-
.../airflow/ui/public/i18n/locales/it/hitl.json | 17 +-
.../airflow/ui/public/i18n/locales/ko/browse.json | 5 +-
.../airflow/ui/public/i18n/locales/pl/admin.json | 8 +-
.../airflow/ui/public/i18n/locales/pl/assets.json | 12 +-
.../airflow/ui/public/i18n/locales/pl/browse.json | 12 +-
.../airflow/ui/public/i18n/locales/pl/common.json | 51 +-
.../ui/public/i18n/locales/pl/components.json | 67 +-
.../src/airflow/ui/public/i18n/locales/pl/dag.json | 92 +-
.../airflow/ui/public/i18n/locales/pl/dags.json | 49 +-
.../ui/public/i18n/locales/pl/dashboard.json | 21 +-
.../ui/public/i18n/locales/zh-CN/browse.json | 5 +-
.../ui/public/i18n/locales/zh-TW/browse.json | 5 +-
.../components/DataTable/useRowSelection.test.tsx | 86 +
.../src/components/DataTable/useRowSelection.tsx | 19 +-
.../ui/src/components/FilterBar/FilterBar.test.tsx | 20 +
.../components/FilterBar/filters/LoopFilter.tsx | 17 +-
.../FilterBar/filters/RunStateFilter.tsx | 27 +-
.../components/FilterBar/filters/SelectFilter.tsx | 21 +-
.../ui/src/components/Graph/elkGraphUtils.test.ts | 14 +
.../ui/src/components/Graph/elkGraphUtils.ts | 3 -
.../ui/src/context/groups/GroupsProvider.test.tsx | 34 +-
.../ui/src/context/groups/GroupsProvider.tsx | 45 +-
airflow-core/src/airflow/ui/src/main.tsx | 19 +-
.../airflow/ui/src/pages/DagBundle/BundleFiles.tsx | 7 +-
.../src/airflow/ui/src/pages/DagsList/DagCard.tsx | 14 +-
.../src/pages/DagsList/DagRunStateCounts.test.tsx | 5 +
.../ui/src/pages/DagsList/DagRunStateCounts.tsx | 2 +-
.../src/airflow/ui/src/pages/DagsList/DagsList.tsx | 3 +-
.../airflow/ui/src/pages/DagsList/RecentRuns.tsx | 6 +-
.../pages/DagsList/recentRunsLayout.ts} | 13 +-
.../src/airflow/ui/src/pages/ReactPlugin.test.tsx | 25 +-
.../src/airflow/ui/src/pages/ReactPlugin.tsx | 14 +-
.../airflow/ui/src/pages/Run/CallbackLogs.test.tsx | 1 +
.../airflow/ui/src/pages/Run/Callbacks.test.tsx | 1 +
.../ui/src/pages/TaskInstance/Logs/Logs.test.tsx | 3 +
.../pages/TaskInstance/Logs/LogsSelection.test.tsx | 3 +
.../src/pages/TaskInstances/TaskInstances.test.tsx | 50 +-
.../ui/src/pages/TaskInstances/TaskInstances.tsx | 19 +-
.../src/utils/registerPluginDependencies.test.ts | 59 +
.../utils/registerPluginDependencies.ts} | 39 +-
.../src/airflow/ui/src/utils/routeModule.ts | 45 +
.../src/airflow/ui/tests/e2e/pages/DagsPage.ts | 4 +-
.../src/airflow/utils/log/file_task_handler.py | 40 +-
.../auth/managers/test_base_auth_manager.py | 10 +
.../auth/middlewares/test_refresh_token.py | 159 +-
.../tests/unit/api_fastapi/core_api/conftest.py | 24 +-
.../core_api/routes/public/test_assets.py | 2 +
.../core_api/routes/public/test_auth.py | 4 +-
.../core_api/routes/public/test_dag_run.py | 75 +
.../core_api/routes/public/test_execution.py | 1 +
.../routes/public/test_task_state_store.py | 51 +-
.../tests/unit/api_fastapi/core_api/test_app.py | 29 +
.../api_fastapi/execution_api/test_security.py | 108 +-
.../versions/head/test_asset_state_store.py | 80 +-
.../versions/head/test_task_state_store.py | 38 +-
.../versions/v2026_10_30/test_task_state_store.py | 51 +
.../unit/api_fastapi/logging/test_decorators.py | 45 +-
airflow-core/tests/unit/api_fastapi/test_app.py | 16 +
airflow-core/tests/unit/core/test_settings.py | 41 +-
airflow-core/tests/unit/jobs/test_scheduler_job.py | 93 +-
airflow-core/tests/unit/models/test_cleartasks.py | 77 +
airflow-core/tests/unit/models/test_dagrun.py | 103 +-
airflow-core/tests/unit/state/test_metastore.py | 5 +-
.../tests/unit/utils/log/test_log_reader.py | 4 +-
airflow-core/tests/unit/utils/test_log_handlers.py | 109 +-
airflow-ctl-tests/pyproject.toml | 2 +-
airflow-ctl/pyproject.toml | 2 +-
.../airflowctl/api/datamodels/auth_generated.py | 2 +-
.../src/airflowctl/api/datamodels/generated.py | 2 +-
.../java-native-bundle/gradle.properties | 2 +-
.../java-test-bundle/gradle.properties | 2 +-
airflow-e2e-tests/pyproject.toml | 4 +-
chart/pyproject.toml | 2 +-
clients/python/pyproject.toml | 2 +-
contributing-docs/05_pull_requests.rst | 20 +-
contributing-docs/18_contribution_workflow.rst | 4 +-
contributing-docs/25_maintainer_pr_triage.md | 18 +-
dev/breeze/doc/08_ci_tasks.rst | 4 +-
...0-run-ci-for-external-contributions-in-forks.md | 5 +-
dev/breeze/doc/ci/02_images.md | 4 +-
dev/breeze/doc/ci/05_workflows.md | 34 +-
.../doc/ci/08_fork_ci_for_external_contributors.md | 62 +-
dev/breeze/pyproject.toml | 10 +-
.../commands/release_management_commands.py | 8 +-
.../files/hardened_python_image_digests.json | 16 +-
dev/breeze/src/airflow_breeze/global_constants.py | 8 +-
.../templates/pyproject_TEMPLATE.toml.jinja2 | 2 +-
.../src/airflow_breeze/utils/fork_ci_messages.py | 35 +-
.../src/airflow_breeze/utils/fork_ci_reconcile.py | 84 +-
.../airflow_breeze/utils/provider_dependencies.py | 6 +-
.../src/airflow_breeze/utils/publish_docs_to_s3.py | 15 +-
.../airflow_breeze/utils/workflow_run_approval.py | 87 +-
dev/breeze/tests/test_dependency_upgrade_report.py | 4 +-
dev/breeze/tests/test_fork_ci_messages.py | 29 +-
dev/breeze/tests/test_fork_ci_reconcile.py | 94 +-
dev/breeze/tests/test_provider_dependencies.py | 11 +
dev/breeze/tests/test_publish_docs_to_s3.py | 46 +-
dev/breeze/tests/test_workflow_run_approval.py | 143 +-
dev/breeze/uv.lock | 176 +-
dev/mypy/pyproject.toml | 2 +-
dev/pyproject.toml | 2 +-
dev/registry/pyproject.toml | 2 +-
dev/remove_unsupported_python_constraints.py | 300 +++
devel-common/pyproject.toml | 6 +-
devel-common/src/sphinx_exts/exampleinclude.py | 47 +-
.../src/tests_common/test_utils/asserts.py | 12 +-
docker-stack-docs/pyproject.toml | 2 +-
docker-tests/pyproject.toml | 2 +-
java-sdk/gradle.properties | 2 +-
java-sdk/sdk/build.gradle.kts | 2 +-
java-sdk/sdk/schema/schema.json | 853 ++++---
.../lang_sdk/java_example/gradle.properties | 2 +-
kubernetes-tests/lang_sdk/ts_example/package.json | 2 +-
kubernetes-tests/pyproject.toml | 2 +-
performance/pyproject.toml | 2 +-
providers-summary-docs/pyproject.toml | 2 +-
providers/airbyte/pyproject.toml | 2 +-
providers/akeyless/pyproject.toml | 2 +-
providers/alibaba/pyproject.toml | 2 +-
providers/amazon/README.rst | 4 +-
providers/amazon/docs/index.rst | 4 +-
providers/amazon/pyproject.toml | 6 +-
.../unit/amazon/aws/log/test_s3_task_handler.py | 4 +-
providers/anthropic/pyproject.toml | 2 +-
providers/apache/arrow/pyproject.toml | 2 +-
providers/apache/beam/pyproject.toml | 2 +-
providers/apache/cassandra/pyproject.toml | 2 +-
providers/apache/drill/pyproject.toml | 2 +-
providers/apache/druid/pyproject.toml | 2 +-
providers/apache/flink/pyproject.toml | 2 +-
providers/apache/hdfs/pyproject.toml | 2 +-
providers/apache/hive/pyproject.toml | 2 +-
providers/apache/iceberg/pyproject.toml | 2 +-
providers/apache/impala/pyproject.toml | 2 +-
providers/apache/kafka/pyproject.toml | 2 +-
providers/apache/kylin/pyproject.toml | 2 +-
providers/apache/livy/pyproject.toml | 2 +-
providers/apache/pig/pyproject.toml | 2 +-
providers/apache/pinot/pyproject.toml | 2 +-
providers/apache/spark/pyproject.toml | 2 +-
providers/apache/tinkerpop/pyproject.toml | 2 +-
providers/apprise/pyproject.toml | 2 +-
providers/arangodb/pyproject.toml | 2 +-
providers/asana/pyproject.toml | 2 +-
providers/atlassian/jira/pyproject.toml | 2 +-
providers/celery/pyproject.toml | 2 +-
providers/clickhousedb/pyproject.toml | 2 +-
providers/cloudant/pyproject.toml | 2 +-
providers/cncf/kubernetes/pyproject.toml | 2 +-
providers/cohere/pyproject.toml | 2 +-
providers/common/ai/pyproject.toml | 2 +-
.../ai/example_dags/example_llm_review_loop.py | 81 +
providers/common/compat/pyproject.toml | 2 +-
providers/common/dataquality/pyproject.toml | 2 +-
providers/common/io/pyproject.toml | 2 +-
providers/common/messaging/pyproject.toml | 2 +-
providers/common/sql/pyproject.toml | 2 +-
providers/databricks/docs/index.rst | 2 +-
providers/databricks/pyproject.toml | 4 +-
.../providers/databricks/hooks/databricks_sql.py | 5 +-
.../providers/databricks/utils/openlineage.py | 123 +-
.../unit/databricks/hooks/test_databricks_sql.py | 16 +-
.../unit/databricks/utils/test_openlineage.py | 947 ++------
providers/datadog/pyproject.toml | 2 +-
providers/dbt/cloud/pyproject.toml | 2 +-
providers/dingding/pyproject.toml | 2 +-
providers/discord/pyproject.toml | 2 +-
providers/docker/pyproject.toml | 2 +-
providers/duckdb/pyproject.toml | 2 +-
providers/edge3/pyproject.toml | 2 +-
providers/elasticsearch/pyproject.toml | 2 +-
providers/exasol/pyproject.toml | 2 +-
providers/fab/pyproject.toml | 2 +-
providers/facebook/pyproject.toml | 2 +-
providers/ftp/pyproject.toml | 2 +-
providers/git/pyproject.toml | 2 +-
providers/github/pyproject.toml | 2 +-
providers/google/README.rst | 28 +-
providers/google/docs/index.rst | 28 +-
providers/google/pyproject.toml | 30 +-
.../unit/google/cloud/log/test_gcs_task_handler.py | 4 +-
providers/grpc/pyproject.toml | 2 +-
providers/hashicorp/docs/index.rst | 2 +-
providers/hashicorp/pyproject.toml | 4 +-
providers/http/pyproject.toml | 2 +-
providers/ibm/db2/pyproject.toml | 2 +-
providers/ibm/mq/pyproject.toml | 2 +-
providers/imap/pyproject.toml | 2 +-
providers/influxdb/pyproject.toml | 2 +-
providers/informatica/pyproject.toml | 2 +-
providers/jdbc/pyproject.toml | 2 +-
providers/jenkins/pyproject.toml | 2 +-
providers/keycloak/pyproject.toml | 2 +-
providers/microsoft/azure/pyproject.toml | 2 +-
.../microsoft/azure/log/test_wasb_task_handler.py | 2 +-
providers/microsoft/mssql/pyproject.toml | 2 +-
providers/microsoft/psrp/pyproject.toml | 2 +-
providers/microsoft/winrm/pyproject.toml | 2 +-
providers/modal/pyproject.toml | 2 +-
providers/mongo/pyproject.toml | 2 +-
providers/mysql/pyproject.toml | 2 +-
providers/neo4j/pyproject.toml | 2 +-
providers/odbc/pyproject.toml | 2 +-
providers/openai/pyproject.toml | 2 +-
providers/openfaas/pyproject.toml | 2 +-
providers/openlineage/pyproject.toml | 2 +-
.../openlineage/utils/sql_hook_lineage.py | 28 +-
.../openlineage_policy_hook_lineage_dag.json | 16 +-
.../openlineage/utils/test_sql_hook_lineage.py | 6 +-
providers/opensearch/pyproject.toml | 2 +-
providers/opsgenie/pyproject.toml | 2 +-
providers/oracle/pyproject.toml | 2 +-
providers/pagerduty/pyproject.toml | 2 +-
providers/papermill/pyproject.toml | 2 +-
providers/pgvector/pyproject.toml | 2 +-
providers/pinecone/pyproject.toml | 2 +-
providers/postgres/pyproject.toml | 2 +-
providers/presto/pyproject.toml | 2 +-
providers/qdrant/pyproject.toml | 2 +-
providers/redis/pyproject.toml | 2 +-
providers/salesforce/pyproject.toml | 2 +-
providers/samba/pyproject.toml | 2 +-
providers/segment/pyproject.toml | 2 +-
providers/sendgrid/pyproject.toml | 2 +-
providers/sftp/pyproject.toml | 2 +-
providers/singularity/pyproject.toml | 2 +-
providers/slack/pyproject.toml | 2 +-
providers/smtp/pyproject.toml | 2 +-
providers/snowflake/docs/index.rst | 2 +-
providers/snowflake/pyproject.toml | 4 +-
.../airflow/providers/snowflake/hooks/snowflake.py | 5 +-
.../providers/snowflake/utils/openlineage.py | 174 +-
.../tests/unit/snowflake/hooks/test_snowflake.py | 17 +-
.../tests/unit/snowflake/utils/test_openlineage.py | 886 ++-----
providers/sqlite/pyproject.toml | 2 +-
providers/ssh/pyproject.toml | 2 +-
providers/standard/pyproject.toml | 2 +-
providers/tableau/pyproject.toml | 2 +-
providers/telegram/pyproject.toml | 2 +-
providers/teradata/pyproject.toml | 2 +-
providers/trino/pyproject.toml | 2 +-
providers/vertica/pyproject.toml | 2 +-
providers/vespa/pyproject.toml | 2 +-
providers/weaviate/pyproject.toml | 2 +-
providers/yandex/pyproject.toml | 2 +-
providers/ydb/pyproject.toml | 2 +-
providers/zendesk/pyproject.toml | 2 +-
pyproject.toml | 4 +-
scripts/ci/prek/check_extra_packages_ref.py | 2 +-
scripts/ci/prek/check_imports_in_providers.py | 2 +-
scripts/ci/prek/ruff_format.py | 2 +-
scripts/docker/install_os_dependencies.sh | 26 +-
scripts/pyproject.toml | 2 +-
.../tests/ci/prek/test_compile_provider_assets.py | 1 -
scripts/tests/ci/prek/test_compile_ui_assets.py | 1 -
scripts/tests/ci/test_prek_cache_optimizations.py | 84 +-
scripts/tools/setup_breeze | 2 +-
shared/configuration/pyproject.toml | 2 +-
shared/dagnode/pyproject.toml | 2 +-
shared/listeners/pyproject.toml | 2 +-
shared/logging/pyproject.toml | 2 +-
shared/module_loading/pyproject.toml | 2 +-
shared/observability/pyproject.toml | 2 +-
shared/plugins_manager/pyproject.toml | 2 +-
shared/providers_discovery/pyproject.toml | 2 +-
shared/secrets_backend/pyproject.toml | 2 +-
shared/secrets_masker/pyproject.toml | 2 +-
shared/serialization/pyproject.toml | 2 +-
shared/state/pyproject.toml | 2 +-
shared/template_rendering/pyproject.toml | 2 +-
shared/timezones/pyproject.toml | 2 +-
task-sdk-integration-tests/pyproject.toml | 2 +-
task-sdk/docs/ts-bundle-spec.rst | 2 +-
task-sdk/pyproject.toml | 2 +-
task-sdk/src/airflow/sdk/api/client.py | 4 +-
.../src/airflow/sdk/api/datamodels/_generated.py | 2 +-
.../airflow/sdk/coordinators/java/coordinator.py | 95 +-
task-sdk/tests/task_sdk/api/test_client.py | 50 +
.../task_sdk/coordinators/java/test_coordinator.py | 240 ++
ts-sdk/DEVELOPMENT.md | 16 +-
ts-sdk/README.md | 4 +-
ts-sdk/docs/index.md | 6 +-
ts-sdk/docs/package-lock.json | 4 +-
ts-sdk/docs/package.json | 2 +-
ts-sdk/docs/tests/deployment-checks.test.mjs | 4 +-
ts-sdk/example/package.json | 2 +-
ts-sdk/package.json | 5 +-
ts-sdk/scripts/ci/prek/check_dag_schema.py | 1 -
uv.lock | 2520 ++++++++++----------
380 files changed, 9246 insertions(+), 5213 deletions(-)
create mode 100644 .github/workflows/dependency-upgrade-summary.yml
create mode 100644 airflow-core/docs/img/ui-dark/loops_clear.png
create mode 100644 airflow-core/docs/img/ui-dark/loops_decision.png
create mode 100644 airflow-core/docs/img/ui-dark/loops_graph.png
create mode 100644 airflow-core/docs/img/ui-dark/loops_iterations.png
create mode 100644 airflow-core/docs/img/ui-dark/loops_iterations_tab.png
create mode 100644 airflow-core/docs/img/ui-dark/loops_mapped.png
create mode 100644 airflow-core/docs/img/ui-dark/loops_review.png
create mode 100644 airflow-core/docs/img/ui-light/loops_clear.png
create mode 100644 airflow-core/docs/img/ui-light/loops_decision.png
create mode 100644 airflow-core/docs/img/ui-light/loops_graph.png
create mode 100644 airflow-core/docs/img/ui-light/loops_iterations.png
create mode 100644 airflow-core/docs/img/ui-light/loops_iterations_tab.png
create mode 100644 airflow-core/docs/img/ui-light/loops_mapped.png
create mode 100644 airflow-core/docs/img/ui-light/loops_review.png
create mode 100644 airflow-core/newsfragments/76430.significant.rst
create mode 100644
airflow-core/src/airflow/ui/src/components/DataTable/useRowSelection.test.tsx
copy airflow-core/src/airflow/ui/{rules/levels.js =>
src/pages/DagsList/recentRunsLayout.ts} (66%)
create mode 100644
airflow-core/src/airflow/ui/src/utils/registerPluginDependencies.test.ts
copy airflow-core/src/airflow/ui/{rules/jsonc.js =>
src/utils/registerPluginDependencies.ts} (51%)
create mode 100644 airflow-core/src/airflow/ui/src/utils/routeModule.ts
copy providers/fab/tests/unit/fab/www/test_app.py =>
airflow-core/tests/unit/api_fastapi/core_api/conftest.py (60%)
create mode 100644
airflow-core/tests/unit/api_fastapi/execution_api/versions/v2026_10_30/test_task_state_store.py
create mode 100755 dev/remove_unsupported_python_constraints.py
create mode 100644
providers/common/ai/src/airflow/providers/common/ai/example_dags/example_llm_review_loop.py