o
    YiZ?                  	   @   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   Z	to_object r   P/home/kim/smarthome/.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 )NZ	page_sizer   ZpageSizeZ
page_tokenZ	pageTokenr   r   r   r   r   _ListDocumentsConfig_to_mldevH   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 )NZsdkHttpResponseZsdk_http_responseZnextPageTokenZ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_mldevk   s   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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|
| 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   =This method is only supported in the Gemini Developer client.r   {name}r   ?r   Ngetresponsekwargs)r
   _GetDocumentParameters_api_clientvertexai
ValueErrorr!   r2   
format_mapr   popr   http_optionsr	   convert_to_dictencode_unserializable_typesrequestbodyjsonloadsDocument_from_response
model_dump_verify_responseselfr   r   parameter_modelrequest_dictrequest_url_dictpathquery_paramsr<   r4   response_dictreturn_valuer   r   r   r2      s<   




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
    r.   r/   r   r0   r   r1   r   Ndelete)r
   _DeleteDocumentParametersr7   r8   r9   r   r2   r:   r   r;   r   r<   r	   r=   r>   r?   
rH   r   r   rI   rJ   rK   rL   rM   r<   r4   r   r   r   rQ      s4   




zDocuments.deleter#   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}
| jjsot|
}
t jj|
| d	}| j| |S 
Nr#   r   r/   r   z{parent}/documentsr   r1   r   r2   r3   )r
   _ListDocumentsParametersr7   r8   r9   r$   r2   r:   r   r;   r   r<   r	   r=   r>   r?   r@   rA   rB   r)   ListDocumentsResponserD   rE   rF   rH   r#   r   rI   rJ   rK   rL   rM   r<   r4   rN   rO   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%   rU   )r   rY   r   rH   r#   r   Zlist_requestr   r   r   list,  s   zDocuments.list)__name__
__module____qualname__strr   r
   GetDocumentConfigOrDictrC   r2   DeleteDocumentConfigOrDictrQ   ListDocumentsConfigOrDictrW   rY   r   r\   r   r   r   r   r+      sB    
?
;
:r+   c                   @   r*   )AsyncDocumentsNr,   r   r   r   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}
t jj|
| d
}| j| |S r-   )r
   r6   r7   r8   r9   r!   r2   r:   r   r;   r   r<   r	   r=   r>   async_requestr@   rA   rB   rC   rD   rE   rF   rG   r   r   r   r2   L  sB   





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 rP   )r
   rR   r7   r8   r9   r   r2   r:   r   r;   r   r<   r	   r=   r>   re   rS   r   r   r   rQ     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|
| d	}| j| |S rT   )r
   rV   r7   r8   r9   r$   r2   r:   r   r;   r   r<   r	   r=   r>   re   r@   rA   rB   r)   rW   rD   rE   rF   rX   r   r   r   rY     sF   





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}")
    rZ   r%   rU   N)r   rY   r   r[   r   r   r   r\     s   zAsyncDocuments.list)r]   r^   r_   r`   r   r
   ra   rC   r2   rb   rQ   rc   rW   rY   r   r\   r   r   r   r   rd   J  sB    
A
;
<rd   )N)#	functoolsr   rA   loggingtypingr   r   r   urllib.parser    r   r	   r
   r   r   r   r   Zpagersr   r   	getLoggerloggerdictr`   objectr   r   r!   r"   r$   r)   Z
BaseModuler+   rd   r   r   r   r   <module>   s~   












 I