
    dh                        S SK Jr  S SKrS SKJrJrJrJrJr  S SK	J
r
  S SKJrJr  S SKJrJr  S SKJrJrJrJrJr  \R.                  " \5      rSS jr        SS
 jr " S S	\\
5      rg)    )annotationsN)AnyCallableDictListOptional)
Embeddings)get_from_dict_or_envpre_init)	BaseModel
ConfigDict)before_sleep_logretryretry_if_exception_typestop_after_attemptwait_exponentialc            
        SSK n SnSnSnSn[        S[        U5      [        XUS9[	        U R
                  R                  R                  5      [	        U R
                  R                  R                  5      -  [	        U R
                  R                  R                  5      -  [        [        [        R                  5      S	9$ )
zKReturns a tenacity retry decorator, preconfigured to handle PaLM exceptionsr   N      <   
   T)
multiplierminmax)reraisestopwaitr   before_sleep)google.api_core.exceptionsr   r   r   r   api_core
exceptionsResourceExhaustedServiceUnavailableGoogleAPIErrorr   loggerloggingWARNING)googler   min_secondsmax_secondsmax_retriess        b/var/www/html/shao/venv/lib/python3.13/site-packages/langchain_community/embeddings/google_palm.py_create_retry_decoratorr-      s    %JKKK,+V#FOO$>$>$P$PQ%foo&@&@&S&STU%foo&@&@&O&OPQ &fgoo>
 
    GooglePalmEmbeddingsc                B   ^  [        5       nUSU 4S jj5       nU" U0 UD6$ )z*Use tenacity to retry the completion call.c                 <   > TR                   R                  " U 0 UD6$ )N)clientgenerate_embeddings)argskwargs
embeddingss     r,   _embed_with_retry+embed_with_retry.<locals>._embed_with_retry0   s      44dEfEEr.   )r4   r   r5   r   returnr   )r-   )r6   r4   r5   retry_decoratorr7   s   `    r,   embed_with_retryr;   *   s3     ./OF F d-f--r.   c                      \ rS rSr% SrS\S'   S\S'   SrS\S	'    S
rS\S'    \" SS9r	\
SS j5       rSS jrSS jrSrg)r/   7   zGoogle's PaLM Embeddings APIs.r   r2   zOptional[str]google_api_keyzmodels/embedding-gecko-001str
model_nameFboolshow_progress_bar )protected_namespacesc                    [        USS5      n SSKJn  UR                  US9  X1S'   U$ ! [         a    [	        S5      ef = f)z(Validate api key, python package exists.r>   GOOGLE_API_KEYr   N)api_keyz4Could not import google.generativeai python package.r2   )r
   google.generativeaigenerativeai	configureImportError)clsvaluesr>   genais       r,   validate_environment)GooglePalmEmbeddings.validate_environmentC   s\     .$&6
	V/OONO3 !x  	VTUU	Vs	   * A c                    U R                   (       a   SSKJn  U" USS9nOUnU Vs/ sH  o@R                  U5      PM     sn$ ! [         a    [        R	                  S5        Un NCf = fs  snf )Nr   )tqdmr/   )desczgUnable to show progress bar because tqdm could not be imported. Please install with `pip install tqdm`.)rB   rR   rK   r%   warningembed_query)selftextsrR   iter_texts        r,   embed_documents$GooglePalmEmbeddings.embed_documentsT   sr    !!	%U)?@ E38954  &599  >  :s   A A*!A'&A'c                8    [        X R                  U5      nUS   $ )zEmbed query text.	embedding)r;   r@   )rV   rY   r]   s      r,   rU    GooglePalmEmbeddings.embed_queryd   s    $T??DA	%%r.   N)rM   r   r9   r   )rW   z	List[str]r9   zList[List[float]])rY   r?   r9   zList[float])__name__
__module____qualname____firstlineno____doc____annotations__r@   rB   r   model_configr   rO   rZ   rU   __static_attributes__rC   r.   r,   r/   r/   7   sQ    (K!!2J2#t#J26L  : &r.   )r9   zCallable[[Any], Any])r6   r/   r4   r   r5   r   r9   r   )
__future__r   r&   typingr   r   r   r   r   langchain_core.embeddingsr	   langchain_core.utilsr
   r   pydanticr   r   tenacityr   r   r   r   r   	getLoggerr_   r%   r-   r;   r/   rC   r.   r,   <module>rn      sn    "  6 6 0 ? *  
		8	$,
.$
.-0
.<?
.
.0&9j 0&r.   