This is an automated email from the ASF dual-hosted git repository.
github-actions[bot] pushed a change to branch ci-upgrade-main
in repository https://gitbox.apache.org/repos/asf/airflow.git
omit 21cfc82bf12 [main] CI: Upgrade important CI environment
add 1948af1fedb Add unit tests for PrestoToGCSOperator (#75559)
add 57793d01d9b Import TriggerRule from airflow.sdk in docs examples
(#76522)
add 776e9d2e78a Cache the dialect on PostgresHook and MsSqlHook (#75656)
add cc786845ad3 Build the ADBC database URI from the connection fields
(#74454)
add 31beac5deea disable external entities in SAML idp response parsing
(#71423)
add 750617c3867 Fix entry-point plugins reported as duplicates on
RHEL/Fedora venvs (#74531)
add f14247a5938 Add a general debugging guide to the troubleshooting doc
(#71457)
add ebe49645e34 Move XCom filter param models into execution API
datamodels (#76536)
add 437f6be3cec Run the durable OpenAI Agents tests in the agent framework
CI job (#76500)
add 7625b59a85e Key LLM batch and durable Strands state on the task loop
iteration (#76201)
add d46d97fa8d5 Note the unparseable-output case in OpenAIResponseOperator
XCom docs (#74519)
add b7ceab0372b Support Workload Identity Federation in Snowflake REST API
authentication (#75810)
add f82542a453a Name the caller's own MCP client and durable setup in
Common AI errors (#76495)
add 8e922e329ab Refactor isinstance dispatching with polymorphism (#74634)
add e3c21b77c97 Update French (fr) UI translations to 100% coverage
(#76460)
add dcbf21690e8 Pass AssetStateStoreAccessors into response_check_path
Callable in HttpEventTrigger (#72287)
add 6cf8ed6c63a UI: Translate the Spanish strings added since the last
pass (#76466)
add b5ab0a15174 UI: Defer React plugin compatibility runtime (#75083)
add b0581660e45 Support fail_on_reject on every LLM approval operator
(#74493)
add 24464f6d728 Keep Dag and deadline list serialization off the API
server event loop (#76525)
add 020259387b9 Support multimodal prompts with enable_hitl_review in
AgentOperator (#74389)
add c4eaf4b8399 Prepare providers release 2026-11-03 (#76490)
add 3eacdb97dfd Sanitize error message in DatabricksExecutionTrigger
(#70385)
add 8529c41db15 Add environment_variables to MWAA Serverless create/update
workflow operators (#76496)
add c8d8df3353d Add `@task.modal` to run Python functions on Modal without
Airflow in the image (#76502)
add bca1e144da1 Add raphaelauv to fork-ci-gate (#76538)
add 71a19df58c5 Write container logs to the task log in deferrable
AzureContainerInstancesOperator (#76330)
add 6bacb63888f Complete Dutch translations (2026-10-05) (#74286)
add 77762c256df Add `partition_key` to the `DagRun Finished` log line
(#76557)
add 1f4bc05aa0a Allow Human-in-the-loop tasks to be answered while still
running (#75413)
add c7fcba0106a Stop holding openai below 3 in Airflow's CI image and
constraints (#76503)
add 322c178e05b Fix duplicated asset events when name_prefix_pattern
matches all (#74816)
add 1fe65f5f13a Keep parallel tool results replayable across retries in
OpenAI Agents durable runs (#76015)
add 24482b78abf [main] CI: Upgrade important CI environment
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 (21cfc82bf12)
\
N -- N -- N refs/heads/ci-upgrade-main (24482b78abf)
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:
.github/fork-ci-gate.toml | 1 +
.github/workflows/agent-framework-tests.yml | 2 +-
Dockerfile | 2 +-
Dockerfile.ci | 19 +-
airflow-core/docs/best-practices.rst | 4 +-
airflow-core/docs/faq.rst | 3 +-
airflow-core/docs/migrations-ref.rst | 4 +-
airflow-core/docs/troubleshooting.rst | 129 ++++
.../airflow/api_fastapi/common/parameters/misc.py | 10 +-
.../api_fastapi/core_api/datamodels/dags.py | 4 +-
.../api_fastapi/core_api/datamodels/ui/deadline.py | 2 +-
.../api_fastapi/core_api/routes/public/assets.py | 2 +-
.../api_fastapi/core_api/routes/public/dags.py | 7 +-
.../api_fastapi/core_api/routes/public/hitl.py | 6 +-
.../airflow/api_fastapi/core_api/routes/ui/dags.py | 9 +-
.../api_fastapi/core_api/routes/ui/deadlines.py | 2 +-
.../api_fastapi/execution_api/datamodels/xcom.py | 19 +
.../api_fastapi/execution_api/routes/hitl.py | 16 +-
.../api_fastapi/execution_api/routes/xcoms.py | 22 +-
.../api_fastapi/execution_api/versions/__init__.py | 4 +-
.../execution_api/versions/v2025_08_10.py | 2 +-
.../execution_api/versions/v2026_10_30.py | 12 +
.../versions/v2026_10_30_xcom_params.py | 35 -
.../src/airflow/jobs/triggerer_job_runner.py | 23 +-
...54_3_5_0_add_idempotency_key_to_hitl_detail.py} | 28 +-
airflow-core/src/airflow/models/dagrun.py | 4 +-
airflow-core/src/airflow/models/hitl.py | 43 ++
.../airflow/ui/public/i18n/locales/es/browse.json | 1 +
.../airflow/ui/public/i18n/locales/es/common.json | 8 +-
.../ui/public/i18n/locales/es/components.json | 4 +
.../src/airflow/ui/public/i18n/locales/es/dag.json | 4 +-
.../airflow/ui/public/i18n/locales/es/dags.json | 1 +
.../airflow/ui/public/i18n/locales/fr/admin.json | 3 +
.../airflow/ui/public/i18n/locales/fr/browse.json | 2 +
.../airflow/ui/public/i18n/locales/fr/common.json | 34 +-
.../ui/public/i18n/locales/fr/components.json | 13 +
.../src/airflow/ui/public/i18n/locales/fr/dag.json | 68 +-
.../airflow/ui/public/i18n/locales/fr/dags.json | 14 +-
.../ui/public/i18n/locales/fr/dashboard.json | 1 +
.../airflow/ui/public/i18n/locales/fr/hitl.json | 1 +
.../airflow/ui/public/i18n/locales/nl/admin.json | 26 +-
.../airflow/ui/public/i18n/locales/nl/assets.json | 18 +-
.../airflow/ui/public/i18n/locales/nl/browse.json | 34 +
.../airflow/ui/public/i18n/locales/nl/common.json | 227 +++++-
.../ui/public/i18n/locales/nl/components.json | 57 +-
.../src/airflow/ui/public/i18n/locales/nl/dag.json | 139 +++-
.../airflow/ui/public/i18n/locales/nl/dags.json | 60 +-
.../ui/public/i18n/locales/nl/dashboard.json | 24 +-
.../airflow/ui/public/i18n/locales/nl/hitl.json | 1 +
.../ui/src/components/NeedsReviewButton.tsx | 3 +-
.../airflow/ui/src/hooks/useRequiredActionTabs.ts | 6 +-
airflow-core/src/airflow/ui/src/main.tsx | 19 +-
.../HITLTaskInstances/HITLTaskInstances.test.tsx | 11 +-
.../pages/HITLTaskInstances/HITLTaskInstances.tsx | 4 +-
.../src/airflow/ui/src/pages/ReactPlugin.test.tsx | 25 +-
.../src/airflow/ui/src/pages/ReactPlugin.tsx | 14 +-
airflow-core/src/airflow/ui/src/utils/hitl.test.ts | 48 +-
airflow-core/src/airflow/ui/src/utils/hitl.ts | 12 +-
.../src/utils/registerPluginDependencies.test.ts | 59 ++
.../utils/registerPluginDependencies.ts} | 39 +-
airflow-core/src/airflow/utils/db.py | 2 +-
.../tests/unit/always/test_project_structure.py | 1 -
.../core_api/routes/public/test_assets.py | 2 +
.../core_api/routes/public/test_dags.py | 18 +
.../core_api/routes/public/test_hitl.py | 46 ++
.../api_fastapi/core_api/routes/ui/test_dags.py | 30 +
.../core_api/routes/ui/test_deadlines.py | 12 +
.../execution_api/versions/head/test_hitl.py | 45 ++
.../tests/unit/dag_processing/test_processor.py | 1 +
airflow-core/tests/unit/models/test_dagrun.py | 33 +
contributing-docs/12_provider_distributions.rst | 6 +-
.../13_airflow_dependencies_and_extras.rst | 5 +
.../airflow_breeze/commands/kubernetes_commands.py | 2 +-
.../files/hardened_os_deps_image_digests.json | 24 +-
.../files/hardened_python_image_digests.json | 8 +-
.../src/airflow_breeze/utils/verification_plan.py | 5 +
dev/breeze/uv.lock | 12 +-
docs/spelling_wordlist.txt | 3 +
generated/known_sdk_imports_in_core.txt | 2 +-
.../pkg/execution/genmodels/discriminators.gen.go | 4 +
go-sdk/pkg/execution/genmodels/models.gen.go | 83 ++-
go-sdk/schema/supervisor-schema.json | 72 ++
.../test_kubernetes_pod_operator.py | 2 +-
providers/.last_release_date.txt | 2 +-
providers/alibaba/README.rst | 6 +-
providers/alibaba/docs/changelog.rst | 12 +
providers/alibaba/docs/index.rst | 6 +-
providers/alibaba/provider.yaml | 3 +-
providers/alibaba/pyproject.toml | 6 +-
.../src/airflow/providers/alibaba/__init__.py | 2 +-
providers/amazon/README.rst | 10 +-
providers/amazon/docs/changelog.rst | 55 ++
providers/amazon/docs/index.rst | 8 +-
providers/amazon/provider.yaml | 3 +-
providers/amazon/pyproject.toml | 8 +-
.../src/airflow/providers/amazon/__init__.py | 2 +-
.../airflow/providers/amazon/aws/hooks/base_aws.py | 6 +-
.../amazon/aws/operators/mwaa_serverless.py | 21 +
.../tests/unit/amazon/aws/hooks/test_base_aws.py | 43 ++
.../amazon/aws/operators/test_mwaa_serverless.py | 52 ++
providers/apache/arrow/README.rst | 6 +-
providers/apache/arrow/docs/changelog.rst | 19 +
providers/apache/arrow/docs/connections/adbc.rst | 22 +-
providers/apache/arrow/docs/index.rst | 6 +-
providers/apache/arrow/provider.yaml | 15 +-
providers/apache/arrow/pyproject.toml | 6 +-
.../src/airflow/providers/apache/arrow/__init__.py | 2 +-
.../providers/apache/arrow/get_provider_info.py | 10 +-
.../airflow/providers/apache/arrow/hooks/adbc.py | 43 +-
.../tests/unit/apache/arrow/hooks/test_adbc.py | 64 ++
providers/apache/hive/README.rst | 6 +-
providers/apache/hive/docs/changelog.rst | 13 +
providers/apache/hive/docs/index.rst | 6 +-
providers/apache/hive/provider.yaml | 3 +-
providers/apache/hive/pyproject.toml | 6 +-
.../src/airflow/providers/apache/hive/__init__.py | 2 +-
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/cncf/kubernetes/README.rst | 6 +-
providers/cncf/kubernetes/docs/changelog.rst | 34 +
providers/cncf/kubernetes/docs/index.rst | 6 +-
providers/cncf/kubernetes/provider.yaml | 3 +-
providers/cncf/kubernetes/pyproject.toml | 6 +-
.../airflow/providers/cncf/kubernetes/__init__.py | 2 +-
.../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/docs/approval_gates.rst | 12 +-
providers/common/ai/docs/durable_execution.rst | 2 +-
providers/common/ai/docs/frameworks/anthropic.rst | 4 +-
.../common/ai/docs/frameworks/claude_agent_sdk.rst | 4 +-
providers/common/ai/docs/frameworks/index.rst | 28 +-
.../common/ai/docs/frameworks/openai_agents.rst | 7 +-
providers/common/ai/docs/frameworks/strands.rst | 7 +-
providers/common/ai/docs/hooks/llamaindex.rst | 6 +
providers/common/ai/docs/operators/agent.rst | 7 +-
providers/common/ai/docs/operators/llm.rst | 8 +-
providers/common/ai/docs/operators/llm_batch.rst | 5 +-
providers/common/ai/docs/operators/llm_branch.rst | 4 +-
providers/common/ai/docs/stability.rst | 6 +-
providers/common/ai/docs/troubleshooting.rst | 2 +-
providers/common/ai/provider.yaml | 7 +-
providers/common/ai/pyproject.toml | 10 +-
.../src/airflow/providers/common/ai/batch/state.py | 43 +-
.../providers/common/ai/decorators/agent.py | 7 -
.../airflow/providers/common/ai/durable/journal.py | 70 +-
.../providers/common/ai/durable/openai_agents.py | 64 +-
.../airflow/providers/common/ai/durable/storage.py | 3 +-
.../airflow/providers/common/ai/durable/strands.py | 20 +-
.../src/airflow/providers/common/ai/exceptions.py | 10 +
.../providers/common/ai/get_provider_info.py | 2 +-
.../providers/common/ai/mixins/hitl_review.py | 15 +-
.../airflow/providers/common/ai/operators/agent.py | 8 -
.../airflow/providers/common/ai/operators/llm.py | 46 +-
.../providers/common/ai/operators/llm_batch.py | 8 +-
.../providers/common/ai/operators/llm_branch.py | 29 +-
.../common/ai/operators/llm_file_analysis.py | 3 +-
.../common/ai/operators/llm_schema_compare.py | 3 +-
.../providers/common/ai/operators/llm_sql.py | 7 +-
.../airflow/providers/common/ai/tools/__init__.py | 28 +-
.../src/airflow/providers/common/ai/tools/adk.py | 8 +-
.../airflow/providers/common/ai/tools/anthropic.py | 14 +-
.../providers/common/ai/tools/claude_agent_sdk.py | 9 +-
.../providers/common/ai/tools/openai_agents.py | 9 +-
.../airflow/providers/common/ai/tools/strands.py | 6 +-
.../airflow/providers/common/ai/toolsets/mcp.py | 14 +-
.../providers/common/ai/utils/validation.py | 24 -
.../ai/tests/unit/common/ai/batch/test_state.py | 52 ++
.../tests/unit/common/ai/decorators/test_agent.py | 16 +-
.../tests/unit/common/ai/durable/test_journal.py | 76 ++
.../unit/common/ai/durable/test_openai_agents.py | 486 +++++++++++-
.../tests/unit/common/ai/durable/test_storage.py | 9 +-
.../tests/unit/common/ai/durable/test_strands.py | 18 +
.../tests/unit/common/ai/hooks/test_llamaindex.py | 11 +
.../unit/common/ai/mixins/test_hitl_review.py | 39 +-
.../tests/unit/common/ai/operators/test_agent.py | 30 +-
.../ai/operators/test_llamaindex_embedding.py | 8 +-
.../ai/operators/test_llamaindex_retrieval.py | 11 +-
.../ai/tests/unit/common/ai/operators/test_llm.py | 87 +++
.../unit/common/ai/operators/test_llm_batch.py | 28 +-
.../unit/common/ai/operators/test_llm_branch.py | 9 +-
.../ai/tests/unit/common/ai/tools/test_adk.py | 6 +
.../tests/unit/common/ai/tools/test_anthropic.py | 13 +-
.../unit/common/ai/tools/test_claude_agent_sdk.py | 10 +
.../unit/common/ai/tools/test_openai_agents.py | 6 +
.../ai/tests/unit/common/ai/tools/test_strands.py | 6 +
.../ai/tests/unit/common/ai/tools/test_tools.py | 43 +-
.../ai/tests/unit/common/ai/toolsets/test_mcp.py | 8 +-
.../tests/unit/common/ai/utils/test_validation.py | 32 +-
providers/common/compat/README.rst | 6 +-
providers/common/compat/docs/changelog.rst | 17 +
providers/common/compat/docs/index.rst | 6 +-
providers/common/compat/provider.yaml | 3 +-
providers/common/compat/pyproject.toml | 6 +-
.../airflow/providers/common/compat/__init__.py | 2 +-
providers/common/io/README.rst | 6 +-
providers/common/io/docs/changelog.rst | 12 +
providers/common/io/docs/index.rst | 6 +-
providers/common/io/provider.yaml | 3 +-
providers/common/io/pyproject.toml | 6 +-
.../io/src/airflow/providers/common/io/__init__.py | 2 +-
providers/common/sql/README.rst | 6 +-
providers/common/sql/docs/changelog.rst | 24 +
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 | 8 +-
providers/databricks/docs/changelog.rst | 15 +
providers/databricks/docs/index.rst | 8 +-
providers/databricks/provider.yaml | 3 +-
providers/databricks/pyproject.toml | 8 +-
.../src/airflow/providers/databricks/__init__.py | 2 +-
.../providers/databricks/utils/databricks.py | 20 +-
.../tests/unit/databricks/utils/test_databricks.py | 76 ++
providers/dbt/cloud/README.rst | 6 +-
providers/dbt/cloud/docs/changelog.rst | 13 +
providers/dbt/cloud/docs/index.rst | 6 +-
providers/dbt/cloud/provider.yaml | 3 +-
providers/dbt/cloud/pyproject.toml | 6 +-
.../src/airflow/providers/dbt/cloud/__init__.py | 2 +-
providers/edge3/README.rst | 6 +-
providers/edge3/docs/changelog.rst | 19 +
providers/edge3/docs/index.rst | 6 +-
providers/edge3/provider.yaml | 3 +-
providers/edge3/pyproject.toml | 6 +-
.../edge3/src/airflow/providers/edge3/__init__.py | 2 +-
providers/exasol/README.rst | 6 +-
providers/exasol/docs/changelog.rst | 12 +
providers/exasol/docs/index.rst | 6 +-
providers/exasol/provider.yaml | 3 +-
providers/exasol/pyproject.toml | 6 +-
.../src/airflow/providers/exasol/__init__.py | 2 +-
providers/fab/README.rst | 6 +-
providers/fab/docs/changelog.rst | 52 +-
providers/fab/docs/index.rst | 6 +-
providers/fab/provider.yaml | 3 +-
providers/fab/pyproject.toml | 6 +-
.../fab/src/airflow/providers/fab/__init__.py | 2 +-
providers/ftp/README.rst | 6 +-
providers/ftp/docs/changelog.rst | 12 +
providers/ftp/docs/index.rst | 6 +-
providers/ftp/provider.yaml | 3 +-
providers/ftp/pyproject.toml | 6 +-
.../ftp/src/airflow/providers/ftp/__init__.py | 2 +-
providers/google/README.rst | 15 +-
providers/google/docs/changelog.rst | 64 ++
providers/google/docs/index.rst | 15 +-
providers/google/provider.yaml | 3 +-
providers/google/pyproject.toml | 26 +-
.../src/airflow/providers/google/__init__.py | 2 +-
.../google/cloud/transfers/test_presto_to_gcs.py | 314 ++++++++
providers/http/README.rst | 6 +-
providers/http/docs/changelog.rst | 13 +
providers/http/docs/index.rst | 6 +-
providers/http/docs/triggers.rst | 65 +-
providers/http/provider.yaml | 3 +-
providers/http/pyproject.toml | 6 +-
.../http/src/airflow/providers/http/__init__.py | 2 +-
.../src/airflow/providers/http/triggers/http.py | 14 +-
.../http/tests/unit/http/triggers/test_http.py | 79 ++
providers/keycloak/README.rst | 6 +-
providers/keycloak/docs/changelog.rst | 20 +
providers/keycloak/docs/index.rst | 6 +-
providers/keycloak/provider.yaml | 3 +-
providers/keycloak/pyproject.toml | 6 +-
.../src/airflow/providers/keycloak/__init__.py | 2 +-
providers/microsoft/azure/README.rst | 6 +-
providers/microsoft/azure/docs/changelog.rst | 18 +
providers/microsoft/azure/docs/index.rst | 6 +-
providers/microsoft/azure/provider.yaml | 3 +-
providers/microsoft/azure/pyproject.toml | 6 +-
.../airflow/providers/microsoft/azure/__init__.py | 2 +-
.../azure/operators/container_instances.py | 26 +-
.../azure/operators/test_container_instances.py | 143 ++++
providers/microsoft/mssql/README.rst | 6 +-
providers/microsoft/mssql/docs/changelog.rst | 12 +
providers/microsoft/mssql/docs/index.rst | 6 +-
providers/microsoft/mssql/provider.yaml | 3 +-
providers/microsoft/mssql/pyproject.toml | 6 +-
.../airflow/providers/microsoft/mssql/__init__.py | 2 +-
.../providers/microsoft/mssql/hooks/mssql.py | 3 +-
.../tests/unit/microsoft/mssql/hooks/test_mssql.py | 22 +
providers/modal/docs/index.rst | 13 +-
providers/modal/docs/task_decorator.rst | 179 +++++
providers/modal/docs/usage.rst | 13 +-
providers/modal/provider.yaml | 12 +-
providers/modal/pyproject.toml | 2 +-
.../providers/modal/decorators}/__init__.py | 0
.../airflow/providers/modal/decorators/modal.py | 308 ++++++++
.../src/airflow/providers/modal/exceptions.py | 9 +
.../airflow/providers/modal/get_provider_info.py | 8 +-
.../src/airflow/providers/modal/hooks/modal.py | 80 +-
.../airflow/providers/modal/triggers}/__init__.py | 0
.../src/airflow/providers/modal/triggers/modal.py | 100 +++
.../src/airflow/providers/modal/utils}/__init__.py | 0
.../providers/modal/utils/python_sandbox.py | 156 ++++
.../modal/tests/system}/__init__.py | 0
.../modal/tests/system/modal}/__init__.py | 0
.../modal/tests/system/modal/example_modal_task.py | 80 ++
.../modal/tests/unit/modal/decorators}/__init__.py | 0
.../tests/unit/modal/decorators/test_modal.py | 428 +++++++++++
.../modal/tests/unit/modal/hooks/test_modal.py | 152 ++++
providers/modal/tests/unit/modal/local_sandbox.py | 132 ++++
.../modal/tests/unit/modal/test_exceptions.py | 4 +-
.../modal/tests/unit/modal/triggers}/__init__.py | 0
.../modal/tests/unit/modal/triggers/test_modal.py | 171 +++++
.../modal/tests/unit/modal/utils}/__init__.py | 0
.../tests/unit/modal/utils/test_python_sandbox.py | 163 ++++
providers/mysql/README.rst | 6 +-
providers/mysql/docs/changelog.rst | 12 +
providers/mysql/docs/index.rst | 6 +-
providers/mysql/provider.yaml | 3 +-
providers/mysql/pyproject.toml | 6 +-
.../mysql/src/airflow/providers/mysql/__init__.py | 2 +-
providers/openai/docs/.latest-doc-only-change.txt | 2 +-
.../airflow/providers/openai/operators/openai.py | 4 +-
.../tests/unit/openai/operators/test_openai.py | 29 +-
providers/postgres/README.rst | 6 +-
providers/postgres/docs/changelog.rst | 17 +
providers/postgres/docs/index.rst | 6 +-
providers/postgres/provider.yaml | 3 +-
providers/postgres/pyproject.toml | 6 +-
.../src/airflow/providers/postgres/__init__.py | 2 +-
.../airflow/providers/postgres/hooks/postgres.py | 3 +-
.../tests/unit/postgres/hooks/test_postgres.py | 16 +
providers/presto/README.rst | 6 +-
providers/presto/docs/changelog.rst | 12 +
providers/presto/docs/index.rst | 6 +-
providers/presto/provider.yaml | 3 +-
providers/presto/pyproject.toml | 6 +-
.../src/airflow/providers/presto/__init__.py | 2 +-
providers/sendgrid/README.rst | 6 +-
providers/sendgrid/docs/changelog.rst | 12 +
providers/sendgrid/docs/index.rst | 6 +-
providers/sendgrid/provider.yaml | 3 +-
providers/sendgrid/pyproject.toml | 6 +-
.../src/airflow/providers/sendgrid/__init__.py | 2 +-
providers/smtp/README.rst | 6 +-
providers/smtp/docs/changelog.rst | 12 +
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 | 14 +-
providers/snowflake/docs/changelog.rst | 23 +
.../docs/connections/pydantic_ai_snowflake.rst | 7 +-
providers/snowflake/docs/connections/snowflake.rst | 27 +
providers/snowflake/docs/index.rst | 14 +-
.../snowflake/docs/operators/cortex_agent.rst | 7 +-
providers/snowflake/provider.yaml | 3 +-
providers/snowflake/pyproject.toml | 8 +-
.../src/airflow/providers/snowflake/__init__.py | 2 +-
.../providers/snowflake/hooks/cortex_agent.py | 11 +-
.../airflow/providers/snowflake/hooks/sql_api.py | 5 +-
.../providers/snowflake/utils/_rest_auth.py | 213 +++++-
.../unit/snowflake/hooks/test_cortex_agent.py | 23 +-
.../tests/unit/snowflake/hooks/test_sql_api.py | 24 +-
.../tests/unit/snowflake/utils/test__rest_auth.py | 422 ++++++++++-
providers/ssh/README.rst | 6 +-
providers/ssh/docs/changelog.rst | 12 +
providers/ssh/docs/index.rst | 6 +-
providers/ssh/provider.yaml | 3 +-
providers/ssh/pyproject.toml | 6 +-
.../ssh/src/airflow/providers/ssh/__init__.py | 2 +-
providers/standard/README.rst | 6 +-
providers/standard/docs/changelog.rst | 27 +
providers/standard/docs/index.rst | 6 +-
providers/standard/provider.yaml | 3 +-
providers/standard/pyproject.toml | 6 +-
.../src/airflow/providers/standard/__init__.py | 2 +-
providers/teradata/README.rst | 6 +-
providers/teradata/docs/changelog.rst | 13 +
providers/teradata/docs/index.rst | 6 +-
providers/teradata/provider.yaml | 3 +-
providers/teradata/pyproject.toml | 6 +-
.../src/airflow/providers/teradata/__init__.py | 2 +-
providers/trino/README.rst | 6 +-
providers/trino/docs/changelog.rst | 12 +
providers/trino/docs/index.rst | 6 +-
providers/trino/provider.yaml | 3 +-
providers/trino/pyproject.toml | 6 +-
.../trino/src/airflow/providers/trino/__init__.py | 2 +-
providers/yandex/README.rst | 6 +-
providers/yandex/docs/changelog.rst | 12 +
providers/yandex/docs/index.rst | 6 +-
providers/yandex/provider.yaml | 3 +-
providers/yandex/pyproject.toml | 6 +-
.../src/airflow/providers/yandex/__init__.py | 2 +-
pyproject.toml | 35 +-
scripts/docker/entrypoint_ci.sh | 20 +-
scripts/in_container/run_agent_framework_tests.sh | 65 +-
.../src/airflow_shared/module_loading/__init__.py | 23 +-
.../tests/module_loading/test_entry_points.py | 83 ++-
task-sdk/src/airflow/sdk/api/client.py | 3 +
task-sdk/src/airflow/sdk/execution_time/comms.py | 13 +
.../airflow/sdk/execution_time/request_handlers.py | 10 +
.../airflow/sdk/execution_time/schema/schema.json | 72 ++
.../execution_time/schema/versions/v2027_02_28.py | 9 +-
.../src/airflow/sdk/execution_time/supervisor.py | 4 +
.../airflow/sdk/importers/yaml_importer/builder.py | 158 +---
.../airflow/sdk/importers/yaml_importer/models.py | 159 +++-
task-sdk/tests/task_sdk/api/test_client.py | 21 +
.../task_sdk/execution_time/test_supervisor.py | 40 +-
.../importers/yaml_importer/test_parser.py | 13 +
ts-sdk/schema/supervisor-schema.json | 72 ++
ts-sdk/src/generated/supervisor.ts | 177 +++--
uv.lock | 825 ++++++++++++---------
419 files changed, 8735 insertions(+), 1739 deletions(-)
delete mode 100644
airflow-core/src/airflow/api_fastapi/execution_api/versions/v2026_10_30_xcom_params.py
copy
airflow-core/src/airflow/migrations/versions/{0141_3_4_0_add_timetable_asset_gated_to_dagmodel.py
=> 0154_3_5_0_add_idempotency_key_to_hitl_detail.py} (61%)
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
providers/google/tests/unit/google/cloud/transfers/test_presto_to_gcs.py
create mode 100644 providers/modal/docs/task_decorator.rst
copy {airflow-core/src/airflow/_shared =>
providers/modal/src/airflow/providers/modal/decorators}/__init__.py (100%)
create mode 100644
providers/modal/src/airflow/providers/modal/decorators/modal.py
copy {airflow-core/src/airflow/_shared =>
providers/modal/src/airflow/providers/modal/triggers}/__init__.py (100%)
create mode 100644
providers/modal/src/airflow/providers/modal/triggers/modal.py
copy {airflow-core/src/airflow/_shared =>
providers/modal/src/airflow/providers/modal/utils}/__init__.py (100%)
create mode 100644
providers/modal/src/airflow/providers/modal/utils/python_sandbox.py
copy {airflow-core/tests/integration =>
providers/modal/tests/system}/__init__.py (100%)
copy {airflow-core/src/airflow/_shared =>
providers/modal/tests/system/modal}/__init__.py (100%)
create mode 100644 providers/modal/tests/system/modal/example_modal_task.py
copy {airflow-core/src/airflow/_shared =>
providers/modal/tests/unit/modal/decorators}/__init__.py (100%)
create mode 100644 providers/modal/tests/unit/modal/decorators/test_modal.py
create mode 100644 providers/modal/tests/unit/modal/local_sandbox.py
copy {airflow-core/src/airflow/_shared =>
providers/modal/tests/unit/modal/triggers}/__init__.py (100%)
create mode 100644 providers/modal/tests/unit/modal/triggers/test_modal.py
copy {airflow-core/src/airflow/_shared =>
providers/modal/tests/unit/modal/utils}/__init__.py (100%)
create mode 100644
providers/modal/tests/unit/modal/utils/test_python_sandbox.py