Fixed Office365 tool __init__.py files, tests, and get_tools() function (#7046)

## Description
Added Office365 tool modules to `__init__.py` files
## Issue
As described in Issue
https://github.com/hwchase17/langchain/issues/6936, the Office365
toolkit can't be loaded easily because it is not included in the
`__init__.py` files.
## Reviewer
@dev2049
pull/7224/head^2
Santiago Delgado 12 months ago committed by GitHub
parent 8a7c95e555
commit fa55c5a16b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -12,6 +12,7 @@ from langchain.agents.agent_toolkits.jira.toolkit import JiraToolkit
from langchain.agents.agent_toolkits.json.base import create_json_agent
from langchain.agents.agent_toolkits.json.toolkit import JsonToolkit
from langchain.agents.agent_toolkits.nla.toolkit import NLAToolkit
from langchain.agents.agent_toolkits.office365.toolkit import O365Toolkit
from langchain.agents.agent_toolkits.openapi.base import create_openapi_agent
from langchain.agents.agent_toolkits.openapi.toolkit import OpenAPIToolkit
from langchain.agents.agent_toolkits.pandas.base import create_pandas_dataframe_agent
@ -64,4 +65,5 @@ __all__ = [
"FileManagementToolkit",
"PlayWrightBrowserToolkit",
"AzureCognitiveServicesToolkit",
"O365Toolkit",
]

@ -30,9 +30,9 @@ class O365Toolkit(BaseToolkit):
def get_tools(self) -> List[BaseTool]:
"""Get the tools in the toolkit."""
return [
O365SearchEvents(account=self.account),
O365CreateDraftMessage(account=self.account),
O365SearchEmails(account=self.account),
O365SendEvent(account=self.account),
O365SendMessage(account=self.account),
O365SearchEvents(),
O365CreateDraftMessage(),
O365SearchEmails(),
O365SendEvent(),
O365SendMessage(),
]

@ -38,6 +38,12 @@ from langchain.tools.interaction.tool import StdInInquireTool
from langchain.tools.jira.tool import JiraAction
from langchain.tools.json.tool import JsonGetValueTool, JsonListKeysTool
from langchain.tools.metaphor_search import MetaphorSearchResults
from langchain.tools.office365.create_draft_message import O365CreateDraftMessage
from langchain.tools.office365.events_search import O365SearchEvents
from langchain.tools.office365.messages_search import O365SearchEmails
from langchain.tools.office365.send_event import O365SendEvent
from langchain.tools.office365.send_message import O365SendMessage
from langchain.tools.office365.utils import authenticate
from langchain.tools.openapi.utils.api_models import APIOperation
from langchain.tools.openapi.utils.openapi_utils import OpenAPISpec
from langchain.tools.openweathermap.tool import OpenWeatherMapQueryRun
@ -148,6 +154,12 @@ __all__ = [
"MoveFileTool",
"NavigateBackTool",
"NavigateTool",
"O365SearchEmails",
"O365SearchEvents",
"O365CreateDraftMessage",
"O365SendMessage",
"O365SendEvent",
"authenticate",
"OpenAPISpec",
"OpenWeatherMapQueryRun",
"PubmedQueryRun",

@ -55,6 +55,12 @@ _EXPECTED = [
"MoveFileTool",
"NavigateBackTool",
"NavigateTool",
"O365SearchEmails",
"O365SearchEvents",
"O365CreateDraftMessage",
"O365SendMessage",
"O365SendEvent",
"authenticate",
"OpenAPISpec",
"OpenWeatherMapQueryRun",
"PubmedQueryRun",

@ -9,11 +9,16 @@ import pytest
from langchain.tools.base import BaseTool
from langchain.tools.gmail.base import GmailBaseTool
from langchain.tools.office365.base import O365BaseTool
from langchain.tools.playwright.base import BaseBrowserTool
def get_non_abstract_subclasses(cls: Type[BaseTool]) -> List[Type[BaseTool]]:
to_skip = {BaseBrowserTool, GmailBaseTool} # Abstract but not recognized
to_skip = {
BaseBrowserTool,
GmailBaseTool,
O365BaseTool,
} # Abstract but not recognized
subclasses = []
for subclass in cls.__subclasses__():
if (

Loading…
Cancel
Save