code: """**Tools** are classes that an Agent uses to interact with the world.
  
  Each tool has a **description**. Agent uses the description to choose the right
  tool for the job.
  
  **Class hierarchy:**
  
  .. code-block::
  
      ToolMetaclass --> BaseTool --> <name>Tool  # Examples: AIPluginTool, BaseGraphQLTool
                                     <name>      # Examples: BraveSearch, HumanInputRun
  
  **Main helpers:**
  
  .. code-block::
  
      CallbackManagerForToolRun, AsyncCallbackManagerForToolRun
  """
  import warnings
  from typing import Any
  
  from langchain_core._api import LangChainDeprecationWarning
  from langchain_core.tools import BaseTool, StructuredTool, Tool, tool
  
  from langchain.utils.interactive_env import is_interactive_env
  
  # Used for internal purposes
  _DEPRECATED_TOOLS = {"PythonAstREPLTool", "PythonREPLTool"}
  
  
  def _import_python_tool_PythonAstREPLTool() -> Any:
      raise ImportError(
          "This tool has been moved to langchain experiment. "
          "This tool has access to a python REPL. "
          "For best practices make sure to sandbox this tool. "
          "Read https://github.com/langchain-ai/langchain/blob/master/SECURITY.md "
          "To keep using this code as is, install langchain experimental and "
          "update relevant imports replacing 'langchain' with 'langchain_experimental'"
      )
  
  
  def _import_python_tool_PythonREPLTool() -> Any:
      raise ImportError(
          "This tool has been moved to langchain experiment. "
          "This tool has access to a python REPL. "
          "For best practices make sure to sandbox this tool. "
          "Read https://github.com/langchain-ai/langchain/blob/master/SECURITY.md "
          "To keep using this code as is, install langchain experimental and "
          "update relevant imports replacing 'langchain' with 'langchain_experimental'"
      )
  
  
  def __getattr__(name: str) -> Any:
      if name == "PythonAstREPLTool":
          return _import_python_tool_PythonAstREPLTool()
      elif name == "PythonREPLTool":
          return _import_python_tool_PythonREPLTool()
      else:
          from langchain_community import tools
  
          # If not in interactive env, raise warning.
          if not is_interactive_env():
              warnings.warn(
                  "Importing tools from langchain is deprecated. Importing from "
                  "langchain will no longer be supported as of langchain==0.2.0. "
                  "Please import from langchain-community instead:\n\n"
                  f"`from langchain_community.tools import {name}`.\n\n"
                  "To install langchain-community run "
                  "`pip install -U langchain-community`.",
                  category=LangChainDeprecationWarning,
              )
  
          return getattr(tools, name)
  
  
  __all__ = [
      "AINAppOps",
      "AINOwnerOps",
      "AINRuleOps",
      "AINTransfer",
      "AINValueOps",
      "AIPluginTool",
      "APIOperation",
      "ArxivQueryRun",
      "AzureCogsFormRecognizerTool",
      "AzureCogsImageAnalysisTool",
      "AzureCogsSpeech2TextTool",
      "AzureCogsText2SpeechTool",
      "AzureCogsTextAnalyticsHealthTool",
      "BaseGraphQLTool",
      "BaseRequestsTool",
      "BaseSQLDatabaseTool",
      "BaseSparkSQLTool",
      "BaseTool",
      "BearlyInterpreterTool",
      "BingSearchResults",
      "BingSearchRun",
      "BraveSearch",
      "ClickTool",
      "CopyFileTool",
      "CurrentWebPageTool",
      "DeleteFileTool",
      "DuckDuckGoSearchResults",
      "DuckDuckGoSearchRun",
      "E2BDataAnalysisTool",
      "EdenAiExplicitImageTool",
      "EdenAiObjectDetectionTool",
      "EdenAiParsingIDTool",
      "EdenAiParsingInvoiceTool",
      "EdenAiSpeechToTextTool",
      "EdenAiTextModerationTool",
      "EdenAiTextToSpeechTool",
      "EdenaiTool",
      "ElevenLabsText2SpeechTool",
      "ExtractHyperlinksTool",
      "ExtractTextTool",
      "FileSearchTool",
      "GetElementsTool",
      "GmailCreateDraft",
      "GmailGetMessage",
      "GmailGetThread",
      "GmailSearch",
      "GmailSendMessage",
      "GoogleCloudTextToSpeechTool",
      "GooglePlacesTool",
      "GoogleSearchResults",
      "GoogleSearchRun",
      "GoogleSerperResults",
      "GoogleSerperRun",
      "SearchAPIResults",
      "SearchAPIRun",
      "HumanInputRun",
      "IFTTTWebhook",
      "InfoPowerBITool",
      "InfoSQLDatabaseTool",
      "InfoSparkSQLTool",
      "JiraAction",
      "JsonGetValueTool",
      "JsonListKeysTool",
      "ListDirectoryTool",
      "ListPowerBITool",
      "ListSQLDatabaseTool",
      "ListSparkSQLTool",
      "MerriamWebsterQueryRun",
      "MetaphorSearchResults",
      "MoveFileTool",
      "NasaAction",
      "NavigateBackTool",
      "NavigateTool",
      "O365CreateDraftMessage",
      "O365SearchEmails",
      "O365SearchEvents",
      "O365SendEvent",
      "O365SendMessage",
      "OpenAPISpec",
      "OpenWeatherMapQueryRun",
      "PubmedQueryRun",
      "RedditSearchRun",
      "QueryCheckerTool",
      "QueryPowerBITool",
      "QuerySQLCheckerTool",
      "QuerySQLDataBaseTool",
      "QuerySparkSQLTool",
      "ReadFileTool",
      "RequestsDeleteTool",
      "RequestsGetTool",
      "RequestsPatchTool",
      "RequestsPostTool",
      "RequestsPutTool",
      "SteamWebAPIQueryRun",
      "SceneXplainTool",
      "SearxSearchResults",
      "SearxSearchRun",
      "ShellTool",
      "SlackGetChannel",
      "SlackGetMessage",
      "SlackScheduleMessage",
      "SlackSendMessage",
      "SleepTool",
      "StdInInquireTool",
      "StackExchangeTool",
      "SteamshipImageGenerationTool",
      "StructuredTool",
      "Tool",
      "VectorStoreQATool",
      "VectorStoreQAWithSourcesTool",
      "WikipediaQueryRun",
      "WolframAlphaQueryRun",
      "WriteFileTool",
      "YahooFinanceNewsTool",
      "YouTubeSearchTool",
      "ZapierNLAListActions",
      "ZapierNLARunAction",
      "format_tool_to_openai_function",
      "tool",
  ]
  
apis: langchain.utils.interactive_env.is_interactive_env
extract_api: [((2151, 2171), 'langchain.utils.interactive_env.is_interactive_env', 'is_interactive_env', ([], {}), '()\n', (2169, 2171), False, 'from langchain.utils.interactive_env import is_interactive_env\n'), ((2185, 2548), 'warnings.warn', 'warnings.warn', (['f"""Importing tools from langchain is deprecated. Importing from langchain will no longer be supported as of langchain==0.2.0. Please import from langchain-community instead:\n\n`from langchain_community.tools import {name}`.\n\nTo install langchain-community run `pip install -U langchain-community`."""'], {'category': 'LangChainDeprecationWarning'}), '(\n    f"""Importing tools from langchain is deprecated. Importing from langchain will no longer be supported as of langchain==0.2.0. Please import from langchain-community instead:\n\n`from langchain_community.tools import {name}`.\n\nTo install langchain-community run `pip install -U langchain-community`."""\n    , category=LangChainDeprecationWarning)\n', (2198, 2548), False, 'import warnings\n')]