This is an automated email from the ASF dual-hosted git repository.
Lee-W 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 386c0ba69eb Export `DataFusionToolset`, `AgentSkillsToolset` and
`LoggingToolset`… (#74449)
386c0ba69eb is described below
commit 386c0ba69eb274e041513f6e58cfa39ba95b6dff
Author: Wei Lee <[email protected]>
AuthorDate: Fri Oct 9 15:07:02 2026 +0900
Export `DataFusionToolset`, `AgentSkillsToolset` and `LoggingToolset`…
(#74449)
---
providers/common/ai/docs/toolsets/index.rst | 26 +++++++++++++++-------
.../providers/common/ai/toolsets/__init__.py | 9 ++++++++
2 files changed, 27 insertions(+), 8 deletions(-)
diff --git a/providers/common/ai/docs/toolsets/index.rst
b/providers/common/ai/docs/toolsets/index.rst
index d9aacae2d5f..34f5d07fb8d 100644
--- a/providers/common/ai/docs/toolsets/index.rst
+++ b/providers/common/ai/docs/toolsets/index.rst
@@ -96,14 +96,24 @@ toolset to log its calls, the other converts a toolset for
a LangChain agent.
Importing toolsets
------------------
-Six toolsets import from the ``airflow.providers.common.ai.toolsets`` package
root:
-``HookToolset``, ``SQLToolset``, ``ObjectStorageToolset``, ``MCPToolset``,
-``SandboxToolset`` and ``ManagedAgentToolset``. Import the other three from
their own
-submodules::
-
- from airflow.providers.common.ai.toolsets.datafusion import
DataFusionToolset
- from airflow.providers.common.ai.toolsets.logging import LoggingToolset
- from airflow.providers.common.ai.toolsets.skills import AgentSkillsToolset
+Every toolset imports from the ``airflow.providers.common.ai.toolsets``
package root::
+
+ from airflow.providers.common.ai.toolsets import (
+ AgentSkillsToolset,
+ DataFusionToolset,
+ HookToolset,
+ LoggingToolset,
+ ManagedAgentToolset,
+ MCPToolset,
+ ObjectStorageToolset,
+ SandboxToolset,
+ SQLToolset,
+ )
+
+``SQLToolset`` and ``DataFusionToolset`` depend on optional extras. If the
extra is not
+installed, the first access to the name raises
``AirflowOptionalProviderFeatureException``.
+``MCPToolset`` imports without its extra; the missing dependency raises
``ImportError``
+when the toolset first connects to the MCP server.
Every toolset here implements pydantic-ai's
`AbstractToolset <https://ai.pydantic.dev/toolsets/>`__ interface, so it works
in any
diff --git
a/providers/common/ai/src/airflow/providers/common/ai/toolsets/__init__.py
b/providers/common/ai/src/airflow/providers/common/ai/toolsets/__init__.py
index 771fd0c5a84..9c997f50c4d 100644
--- a/providers/common/ai/src/airflow/providers/common/ai/toolsets/__init__.py
+++ b/providers/common/ai/src/airflow/providers/common/ai/toolsets/__init__.py
@@ -19,16 +19,21 @@
from __future__ import annotations
from airflow.providers.common.ai.toolsets.hook import HookToolset
+from airflow.providers.common.ai.toolsets.logging import LoggingToolset
from airflow.providers.common.ai.toolsets.managed_agent import (
BaseManagedAgentToolset,
ManagedAgentToolset,
)
from airflow.providers.common.ai.toolsets.object_storage import
ObjectStorageToolset
from airflow.providers.common.ai.toolsets.sandbox import SandboxToolset
+from airflow.providers.common.ai.toolsets.skills import AgentSkillsToolset
__all__ = [
+ "AgentSkillsToolset",
"BaseManagedAgentToolset",
+ "DataFusionToolset",
"HookToolset",
+ "LoggingToolset",
"MCPToolset",
"ManagedAgentToolset",
"ObjectStorageToolset",
@@ -61,4 +66,8 @@ def __getattr__(name: str):
raise AirflowOptionalProviderFeatureException(e)
return MCPToolset
+ if name == "DataFusionToolset":
+ from airflow.providers.common.ai.toolsets.datafusion import
DataFusionToolset
+
+ return DataFusionToolset
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")