
    3fi)                        d Z ddlmZ ddlmZmZ ddlmZmZ ddl	m
Z
mZ ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ erddlmZ n	 ddlmZ  G d de      Zy# e$ r Y w xY w)zGoogle Tasks Toolkit.    )annotations)TYPE_CHECKINGList)BaseToolBaseToolkit)
ConfigDictField)TasksCreateTask)TasksDeleteTask)TasksGetTask)TasksListTasks)TasksUpdateTask)build_tasks_service)Resourcec                  H    e Zd ZU dZ ee      Zded<    ed      Z	d	dZ
y)
TasksToolkita  Toolkit for interacting with Google Tasks.

    This toolkit provides tools for creating, listing, updating,
    deleting, and retrieving tasks from Google Tasks.

    Setup:
        Install ``langchain-google-community`` and set up Google authentication.

        .. code-block:: bash

            pip install -U langchain-google-community

        You'll need to enable the Google Tasks API and set up credentials.

    Instantiation:
        .. code-block:: python

            from langchain_google_community import TasksToolkit

            toolkit = TasksToolkit()

    Tools:
        .. code-block:: python

            tools = toolkit.get_tools()
            # Returns: [TasksCreateTask, TasksListTasks, TasksUpdateTask,
            #           TasksDeleteTask, TasksGetTask]

    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 = "Create a task to review the quarterly report"
            events = agent_executor.stream(
                {"messages": [("user", example_query)]},
                stream_mode="values",
            )
            for event in events:
                event["messages"][-1].pretty_print()

    !!! warning "Security"
        This toolkit contains tools that can read and modify the state of a
        service. For example, it can create, update, and delete tasks
        on behalf of the associated account.

        See [Security Policy](https://docs.langchain.com/oss/python/security-policy)
        for more information.
    )default_factoryr   api_resourceT)arbitrary_types_allowedc                    t        | j                        t        | j                        t        | j                        t	        | j                        t        | j                        gS )zwGet the tools in the toolkit.

        Returns:
            A list of tools for interacting with Google Tasks.
        )r   )r
   r   r   r   r   r   )selfs    f/var/www/auto_recruiter/arenv/lib/python3.12/site-packages/langchain_google_community/tasks/toolkit.py	get_toolszTasksToolkit.get_toolsY   sT     ):):;(9(9:):):;):):;d&7&78
 	
    N)returnzList[BaseTool])__name__
__module____qualname____doc__r	   r   r   __annotations__r   model_configr    r   r   r   r      s,    4l #3FGL(G $L
r   r   N)r   
__future__r   typingr   r   langchain_core.toolsr   r   pydanticr   r	   ,langchain_google_community.tasks.create_taskr
   ,langchain_google_community.tasks.delete_taskr   )langchain_google_community.tasks.get_taskr   +langchain_google_community.tasks.list_tasksr   ,langchain_google_community.tasks.update_taskr   &langchain_google_community.tasks.utilsr   googleapiclient.discoveryr   ImportErrorr   r"   r   r   <module>r/      sV     " & 6 & H H B F H F26
I
; I
	  s   A! !A)(A)