o
    iA                  	   @   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   \/var/www/html/karishye-ai-python/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_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 )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_mldevk   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|
| 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"   r;   
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_paramsrE   r=   response_dictreturn_valuer   r   r   r;      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
    r7   r8   r   r9   r   r:   r   Ndelete)r
   _DeleteDocumentParametersr@   rA   rB   r    r;   rC   r   rD   r   rE   r	   rF   rG   rH   
rQ   r   r   rR   rS   rT   rU   rV   rE   r=   r   r   r   rZ      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 a<  Lists all Documents in a FileSearchStore.

    Args:
      parent (str): The name of the FileSearchStore containing the Documents.
      config (ListDocumentsConfig | None): Optional parameters for the request,
        such as page_size.

    Returns:
      ListDocumentsResponse: A paginated list of Documents.
    r(   r   r8   r   z{parent}/documentsr   r:   r   Nr;   r<   )r
   _ListDocumentsParametersr@   rA   rB   r)   r;   rC   r   rD   r   rE   r	   rF   rG   rH   rI   rJ   rK   r2   ListDocumentsResponserM   rN   rO   rQ   r(   r   rR   rS   rT   rU   rV   rE   r=   rW   rX   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.   r^   )r   rb   r   rQ   r(   r   list_requestr   r   r   list7  s   zDocuments.list)__name__
__module____qualname__strr   r
   GetDocumentConfigOrDictrL   r;   DeleteDocumentConfigOrDictrZ   ListDocumentsConfigOrDictr`   rb   r   rf   r   r   r   r   r4      sB    
?
;
Er4   c                   @   r3   )AsyncDocumentsNr5   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 r6   )r
   r?   r@   rA   rB   r"   r;   rC   r   rD   r   rE   r	   rF   rG   async_requestrI   rJ   rK   rL   rM   rN   rO   rP   r   r   r   r;   V  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 rY   )r
   r[   r@   rA   rB   r    r;   rC   r   rD   r   rE   r	   rF   rG   ro   r\   r   r   r   rZ     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 r]   )r
   r_   r@   rA   rB   r)   r;   rC   r   rD   r   rE   r	   rF   rG   ro   rI   rJ   rK   r2   r`   rM   rN   rO   ra   r   r   r   rb     sF   





zAsyncDocuments._listc                   s.   t | j|d}td|| j||dI dH |S )a2  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.documents.list(parent='rag_store_name'):
        print(f"document: {document.name} - {document.display_name}")
    rc   r.   r^   N)r   rb   r   rd   r   r   r   rf     s   zAsyncDocuments.list)rg   rh   ri   rj   r   r
   rk   rL   r;   rl   rZ   rm   r`   rb   r   rf   r   r   r   r   rn   T  sB    
A
;
Grn   )N)#	functoolsr   rJ   loggingtypingr   r   r   urllib.parser    r   r	   r
   r   r   r   r   pagersr   r   	getLoggerloggerdictrj   objectr   r    r"   r'   r)   r2   
BaseModuler4   rn   r   r   r   r   <module>   s~   












 S