o
    Zh                     @  s  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	 erBd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eZd3ddZd4ddZd5ddZdgZdgZdZdZdZ 						d6d7d$d%Z!		&	'				d8d9d.d/Z"d:d1d2Z#dS );zGmail tool utils.    )annotationsN)TYPE_CHECKINGListOptionalTupleRequestCredentialsInstalledAppFlow)Resourcebuildreturn/Tuple[Request, Credentials, ServiceCredentials]c                  C  sJ   zddl m}  ddlm} ddlm} W n ty   tdw | ||fS )zqImport google libraries.

    Returns:
        Tuple[Request, Credentials]: Request and Credentials classes.
    r   r   r	   zcYou need to install gmail dependencies to use this toolkit. Try running poetry install --with gmail)google.auth.transport.requestsr   google.oauth2.credentialsr
   google.oauth2.service_accountImportError)r   r
   ServiceCredentials r   ]/var/www/html/lang_env/lib/python3.10/site-packages/langchain_google_community/gmail/utils.pyimport_google   s   
r   r   c                  C  *   z	ddl m}  W | S  ty   tdw )zcImport InstalledAppFlow class.

    Returns:
        InstalledAppFlow: InstalledAppFlow class.
    r   r   zYou need to install gmail dependencies to use this toolkit. Please, install bigquery dependency group: `pip install langchain-google-community[gmail]`)google_auth_oauthlib.flowr   r   r   r   r   r   import_installed_app_flow&   s   r   build_resourcec                  C  r   )zImport googleapiclient.discovery.build function.

    Returns:
        build_resource: googleapiclient.discovery.build function.
    r   r   zlYou need to install all dependencies to use this toolkit. Try running pip install langchain-google-community)googleapiclient.discoveryr   r   r   r   r   r   'import_googleapiclient_resource_builder7   s   r   zhttps://mail.google.com/z.https://www.googleapis.com/auth/gmail.readonlyz
token.jsonzcredentials.jsonzservice_account.jsonF
token_fileOptional[str]client_secrets_fileservice_account_filescopesOptional[List[str]]use_domain_widebooldelegated_userr
   c                 C  s  |r t  \}}}|pt}|pt}|j||d}|r||}|S t  \}	}
}t }d}|p.t}| p2t} |p6t}t	j
| rC|
| |}|rH|js|rW|jrW|jrW||	  n|||}|jdd}t| d}||  W d   |S 1 s{w   Y  |S )zGet credentials.)r$   Nr   )portw)r   DEFAULT_SERVICE_ACCOUNT_FILEDEFAULT_SERVICE_SCOPESZfrom_service_account_fileZwith_subjectr   DEFAULT_SCOPESDEFAULT_CREDS_TOKEN_FILEDEFAULT_CLIENT_SECRETS_FILEospathexistsZfrom_authorized_user_fileZvalidZexpiredZrefresh_tokenrefreshZfrom_client_secrets_fileZrun_local_serveropenwriteto_json)r    r"   r#   r$   r&   r(   _r   credentialsr   r
   r   credsZflowtokenr   r   r   get_gmail_credentialsN   s>   	


r;   gmailv1r8   Optional[Credentials]service_namestrservice_versionr   c                 C  s(   | p	t ||||d} t }|||| dS )zBuild a Gmail service.)r&   r(   r#   r$   )r8   )r;   r   )r8   r?   rA   r&   r(   r#   r$   builderr   r   r   build_resource_service   s   
rC   bodyc              
   C  s   z4ddl m} z|t| d}| } t| W W S  ty4 } zt| t| W  Y d}~W S d}~ww  tyF   td t|  Y S w )zClean email body.r   )BeautifulSoupzhtml.parserNz/BeautifulSoup not installed. Skipping cleaning.)	Zbs4rE   r@   Zget_text	Exceptionloggererrorr   warning)rD   rE   Zsouper   r   r   clean_email_body   s   

rK   )r   r   )r   r   )r   r   )NNNNFN)r    r!   r"   r!   r#   r!   r$   r%   r&   r'   r(   r!   r   r
   )Nr<   r=   FNNN)r8   r>   r?   r@   rA   r@   r&   r'   r(   r!   r#   r!   r$   r%   r   r   )rD   r@   r   r@   )$__doc__
__future__r   loggingr0   typingr   r   r   r   r   r   r   r
   r   r   r   r   r   r   r   r   	getLogger__name__rG   r   r   r   r-   r,   r.   r/   r+   r;   rC   rK   r   r   r   r   <module>   sJ    



5