o
    Zh                  	   @   s  d dl Z d dlmZmZ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 dd	lmZ dd
l	mZ ddl	mZ ddlmZmZ e dZ	djdedeeef dee defddZ	djdedeeef dee defddZ	djdedeeef dee defddZ	djdedeeef dee defddZ	djdedeeef dee defddZ	djdedeeef dee defddZ	djdedeeef dee defddZ 	djdedeeef dee defd d!Z!	djdedeeef dee defd"d#Z"	djdedeeef dee defd$d%Z#	djdedeeef dee defd&d'Z$	djdedeeef dee defd(d)Z%	djdedeeef dee defd*d+Z&	djdedeeef dee defd,d-Z'	djdedeeef dee defd.d/Z(	djdedeeef dee defd0d1Z)	djdedeeef dee defd2d3Z*	djdedeeef dee defd4d5Z+	djdedeeef dee defd6d7Z,	djdedeeef dee defd8d9Z-	djdedeeef dee defd:d;Z.	djdedeeef dee defd<d=Z/	djdedeeef dee defd>d?Z0	djdedeeef dee defd@dAZ1	djdedeeef dee defdBdCZ2	djdedeeef dee defdDdEZ3	djdedeeef dee defdFdGZ4	djdedeeef dee defdHdIZ5	djdedeeef dee defdJdKZ6	djdedeeef dee defdLdMZ7	djdedeeef dee defdNdOZ8	djdedeeef dee defdPdQZ9	djdedeeef dee defdRdSZ:	djdedeeef dee defdTdUZ;	djdedeeef dee defdVdWZ<	djdedeeef dee defdXdYZ=	djdedeeef dee defdZd[Z>	djdedeeef dee defd\d]Z?	djdedeeef dee defd^d_Z@	djdedeeef dee defd`daZA	djdedeeef dee defdbdcZB	djdedeeef dee defdddeZCG dfdg dgejDZEG dhdi diejDZFdS )k    N)AnyOptionalUnion)	urlencode   )_api_module)_common)_transformers)types)BaseApiClient)get_value_by_path)set_value_by_path)
AsyncPagerPagerzgoogle_genai.caches
api_clientfrom_objectparent_objectreturnc                 C   sP  i }t |dgd urtdt |dgd ur!t|dgt |dg t |dgd ur4t|dgt |dg t |dgd urGt|dgt |dg t |dgd urZt|d	gt |dg t |d
gd urmt|dgt |d
g t |dgd urt|dgt |dg t |dgd urt|dgt |dg t |dgd urt|dgt |dg |S )Nvideo_metadataz8video_metadata parameter is not supported in Gemini API.thoughtcode_execution_resultcodeExecutionResultexecutable_codeexecutableCode	file_datafileDatafunction_callfunctionCallfunction_responsefunctionResponseinline_data
inlineDatatextgetv
ValueErrorsetvr   r   r   	to_object r)   J/var/www/html/lang_env/lib/python3.10/site-packages/google/genai/caches.py_Part_to_mldev!   s8   

r+   c                 C   s^  i }t |dgd urt|dgt |dg t |dgd ur(t|dgt |dg t |dgd ur;t|dgt |dg t |dgd urNt|dgt |dg t |dgd urat|d	gt |dg t |d
gd urtt|dgt |d
g t |dgd urt|dgt |dg t |dgd urt|dgt |dg t |dgd urt|dgt |dg |S )Nr   ZvideoMetadatar   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r$   r&   r'   r)   r)   r*   _Part_to_vertexM   s8   

r-   c                    d   i t |dgd urtdg fddt |dgD  t |dgd ur0tdgt |dg S )Npartsc                       g | ]}t  |qS r)   )r+   .0itemr   r(   r)   r*   
<listcomp>       
z%_Content_to_mldev.<locals>.<listcomp>roler,   r   r   r   r)   r4   r*   _Content_to_mldevy      
	r9   c                    r.   )Nr/   c                    r0   r)   )r-   r1   r4   r)   r*   r5      r6   z&_Content_to_vertex.<locals>.<listcomp>r7   r,   r8   r)   r4   r*   _Content_to_vertex   r:   r;   c                 C   s  i }t |dgd urtdt |dgd urtdt |dgd ur&tdt |dgd ur2tdt |d	gd ur>td
t |dgd urJtdt |dgd urVtdt |dgd urbtdt |dgd urut|dgt |dg t |dgd urt|dgt |dg t |dgd urt|dgt |dg t |dgd urt|dgt |dg t |dgd urt|dgt |dg t |dgd urt|dgt |dg t |dgd urt|dgt |dg t |dgd urt|dgt |dg t |dgd urt|dgt |dg t |dgd ur"t|dgt |dg t |dgd ur6t|dgt |dg t |dgd urJt|d gt |dg t |d!gd ur^t|d!gt |d!g t |d"gd urrt|d"gt |d"g |S )#Nexamplez1example parameter is not supported in Gemini API.patternz1pattern parameter is not supported in Gemini API.defaultz1default parameter is not supported in Gemini API.
max_lengthz4max_length parameter is not supported in Gemini API.titlez/title parameter is not supported in Gemini API.
min_lengthz4min_length parameter is not supported in Gemini API.min_propertiesz8min_properties parameter is not supported in Gemini API.max_propertiesz8max_properties parameter is not supported in Gemini API.any_ofanyOfdescriptionenumformatitems	max_itemsmaxItemsmaximum	min_itemsminItemsminimumnullable
propertiesproperty_orderingpropertyOrderingrequiredtyper#   r'   r)   r)   r*   _Schema_to_mldev   sd   
rV   c                 C   s^  i }t |dgd urt|dgt |dg t |dgd ur(t|dgt |dg t |dgd ur;t|dgt |dg t |dgd urNt|dgt |dg t |dgd urat|dgt |dg t |dgd urtt|dgt |dg t |d	gd urt|d
gt |d	g t |dgd urt|dgt |dg t |dgd urt|dgt |dg t |dgd urt|dgt |dg t |dgd urt|dgt |dg t |dgd urt|dgt |dg t |dgd urt|dgt |dg t |dgd urt|dgt |dg t |dgd ur!t|dgt |dg t |dgd ur5t|dgt |dg t |dgd urIt|dgt |dg t |dgd ur]t|dgt |dg t |dgd urqt|dgt |dg t |dgd urt|dgt |dg t |dgd urt|dgt |dg t |dgd urt|dgt |dg |S )Nr<   r=   r>   r?   Z	maxLengthr@   rA   Z	minLengthrB   ZminPropertiesrC   ZmaxPropertiesrD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   r,   r'   r)   r)   r*   _Schema_to_vertex   sd   
rW   c                 C   s   i }t |dgd urtdt |dgd ur!t|dgt |dg t |dgd ur4t|dgt |dg t |dgd urGt|dgt |dg |S )Nresponsez2response parameter is not supported in Gemini API.rF   name
parametersr#   r'   r)   r)   r*   _FunctionDeclaration_to_mldevC  s   r[   c                 C   s   i }t |dgd urt|dgt| t |dg| t |dgd ur,t|dgt |dg t |dgd ur?t|dgt |dg t |dgd urRt|dgt |dg |S )NrX   rF   rY   rZ   )r$   r&   rW   r'   r)   r)   r*   _FunctionDeclaration_to_vertexX  s    r\   c                 C      i }|S Nr)   r'   r)   r)   r*   _GoogleSearch_to_mldevs     r_   c                 C   r]   r^   r)   r'   r)   r)   r*   _GoogleSearch_to_vertex}  r`   ra   c                 C   T   i }t |dgd urt|dgt |dg t |dgd ur(t|dgt |dg |S NmodeZdynamic_thresholdZdynamicThresholdr,   r'   r)   r)   r*    _DynamicRetrievalConfig_to_mldev     
re   c                 C   rb   rc   r,   r'   r)   r)   r*   !_DynamicRetrievalConfig_to_vertex  rf   rg   c                 C   6   i }t |dgd urt|dgt| t |dg| |S NZdynamic_retrieval_configZdynamicRetrievalConfig)r$   r&   re   r'   r)   r)   r*   _GoogleSearchRetrieval_to_mldev     

rj   c                 C   rh   ri   )r$   r&   rg   r'   r)   r)   r*    _GoogleSearchRetrieval_to_vertex  rk   rl   c                    s   i t |dgd urtdg fddt |dgD  t |dgd ur)tdt |dgd ur@tdgt t |dg t |d	gd urWtd
gt t |d	g t |dgd urjtdgt |dg S )Nfunction_declarationsfunctionDeclarationsc                    r0   r)   )r[   r1   r4   r)   r*   r5     r6   z"_Tool_to_mldev.<locals>.<listcomp>	retrievalz3retrieval parameter is not supported in Gemini API.google_searchgoogleSearchgoogle_search_retrievalgoogleSearchRetrievalcode_executioncodeExecution)r$   r&   r%   r_   rj   r8   r)   r4   r*   _Tool_to_mldev  s@   
	

rv   c                    s   i t |dgd urtdg fddt |dgD  t |dgd ur0tdgt |dg t |dgd urGtdgt t |dg t |dgd ur^td	gt t |dg t |d
gd urqtdgt |d
g S )Nrm   rn   c                    r0   r)   )r\   r1   r4   r)   r*   r5     r6   z#_Tool_to_vertex.<locals>.<listcomp>ro   rp   rq   rr   rs   rt   ru   )r$   r&   ra   rl   r8   r)   r4   r*   _Tool_to_vertex  s@   
	

rw   c                 C   rb   Nrd   Zallowed_function_namesZallowedFunctionNamesr,   r'   r)   r)   r*   _FunctionCallingConfig_to_mldev/  rf   ry   c                 C   rb   rx   r,   r'   r)   r)   r*    _FunctionCallingConfig_to_vertexB  rf   rz   c                 C   rh   NZfunction_calling_configZfunctionCallingConfig)r$   r&   ry   r'   r)   r)   r*   _ToolConfig_to_mldevU  rk   r|   c                 C   rh   r{   )r$   r&   rz   r'   r)   r)   r*   _ToolConfig_to_vertexi  rk   r}   c                    R  i t |dgd urt|dgt |dg t |dgd ur(t|dgt |dg t |dgd ur;t|dgt |dg t |dgd urZt|dg fddt t |dgD  t |d	gd urut|d
gt t t |d	g t |dgd urt|dg fddt |dgD  t |dgd urt|dgt t |dg S )Nttlexpire_time
expireTimedisplay_namedisplayNamecontentsc                    r0   r)   )r9   r1   r4   r)   r*   r5     r6   z7_CreateCachedContentConfig_to_mldev.<locals>.<listcomp>system_instructionsystemInstructiontoolsc                    r0   r)   )rv   r1   r4   r)   r*   r5     r6   tool_config
toolConfig)r$   r&   t
t_contentsr9   	t_contentr|   r8   r)   r4   r*   #_CreateCachedContentConfig_to_mldev}  X   

	r   c                    r~   )Nr   r   r   r   r   r   c                    r0   r)   )r;   r1   r4   r)   r*   r5     r6   z8_CreateCachedContentConfig_to_vertex.<locals>.<listcomp>r   r   r   c                    r0   r)   )rw   r1   r4   r)   r*   r5     r6   r   r   )r$   r&   r   r   r;   r   r}   r8   r)   r4   r*   $_CreateCachedContentConfig_to_vertex  r   r   c              	   C   d   i }t |dgd urt|dgt| t |dg t |dgd ur0t|dgt| t |dg| |S Nmodelconfig)r$   r&   r   t_caches_modelr   r'   r)   r)   r*   '_CreateCachedContentParameters_to_mldev      r   c              	   C   r   r   )r$   r&   r   r   r   r'   r)   r)   r*   (_CreateCachedContentParameters_to_vertex  r   r   c              	   C   ^   i }t |dgd urt|ddgt| t |dg t |dgd ur-t|dgt |dg |S NrY   _urlr   r$   r&   r   t_cached_content_namer'   r)   r)   r*   $_GetCachedContentParameters_to_mldev)     r   c              	   C   r   r   r   r'   r)   r)   r*   %_GetCachedContentParameters_to_vertex<  r   r   c              	   C   r   r   r   r'   r)   r)   r*   '_DeleteCachedContentParameters_to_mldevO  r   r   c              	   C   r   r   r   r'   r)   r)   r*   (_DeleteCachedContentParameters_to_vertexb  r   r   c                 C   T   i }t |dgd urt|dgt |dg t |dgd ur(t|dgt |dg |S Nr   r   r   r,   r'   r)   r)   r*   #_UpdateCachedContentConfig_to_mldevu     r   c                 C   r   r   r,   r'   r)   r)   r*   $_UpdateCachedContentConfig_to_vertex  r   r   c              	   C   f   i }t |dgd urt|ddgt| t |dg t |dgd ur1t|dgt| t |dg| |S r   )r$   r&   r   r   r   r'   r)   r)   r*   '_UpdateCachedContentParameters_to_mldev      r   c              	   C   r   r   )r$   r&   r   r   r   r'   r)   r)   r*   (_UpdateCachedContentParameters_to_vertex  r   r   c                 C   X   i }t |dgd urt|ddgt |dg t |dgd ur*t|ddgt |dg |S NZ	page_size_queryZpageSizeZ
page_tokenZ	pageTokenr,   r'   r)   r)   r*   "_ListCachedContentsConfig_to_mldev     
r   c                 C   r   r   r,   r'   r)   r)   r*   #_ListCachedContentsConfig_to_vertex  r   r   c                 C   6   i }t |dgd urt|dgt| t |dg| |S Nr   )r$   r&   r   r'   r)   r)   r*   &_ListCachedContentsParameters_to_mldev     r   c                 C   r   r   )r$   r&   r   r'   r)   r)   r*   '_ListCachedContentsParameters_to_vertex  r   r   c                 C     i }t |dgd urt|dgt |dg t |dgd ur(t|dgt |dg t |dgd ur;t|dgt |dg t |dgd urNt|dgt |dg t |dgd urat|dgt |dg t |d	gd urtt|d
gt |d	g t |dgd urt|dgt |dg |S NrY   r   r   r   Z
createTimeZcreate_timeZ
updateTimeZupdate_timer   r   ZusageMetadataZusage_metadatar,   r'   r)   r)   r*   _CachedContent_from_mldev      r   c                 C   r   r   r,   r'   r)   r)   r*   _CachedContent_from_vertex5  r   r   c                 C   r]   r^   r)   r'   r)   r)   r*   '_DeleteCachedContentResponse_from_mldevS  r`   r   c                 C   r]   r^   r)   r'   r)   r)   r*   (_DeleteCachedContentResponse_from_vertex]  r`   r   c                    d   i t |dgd urtdgt |dg t |dgd ur0tdg fddt |dgD  S )NnextPageTokennext_page_tokencachedContentscached_contentsc                    r0   r)   )r   r1   r4   r)   r*   r5   t  r6   z:_ListCachedContentsResponse_from_mldev.<locals>.<listcomp>r,   r8   r)   r4   r*   &_ListCachedContentsResponse_from_mldevg     
	r   c                    r   )Nr   r   r   r   c                    r0   r)   )r   r1   r4   r)   r*   r5     r6   z;_ListCachedContentsResponse_from_vertex.<locals>.<listcomp>r,   r8   r)   r4   r*   '_ListCachedContentsResponse_from_vertex}  r   r   c                   @      e Zd Zdddedeej dejfddZdddedeej	 dejfd	d
Z
dddedeej dejfddZdddedeej dejfddZdddeej dejfddZdddeej deej fddZdS )CachesNr   r   r   r   c                C   8  t j||d}| jjr!t| j|}|d}|rd|}nd}nt| j|}|d}|r4d|}nd}|d}|rF| dt| }|	dd d}t
|trZ|dd}nt|drf|durf|j}t|}t|}| jd	|||}	| jjrt| j|	}	nt| j|	}	t jj|	| d
}
| j|
 |
S )a  Creates a cached contents resource.

    Usage:

    .. code-block:: python

      contents = ... // Initialize the content to cache.
      response = client.caches.create(
          model= ... // The publisher model id
          contents=contents,
          config={
              'display_name': 'test cache',
              'system_instruction': 'What is the sum of the two pdfs?',
              'ttl': '86400s',
          },
      )
    r   r   r   r   r   ?r   Nhttp_optionspostrX   kwargs)r
   _CreateCachedContentParameters_api_clientvertexair   get
format_mapr   r   pop
isinstancedicthasattrr   r   convert_to_dictencode_unserializable_typesrequestr   r   CachedContent_from_response
model_dump_verify_responseselfr   r   parameter_modelrequest_dictrequest_url_dictpathquery_paramsr   response_dictreturn_valuer)   r)   r*   create  sV   





zCaches.createrY   c                C   r   )zGets cached content configurations.

    .. code-block:: python

      client.caches.get(name= ... ) // The server-generated resource name.
    rY   r   r   {name}r   r   r   Nr   r   r   )r
   _GetCachedContentParametersr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rY   r   r   r   r   r   r   r   r   r   r)   r)   r*   r     sV   





z
Caches.getc                C   r   )zDeletes cached content.

    Usage:

    .. code-block:: python

      client.caches.delete(name= ... ) // The server-generated resource name.
    r   r   r   r   r   r   Nr   deleter   )r
   _DeleteCachedContentParametersr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   DeleteCachedContentResponser   r   r   r   r)   r)   r*   r   ,  sZ   





zCaches.deletec                C   r   )zUpdates cached content configurations.

    .. code-block:: python

      response = client.caches.update(
          name= ... // The server-generated resource name.
          config={
              'ttl': '7600s',
          },
      )
    r   r   r   r   r   r   Nr   patchr   )r
   _UpdateCachedContentParametersr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r)   r)   r*   updatev  sV   





zCaches.updatec          
      C   s6  t j|d}| jjr t| j|}|d}|rd|}nd}nt| j|}|d}|r3d|}nd}|d}|rE| dt| }|	dd d}t
|trY|dd}nt|dre|dure|j}t|}t|}| jd	|||}| jjrt| j|}nt| j|}t jj|| d
}	| j|	 |	S )zLists cached content configurations.

    .. code-block:: python

      cached_contents = client.caches.list(config={'page_size': 2})
      for cached_content in cached_contents:
        print(cached_content)
    r   r   r   r   r   r   Nr   r   r   )r
   _ListCachedContentsParametersr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ListCachedContentsResponser   r   r   
r   r   r   r   r   r   r   r   r   r   r)   r)   r*   _list  sX   





zCaches._listc                C   s   t d| j| j|d|S Nr   r   )r   r   r   r   r)   r)   r*   list  s   
zCaches.list)__name__
__module____qualname__strr   r
   CreateCachedContentConfigOrDictr   r   GetCachedContentConfigOrDictr   DeleteCachedContentConfigOrDictr   r   UpdateCachedContentConfigOrDictr   ListCachedContentsConfigOrDictr   r   r   r   r)   r)   r)   r*   r     sZ    
U
J
N
L
Gr   c                   @   r   )AsyncCachesNr   r   r   r   c                   @  t j||d}| jjr"t| j|}|d}|rd|}nd}nt| j|}|d}|r5d|}nd}|d}|rG| dt| }|	dd d}t
|tr[|dd}nt|drg|durg|j}t|}t|}| jd	|||I dH }	| jjrt| j|	}	nt| j|	}	t jj|	| d
}
| j|
 |
S )a  Creates a cached contents resource.

    Usage:

    .. code-block:: python

      contents = ... // Initialize the content to cache.
      response = await client.aio.caches.create(
          model= ... // The publisher model id
          contents=contents,
          config={
              'display_name': 'test cache',
              'system_instruction': 'What is the sum of the two pdfs?',
              'ttl': '86400s',
          },
      )
    r   r   r   r   r   r   Nr   r   r   )r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   async_requestr   r   r   r   r   r   r   r)   r)   r*   r     sX   






zAsyncCaches.createrY   c                   r  )zGets cached content configurations.

    .. code-block:: python

      await client.aio.caches.get(name= ... ) // The server-generated resource
      name.
    r   r   r   r   r   r   Nr   r   r   )r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r   r   r   r   r   r)   r)   r*   r   e  sX   






zAsyncCaches.getc                   r  )zDeletes cached content.

    Usage:

    .. code-block:: python

      await client.aio.caches.delete(name= ... ) // The server-generated
      resource name.
    r   r   r   r   r   r   Nr   r   r   )r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r   r   r   r   r   r)   r)   r*   r     s\   






zAsyncCaches.deletec                   r  )zUpdates cached content configurations.

    .. code-block:: python

      response = await client.aio.caches.update(
          name= ... // The server-generated resource name.
          config={
              'ttl': '7600s',
          },
      )
    r   r   r   r   r   r   Nr   r   r   )r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r   r   r   r   r   r)   r)   r*   r     sX   






zAsyncCaches.updatec          
         s>  t j|d}| jjr!t| j|}|d}|rd|}nd}nt| j|}|d}|r4d|}nd}|d}|rF| dt| }|	dd d}t
|trZ|dd}nt|drf|durf|j}t|}t|}| jd	|||I dH }| jjrt| j|}nt| j|}t jj|| d
}	| j|	 |	S )zLists cached content configurations.

    .. code-block:: python

      cached_contents = await client.aio.caches.list(config={'page_size': 2})
      async for cached_content in cached_contents:
        print(cached_content)
    r   r   r   r   r   r   Nr   r   r   )r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r   r   r   r   r   r)   r)   r*   r   B  sZ   






zAsyncCaches._listc                   s    t d| j| j|dI d H |S r   )r   r   r   r)   r)   r*   r     s   zAsyncCaches.list)r   r   r   r   r   r
   r   r   r   r   r   r   r   r   r  r   r  r   r   r   r   r)   r)   r)   r*   r    sZ    
U
K
O
L
Gr  r^   )Gloggingtypingr   r   r   urllib.parser    r   r   r	   r   r
   r   r   r   r$   r   r&   Zpagersr   r   	getLoggerloggerr   objectr+   r-   r9   r;   rV   rW   r[   r\   r_   ra   re   rg   rj   rl   rv   rw   ry   rz   r|   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Z
BaseModuler   r  r)   r)   r)   r*   <module>   sj  


/

/





R

R

















0

0









@

@





























!

!







   