o
    pkjwH                  	   @   s.  d dl mZ d dlZ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mZ edZ	d deeeef ef deeeef  deeef fddZ	d deeeef ef deeeef  deeef fddZ	d deeeef ef deeeef  deeef fddZ	d deeeef ef deeeef  deeef fddZ	d deeeef ef deeeef  deeef fddZ	d deeeef ef deeeef  deeef fddZG dd dej Z!G dd dej Z"dS )!    )partialN)AnyOptionalUnion)	urlencode   )_api_module)_common)types)get_value_by_path)set_value_by_path)
AsyncPagerPagerzgoogle_genai.documentsfrom_objectparent_objectreturnc                 C   s0   i }t | dgd urt|ddgt | dg |S )Nforce_querygetvsetvr   r   	to_object r   T/home/djax/ivt_ai_plugin/venv/lib/python3.10/site-packages/google/genai/documents.py_DeleteDocumentConfig_to_mldev"   s   r   c                 C   R   i }t | dgd urt|ddgt | dg t | dgd ur'tt | dg| |S )Nname_urlconfig)r   r   r   r   r   r   r   "_DeleteDocumentParameters_to_mldev.      r    c                 C   s0   i }t | dgd urt|ddgt | dg |S )Nr   r   r   r   r   r   r   _GetDocumentParameters_to_mldev<   s   r"   c                 C   sX   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 )N	page_sizer   pageSize
page_token	pageTokenr   r   r   r   r   _ListDocumentsConfig_to_mldevG   s   
r'   c                 C   r   )Nparentr   r   )r   r   r'   r   r   r   r   !_ListDocumentsParameters_to_mldev\   r!   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dd t | dgD  |S )NsdkHttpResponsesdk_http_responsenextPageTokennext_page_token	documentsc                 S   s   g | ]}|qS r   r   ).0itemr   r   r   
<listcomp>{   s    z5_ListDocumentsResponse_from_mldev.<locals>.<listcomp>r   r   r   r   r   !_ListDocumentsResponse_from_mldevj   s   r2   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d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ej fddZdS )	DocumentsNr   r   r   r   c             	   C   s(  t j||d}| jjrtdt|}|d}|r d|}nd}|d}|r2| dt| }|	dd d}|j
durI|j
jdurI|j
j}t|}t|}| jd	|||}	|	jsai nt|	j}
t jj|
t|ddrdt|j
d
dt|j
ddt|j
dddini d}| j| |S a  Gets metadata about a Document.

    Args:
      name (str): The resource name of the Document.
        Example: ragStores/rag-store-foo/documents/documents-bar
      config (GetDocumentConfig | None): Optional parameters for the request.

    Returns:
      The Document.
    r   r   iThis method is only supported in Gemini Developer API mode, not in Gemini Enterprise Agent Platform mode.r   {name}r   ?r   Ngetresponse_schemaresponse_json_schemainclude_all_fieldsr<   r=   r>   responsekwargs)r
   _GetDocumentParameters_api_clientvertexai
ValueErrorr"   r;   
format_mapr   popr   http_optionsr	   convert_to_dictencode_unserializable_typesrequestbodyjsonloadsDocument_from_responsegetattr_verify_responseselfr   r   parameter_modelrequest_dictrequest_url_dictpathquery_paramsrI   rA   response_dictreturn_valuer   r   r   r;      sZ   





zDocuments.getc          	      C   s   t j||d}| jjrtdt|}|d}|r d|}nd}|d}|r2| dt| }|	dd d}|j
durI|j
jdurI|j
j}t|}t|}| jd	||| dS 
a  Deletes a Document.

    Args:
      name (str): The resource name of the Document.
        Example: ragStores/rag-store-foo/documents/documents-bar
      config (DeleteDocumentConfig | None): Optional parameters for the request.

    Returns:
      None
    r7   r8   r   r9   r   r:   r   Ndelete)r
   _DeleteDocumentParametersrD   rE   rF   r    r;   rG   r   rH   r   rI   r	   rJ   rK   rL   	rU   r   r   rV   rW   rX   rY   rZ   rI   r   r   r   r^      s0   




zDocuments.deleter(   c             	   C   s8  t j||d}| jjrtdt|}|d}|r d|}nd}|d}|r2| dt| }|	dd  d }|j
d urI|j
jd urI|j
j}t|}t|}| jd|||}	|	jsai nt|	j}
| jjsot|
}
t jj|
t|dd rdt|j
d	d t|j
d
d t|j
dd dini d}| j| |S Nr(   r   r8   r   z{parent}/documentsr   r:   r   r;   r<   r=   r>   r?   r@   )r
   _ListDocumentsParametersrD   rE   rF   r)   r;   rG   r   rH   r   rI   r	   rJ   rK   rL   rM   rN   rO   r2   ListDocumentsResponserQ   rR   rS   rU   r(   r   rV   rW   rX   rY   rZ   rI   rA   r[   r\   r   r   r   _list  s^   





zDocuments._listc                C   s&   t | j|d}td|| j||d|S )a  Lists documents.

    Args:
      parent (str): The name of the RagStore containing the Documents.
      config (ListDocumentsConfig): Optional configuration for the list request.

    Returns:
      A Pager object that contains one page of documents. When iterating over
      the pager, it automatically fetches the next page if there are more.
    Usage:
    .. code-block:: python
      for document in client.documents.list(parent='rag_store_name'):
        print(f"document: {document.name} - {document.display_name}")
    r(   r.   rb   )r   rf   r   rU   r(   r   list_requestr   r   r   listJ  s   zDocuments.list)__name__
__module____qualname__strr   r
   GetDocumentConfigOrDictrP   r;   DeleteDocumentConfigOrDictr^   ListDocumentsConfigOrDictrd   rf   r   rj   r   r   r   r   r4      sB    
O
:
Jr4   c                   @   r3   )AsyncDocumentsNr5   r   r   r   c             	      s0  t j||d}| jjrtdt|}|d}|r!d|}nd}|d}|r3| dt| }|	dd d}|j
durJ|j
jdurJ|j
j}t|}t|}| jd	|||I dH }	|	jsei nt|	j}
t jj|
t|ddrdt|j
d
dt|j
ddt|j
dddini d}| j| |S r6   )r
   rC   rD   rE   rF   r"   r;   rG   r   rH   r   rI   r	   rJ   rK   async_requestrM   rN   rO   rP   rQ   rR   rS   rT   r   r   r   r;   j  s`   






zAsyncDocuments.getc          	         s   t j||d}| jjrtdt|}|d}|r!d|}nd}|d}|r3| dt| }|	dd d}|j
durJ|j
jdurJ|j
j}t|}t|}| jd	|||I dH  dS r]   )r
   r_   rD   rE   rF   r    r;   rG   r   rH   r   rI   r	   rJ   rK   rs   r`   r   r   r   r^     s6   




zAsyncDocuments.deleter(   c             	      s@  t j||d}| jjrtdt|}|d}|r!d|}nd}|d}|r3| dt| }|	dd  d }|j
d urJ|j
jd urJ|j
j}t|}t|}| jd|||I d H }	|	jsei nt|	j}
| jjsst|
}
t jj|
t|dd rdt|j
d	d t|j
d
d t|j
dd dini d}| j| |S ra   )r
   rc   rD   rE   rF   r)   r;   rG   r   rH   r   rI   r	   rJ   rK   rs   rM   rN   rO   r2   rd   rQ   rR   rS   re   r   r   r   rf     sd   






zAsyncDocuments._listc                   s.   t | j|d}td|| j||dI dH |S )a6  Lists documents asynchronously.

    Args:
      parent (str): The name of the RagStore containing the Documents.
      config (ListDocumentsConfig): Optional configuration for the list request.

    Returns:
      A Pager object that contains one page of documents. When iterating over
      the pager, it automatically fetches the next page if there are more.
    Usage:
    .. code-block:: python
      async for document in await
      client.aio.documents.list(parent='rag_store_name'):
        print(f"document: {document.name} - {document.display_name}")
    rg   r.   rb   N)r   rf   r   rh   r   r   r   rj   7  s   zAsyncDocuments.list)rk   rl   rm   rn   r   r
   ro   rP   r;   rp   r^   rq   rd   rf   r   rj   r   r   r   r   rr   h  sB    
Q
<
Lrr   )N)#	functoolsr   rN   loggingtypingr   r   r   urllib.parser    r   r	   r
   r   r   r   r   pagersr   r   	getLoggerloggerdictrn   objectr   r    r"   r'   r)   r2   
BaseModuler4   rr   r   r   r   r   <module>   s~   












 h