o
    Zh                     @   sD   d dl mZmZmZ d dlmZmZ d dlmZ G dd deZ	dS )    )AnyOptionalSequence)BaseDocumentTransformerDocument)get_client_infoc                   @   sh   e Zd ZdZddddddededee dee d	ee d
dfddZdee de	d
ee fddZ
dS )GoogleTranslateTransformerz8Translate text documents using Google Cloud Translation.globalN)locationmodel_idglossary_idapi_endpoint
project_idr
   r   r   r   returnc          	   
   C   s   zddl m} ddlm} W n ty } ztd|d}~ww || _|| _|| _|| _|j	t
d|r8||dndd| _| j||| _|rO| j d	| nd| _|r_| j|||| _dS d| _dS )
aE  
        Arguments:
            project_id: Google Cloud Project ID.
            location: (Optional) Translate model location.
            model_id: (Optional) Translate model ID to use.
            glossary_id: (Optional) Translate glossary ID to use.
            api_endpoint: (Optional) Regional endpoint to use.
        r   )ClientOptions	translateCould not import google-cloud-translate python package. Please, install translate dependency group: `pip install langchain-google-community[translate]`Nr   )r   )Zclient_infoZclient_optionsz/models/)Zgoogle.api_core.client_optionsr   google.cloudr   ImportErrorr   r
   r   r   ZTranslationServiceClientr   _clientZcommon_location_path_parent_path_model_pathZglossary_path_glossary_path)	selfr   r
   r   r   r   r   r   exc r   [/var/www/html/lang_env/lib/python3.10/site-packages/langchain_google_community/translate.py__init__   s6   z#GoogleTranslateTransformer.__init__	documentskwargsc                 K   s   zddl m} W n ty } ztd|d}~ww | jj|jdd |D | j| j|j| j	d|
dd|
d	|
d
ddd}|jpG|j}dd t||D S )a  Translate text documents using Google Translate.

        Arguments:
            source_language_code: ISO 639 language code of the input document.
            target_language_code: ISO 639 language code of the output document.
                For supported languages, refer to:
                https://cloud.google.com/translate/docs/languages
            mime_type: (Optional) Media Type of input text.
                Options: `text/plain`, `text/html`
        r   r   r   Nc                 S   s   g | ]}|j qS r   )page_content).0docr   r   r   
<listcomp>T   s    zBGoogleTranslateTransformer.transform_documents.<locals>.<listcomp>)Zglossarysource_language_codetarget_language_code	mime_typez
text/plain)contentsparentmodelZglossary_configr%   r&   r'   )requestc                 S   s2   g | ]\}}t |ji |j|j|jd dqS ))r*   detected_language_code)r!   metadata)r   Ztranslated_textr-   r*   r,   )r"   r#   translationr   r   r   r$   c   s    	)r   r   r   r   Ztranslate_textZTranslateTextRequestr   r   ZTranslateTextGlossaryConfigr   getZglossary_translationstranslationszip)r   r   r    r   r   responser0   r   r   r   transform_documents<   s6   

	z.GoogleTranslateTransformer.transform_documents)__name__
__module____qualname____doc__strr   r   r   r   r   r3   r   r   r   r   r      s4    
1r   N)
typingr   r   r   Zlangchain_core.documentsr   r   Z!langchain_google_community._utilsr   r   r   r   r   r   <module>   s    