§
    šŠtjí  ã                   óÈ   — d dl Z d dlZd dlmZ d dlmZmZmZmZm	Z	 d dl
mZ d dlmZmZ d dlmZ d dlmZ  G d„ d	ee¦  «        Z G d
„ de¦  «        Z G d„ de¦  «        ZdS )é    N)ÚEnum)ÚAnyÚDictÚListÚOptionalÚType)ÚCallbackManagerForToolRun)Ú	BaseModelÚField)ÚGmailBaseTool)Úclean_email_bodyc                   ó   — e Zd ZdZdZdZdS )ÚResourcez"Enumerator of Resources to search.ÚthreadsÚmessagesN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚTHREADSÚMESSAGES© ó    úd/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/tools/gmail/search.pyr   r      s   € € € € € Ø,Ð,à€GØ€H€H€Hr   r   c                   óŠ   — e Zd ZU dZ edd¬¦  «        Zeed<    eej	        d¬¦  «        Z
eed<    ed	d
¬¦  «        Zeed<   dS )ÚSearchArgsSchemazInput for SearchGmailTool..aœ  The Gmail query. Example filters include from:sender, to:recipient, subject:subject, -filtered_term, in:folder, is:important|read|starred, after:year/mo/date, before:year/mo/date, label:label_name "exact phrase". Search newer/older than using d (day), m (month), and y (year): newer_than:2d, older_than:1y. Attachments with extension example: filename:pdf. Multiple term matching example: from:amy OR from:david.)ÚdescriptionÚqueryz*Whether to search for threads or messages.)Údefaultr   Úresourceé
   z(The maximum number of results to return.Úmax_resultsN)r   r   r   r   r   r   ÚstrÚ__annotations__r   r   r    r"   Úintr   r   r   r   r      s®   € € € € € € Ø$Ð$ð �Øð5ðñ ô €Eˆ3ð ð ñ ð ˜ØÔ!Ø@ðñ ô €Hˆhð ð ñ ð �uØØ>ðñ ô €K�ð ð ñ ð ð r   r   c                   ó0  — e Zd ZU dZdZeed<   dZeed<   eZ	e
e         ed<   deeeef                  deeeef                  fd	„Zd
eeeef                  deeeef                  fd„Zej        ddfdedededee         deeeef                  f
d„ZdS )ÚGmailSearchz4Tool that searches for messages or threads in Gmail.Úsearch_gmailÚnamez’Use this tool to search for email messages or threads. The input must be a valid Gmail query. The output is a JSON list of the requested resource.r   Úargs_schemar   Úreturnc                 ón  — g }|D ]¯}|d         }| j                              ¦   «                              ¦   «                              d|¬¦  «                             ¦   «         }|d         }g |d<   |D ].}|d         }|d                              ||d         dœ¦  «         Œ/|                     |¦  «         Œ°|S )NÚidÚme)ÚuserIdr-   r   Úsnippet)r0   r-   )Úapi_resourceÚusersr   ÚgetÚexecuteÚappend)	Úselfr   ÚresultsÚthreadÚ	thread_idÚthread_datar   Úmessager0   s	            r   Ú_parse_threadszGmailSearch._parse_threads9   sÌ   € àˆØð 	#ð 	#ˆFØ˜tœˆIàÔ!×'Ò'Ñ)Ô)ß’‘”ß’˜D Y�Ñ/Ô/ß’‘”ð	 ð # :Ô.ˆHØ!#ˆF�:ÑØ#ð Uð U�Ø! )Ô,�Ø�zÔ"×)Ò)°gÀWÈTÄ]Ð*SÐ*SÑTÔTÐTÐTØ�NŠN˜6Ñ"Ô"Ð"Ð"àˆr   r   c                 óö  — g }|D �]ò}|d         }| j                              ¦   «                              ¦   «                              dd|¬¦  «                             ¦   «         }t          j        |d         ¦  «        }t          j        |¦  «        }|d         }|d         }	d}
| 	                    ¦   «         r¾| 
                    ¦   «         D ]¨}|                     ¦   «         }t          |                     d¦  «        ¦  «        }|d	k    rjd
|vrf	 |                     d¬¦  «                             d¦  «        }
n9# t          $ r, |                     d¬¦  «                             d¦  «        }
Y nw xY w nŒ©n)|                     d¬¦  «                             d¦  «        }
t!          |
¦  «        }|                     |d         |d         |d         |||	|d         |d         |d         |d         dœ
¦  «         �Œô|S )Nr-   r.   Úraw)r/   Úformatr-   ÚSubjectÚFromÚ zContent-Dispositionz
text/plainÚ
attachmentT)Údecodezutf-8zlatin-1ÚthreadIdr0   ÚDateÚToÚCc)
r-   rE   r0   ÚbodyÚsubjectÚsenderÚfromÚdateÚtoÚcc)r1   r2   r   r3   r4   Úbase64Úurlsafe_b64decodeÚemailÚmessage_from_bytesÚis_multipartÚwalkÚget_content_typer#   Úget_payloadrD   ÚUnicodeDecodeErrorr   r5   )r6   r   r7   r;   Ú
message_idÚmessage_dataÚraw_messageÚ	email_msgrJ   rK   Úmessage_bodyÚpartÚctypeÚcdisporI   s                  r   Ú_parse_messageszGmailSearch._parse_messagesM   s!  € ØˆØð /	ñ /	ˆGØ  œˆJàÔ!×'Ò'Ñ)Ô)ß’‘”ß’˜D¨°:�Ñ>Ô>ß’‘”ð	 õ !Ô2°<ÀÔ3FÑGÔGˆKåÔ0°Ñ=Ô=ˆIà 	Ô*ˆGØ˜vÔ&ˆFàˆLØ×%Ò%Ñ'Ô'ð RØ%ŸNšNÑ,Ô,ð 
ð 
�DØ ×1Ò1Ñ3Ô3�EÝ  §¢Ð*?Ñ!@Ô!@ÑAÔA�FØ Ò,Ð,°ÀVÐ1KÐ1KðØ+/×+;Ò+;À4Ð+;Ñ+HÔ+H×+OÒ+OÐPWÑ+XÔ+X˜L˜LøÝ1ð ð ð Ø+/×+;Ò+;À4Ð+;Ñ+HÔ+H×+OÒ+OØ )ñ,ô ,˜L˜L˜Lðøøøð ˜øøà(×4Ò4¸DÐ4ÑAÔA×HÒHÈÑQÔQ�å# LÑ1Ô1ˆDà�NŠNà! $œ-Ø ,¨ZÔ 8Ø+¨IÔ6Ø Ø&Ø$Ø% fÔ-Ø% fÔ-Ø# Dœ/Ø# Dœ/ðð ñô ð ñ ð ˆs   Ä)D8Ä83E.Å-E.r!   Nr   r    r"   Úrun_managerc                 ó”  — | j                              ¦   «                              ¦   «                              d||¬¦  «                             ¦   «                              |j        g ¦  «        }|t          j        k    r|  	                    |¦  «        S |t          j
        k    r|                      |¦  «        S t          d|› d�¦  «        ‚)zRun the tool.r.   )r/   ÚqÚ
maxResultszResource of type z not implemented.)r1   r2   r   Úlistr4   r3   Úvaluer   r   r<   r   ra   ÚNotImplementedError)r6   r   r    r"   rb   r7   s         r   Ú_runzGmailSearch._run�   s±   € ð Ô×#Ò#Ñ%Ô%ßŠX‰ZŒZßŠT˜ °;ˆTÑ?Ô?ßŠW‰YŒYßŠS�” Ñ$Ô$ð 	ð •xÔ'Ò'Ð'Ø×&Ò& wÑ/Ô/Ð/Ø�Ô*Ò*Ð*Ø×'Ò'¨Ñ0Ô0Ð0å%Ð&U¸(Ð&UÐ&UÐ&UÑVÔVÐVr   )r   r   r   r   r)   r#   r$   r   r   r*   r   r   r   r   r<   ra   r   r   r%   r   r	   ri   r   r   r   r'   r'   .   sP  € € € € € € Ø>Ð>à€Dˆ#ÐÐÑð	@ð �ð ð ñ ð
 +;€K�Ð&Ô'Ð:Ð:Ñ:ð d¨4°°S°¬>Ô&:ð ¸tÀDÈÈcÈÄNÔ?Sð ð ð ð ð(2¨¨T°#°s°(¬^Ô(<ð 2ÀÀdÈ3ÐPSÈ8ÄnÔAUð 2ð 2ð 2ð 2ðn &Ô.ØØ;?ðWð WàðWð ðWð ð	Wð
 Ð7Ô8ðWð 
ˆd�3˜�8ŒnÔ	ðWð Wð Wð Wð Wð Wr   r'   )rP   rR   Úenumr   Útypingr   r   r   r   r   Úlangchain_core.callbacksr	   Úpydanticr
   r   Ú$langchain_community.tools.gmail.baser   Ú%langchain_community.tools.gmail.utilsr   r#   r   r   r'   r   r   r   ú<module>rp      s?  ðØ €€€Ø €€€Ø Ð Ð Ð Ð Ð Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2à >Ð >Ð >Ð >Ð >Ð >Ø %Ð %Ð %Ð %Ð %Ð %Ð %Ð %à >Ð >Ð >Ð >Ð >Ð >Ø BÐ BÐ BÐ BÐ BÐ Bðð ð ð ð ˆs�Dñ ô ð ðð ð ð ð �yñ ô ð ð4gWð gWð gWð gWð gW�-ñ gWô gWð gWð gWð gWr   