
    7|h;                       d Z ddlmZ ddlZddlZddlmZmZmZm	Z	 ddl
mZ er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j,                  e      ZddZddZddZdgZdZdZ	 	 	 d	 	 	 	 	 	 	 ddZ	 	 	 d	 	 	 	 	 	 	 ddZ ddZ!y)zGmail tool utils.    )annotationsN)TYPE_CHECKINGListOptionalTuple)guard_import)Request)Credentials)InstalledAppFlow)Resource)buildc                 ^    t        dd      j                  t        dd      j                  fS )zqImport google libraries.

    Returns:
        Tuple[Request, Credentials]: Request and Credentials classes.
    zgoogle.auth.transport.requestszgoogle-auth-httplib2module_namepip_namezgoogle.oauth2.credentials)r   r	   r
        d/var/www/html/test/engine/venv/lib/python3.12/site-packages/langchain_community/tools/gmail/utils.pyimport_googler      s6     	8+	
 '3>T	

+ r   c                 0    t        dd      j                  S )zcImport InstalledAppFlow class.

    Returns:
        InstalledAppFlow: InstalledAppFlow class.
    zgoogle_auth_oauthlib.flowzgoogle-auth-oauthlibr   )r   r   r   r   r   import_installed_app_flowr   &   s     /:Pr   c                 0    t        dd      j                  S )zImport googleapiclient.discovery.build function.

    Returns:
        build_resource: googleapiclient.discovery.build function.
    zgoogleapiclient.discoveryzgoogle-api-python-clientr   )r   r   r   r   r   'import_googleapiclient_resource_builderr   1   s     /:Ter   zhttps://mail.google.com/z
token.jsonzcredentials.jsonc                (   t               \  }}t               }d}|xs t        }| xs t        } |xs t        }t
        j                  j                  |       r |j                  | |      }|r|j                  s|r/|j                  r#|j                  r|j                   |              n& |j                  ||      }|j                  dd      }t        | d      5 }|j!                  |j#                                ddd       |S |S # 1 sw Y   |S xY w)zGet credentials.Nr   F)portopen_browserw)r   r   DEFAULT_SCOPESDEFAULT_CREDS_TOKEN_FILEDEFAULT_CLIENT_SECRETS_FILEospathexistsfrom_authorized_user_filevalidexpiredrefresh_tokenrefreshfrom_client_secrets_filerun_local_serveropenwriteto_json)	
token_fileclient_secrets_filescopesr	   r
   r   credsflowtokens	            r   get_gmail_credentialsr4   A   s     )?G[02E%~F77J-L1L 
ww~~j!555j&IU]]u':':MM')$ =#<<#VD ))qu)EE*c" 	)eKK(	)L5L	)Ls    DDc                H    | xs
 t               } t               } ||||       S )zBuild a Gmail service.)credentials)r4   r   )r6   service_nameservice_versionbuilders       r   build_resource_servicer:   c   s)     8!6!8K57G<kJJr   c                6   	 ddl m} 	  |t        |       d      }|j                         } t        |       S # t        $ r*}t
        j                  |       t        |       cY d}~S d}~ww xY w# t        $ r# t
        j                  d       t        |       cY S w xY w)zClean email body.r   )BeautifulSoupzhtml.parserNz/BeautifulSoup not installed. Skipping cleaning.)	bs4r<   strget_text	ExceptionloggererrorImportErrorwarning)bodyr<   soupes       r   clean_email_bodyrH   n   s    %	 TM:D==?Dt9 	LLOt9	  HI4ys7   A, ,6 	A)A$A)A, $A))A, ,)BB)returnzTuple[Request, Credentials])rI   r   )rI   build_resource)NNN)r.   Optional[str]r/   rK   r0   zOptional[List[str]]rI   r
   )Ngmailv1)r6   zOptional[Credentials]r7   r>   r8   r>   rI   r   )rE   r>   rI   r>   )"__doc__
__future__r   loggingr!   typingr   r   r   r   langchain_core.utilsr   google.auth.transport.requestsr	   google.oauth2.credentialsr
   google_auth_oauthlib.flowr   googleapiclient.discoveryr   r   rJ   	getLogger__name__rA   r   r   r   r   r   r    r4   r:   rH   r   r   r   <module>rY      s     "  	 7 7 -65:2A			8	$" --' 0  !%)-"&&   	F *.K&KK K 	Kr   