
    dh                        S SK Jr  S SKJrJr  S SKJr  S SKJr  S SK	J
r
Jr  S SKJr  S SKJr  S SKJr  S S	KJr  S S
KJr  S SKJr  \(       a  S SKJr  O S SKJr  S/r " S S\5      rg! \ a     Nf = f)    )annotations)TYPE_CHECKINGList)BaseTool)BaseToolkit)
ConfigDictField)GmailCreateDraft)GmailGetMessage)GmailGetThread)GmailSearch)GmailSendMessage)build_resource_service)Resourcezhttps://mail.google.com/c                  F    \ rS rSr% Sr\" \S9rS\S'   \	" SS9r
SS jrS	rg
)GmailToolkit   am  Toolkit for interacting with Gmail.

*Security Note*: This toolkit contains tools that can read and modify
    the state of a service; e.g., by reading, creating, updating, deleting
    data associated with this service.

    For example, this toolkit can be used to send emails on behalf of the
    associated account.

    See https://python.langchain.com/docs/security for more information.

Setup:
    You will need a Google credentials.json file to use this toolkit.
    See instructions here: https://python.langchain.com/docs/integrations/tools/gmail/#setup

Key init args:
    api_resource: Optional. The Google API resource. Default is None.

Instantiate:
    .. code-block:: python

        from langchain_google_community import GmailToolkit

        toolkit = GmailToolkit()

Tools:
    .. code-block:: python

        toolkit.get_tools()

    .. code-block:: none

        [GmailCreateDraft(api_resource=<googleapiclient.discovery.Resource object at 0x1094509d0>),
        GmailSendMessage(api_resource=<googleapiclient.discovery.Resource object at 0x1094509d0>),
        GmailSearch(api_resource=<googleapiclient.discovery.Resource object at 0x1094509d0>),
        GmailGetMessage(api_resource=<googleapiclient.discovery.Resource object at 0x1094509d0>),
        GmailGetThread(api_resource=<googleapiclient.discovery.Resource object at 0x1094509d0>)]

Use within an agent:
    .. code-block:: python

        from langchain_openai import ChatOpenAI
        from langgraph.prebuilt import create_react_agent

        llm = ChatOpenAI(model="gpt-4o-mini")

        agent_executor = create_react_agent(llm, tools)

        example_query = "Draft an email to fake@fake.com thanking them for coffee."

        events = agent_executor.stream(
            {"messages": [("user", example_query)]},
            stream_mode="values",
        )
        for event in events:
            event["messages"][-1].pretty_print()

    .. code-block:: none

         ================================[1m Human Message [0m=================================

        Draft an email to fake@fake.com thanking them for coffee.
        ==================================[1m Ai Message [0m==================================
        Tool Calls:
        create_gmail_draft (call_slGkYKZKA6h3Mf1CraUBzs6M)
        Call ID: call_slGkYKZKA6h3Mf1CraUBzs6M
        Args:
            message: Dear Fake,

        I wanted to take a moment to thank you for the coffee yesterday. It was a pleasure catching up with you. Let's do it again soon!

        Best regards,
        [Your Name]
            to: ['fake@fake.com']
            subject: Thank You for the Coffee
        =================================[1m Tool Message [0m=================================
        Name: create_gmail_draft

        Draft created. Draft Id: r-7233782721440261513
        ==================================[1m Ai Message [0m==================================

        I have drafted an email to fake@fake.com thanking them for the coffee. You can review and send it from your email draft with the subject "Thank You for the Coffee".

Parameters:
    api_resource: Optional. The Google API resource. Default is None.
)default_factoryr   api_resourceT)arbitrary_types_allowedc                    [        U R                  S9[        U R                  S9[        U R                  S9[	        U R                  S9[        U R                  S9/$ )zGet the tools in the toolkit.)r   )r
   r   r   r   r   r   )selfs    h/var/www/html/shao/venv/lib/python3.13/site-packages/langchain_community/agent_toolkits/gmail/toolkit.py	get_toolsGmailToolkit.get_tools|   sT     $*;*;<$*;*;<T%6%67):):;(9(9:
 	
     N)returnzList[BaseTool])__name__
__module____qualname____firstlineno____doc__r	   r   r   __annotations__r   model_configr   __static_attributes__r   r   r   r   r      s-    Un #3IJL(J $L
r   r   N)
__future__r   typingr   r   langchain_core.toolsr   langchain_core.tools.baser   pydanticr   r	   ,langchain_community.tools.gmail.create_draftr
   +langchain_community.tools.gmail.get_messager   *langchain_community.tools.gmail.get_threadr   &langchain_community.tools.gmail.searchr   ,langchain_community.tools.gmail.send_messager   %langchain_community.tools.gmail.utilsr   googleapiclient.discoveryr   ImportErrorSCOPESr   r   r   r   <module>r5      s`    " & ) 1 & I G E > I H26
 %	%f
; f
  s   A+ +A43A4