
    3fi@                         d dl Z d dl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edefd	Zd
edede
fdZ G d de      Zy)    N)AnyIterator)build)BaseChatLoader)ChatSession)HumanMessagemsgreturnc                 `   d }| d   d   D ]  }|d   }|dk(  s|d   } |t         | d   d   D ]w  }|d   dk(  s|d	   d
   }t        j                  |      j                  d      }t	        j
                  d      }t	        j                  ||      d   }t        |d|i      }|c S  t         )NpayloadheadersnameFromvaluepartsmimeTypez
text/plainbodydatazutf-8z\r\nOn .+(\r\n)*wrote:\r\nr   sender)contentadditional_kwargs)
ValueErrorbase64urlsafe_b64decodedecoderecompilesplitr   )	r	   
from_emailvaluesr   partr   patternnewest_responsemessages	            e/var/www/auto_recruiter/arenv/lib/python3.12/site-packages/langchain_google_community/gmail/loader.py_extract_email_contentr&      s    Ji.+ )f~6>J) Iw' 
|+<'D++D188AD jj!>?G hhw5a8O"'Hj;QG N     servicer$   c                    | j                         j                         j                  d|d         j                         }t	        |      }d }|d   d   }|D ]  }|d   }|dk(  s|d   } |t
        |d	   }| j                         j                         j                  d|      j                         }	|	d
   }
d }|
D ]'  }|d   d   }|D ]  }|d   dk(  s|d   }||k(  s|} ) |t
        t	        |      }t        ||g      S )Nmeid)userIdr+   r   r   r   zIn-Reply-Tor   threadIdmessagesz
Message-ID)r.   )usersr.   getexecuter&   r   threadsr   )r(   r$   r	   message_contentin_reply_to
email_datar    r   	thread_idthreadr.   response_email
message_idstarter_contents                 r%   _get_message_datar;   #   sC   
--/
"
"
$
(
(
(
G
O
O
QC,S1OKY	*J *f~=  /K* JI]]_$$&**$9*EMMOFj!HN -Y'	2
  	-Ff~-#G_
,%,N		-- ,^<O/ BCCr'   c            	       H     e Zd ZdZd	dedededdf fdZdee	   fdZ
 xZS )
GMailLoadera  Load chat sessions from Gmail.

    Inherits from
    [`BaseChatLoader`][langchain_community.chat_loaders.base.BaseChatLoader].

    Loads sent messages and their preceding emails to create chat training examples.

    This loader finds messages you've sent in reply to previous emails and creates
    chat sessions from the original email and your response. Each session contains
    only the immediate previous email for context.

    !!! note "Setup Required"

        Requires Google Developer Account with Gmail API enabled. See
        [Gmail API documentation](https://developers.google.com/gmail/api/guides)
        for setup instructions.
    credsnraise_errorr
   Nc                 L    t         |           || _        || _        || _        y )N)super__init__r>   r?   r@   )selfr>   r?   r@   	__class__s       r%   rC   zGMailLoader.__init__U   s$    
&r'   c              #   f  K   t        dd| j                        }|j                         j                         j	                  ddg| j
                        j                         }|j                  dg       }|D ]  }	 t        ||        y # t        $ r}| j                  r|Y d }~1d }~ww xY ww)Ngmailv1)credentialsr*   SENT)r,   labelIds
maxResultsr.   )r   r>   r/   r.   listr?   r1   r0   r;   	Exceptionr@   )rD   r(   resultsr.   r$   es         r%   	lazy_loadzGMailLoader.lazy_load[   s     4::>MMOXZTTVVTDWY	 	 ;;z2. 	G'99	  ##Gs0   A9B1<B
B1	B.B)$B1)B..B1)d   F)__name__
__module____qualname____doc__r   intboolrC   r   r   rQ   __classcell__)rE   s   @r%   r=   r=   B   s:    $'c 'c 'd 't '8K0 r'   r=   )r   r   typingr   r   googleapiclient.discoveryr   %langchain_community.chat_loaders.baser   langchain_core.chat_sessionsr   langchain_core.messagesr   r&   r;   r=    r'   r%   <module>r`      sW     	   + @ 4 0  0Ds DS D[ D>*. *r'   