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	 ddl
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 eeZd-ddZd.ddZd/ddZdgZdZdZ			d0d1ddZ		 	!d2d3d(d)Z d4d+d,Z!dS )5zGmail tool utils.    )annotationsN)TYPE_CHECKINGListOptionalTuple)guard_import)Request)Credentials)InstalledAppFlow)Resource)buildreturnTuple[Request, Credentials]c                   C  s   t dddjt d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_nameZpip_namezgoogle.oauth2.credentials)r   r   r	    r   r   \/var/www/html/lang_env/lib/python3.10/site-packages/langchain_community/tools/gmail/utils.pyimport_google   s   r   r
   c                   C     t dddjS )zcImport InstalledAppFlow class.

    Returns:
        InstalledAppFlow: InstalledAppFlow class.
    zgoogle_auth_oauthlib.flowzgoogle-auth-oauthlibr   )r   r
   r   r   r   r   import_installed_app_flow&   
   r   build_resourcec                   C  r   )zImport googleapiclient.discovery.build function.

    Returns:
        build_resource: googleapiclient.discovery.build function.
    zgoogleapiclient.discoveryzgoogle-api-python-clientr   )r   r   r   r   r   r   'import_googleapiclient_resource_builder1   r   r   zhttps://mail.google.com/z
token.jsonzcredentials.json
token_fileOptional[str]client_secrets_filescopesOptional[List[str]]r	   c           	      C  s   t  \}}t }d}|pt}| pt} |pt}tj| r"|| |}|r'|j	s`|r6|j
r6|jr6||  n|||}|jddd}t| d}||  W d   |S 1 s[w   Y  |S )zGet credentials.Nr   F)portZopen_browserw)r   r   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
   credsZflowtokenr   r   r   get_gmail_credentialsA   s*   


r,   gmailv1credentialsOptional[Credentials]service_namestrservice_versionr   c                 C  s   | pt  } t }|||| dS )zBuild a Gmail service.)r/   )r,   r   )r/   r1   r3   builderr   r   r   build_resource_servicec   s   
r5   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bs4r7   r2   Zget_text	ExceptionloggererrorImportErrorwarning)r6   r7   Zsouper   r   r   clean_email_bodyn   s   

r>   )r   r   )r   r
   )r   r   )NNN)r   r   r   r   r   r   r   r	   )Nr-   r.   )r/   r0   r1   r2   r3   r2   r   r   )r6   r2   r   r2   )"__doc__
__future__r   loggingr#   typingr   r   r   r   Zlangchain_core.utilsr   Zgoogle.auth.transport.requestsr   Zgoogle.oauth2.credentialsr	   Zgoogle_auth_oauthlib.flowr
   Zgoogleapiclient.discoveryr   r   r   	getLogger__name__r9   r   r   r   r    r!   r"   r,   r5   r>   r   r   r   r   <module>   s8    



#