Toggle Menu
Prev Up Next

# Source code for langchain_community.tools.gmail.base

    """Base class for Gmail tools."""
    from __future__ import annotations

    from typing import TYPE_CHECKING

    from langchain_core.pydantic_v1 import Field
    from langchain_core.tools import BaseTool

    from langchain_community.tools.gmail.utils import build_resource_service

    if TYPE_CHECKING:
        # This is for linting and IDE typehints
        from googleapiclient.discovery import Resource
    else:
        try:
            # We do this so pydantic can resolve the types when instantiating
            from googleapiclient.discovery import Resource
        except ImportError:
            pass

    class GmailBaseTool(BaseTool):
        """Base class for Gmail tools."""

        api_resource: Resource = Field(default_factory=build_resource_service)

        @classmethod
        def from_api_resource(cls, api_resource: Resource) -> "GmailBaseTool":
            """Create a tool from an api resource.

            Args:
                api_resource: The api resource to use.

            Returns:
                A tool.
            """
            return cls(service=api_resource)