This is an automated email from the ASF dual-hosted git repository.
hussein-awala pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/main by this push:
new fb6534f1db4 Prepare deferred providers RC2 for 2026-10-29 (#75947)
fb6534f1db4 is described below
commit fb6534f1db4c57cf34be78c57d07a481d21ff7af
Author: Hussein Awala <[email protected]>
AuthorDate: Thu Oct 29 13:00:28 2026 +0100
Prepare deferred providers RC2 for 2026-10-29 (#75947)
* Prepare deferred providers release 2026-10-29
The providers held from the previous wave need renewed review against the
merged fixes and clear guidance for consumers affected by the approved behavior
changes.
* Refresh deferred provider notes after Azure recovery fix
* Describe Azure release changes relative to the stable version
---
providers/.last_release_date.txt | 2 +-
providers/common/ai/README.rst | 55 +++++++++++-----------
providers/common/ai/docs/changelog.rst | 42 +++++++++++++----
providers/common/ai/docs/structured_output.rst | 10 ++--
providers/common/ai/provider.yaml | 2 +-
.../providers/common/ai/plugins/www/src/model.tsx | 4 +-
providers/microsoft/azure/docs/changelog.rst | 20 ++++++--
providers/microsoft/azure/provider.yaml | 2 +-
providers/openlineage/docs/changelog.rst | 24 ++++++++++
providers/openlineage/provider.yaml | 2 +-
10 files changed, 112 insertions(+), 51 deletions(-)
diff --git a/providers/.last_release_date.txt b/providers/.last_release_date.txt
index 68dabea1962..fe72c1261f2 100644
--- a/providers/.last_release_date.txt
+++ b/providers/.last_release_date.txt
@@ -1 +1 @@
-2026-10-20
+2026-10-29
diff --git a/providers/common/ai/README.rst b/providers/common/ai/README.rst
index d2e0d5835e2..2fc139628d4 100644
--- a/providers/common/ai/README.rst
+++ b/providers/common/ai/README.rst
@@ -84,33 +84,34 @@ Dependent package
Optional dependencies
----------------------
-===============
=======================================================================================================================================
-Extra Dependencies
-===============
=======================================================================================================================================
-``anthropic`` ``pydantic-ai-slim[anthropic]>=2.36.0``, ``anthropic>=1.1.0``
-``bedrock`` ``pydantic-ai-slim[bedrock]>=2.36.0``
-``google`` ``pydantic-ai-slim[google]>=2.36.0``
-``openai`` ``pydantic-ai-slim[openai]>=2.36.0``, ``openai>=2.47.0``
-``typesafe`` ``typesafe-sdk>=0.6.0``
-``mcp`` ``pydantic-ai-slim[mcp]>=2.36.0``
-``modal`` ``apache-airflow-providers-modal``, ``modal>=1.5.2``
-``opensandbox`` ``opensandbox>=1.1.0``
-``boat`` ``boat-sdk>=1.9.3``
-``openshell`` ``openshell>=0.1.2,<0.2``, ``grpcio>=1.78.0``,
``protobuf>=6.31.1``
-``code-mode`` ``pydantic-ai-harness[codemode]>=0.35.0``
-``shields`` ``pydantic-ai-shields>=0.3.4``
-``skills`` ``apache-airflow-providers-git>=0.4.0``,
``pydantic-ai-skills>=1.2.0,<2``
-``islo`` ``islo>=0.3.19``
-``avro`` ``fastavro>=1.10.0; python_version < "3.14"``,
``fastavro>=1.12.1; python_version >= "3.14"``
-``parquet`` ``pyarrow>=18.0.0; python_version < '3.14'``,
``pyarrow>=22.0.0; python_version >= '3.14'``
-``sql`` ``apache-airflow-providers-common-sql>=2.2.0``,
``sqlglot>=30.0.0``
-``common.sql`` ``apache-airflow-providers-common-sql>=2.2.0``
-``langchain`` ``langchain>=1.0.0``
-``llamaindex`` ``dataclasses-json>=0.6.7``, ``llama-index-core>=0.14.5``,
``llama-index-embeddings-openai>=0.6.0``, ``llama-index-llms-openai>=0.6.8``
-``pdf`` ``pypdf>=4.0.0``
-``docx`` ``python-docx>=1.0.0``
-``git`` ``apache-airflow-providers-git``
-===============
=======================================================================================================================================
+====================
=======================================================================================================================================
+Extra Dependencies
+====================
=======================================================================================================================================
+``anthropic`` ``pydantic-ai-slim[anthropic]>=2.36.0``,
``anthropic>=1.1.0,<2``
+``bedrock`` ``pydantic-ai-slim[bedrock]>=2.36.0``
+``google`` ``pydantic-ai-slim[google]>=2.36.0``
+``openai`` ``pydantic-ai-slim[openai]>=2.36.0``, ``openai>=2.47.0``
+``typesafe`` ``typesafe-sdk>=0.6.0``
+``mcp`` ``pydantic-ai-slim[mcp]>=2.36.0``
+``modal`` ``apache-airflow-providers-modal``, ``modal>=1.5.2``
+``opensandbox`` ``opensandbox>=1.1.0``
+``boat`` ``boat-sdk>=1.9.3``
+``openshell`` ``openshell>=0.1.2,<0.2``, ``grpcio>=1.78.0``,
``protobuf>=6.31.1``
+``code-mode`` ``pydantic-ai-harness[codemode]>=0.35.0``
+``shields`` ``pydantic-ai-shields>=0.3.4``
+``skills`` ``apache-airflow-providers-git>=0.4.0``,
``pydantic-ai-skills>=1.2.0,<2``
+``islo`` ``islo>=0.3.19``
+``avro`` ``fastavro>=1.10.0; python_version < "3.14"``,
``fastavro>=1.12.1; python_version >= "3.14"``
+``parquet`` ``pyarrow>=18.0.0; python_version < '3.14'``,
``pyarrow>=22.0.0; python_version >= '3.14'``
+``sql`` ``apache-airflow-providers-common-sql>=2.2.0``,
``sqlglot>=30.0.0``
+``common.sql`` ``apache-airflow-providers-common-sql>=2.2.0``
+``langchain`` ``langchain>=1.0.0``
+``llamaindex`` ``dataclasses-json>=0.6.7``,
``llama-index-core>=0.14.5``, ``llama-index-embeddings-openai>=0.6.0``,
``llama-index-llms-openai>=0.6.8``
+``pdf`` ``pypdf>=4.0.0``
+``docx`` ``python-docx>=1.0.0``
+``git`` ``apache-airflow-providers-git``
+``claude-agent-sdk`` ``claude-agent-sdk>=0.2.160``
+====================
=======================================================================================================================================
The changelog for the provider package can be found in the
`changelog
<https://airflow.apache.org/docs/apache-airflow-providers-common-ai/1.1.0/changelog.html>`_.
diff --git a/providers/common/ai/docs/changelog.rst
b/providers/common/ai/docs/changelog.rst
index 1d288a62d4e..bc15df33ebf 100644
--- a/providers/common/ai/docs/changelog.rst
+++ b/providers/common/ai/docs/changelog.rst
@@ -25,7 +25,12 @@
Changelog
---------
+1.1.0
+.....
+
.. note::
+ **Significant change: AgentOperator output serialization**
+
The worker cannot register a model class for XCom deserialization when
``output_type`` is a
list of output types such as ``[Summary, int]``, an output marker such as
``ToolOutput(Summary)``, an output function, a ``TypeAliasType`` or a
``NewType``. For these
@@ -36,8 +41,8 @@ Changelog
model is still dumped with plain ``model_dump()`` when
``serialize_output=True`` is set or on
Airflow < 3.3.
- The new behaviour changes the type that a downstream task receives after an
upgrade. Versions
- 1.0.0 and 1.1.0 pushed these models as model instances. They dumped a
top-level model with
+ The new behaviour changes the type that a downstream task receives after an
upgrade.
+ Version 1.0.0 pushed these models as model instances. It dumped a top-level
model with
plain ``model_dump()`` only in HITL review, with ``serialize_output=True``
or on
Airflow < 3.3. A downstream task loaded a model instance when the model's
class was listed in
``[core] allowed_deserialization_classes``, or on Airflow >= 3.3 when
another task in the
@@ -49,15 +54,16 @@ Changelog
:doc:`structured_output`.
.. warning::
- The following changes are breaking for code written against 1.0.0:
+ The following changes affect code written against 1.0.0:
* ``PydanticAIHook``: when a connection supplies credentials (password or
host) and the provider class
rejects the resulting keyword arguments (``TypeError``), the hook now
raises ``ValueError``. In 1.0.0
it logged a warning and fell back to environment-variable authentication,
which could authenticate
as a different identity than the connection. Fix the connection fields for
that provider, or remove
the credentials from the connection if environment-variable authentication
is what you want.
- * ``airflow.providers.common.ai.policies.retry``: importing it without the
Airflow ``RetryPolicy``
- support (Airflow older than 3.3) now raises
``AirflowOptionalProviderFeatureException`` instead of
+ * ``MCPHook.get_conn()`` when optional MCP dependencies are missing, and
+ ``airflow.providers.common.ai.policies.retry`` when imported without the
Airflow ``RetryPolicy``
+ support (Airflow older than 3.3) now raise
``AirflowOptionalProviderFeatureException`` instead of
``ImportError``. It is not an ``ImportError`` subclass (it derives from
``AirflowException``), so a
Dag that guards the import with ``except ImportError:`` as in the 1.0.0
example Dag now fails to
parse on those versions. Catch both, importing the exception from
@@ -81,7 +87,7 @@ Changelog
the two hooks.
.. note::
- ``LoggingToolset`` is removed from the public API. Importing it from either
+ The experimental ``LoggingToolset`` is removed from the public API.
Importing it from either
``airflow.providers.common.ai.toolsets.LoggingToolset`` (exported from the
package since
1.0.0, see #74449 under 1.0.0 Features below) or
``airflow.providers.common.ai.toolsets.logging.LoggingToolset`` (public
since 0.1.0) now
@@ -91,28 +97,46 @@ Changelog
(import it from ``airflow.providers.common.ai.toolsets.logging``); its
``logger`` argument
sets the logger. See :doc:`stability`.
-1.1.0
-.....
-
Features
~~~~~~~~
+* ``Publish usage, run id and model name from LLMOperator's subclasses
(#75208)``
+* ``Let a generic pydanticai connection set a default model provider (#75909)``
+* ``Add async aget_conn and acreate_agent to PydanticAIHook (#74150)``
+* ``Use Common AI toolsets with the Claude Agent SDK through AirflowTools
(#74026)``
+* ``Support multimodal prompts with require_approval in LLM operators
(#74388)``
* ``Add emit_message_history to record an agent transcript without seeding it
(#74811)``
* ``Push LLMOperator's token usage and cost to XCom (#74355)``
Bug Fixes
~~~~~~~~~
+* ``Report invalid Common AI hook configuration instead of silently changing
authentication (#74451)``
+* ``Load Common AI plugin tabs when the browser reaches Airflow on another
origin (#75522)``
+* ``Fix Common AI's AI Model tab for tasks inside a task loop (#75518)``
+* ``Serialize unregistered AgentOperator output models as JSON-compatible
dictionaries (#74729)``
* ``Use common.compat mask_secret in MCPHook (#75064)``
* ``Preserve SQL table allowlist validation with newer sqlglot and add OpenAI
Decisions and System One to the connection vendor list (#73822)``
Misc
~~~~
+* ``Keep the Anthropic SDK below 2 until pydantic-ai supports it (#75640)``
+* ``List Meta among Common AI external services and recognize pydantic-ai 2.59
providers (#75641)``
+* ``Replace the experimental LoggingToolset API with ToolLoggingCapability
(#74694)``
+* ``Bump Vite to 8.1.6 (#75357)``
* ``Remove unused mypy suppressions in common providers (#75257)``
+Doc-only
+~~~~~~~~
+
+* ``Rewrite the Common AI sandbox configuration page around what users set up
(#75826)``
+* ``Add an LLM task loop example that stops on a dollar or token budget
(#75516)``
+
.. Below changes are excluded from the changelog. Move them to
appropriate section above if needed. Do not delete the lines(!):
+ * ``Fix flaky OpenShell background-child wrapper test (#75823)``
+ * ``Prepare providers release 2026-10-20 (#75209)``
* ``Number task loop iterations from one instead of zero (#74773)``
* ``Stop parallel prek hooks racing on __pycache__ cleanup (#73823)``
* ``Fix Modal contract test importing a private class from its old location
(#75188)``
diff --git a/providers/common/ai/docs/structured_output.rst
b/providers/common/ai/docs/structured_output.rst
index 8be2063916e..e8ca62d062a 100644
--- a/providers/common/ai/docs/structured_output.rst
+++ b/providers/common/ai/docs/structured_output.rst
@@ -74,24 +74,24 @@ model class. ``AgentOperator`` and ``@task.agent``
therefore push a model
inside a list, tuple or dict as a JSON-compatible dict for every
``output_type``, not only for the output types listed above.
-Upgrading from common.ai 1.0.0 or 1.1.0 can change the type that a downstream
+Upgrading from common.ai 1.0.0 to 1.1.0 can change the type that a downstream
task receives:
-* On Airflow 3.3 and later, common.ai 1.0.0 and 1.1.0 pushed each model in the
+* On Airflow 3.3 and later, common.ai 1.0.0 pushed each model in the
output as a model instance when ``output_type`` was one of the output types
- listed above. They dumped a top-level model with plain ``model_dump()`` only
+ listed above. It dumped a top-level model with plain ``model_dump()`` only
when ``serialize_output=True`` was set or in HITL review. A downstream task
loaded the instance when the class was listed in
``[core] allowed_deserialization_classes`` or when another task in the same
Dag declared the class as its ``output_type``. That downstream task now gets
a dict, and ``result.field`` raises ``AttributeError``.
* In HITL review on Airflow 3.3 and later without ``serialize_output=True``,
- common.ai 1.0.0 and 1.1.0 dumped a top-level model of these output types with
+ common.ai 1.0.0 dumped a top-level model of these output types with
plain ``model_dump()`` after the reviewer approved the model. Values such as
``datetime``, ``date``, ``timedelta``, ``UUID`` and ``Decimal`` in that model
now arrive as strings, for example ``"PT1M30S"`` for a ``timedelta``. Tuples
and sets in that model now arrive as lists.
-* Before Airflow 3.3, common.ai 1.0.0 and 1.1.0 pushed a model inside a list,
+* Before Airflow 3.3, common.ai 1.0.0 pushed a model inside a list,
tuple or dict as a model instance, for every ``output_type``. A downstream
task that loaded the instance because the class was listed in
``[core] allowed_deserialization_classes`` now gets a dict.
diff --git a/providers/common/ai/provider.yaml
b/providers/common/ai/provider.yaml
index 80ac9b8c31e..0fe3ff1df40 100644
--- a/providers/common/ai/provider.yaml
+++ b/providers/common/ai/provider.yaml
@@ -23,7 +23,7 @@ description: |
state: ready
lifecycle: production
-source-date-epoch: 1792489528
+source-date-epoch: 1793262026
build-system: hatchling
# note that those versions are maintained by release manager - do not update
them manually
versions:
diff --git
a/providers/common/ai/src/airflow/providers/common/ai/plugins/www/src/model.tsx
b/providers/common/ai/src/airflow/providers/common/ai/plugins/www/src/model.tsx
index 25431e72acd..e4fd93ccd34 100644
---
a/providers/common/ai/src/airflow/providers/common/ai/plugins/www/src/model.tsx
+++
b/providers/common/ai/src/airflow/providers/common/ai/plugins/www/src/model.tsx
@@ -75,7 +75,9 @@ const PluginComponent: FC<PluginComponentProps> = (props) => {
* Chakra semantic tokens handle light/dark mode automatically.
*/
const WrappedPluginComponent: FC<PluginComponentProps> = (props) => {
- const system = (globalThis as Record<string, unknown>).ChakraUISystem ??
localSystem;
+ const system =
+ (globalThis as typeof globalThis & { ChakraUISystem?: typeof localSystem
}).ChakraUISystem ??
+ localSystem;
return (
<ChakraProvider value={system}>
diff --git a/providers/microsoft/azure/docs/changelog.rst
b/providers/microsoft/azure/docs/changelog.rst
index 189adce46ee..d20ae314a88 100644
--- a/providers/microsoft/azure/docs/changelog.rst
+++ b/providers/microsoft/azure/docs/changelog.rst
@@ -32,18 +32,27 @@ Changelog
.. note::
- ``PowerBIDatasetRefreshOperator`` now starts refreshes on the worker, so
workers need access
- to the Power BI service. On Airflow 3.3 and later it resumes an existing
refresh by default.
- Set ``durable=False`` to submit a fresh refresh on each retry and cancel
refreshes after
- polling errors. ``MSGraphAsyncOperator`` recovery is opt-in with
``durable=True``.
+ On Airflow 3.3 and later, ``PowerBIDatasetRefreshOperator`` resumes an
existing refresh
+ by default. Durable execution starts refreshes on the worker, so workers
need access
+ to the Power BI service. Set ``durable=False`` to preserve triggerer-only
access:
+ the trigger starts a fresh refresh on each try and cancels it after
polling errors.
+ On Airflow versions before 3.3, durable execution is disabled and this
triggerer-only
+ behavior is preserved automatically. ``MSGraphAsyncOperator`` recovery
remains opt-in
+ with ``durable=True`` and requires Airflow 3.3 or later.
Features
~~~~~~~~
* ``Add AzureAISearchHook to the Microsoft Azure provider (#74290)``
-* ``Make the PowerBI refresh and MSGraph operators durable (#74675)``
+* ``Make the PowerBI refresh and MSGraph operators durable (#74675, #75272)``
* ``Add WasbDagBundle to load Dags from Azure Blob Storage (#67016)``
+Bug Fixes
+~~~~~~~~~
+
+* ``Fix MSGraphSensor timeout being reset on every re-defer (#75774)``
+* ``Detect when enhanced Power BI refreshes finish or fail (#74600)``
+
Misc
~~~~
@@ -52,6 +61,7 @@ Misc
.. Below changes are excluded from the changelog. Move them to
appropriate section above if needed. Do not delete the lines(!):
+ * ``Prepare providers release 2026-10-20 (#75209)``
15.2.1
......
diff --git a/providers/microsoft/azure/provider.yaml
b/providers/microsoft/azure/provider.yaml
index 783cfd5dcad..32cbe5c1a52 100644
--- a/providers/microsoft/azure/provider.yaml
+++ b/providers/microsoft/azure/provider.yaml
@@ -21,7 +21,7 @@ description: |
`Microsoft Azure <https://azure.microsoft.com/>`__
state: ready
lifecycle: production
-source-date-epoch: 1792489528
+source-date-epoch: 1793262026
# Note that those versions are maintained by release manager - do not update
them manually
# with the exception of case where other provider in sources has >= new
provider version.
# In such case adding >= NEW_VERSION and bumping to NEW_VERSION in a provider
have
diff --git a/providers/openlineage/docs/changelog.rst
b/providers/openlineage/docs/changelog.rst
index 941394fcb35..c1dcda5e0a5 100644
--- a/providers/openlineage/docs/changelog.rst
+++ b/providers/openlineage/docs/changelog.rst
@@ -45,15 +45,39 @@ Changelog
lineage names. Backends that identify jobs by namespace and name can show
the
renamed jobs separately from historical jobs after the upgrade.
+.. note::
+
+ **Significant change: task notes in the Airflow run facet**
+
+ The Airflow run facet no longer includes ``taskInstance.note``. Earlier
versions
+ emitted this field for Airflow 2 task events and scheduler-generated
``FAIL``
+ events, but not for Airflow 3 manual state changes.
+
+ Update consumers to tolerate the missing field. Retrieve task notes through
+ Airflow's supported API when needed.
+
Features
~~~~~~~~
+* ``Fix task loop information and tests for OpenLineage provider (#74752)``
+* ``Add OpenLineage parent and root job-type macros (#75303)``
+* ``Allow excluding datasets from OpenLineage events by pattern and hook
(#71312, #75921)``
* ``Send task inlets and outlets as JSON lists in OpenLineage facet (#74666)``
* ``Distinguish SQL hook lineage query jobs from native query jobs (#73655)``
* ``Attribute lineage runs and asset dependencies to task attempts on Airflow
3.4 (#74347)``
+Bug Fixes
+~~~~~~~~~
+
+* ``Fix OpenLineage task events lost for Dags with mapped tasks (#75860)``
+* ``Use task instance end date as OpenLineage terminal event time (#75328)``
+* ``Surface errors from OpenLineage database info lookups without losing
lineage (#74805)``
+
.. Below changes are excluded from the changelog. Move them to
appropriate section above if needed. Do not delete the lines(!):
+ * ``Add OpenLineage system tests for the emission policy (#75678)``
+ * ``Keep service logs and OpenLineage e2e noise out of the job output
(#75811)``
+ * ``Prepare providers release 2026-10-20 (#75209)``
* ``Add non serializable asset's extra to openlineage e2e tests (#75094)``
* ``Stop the OpenLineage execution timeout test flaking on busy CI runners
(#74927)``
* ``Make asset event batching opt-in (#68517)``
diff --git a/providers/openlineage/provider.yaml
b/providers/openlineage/provider.yaml
index 0febefc41e0..f29cdc3f246 100644
--- a/providers/openlineage/provider.yaml
+++ b/providers/openlineage/provider.yaml
@@ -24,7 +24,7 @@ description: |
state: ready
lifecycle: production
-source-date-epoch: 1792489528
+source-date-epoch: 1793262026
# Note that those versions are maintained by release manager - do not update
them manually
# with the exception of case where other provider in sources has >= new
provider version.
# In such case adding >= NEW_VERSION and bumping to NEW_VERSION in a provider
have