This is an automated email from the ASF dual-hosted git repository.
dependabot[bot] pushed a change to branch
dependabot/gradle/java-sdk/java-sdk-dependency-updates-646a4c4aff
in repository https://gitbox.apache.org/repos/asf/airflow.git
discard 66b58466047 Bump the java-sdk-dependency-updates group across 1
directory with 7 updates
add 22a339029e0 Fix ExternalTaskSensor link pointing to the wrong external
Dag run (#74528)
add a0b0c4dd6f8 Reuse stored credentials only when testing an unchanged
connection (#76453)
add b26e77632dd Collapse detail tabs that do not fit into a More menu
(#76742)
add df93716a6bc Say in the AI Model tab which values are kept in external
storage (#76747)
add b7c89dec8d7 Fix Grid horizontal scrolling (#76083)
add d26160dbf39 Parse HookToolset :param descriptions by indentation
(#76701)
add e13f0d7add5 Update providers metadata 2026-11-09 (#76780)
add 4744db9eca9 Warn when AwsDuckDBHook ignores the AWS connection's
credentials (#76639)
add a139b9d8c66 Add missing unit tests for the apache.hive macros plugin
(#72447)
add 89b92c3221f Return 0 instead of None from FTPHook.get_size for empty
files (#76665)
add 73fae2472c7 Apply Default Security Context to OTel Collector Container
(#74268)
add ce8bc76baa9 Fix FTP test connection passing without contacting the
server (#76355)
add 8ee310e38cb Add a connection page for the DuckDB on AWS connection
(#76634)
add dfe9cc6ef3c Add Ollama model readiness check to PydanticAIHook (#75369)
add c8e7deb10a5 Add an ADR for how mapped tasks works across language SDKs
(#76297)
add 9ecd53d3a90 Fix Celery workers rejecting deadline callbacks on Airflow
3.2 (#75438)
add 382e487e5d9 Prepare amazon provider RC2 for 2026-11-10 (#76789)
add d23f21fa312 Always build airflow core and task sdk docs together in CI
(#76443)
add da7dab32a84 Stop API responses from resolving their items on the event
loop (#76537)
add 8f7f1c803a8 Bump the core-ui-package-updates group across 1 directory
with 10 updates (#76770)
add 3a3fc3ef1e4 Bump the uv-dependency-updates group in /dev/breeze with 3
updates (#76768)
add c540289ad94 Bump the github-actions-updates group with 5 updates
(#76767)
add 99c838f6968 Bump the edge-ui-package-updates group across 1 directory
with 4 updates (#76763)
add 32876923113 Bump the ui-plugin-template-package-updates group across 1
directory with 2 updates (#76760)
add 8ca83d897f2 Bump the auth-ui-package-updates group across 1 directory
with 3 updates (#76758)
add 546405f2407 Bump @11ty/eleventy (#76756)
add 175d0278691 Decode Go SDK date-times from the supervisor in UTC
(#75737)
add dd44cc0ea56 Add an ADR for task loops across language SDKs (#76364)
add a8031341e0e Resubmit lost Databricks runs instead of failing every
retry (#76718)
add bbe3eac9a9c Fix flaky OpenLineage manual state e2e test on airflow 3+
(#76796)
add 762495647a9 Add task loop authoring ADRs for the TypeScript, Java and
Go SDKs (#76365)
add 76a27275c7a [main] Upgrade important CI environment (#76334)
add 6a8bc716a39 Add meel-ayush to fork CI pilot and exempt pilot users
from PR cap (#76782)
add eeab7a877df Redact Connection extra fields that providers declare as
secrets (#73797)
add 367d619c756 Build published slim images with constraints without
providers (#76798)
add 5cdfa8571b0 Use Python 3.14 as the default Python of the 3.5.0 images
(#76800)
add 15adc8a492a Add Durable Execution to the registry header navigation
(#76775)
add 2b59699b0fe Rework fork CI draft and label rules into one state table
(#76681)
add 057f0099281 Make db clean --skip-archive delete rows directly (#74113)
add 8699a93e659 Bound job loading for component health checks (#76751)
add e1150d774f8 Stop generating constraints for PRs that do not use them
(#76685)
add 6b31eaa7f38 UI: Load the ELK graph layout engine only when a graph is
drawn (#75986)
add 0c6be7cad0f Close German Translation Gaps 2026-11-09 (#76781)
add aac29ec1bbb Split the Common AI sandbox backends page into one page
per backend (#76853)
add 0d2b5559004 Skip provider tests that cannot import a changed file
(#76686)
add 6d0ad1ee1af Run the always-on CI jobs only when their inputs change
(#76690)
add 402d7a58ad2 Skip provider compatibility tests for changes hidden from
them (#76722)
add 27e807b5f1e Add Execution API endpoint for callback terminal state
(#75253)
add ffac35fc92b Add a task switcher to the Dag breadcrumb (#76850)
add 89c89fdb3f1 Simplify attribute assertions in Connection URI tests
(#76876)
add 975edc02c50 Use uvicorn-worker package for the gunicorn API server
worker (#76856)
add 6b68dacdab3 Correct sbx swap guidance in Common AI sandbox docs
(#76879)
add 4d1bc90d0d4 Add Hugging Face Provider (#76317)
add 53134ff6a69 Go SDK: Return XCom and task state store integers as int64
(#75700)
add e429795ce4b Fix the last loop iteration index in the task loops docs
(#76831)
add 5667fb5044b Skip the Go SDK rule constants test outside the Airflow
repository (#76888)
add 5a9e21ac1b4 Skip upstream-only push workflows when a fork syncs main
(#76695)
add b9a3082904d Make SDK release verification steps work on macOS and with
backports (#76897)
add 48ccf8119b5 Fix unexpected stdout output in async S3Hook decorator
(#76855)
add 5e2e1417f22 Count replayed tool errors against the retry limit in
OpenAI Agents durable runs (#76790)
add 3591d7e4b77 Tidy the ESLint config before the oxlint move (#76477)
add 5081d2810f7 Correct what clearing a durable agent task replays in
common.ai docs (#76860)
add 3c254dbc58b Fix durable agent tasks failing when a tool returns bytes
(#76861)
add bf9e64f9e60 Fail the task when an OpenAI Agents SDK durable run stops
for tool approval (#76785)
add 3cb48d36e76 i18n(zh-CN): add missing translations and improve zh-CN
translation skill (#76700)
add 1a85102bc6d Accept `.filtered()`, `.prefixed()` and `.renamed()`
toolsets in the agent framework adapters (#76752)
add e42b5a92aeb Use prek hook script to refresh Java SDK metadata (#76714)
add 602ec1005a7 Pause an OpenAI Agents SDK durable run for tool approval
in Required Actions (#76786)
add ba57629ded2 fix the command for contributors to verify python client
and airflowctl rc (#76870)
add f5a994353e4 Copy the stack trace from the Dag import error modals
(#76924)
add 17e7eed7cf4 Bump @chakra-ui/react (#76754)
add 961da0f3b10 UI: Complete the missing Hebrew (he) translations (#76562)
add fc65819a7b2 docs(CODEOWNERS): add Indonesian UI translation owner
(#76929)
add c1ad31f66c3 UI: Move most lint rules from ESLint to oxlint (#76491)
add 646b92b8b9b Re-anchor custom queued deadline references when a Dag run
is cleared (#71850)
add 93a344503c3 Bump the java-sdk-dependency-updates group across 1
directory with 7 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 (66b58466047)
\
N -- N -- N
refs/heads/dependabot/gradle/java-sdk/java-sdk-dependency-updates-646a4c4aff
(93a344503c3)
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:
.../skills/airflow-translations/locales/zh-CN.md | 23 +
.asf.yaml | 16 +
.github/CODEOWNERS | 1 +
.github/ISSUE_TEMPLATE/1-airflow_bug_report.yml | 1 +
.github/boring-cyborg.yml | 3 +
.github/dependabot.yml | 1 +
.github/fork-ci-gate.toml | 3 +-
.github/workflows/airflow-e2e-tests.yml | 4 +-
.github/workflows/automatic-backport.yml | 1 +
.github/workflows/basic-tests.yml | 19 +-
.github/workflows/ci-amd.yml | 42 +-
.github/workflows/ci-arm.yml | 42 +-
.github/workflows/ci-image-checks.yml | 5 +
.github/workflows/codeql-analysis.yml | 8 +-
.../java-sdk-dependabot-verification-metadata.yml | 15 +-
.github/workflows/java-sdk-dependency-security.yml | 4 +-
.github/workflows/java-sdk-release-verify.yml | 4 +-
.github/workflows/k8s-tests.yml | 4 +-
.github/workflows/milestone-tag-assistant.yml | 1 +
.github/workflows/notify-uv-lock-conflicts.yml | 1 +
.github/workflows/registry-backfill.yml | 2 +-
.github/workflows/registry-build.yml | 2 +-
.github/workflows/test-providers.yml | 6 +-
.github/workflows/ui-e2e-tests.yml | 2 +-
.github/workflows/update-constraints-on-push.yml | 5 +-
.pre-commit-config.yaml | 4 +-
.rat-excludes | 2 +
Dockerfile | 8 +-
Dockerfile.ci | 10 +-
airflow-core/.pre-commit-config.yaml | 2 +-
.../0007-taskflow-across-language-boundary.md | 4 +
.../lang-sdk/0016-mapped-tasks-across-lang-sdks.md | 584 ++++
.../lang-sdk/0017-task-loops-across-lang-sdks.md | 252 ++
airflow-core/adr/lang-sdk/README.md | 2 +
.../authoring-and-scheduling/language-sdks/go.rst | 13 +-
.../docs/authoring-and-scheduling/loops.rst | 2 +-
airflow-core/docs/extra-packages-ref.rst | 2 +
airflow-core/docs/howto/usage-cli.rst | 2 +-
airflow-core/newsfragments/71850.bugfix.rst | 1 +
airflow-core/newsfragments/76453.significant.rst | 16 +
airflow-core/pyproject.toml | 1 +
.../src/airflow/api/common/airflow_health.py | 34 +-
.../auth/managers/simple/ui/package.json | 6 +-
.../auth/managers/simple/ui/pnpm-lock.yaml | 1483 +++++----
.../airflow/api_fastapi/common/parameters/misc.py | 30 +-
.../api_fastapi/core_api/datamodels/dag_run.py | 3 +-
.../core_api/routes/public/connections.py | 43 +-
.../api_fastapi/core_api/routes/public/dag_run.py | 2 +-
.../execution_api/datamodels/callback.py | 19 +-
.../api_fastapi/execution_api/routes/callbacks.py | 58 +-
.../api_fastapi/execution_api/versions/__init__.py | 2 +
.../execution_api/versions/v2027_02_28.py | 10 +
.../src/airflow/api_fastapi/gunicorn_app.py | 2 +-
airflow-core/src/airflow/cli/cli_config.py | 2 +-
.../src/airflow/cli/commands/api_server_command.py | 4 +-
airflow-core/src/airflow/jobs/job.py | 26 +-
.../src/airflow/jobs/scheduler_job_runner.py | 53 +-
airflow-core/src/airflow/models/deadline.py | 9 +
airflow-core/src/airflow/models/serialized_dag.py | 44 +-
airflow-core/src/airflow/models/taskinstance.py | 38 +-
.../airflow/serialization/definitions/deadline.py | 12 +-
airflow-core/src/airflow/serialization/encoders.py | 5 +
airflow-core/src/airflow/ui/.oxlintrc.json | 611 ++++
airflow-core/src/airflow/ui/eslint.config.js | 24 +-
airflow-core/src/airflow/ui/package.json | 30 +-
airflow-core/src/airflow/ui/pnpm-lock.yaml | 2333 +++++++------
.../airflow/ui/public/i18n/locales/de/browse.json | 1 +
.../airflow/ui/public/i18n/locales/de/common.json | 2 +
.../airflow/ui/public/i18n/locales/en/common.json | 2 +
.../airflow/ui/public/i18n/locales/he/admin.json | 2 +
.../airflow/ui/public/i18n/locales/he/browse.json | 2 +
.../airflow/ui/public/i18n/locales/he/common.json | 15 +-
.../ui/public/i18n/locales/he/components.json | 11 +
.../src/airflow/ui/public/i18n/locales/he/dag.json | 36 +-
.../airflow/ui/public/i18n/locales/he/dags.json | 2 +
.../ui/public/i18n/locales/he/dashboard.json | 1 +
.../airflow/ui/public/i18n/locales/he/hitl.json | 1 +
.../ui/public/i18n/locales/zh-CN/admin.json | 2 +
.../ui/public/i18n/locales/zh-CN/browse.json | 2 +
.../ui/public/i18n/locales/zh-CN/common.json | 52 +-
.../ui/public/i18n/locales/zh-CN/components.json | 13 +
.../airflow/ui/public/i18n/locales/zh-CN/dag.json | 63 +-
.../airflow/ui/public/i18n/locales/zh-CN/dags.json | 14 +-
.../ui/public/i18n/locales/zh-CN/dashboard.json | 1 +
.../airflow/ui/public/i18n/locales/zh-CN/hitl.json | 1 +
.../airflow-plugin/index.js} | 16 +-
.../airflow-plugin/no-react-namespace-types.js | 59 +
.../no-react-namespace-types.test.js | 49 +-
airflow-core/src/airflow/ui/rules/core.js | 71 -
airflow-core/src/airflow/ui/rules/i18n.js | 167 -
airflow-core/src/airflow/ui/rules/i18next.js | 68 -
airflow-core/src/airflow/ui/rules/jsonc.js | 45 -
airflow-core/src/airflow/ui/rules/levels.js | 3 -
airflow-core/src/airflow/ui/rules/off.js | 29 -
airflow-core/src/airflow/ui/rules/perfectionist.js | 146 -
.../src/airflow/ui/rules/plugin-patch.d.ts | 4 -
airflow-core/src/airflow/ui/rules/react.js | 7 -
airflow-core/src/airflow/ui/rules/rem.js | 146 -
airflow-core/src/airflow/ui/rules/stylistic.js | 90 -
airflow-core/src/airflow/ui/rules/typescript.js | 150 +-
airflow-core/src/airflow/ui/rules/unicorn.js | 21 +-
.../ui/src/components/Breadcrumb/CrumbSwitcher.tsx | 7 +-
.../ui/src/components/DagImportErrorDetails.tsx | 2 +-
.../ui/src/components/DagImportErrorModal.test.tsx | 15 +-
.../ui/src/components/Graph/useGraphLayout.ts | 45 +-
.../airflow/ui/src/components/GraphTaskFilters.tsx | 2 +-
.../components/PluginActions/PluginReactAction.tsx | 6 +-
.../ui/src/components/ReactMarkdownBlocks.tsx | 4 +-
.../ui/src/layouts/Details/DagBreadcrumb.test.tsx | 213 +-
.../ui/src/layouts/Details/DagBreadcrumb.tsx | 22 +
.../ui/src/layouts/Details/Grid/Grid.test.tsx | 72 +
.../airflow/ui/src/layouts/Details/Grid/Grid.tsx | 79 +-
.../layouts/Details/Grid/GridPaginationButtons.tsx | 127 +-
.../ui/src/layouts/Details/Grid/constants.ts | 11 +
.../Details/Grid/useGridScrollRestore.test.ts | 617 +++-
.../layouts/Details/Grid/useGridScrollRestore.ts | 183 +-
.../airflow/ui/src/layouts/Details/Grid/utils.ts | 5 +-
.../ui/src/layouts/Details/NavTabs.test.tsx | 207 ++
.../src/airflow/ui/src/layouts/Details/NavTabs.tsx | 182 +-
.../airflow/ui/src/layouts/Details/SearchTasks.tsx | 190 ++
...agSwitcherButton.tsx => TaskSwitcherButton.tsx} | 44 +-
.../src/airflow/ui/src/layouts/Nav/Nav.tsx | 3 +-
.../airflow/ui/src/pages/Dag/Overview/Overview.tsx | 1 +
.../Dashboard/Stats/DagImportErrorsModal.test.tsx | 59 +
.../pages/Dashboard/Stats/DagImportErrorsModal.tsx | 2 +-
.../src/airflow/ui/src/pages/ReactPlugin.tsx | 4 +-
.../ui/src/pages/Task/Overview/Overview.tsx | 6 +-
.../airflow/ui/tests/e2e/specs/task-tries.spec.ts | 4 +-
airflow-core/src/airflow/ui/tsconfig.dev.json | 2 +-
airflow-core/src/airflow/utils/db_cleanup.py | 93 +-
airflow-core/tests/unit/always/test_connection.py | 14 +-
.../tests/unit/always/test_providers_manager.py | 32 +
.../tests/unit/api/common/test_airflow_health.py | 80 +-
.../core_api/routes/public/test_connections.py | 35 +-
.../execution_api/versions/head/test_callbacks.py | 188 ++
.../{v2026_10_30 => v2027_02_28}/test_callbacks.py | 14 +-
.../unit/api_fastapi/test_lazy_response_fields.py | 338 ++
.../unit/cli/commands/test_api_server_command.py | 19 +
.../unit/cli/commands/test_gunicorn_monitor.py | 2 +-
airflow-core/tests/unit/jobs/test_base_job.py | 29 +
airflow-core/tests/unit/jobs/test_scheduler_job.py | 137 +-
airflow-core/tests/unit/models/test_deadline.py | 13 +-
.../tests/unit/models/test_deadline_alert.py | 57 +-
.../tests/unit/models/test_serialized_dag.py | 64 +-
.../tests/unit/models/test_taskinstance.py | 167 +-
airflow-core/tests/unit/utils/test_db_cleanup.py | 348 +-
.../airflowctl/api/datamodels/auth_generated.py | 2 +-
.../src/airflowctl/api/datamodels/generated.py | 2 +-
airflow-e2e-tests/pyproject.toml | 2 +-
chart/README.md | 1 +
.../otel-collector/otel-collector-deployment.yaml | 5 +-
.../otel_collector/test_otel_collector.py | 21 +
.../helm_tests/security/test_security_context.py | 16 +-
chart/values.schema.json | 2 +-
chart/values.yaml | 2 +
contributing-docs/15_node_environment_setup.rst | 5 +-
contributing-docs/18_contribution_workflow.rst | 5 +-
contributing-docs/25_maintainer_pr_triage.md | 14 +-
contributing-docs/32_open_pull_request_limit.rst | 11 +-
dev/README_RELEASE_AIRFLOWCTL.md | 14 +-
dev/README_RELEASE_PYTHON_CLIENT.md | 14 +-
dev/breeze/doc/ci/02_images.md | 6 +-
dev/breeze/doc/ci/04_selective_checks.md | 74 +-
dev/breeze/doc/ci/05_workflows.md | 14 +-
.../doc/ci/08_fork_ci_for_external_contributors.md | 117 +-
dev/breeze/doc/images/output_build-docs.svg | 12 +-
dev/breeze/doc/images/output_build-docs.txt | 2 +-
...tput_release-management_add-back-references.svg | 12 +-
...tput_release-management_add-back-references.txt | 2 +-
...elease-management_classify-provider-changes.svg | 4 +-
...elease-management_classify-provider-changes.txt | 2 +-
...management_generate-issue-content-providers.svg | 4 +-
...management_generate-issue-content-providers.txt | 2 +-
...ease-management_generate-providers-metadata.svg | 12 +-
...ease-management_generate-providers-metadata.txt | 2 +-
...e-management_prepare-provider-distributions.svg | 4 +-
...e-management_prepare-provider-distributions.txt | 2 +-
...e-management_prepare-provider-documentation.svg | 4 +-
...e-management_prepare-provider-documentation.txt | 2 +-
.../output_release-management_publish-docs.svg | 12 +-
.../output_release-management_publish-docs.txt | 2 +-
...output_sbom_generate-providers-requirements.svg | 14 +-
...output_sbom_generate-providers-requirements.txt | 2 +-
.../images/output_workflow-run_publish-docs.svg | 12 +-
.../images/output_workflow-run_publish-docs.txt | 2 +-
dev/breeze/pyproject.toml | 2 +-
.../airflow_breeze/commands/kubernetes_commands.py | 2 +-
.../commands/release_management_commands.py | 9 +-
.../src/airflow_breeze/commands/ui_commands.py | 7 +-
.../files/hardened_os_deps_image_digests.json | 15 +-
.../files/hardened_python_image_digests.json | 16 +-
dev/breeze/src/airflow_breeze/global_constants.py | 8 +-
.../src/airflow_breeze/utils/fork_ci_gate.py | 2 +-
.../src/airflow_breeze/utils/fork_ci_messages.py | 28 +-
.../src/airflow_breeze/utils/fork_ci_reconcile.py | 110 +-
.../src/airflow_breeze/utils/import_graph.py | 308 ++
.../src/airflow_breeze/utils/selective_checks.py | 169 +-
.../src/airflow_breeze/utils/verification_plan.py | 24 +-
dev/breeze/tests/test_fork_ci_gate.py | 2 +-
dev/breeze/tests/test_fork_ci_messages.py | 17 +
dev/breeze/tests/test_fork_ci_reconcile.py | 143 +-
dev/breeze/tests/test_import_graph.py | 122 +
.../tests/test_release_management_commands.py | 46 +
dev/breeze/tests/test_selective_checks.py | 376 ++-
dev/breeze/tests/test_verification_plan.py | 31 +-
dev/breeze/tests/test_verify_commands.py | 2 +-
dev/breeze/uv.lock | 140 +-
.../react_plugin_template/package.json | 4 +-
.../react_plugin_template/pnpm-lock.yaml | 1441 ++++----
dev/verify_airflow_ctl_rc.sh | 16 +-
dev/verify_python_client_rc.sh | 17 +-
docker-stack-docs/README.md | 8 +-
docker-stack-docs/build-arg-ref.rst | 2 +-
docker-stack-docs/build.rst | 4 +-
docker-stack-docs/changelog.rst | 7 +
.../customizing/add-build-essential-custom.sh | 2 +-
.../docker-examples/customizing/custom-sources.sh | 2 +-
.../customizing/pypi-dev-runtime-deps.sh | 2 +-
.../customizing/pypi-extras-and-deps.sh | 2 +-
.../customizing/pypi-selected-version.sh | 2 +-
.../restricted/restricted_environments.sh | 2 +-
docker-stack-docs/index.rst | 8 +-
docs/spelling_wordlist.txt | 1 +
generated/provider_metadata.json | 554 ++--
go-sdk/adr/0009-task-loop-authoring-interface.md | 245 ++
go-sdk/airflow/enums_test.go | 14 +-
go-sdk/pkg/execution/client.go | 8 +-
go-sdk/pkg/execution/client_test.go | 20 +-
go-sdk/pkg/execution/genmodels/gen.go | 5 +-
go-sdk/pkg/execution/genmodels/gen/main.go | 225 +-
go-sdk/pkg/execution/genmodels/gen/main_test.go | 169 +
go-sdk/pkg/execution/genmodels/models.gen.go | 102 +-
go-sdk/pkg/execution/genmodels/time.go | 84 +
go-sdk/pkg/execution/genmodels/time_test.go | 236 ++
go-sdk/pkg/execution/integration_test.go | 11 +-
go-sdk/pkg/execution/messages.go | 128 +-
go-sdk/pkg/execution/messages_test.go | 218 +-
go-sdk/pkg/execution/task_runner.go | 79 +-
go-sdk/pkg/execution/task_runner_test.go | 89 -
go-sdk/pkg/execution/trigger_runner.go | 11 +-
go-sdk/sdk/context.go | 5 +-
java-sdk/DEVELOPMENT.md | 15 +-
java-sdk/adr/0003-task-loop-authoring-interface.md | 327 ++
.../test_kubernetes_pod_operator.py | 2 +-
providers/.last_release_date.txt | 2 +-
providers/.pre-commit-config.yaml | 2 +-
providers/amazon/README.rst | 4 +-
providers/amazon/docs/changelog.rst | 9 +-
providers/amazon/docs/connections/duckdb_aws.rst | 104 +
providers/amazon/docs/index.rst | 4 +-
providers/amazon/docs/operators/duckdb.rst | 37 +-
providers/amazon/provider.yaml | 2 +-
providers/amazon/pyproject.toml | 4 +-
.../airflow/providers/amazon/aws/hooks/duckdb.py | 48 +-
.../src/airflow/providers/amazon/aws/hooks/s3.py | 1 -
.../tests/unit/amazon/aws/hooks/test_duckdb.py | 44 +-
.../amazon/tests/unit/amazon/aws/hooks/test_s3.py | 13 +
.../tests/unit/apache/hive/plugins/test_hive.py | 21 +-
.../celery/executors/celery_executor_utils.py | 10 +
.../unit/celery/executors/test_celery_executor.py | 42 +
.../cncf/kubernetes/utils/xcom_sidecar.py | 2 +-
.../system/cncf/kubernetes/example_kubernetes.py | 2 +-
.../cncf/kubernetes/example_kubernetes_async.py | 2 +-
.../unit/cncf/kubernetes/operators/test_pod.py | 6 +-
providers/common/ai/README.rst | 1 +
providers/common/ai/docs/changelog.rst | 10 +
.../common/ai/docs/connections/pydantic_ai.rst | 5 +-
providers/common/ai/docs/durable_execution.rst | 48 +-
providers/common/ai/docs/frameworks/index.rst | 3 +-
.../common/ai/docs/frameworks/openai_agents.rst | 127 +-
providers/common/ai/docs/index.rst | 1 +
providers/common/ai/docs/observability.rst | 15 +-
providers/common/ai/docs/operators/agent.rst | 6 +-
providers/common/ai/docs/redirects.txt | 1 +
providers/common/ai/docs/sandbox/backends.rst | 827 -----
providers/common/ai/docs/sandbox/backends/boat.rst | 151 +
.../common/ai/docs/sandbox/backends/custom.rst | 95 +
.../common/ai/docs/sandbox/backends/index.rst | 82 +
providers/common/ai/docs/sandbox/backends/islo.rst | 107 +
.../common/ai/docs/sandbox/backends/modal.rst | 183 +
.../ai/docs/sandbox/backends/opensandbox.rst | 93 +
.../common/ai/docs/sandbox/backends/openshell.rst | 206 ++
providers/common/ai/docs/sandbox/backends/sbx.rst | 71 +
providers/common/ai/docs/sandbox/configuration.rst | 2 +-
providers/common/ai/docs/sandbox/index.rst | 6 +-
providers/common/ai/docs/self_hosted_models.rst | 103 +
providers/common/ai/docs/toolsets/custom.rst | 5 +-
providers/common/ai/docs/toolsets/index.rst | 6 +-
providers/common/ai/docs/troubleshooting.rst | 8 +-
.../ai/docs/use_cases/explain_revenue_anomaly.rst | 8 +-
providers/common/ai/provider.yaml | 1 +
providers/common/ai/pyproject.toml | 1 +
.../airflow/providers/common/ai/durable/base.py | 7 +-
.../providers/common/ai/durable/capability.py | 137 +-
.../providers/common/ai/durable/fingerprint.py | 8 +-
.../airflow/providers/common/ai/durable/journal.py | 135 +-
.../providers/common/ai/durable/openai_agents.py | 279 +-
.../providers/common/ai/durable/replay_usage.py | 3 +-
...urable.py => example_openai_agents_approval.py} | 66 +-
.../src/airflow/providers/common/ai/exceptions.py | 18 +-
.../providers/common/ai/get_provider_info.py | 5 +-
.../airflow/providers/common/ai/hooks/ollama.py | 98 +
.../providers/common/ai/hooks/pydantic_ai.py | 106 +-
.../airflow/providers/common/ai/operators/agent.py | 11 +-
.../ai/plugins/www/src/components/ModelPanel.tsx | 30 +-
.../ai/plugins/www/src/hooks/useModelInfo.ts | 14 +-
.../common/ai/plugins/www/src/model-api.ts | 35 +-
.../common/ai/plugins/www/tests/model-api.test.ts | 22 +
.../common/ai/plugins/www/tests/model.test.mjs | 39 +
.../airflow/providers/common/ai/tools/__init__.py | 41 +-
.../providers/common/ai/tools/_from_toolset.py | 244 +-
.../src/airflow/providers/common/ai/tools/adk.py | 10 +-
.../airflow/providers/common/ai/tools/anthropic.py | 12 +-
.../providers/common/ai/tools/claude_agent_sdk.py | 10 +-
.../providers/common/ai/tools/openai_agents.py | 61 +-
.../airflow/providers/common/ai/tools/strands.py | 10 +-
.../airflow/providers/common/ai/toolsets/hook.py | 22 +-
.../unit/common/ai/durable/test_capability.py | 351 +-
.../tests/unit/common/ai/durable/test_journal.py | 73 +
.../unit/common/ai/durable/test_openai_agents.py | 812 ++++-
.../ai/tests/unit/common/ai/hooks/test_ollama.py | 139 +
.../tests/unit/common/ai/hooks/test_pydantic_ai.py | 204 +-
.../unit/common/ai/tools/test__from_toolset.py | 54 +-
.../unit/common/ai/tools/test_claude_agent_sdk.py | 8 +
.../unit/common/ai/tools/test_openai_agents.py | 12 +-
.../ai/tests/unit/common/ai/tools/test_tools.py | 225 +-
.../ai/tests/unit/common/ai/toolsets/test_hook.py | 69 +
.../src/airflow/providers/databricks/exceptions.py | 5 +-
.../providers/databricks/hooks/databricks_base.py | 6 +-
.../providers/databricks/operators/databricks.py | 38 +-
.../tests/unit/databricks/hooks/test_databricks.py | 25 +
.../unit/databricks/operators/test_databricks.py | 73 +-
.../providers/edge3/plugins/www/package.json | 8 +-
.../providers/edge3/plugins/www/pnpm-lock.yaml | 1546 +++++----
.../ftp/src/airflow/providers/ftp/hooks/ftp.py | 10 +-
providers/ftp/tests/unit/ftp/hooks/test_ftp.py | 37 +-
providers/google/README.rst | 28 +-
providers/google/docs/index.rst | 28 +-
providers/google/pyproject.toml | 28 +-
.../marketing_platform/hooks/display_video.py | 4 +-
providers/hashicorp/docs/index.rst | 2 +-
providers/hashicorp/pyproject.toml | 2 +-
{airflow-core => providers/huggingface}/.gitignore | 0
{chart => providers/huggingface}/LICENSE | 0
NOTICE => providers/huggingface/NOTICE | 0
providers/{opsgenie => huggingface}/README.rst | 22 +-
providers/huggingface/docs/artifacts.rst | 63 +
.../dataquality => huggingface}/docs/changelog.rst | 2 +-
.../huggingface/docs/commits.rst | 8 +-
providers/{hashicorp => huggingface}/docs/conf.py | 2 +-
.../huggingface/docs/connections/huggingface.rst | 43 +
.../huggingface/docs/connections/index.rst | 8 +
providers/huggingface/docs/index.rst | 164 +
.../docs/installing-providers-from-sources.rst | 0
.../docs/integration-logos/HuggingFace.png | Bin 0 -> 12072 bytes
providers/huggingface/docs/operators/datasets.rst | 217 ++
providers/huggingface/docs/security.rst | 52 +
providers/huggingface/provider.yaml | 60 +
.../{singularity => huggingface}/pyproject.toml | 23 +-
.../huggingface/src/airflow}/__init__.py | 0
.../huggingface/src/airflow/providers}/__init__.py | 0
.../src/airflow/providers/huggingface}/__init__.py | 4 +-
.../providers/huggingface/assets}/__init__.py | 0
.../providers/huggingface/assets/huggingface.py | 53 +
.../providers/huggingface/get_provider_info.py | 70 +
.../providers/huggingface/hooks}/__init__.py | 0
.../providers/huggingface/hooks/huggingface.py | 156 +
.../providers/huggingface/operators}/__init__.py | 0
.../providers/huggingface/operators/datasets.py | 782 +++++
.../{airbyte => huggingface}/tests/conftest.py | 0
.../huggingface/tests/system}/__init__.py | 0
.../tests/system/huggingface}/__init__.py | 0
.../tests/system/huggingface/example_read_only.py | 69 +
.../tests/system/huggingface/example_write.py | 250 ++
.../huggingface/tests/unit}/__init__.py | 0
.../tests/unit/huggingface}/__init__.py | 0
.../tests/unit/huggingface/assets}/__init__.py | 0
.../unit/huggingface/assets/test_huggingface.py | 66 +
.../tests/unit/huggingface/hooks}/__init__.py | 0
.../unit/huggingface/hooks/test_huggingface.py | 174 +
.../tests/unit/huggingface/operators}/__init__.py | 0
.../unit/huggingface/operators/test_datasets.py | 768 +++++
.../tests/unit/openai/operators/test_openai.py | 20 +-
.../tests/system/openlineage/manual_state.py | 10 +
providers/standard/README.rst | 6 +-
providers/standard/docs/changelog.rst | 4 +-
providers/standard/docs/index.rst | 6 +-
providers/standard/provider.yaml | 2 +-
providers/standard/pyproject.toml | 6 +-
.../src/airflow/providers/standard/__init__.py | 2 +-
.../providers/standard/sensors/external_task.py | 53 +-
.../unit/standard/sensors/test_external_task.py | 281 +-
pyproject.toml | 12 +-
registry/package.json | 2 +-
registry/pnpm-lock.yaml | 94 +-
registry/src/_includes/base.njk | 2 +
registry/src/css/main.css | 41 +-
registry/src/durable.njk | 4 +-
registry/src/explore.njk | 2 +-
registry/src/stats.njk | 2 +-
scripts/ci/docker-compose/integration-redis.yml | 2 +-
scripts/ci/docker-compose/remove-sources.yml | 1 +
scripts/ci/docker-compose/tests-sources.yml | 1 +
scripts/ci/install_breeze.sh | 2 +-
scripts/ci/prek/check_i18n_json.py | 65 +-
scripts/ci/prek/ts_compile_lint_ui.py | 5 +-
scripts/tests/ci/prek/test_check_i18n_json.py | 98 +
scripts/tools/setup_breeze | 2 +-
.../secrets_masker/secrets_masker.py | 22 +
.../tests/secrets_masker/test_secrets_masker.py | 29 +
task-sdk/src/airflow/sdk/api/client.py | 7 +
.../src/airflow/sdk/api/datamodels/_generated.py | 23 +-
task-sdk/src/airflow/sdk/definitions/deadline.py | 15 +
.../sdk/execution_time/callback_supervisor.py | 26 +-
task-sdk/tests/task_sdk/api/test_client.py | 34 +
.../execution_time/test_callback_supervisor.py | 88 +-
ts-sdk/adr/0003-task-loop-authoring-interface.md | 214 ++
uv.lock | 3505 +++++++++++---------
418 files changed, 23865 insertions(+), 8744 deletions(-)
create mode 100644
airflow-core/adr/lang-sdk/0016-mapped-tasks-across-lang-sdks.md
create mode 100644
airflow-core/adr/lang-sdk/0017-task-loops-across-lang-sdks.md
create mode 100644 airflow-core/newsfragments/71850.bugfix.rst
create mode 100644 airflow-core/newsfragments/76453.significant.rst
copy providers/amazon/src/airflow/providers/amazon/aws/utils/sagemaker.py =>
airflow-core/src/airflow/api_fastapi/execution_api/datamodels/callback.py (67%)
create mode 100644 airflow-core/src/airflow/ui/.oxlintrc.json
copy airflow-core/src/airflow/ui/{src/hooks/useShowTeam.ts =>
rules/airflow-plugin/index.js} (71%)
create mode 100644
airflow-core/src/airflow/ui/rules/airflow-plugin/no-react-namespace-types.js
copy
java-sdk/sdk/src/test/kotlin/org/apache/airflow/example/DagSourceFixtures.kt =>
airflow-core/src/airflow/ui/rules/airflow-plugin/no-react-namespace-types.test.js
(51%)
delete mode 100644 airflow-core/src/airflow/ui/rules/i18n.js
delete mode 100644 airflow-core/src/airflow/ui/rules/i18next.js
delete mode 100644 airflow-core/src/airflow/ui/rules/jsonc.js
delete mode 100644 airflow-core/src/airflow/ui/rules/off.js
delete mode 100644 airflow-core/src/airflow/ui/rules/perfectionist.js
delete mode 100644 airflow-core/src/airflow/ui/rules/rem.js
delete mode 100644 airflow-core/src/airflow/ui/rules/stylistic.js
create mode 100644
airflow-core/src/airflow/ui/src/layouts/Details/NavTabs.test.tsx
create mode 100644
airflow-core/src/airflow/ui/src/layouts/Details/SearchTasks.tsx
copy airflow-core/src/airflow/ui/src/layouts/Details/{DagSwitcherButton.tsx =>
TaskSwitcherButton.tsx} (53%)
create mode 100644
airflow-core/src/airflow/ui/src/pages/Dashboard/Stats/DagImportErrorsModal.test.tsx
copy airflow-core/tests/unit/api_fastapi/execution_api/versions/{v2026_10_30
=> v2027_02_28}/test_callbacks.py (75%)
create mode 100644
airflow-core/tests/unit/api_fastapi/test_lazy_response_fields.py
create mode 100644 dev/breeze/src/airflow_breeze/utils/import_graph.py
create mode 100644 dev/breeze/tests/test_import_graph.py
create mode 100644 go-sdk/adr/0009-task-loop-authoring-interface.md
create mode 100644 go-sdk/pkg/execution/genmodels/gen/main_test.go
create mode 100644 go-sdk/pkg/execution/genmodels/time.go
create mode 100644 go-sdk/pkg/execution/genmodels/time_test.go
delete mode 100644 go-sdk/pkg/execution/task_runner_test.go
create mode 100644 java-sdk/adr/0003-task-loop-authoring-interface.md
create mode 100644 providers/amazon/docs/connections/duckdb_aws.rst
delete mode 100644 providers/common/ai/docs/sandbox/backends.rst
create mode 100644 providers/common/ai/docs/sandbox/backends/boat.rst
create mode 100644 providers/common/ai/docs/sandbox/backends/custom.rst
create mode 100644 providers/common/ai/docs/sandbox/backends/index.rst
create mode 100644 providers/common/ai/docs/sandbox/backends/islo.rst
create mode 100644 providers/common/ai/docs/sandbox/backends/modal.rst
create mode 100644 providers/common/ai/docs/sandbox/backends/opensandbox.rst
create mode 100644 providers/common/ai/docs/sandbox/backends/openshell.rst
create mode 100644 providers/common/ai/docs/sandbox/backends/sbx.rst
copy
providers/common/ai/src/airflow/providers/common/ai/example_dags/{example_openai_agents_durable.py
=> example_openai_agents_approval.py} (52%)
create mode 100644
providers/common/ai/src/airflow/providers/common/ai/hooks/ollama.py
create mode 100644
providers/common/ai/tests/unit/common/ai/hooks/test_ollama.py
copy {airflow-core => providers/huggingface}/.gitignore (100%)
copy {chart => providers/huggingface}/LICENSE (100%)
copy NOTICE => providers/huggingface/NOTICE (100%)
copy providers/{opsgenie => huggingface}/README.rst (77%)
create mode 100644 providers/huggingface/docs/artifacts.rst
copy providers/{common/dataquality => huggingface}/docs/changelog.rst (96%)
copy airflow-core/docs/release_notes.rst =>
providers/huggingface/docs/commits.rst (86%)
copy providers/{hashicorp => huggingface}/docs/conf.py (98%)
create mode 100644 providers/huggingface/docs/connections/huggingface.rst
copy scripts/ci/license-templates/LICENSE.rst =>
providers/huggingface/docs/connections/index.rst (87%)
create mode 100644 providers/huggingface/docs/index.rst
copy providers/{airbyte =>
huggingface}/docs/installing-providers-from-sources.rst (100%)
create mode 100644 providers/huggingface/docs/integration-logos/HuggingFace.png
create mode 100644 providers/huggingface/docs/operators/datasets.rst
create mode 100644 providers/huggingface/docs/security.rst
create mode 100644 providers/huggingface/provider.yaml
copy providers/{singularity => huggingface}/pyproject.toml (88%)
copy {airflow-core/tests/integration =>
providers/huggingface/src/airflow}/__init__.py (100%)
copy {airflow-core/tests/integration =>
providers/huggingface/src/airflow/providers}/__init__.py (100%)
copy providers/{modal/src/airflow/providers/modal =>
huggingface/src/airflow/providers/huggingface}/__init__.py (92%)
copy {airflow-core/src/airflow/_shared =>
providers/huggingface/src/airflow/providers/huggingface/assets}/__init__.py
(100%)
create mode 100644
providers/huggingface/src/airflow/providers/huggingface/assets/huggingface.py
create mode 100644
providers/huggingface/src/airflow/providers/huggingface/get_provider_info.py
copy {airflow-core/src/airflow/_shared =>
providers/huggingface/src/airflow/providers/huggingface/hooks}/__init__.py
(100%)
create mode 100644
providers/huggingface/src/airflow/providers/huggingface/hooks/huggingface.py
copy {airflow-core/src/airflow/_shared =>
providers/huggingface/src/airflow/providers/huggingface/operators}/__init__.py
(100%)
create mode 100644
providers/huggingface/src/airflow/providers/huggingface/operators/datasets.py
copy providers/{airbyte => huggingface}/tests/conftest.py (100%)
copy {airflow-core/tests/integration =>
providers/huggingface/tests/system}/__init__.py (100%)
copy {airflow-core/src/airflow/_shared =>
providers/huggingface/tests/system/huggingface}/__init__.py (100%)
create mode 100644
providers/huggingface/tests/system/huggingface/example_read_only.py
create mode 100644
providers/huggingface/tests/system/huggingface/example_write.py
copy {airflow-core/tests/integration =>
providers/huggingface/tests/unit}/__init__.py (100%)
copy {airflow-core/src/airflow/_shared =>
providers/huggingface/tests/unit/huggingface}/__init__.py (100%)
copy {airflow-core/src/airflow/_shared =>
providers/huggingface/tests/unit/huggingface/assets}/__init__.py (100%)
create mode 100644
providers/huggingface/tests/unit/huggingface/assets/test_huggingface.py
copy {airflow-core/src/airflow/_shared =>
providers/huggingface/tests/unit/huggingface/hooks}/__init__.py (100%)
create mode 100644
providers/huggingface/tests/unit/huggingface/hooks/test_huggingface.py
copy {airflow-core/src/airflow/_shared =>
providers/huggingface/tests/unit/huggingface/operators}/__init__.py (100%)
create mode 100644
providers/huggingface/tests/unit/huggingface/operators/test_datasets.py
create mode 100644 scripts/tests/ci/prek/test_check_i18n_json.py
create mode 100644 ts-sdk/adr/0003-task-loop-authoring-interface.md