
    +j              	          d dl Z d dl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
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j        d          Z	 d deeeef         ef         deeeef                  deeef         fdZ 	 d deeeef         ef         deeeef                  deeef         fdZ!	 d deeeef         ef         deeeef                  deeef         fdZ"	 d deeeef         ef         deeeef                  deeef         fdZ#	 d deeeef         ef         deeeef                  deeef         fdZ$	 d deeeef         ef         deeeef                  deeef         fdZ%	 d deeeef         ef         deeeef                  deeef         fdZ&	 d deeeef         ef         deeeef                  deeef         fdZ'	 d deeeef         ef         deeeef                  deeef         fdZ(	 d deeeef         ef         deeeef                  deeef         fdZ) G d dej*                  Z+ G d dej*                  Z,dS )!    N)AnyOptionalUnion)	urlencode   )_api_client)_api_module)_common)_extra_utils)_transformers)types)get_value_by_path)set_value_by_path)
AsyncPagerPagerzgoogle_genai.filesfrom_objectparent_objectreturnc                 n    i }t          | dg          !t          |dgt          | dg                     |S )Nfilegetvsetvr   r   	to_objects      V/home/wildlama/visual-decline/.venv/lib/python3.11/site-packages/google/genai/files.py_CreateFileParameters_to_mldevr   (   A     !)	+x  ,VHd;99:::	    c                 n    i }t          | dg          !t          |dgt          | dg                     |S NsdkHttpResponsesdk_http_responser   r   s      r   _CreateFileResponse_from_mldevr$   3   P     !)	+)*++7'(${=N<O*P*P   
r   c           
          i }t          | dg          4t          |ddgt          j        t          | dg                               |S Nname_urlr   r   r   tt_file_namer   s      r   _DeleteFileParameters_to_mldevr-   @   W     !)	+x  ,FF#Q]4fX3N3N%O%O   
r   c                 n    i }t          | dg          !t          |dgt          | dg                     |S r!   r   r   s      r   _DeleteFileResponse_from_mldevr0   M   r%   r   c           
          i }t          | dg          4t          |ddgt          j        t          | dg                               |S r'   r*   r   s      r   _GetFileParameters_to_mldevr2   Z   r.   r   c                 n    i }t          | dg          !t          |dgt          | dg                     |S )Nurisr   r   s      r   )_InternalRegisterFilesParameters_to_mldevr5   g   r   r   c                     i }t          | dg          "t          |ddgt          | dg                     t          | dg          "t          |ddgt          | dg                     |S )N	page_size_querypageSize
page_token	pageTokenr   r   s      r   _ListFilesConfig_to_mldevr<   r   s     !)	+}%%1*-tK+/O/O   
+~&&2	;[<.))   
r   c                 j    i }t          | dg          t          t          | dg          |           |S )Nconfig)r   r<   r   s      r   _ListFilesParameters_to_mldevr?      s=     !)	+z"".d;
;;YGGG	r   c           	      J   i }t          | dg          !t          |dgt          | dg                     t          | dg          !t          |dgt          | dg                     t          | dg          +t          |dgd t          | dg          D                        |S )Nr"   r#   nextPageTokennext_page_tokenfilesc                     g | ]}|S  rE   .0items     r   
<listcomp>z1_ListFilesResponse_from_mldev.<locals>.<listcomp>       NNNNNNr   r   r   s      r   _ListFilesResponse_from_mldevrK      s     !)	+)*++7'(${=N<O*P*P   
+())5&'kO;L)M)MNNN	+y!!-WINNkG91M1MNNNOOO	r   c           	          i }t          | dg          !t          |dgt          | dg                     t          | dg          +t          |dgd t          | dg          D                        |S )Nr"   r#   rC   c                     g | ]}|S rE   rE   rF   s     r   rI   z5_RegisterFilesResponse_from_mldev.<locals>.<listcomp>   rJ   r   r   r   s      r   !_RegisterFilesResponse_from_mldevrN      s     !)	+)*++7'(${=N<O*P*P   
+y!!-WINNkG91M1MNNNOOO	r   c            	          e Zd Zdddeej                 dej        fdZdddej        deej	                 dej
        fdZdddedeej                 dej        fd	Zdddedeej                 dej        fd
Zdddee         deej                 dej        fdZdddeeej        e         ej        f         deej                 dej        fdZdddeeej        ej        ej        f         deej                  de!fdZ"ddde#j$        j%        j&        dee         deej                 dej        fdZ'dddeej                 de(ej                 fdZdS )FilesNr>   r>   r   c                   t          j        |          }| j        j        rt	          d          t          |          }|                    d          }|rd                    |          }nd}|                    d          }|r| dt          |           }|	                    dd            d }|j
        |j
        j        |j
        j        }t          j        |          }t          j        |          }| j                            d|||          }|j        si nt#          j        |j                  }	| j        j        st'          |	          }	t           j                            |	t-          |dd           rDdt-          |j
        d	d           t-          |j
        d
d           t-          |j
        dd           dini           }
t          j        |j                  |
_        | j                            |
           |
S NrQ   iThis method is only supported in Gemini Developer API mode, not in Gemini Enterprise Agent Platform mode.r)   rC   r8   ?r>   getresponse_schemaresponse_json_schemainclude_all_fieldsrW   rX   rY   responsekwargsheaders)r   _ListFilesParametersr   vertexai
ValueErrorr?   rV   
format_mapr   popr>   http_optionsr
   convert_to_dictencode_unserializable_typesrequestbodyjsonloadsrK   ListFilesResponse_from_responsegetattrHttpResponser_   r#   _verify_responseselfr>   parameter_modelrequest_dictrequest_url_dictpathquery_paramsre   r\   response_dictreturn_values              r   _listzFiles._list   sO    0  O
   4  
 3?CCl%))&11	 !!"233##H--L 100y..00dXt$$$04L*"/;$+8l*<88L6|DDL''t\<PPH&mJBBHM1J1JM$ C3MBBm*99 ?Hd33#*#*,=t$ $ )0#*,BD) ) '.#*,@$' '
 

 
 ! :  L$ &+%7 & & &L" 	%%l333r   r   c                T   t          j        ||          }| j        j        rt	          d          t          |          }|                    d          }|rd                    |          }nd}|                    d          }|r| dt          |           }|	                    dd            d }|j
        |j
        j        |j
        j        }t          j        |          }t          j        |          }| j                            d|||          }	|Bt!          |d	d           r1t          j        |	
          }
| j                            |
           |
S |	j        si nt)          j        |	j                  }| j        j        st-          |          }t           j                            |t!          |dd           rDdt!          |j
        dd           t!          |j
        dd           t!          |j
        dd           dini           }
| j                            |
           |
S Nr   r>   rT   r)   zupload/v1beta/filesr8   rU   r>   postshould_return_http_responser#   rW   rX   rY   rZ   r[   )r   _CreateFileParametersr   ra   rb   r   rV   rc   r   rd   r>   re   r
   rf   rg   rh   rn   CreateFileResponserp   ri   rj   rk   r$   rm   rr   r   r>   rs   rt   ru   rv   rw   re   r\   ry   rx   s               r   _createzFiles._create   s    1  O   %4  
 4ODDl%))&11	 %$//0@AA$##H--L 100y..00dXt$$$04L*"/;$+8l*<88L6|DDL''lL H g-t  -IIIl
''555&mJBBHM1J1JM$ D4]CCm+:: ?Hd33#*#*,=t$ $ )0#*,BD) ) '.#*,@$' '
 

 
 ! ;  L& 	%%l333r   r(   c                   t          j        ||          }| j        j        rt	          d          t          |          }|                    d          }|rd                    |          }nd}|                    d          }|r| dt          |           }|	                    dd           d}|j
        |j
        j        |j
        j        }t          j        |          }t          j        |          }| j                            d	|||          }	|	j        si nt#          j        |	j                  }
t           j                            |
t+          |dd          rDdt+          |j
        d
d          t+          |j
        dd          t+          |j
        dd          dini           }| j                            |           |S )ai  Retrieves the file information from the service.

    Args:
      name (str): The name identifier for the file to retrieve.
      config (GetFileConfig): Optional, configuration for the get method.

    Returns:
      File: The file information.

    Usage:

    .. code-block:: python

      file = client.files.get(name='files/...')
      print(file.uri)
    r(   r>   rT   r)   files/{file}r8   rU   r>   NrV   rW   rX   rY   rZ   r[   )r   _GetFileParametersr   ra   rb   r2   rV   rc   r   rd   r>   re   r
   rf   rg   rh   ri   rj   rk   Filerm   rn   rp   rr   r(   r>   rs   rt   ru   rv   rw   re   r\   rx   ry   s               r   rV   z	Files.getJ  s   ( .  O   4  
 1AAl%))&11	 (()9::##H--L 100y..00dXt$$$04L*"/;$+8l*<88L6|DDL''t\<PPH&mJBBHM1J1JM:,, ?Hd33#*#*,=t$ $ )0#*,BD) ) '.#*,@$' '
 

 
 ! -  L& 	%%l333r   c                
   t          j        ||          }| j        j        rt	          d          t          |          }|                    d          }|rd                    |          }nd}|                    d          }|r| dt          |           }|	                    dd           d}|j
        |j
        j        |j
        j        }t          j        |          }t          j        |          }| j                            d	|||          }	|	j        si nt#          j        |	j                  }
| j        j        st'          |
          }
t           j                            |
t-          |dd          rDdt-          |j
        d
d          t-          |j
        dd          t-          |j
        dd          dini           }t          j        |	j                  |_        | j                            |           |S )a]  Deletes a remotely stored file.

    Args:
      name (str): The name identifier for the file to delete.
      config (DeleteFileConfig): Optional, configuration for the delete method.

    Returns:
      DeleteFileResponse: The response for the delete method

    Usage:

    .. code-block:: python

      client.files.delete(name='files/...')
    r   rT   r)   r   r8   rU   r>   NdeleterW   rX   rY   rZ   r[   r^   )r   _DeleteFileParametersr   ra   rb   r-   rV   rc   r   rd   r>   re   r
   rf   rg   rh   ri   rj   rk   r0   DeleteFileResponserm   rn   ro   r_   r#   rp   r   s               r   r   zFiles.delete  sY   & 1  O   4  
 4ODDl%))&11	 (()9::##H--L 100y..00dXt$$$04L*"/;$+8l*<88L6|DDL''$l H 'mJBBHM1J1JM$ D4]CCm+:: ?Hd33#*#*,=t$ $ )0#*,BD) ) '.#*,@$' '
 

 
 ! ;  L$ &+%7 & & &L" 	%%l333r   r4   c                T   t          j        ||          }| j        j        rt	          d          t          |          }|                    d          }|rd                    |          }nd}|                    d          }|r| dt          |           }|	                    dd            d }|j
        |j
        j        |j
        j        }t          j        |          }t          j        |          }| j                            d|||          }	|Bt!          |d	d           r1t          j        |	
          }
| j                            |
           |
S |	j        si nt)          j        |	j                  }| j        j        st-          |          }t           j                            |t!          |dd           rDdt!          |j
        dd           t!          |j
        dd           t!          |j
        dd           dini           }
| j                            |
           |
S Nr4   r>   rT   r)   zfiles:registerr8   rU   r>   r~   r   r   rW   rX   rY   rZ   r[   )r    _InternalRegisterFilesParametersr   ra   rb   r5   rV   rc   r   rd   r>   re   r
   rf   rg   rh   rn   RegisterFilesResponserp   ri   rj   rk   rN   rm   rr   r4   r>   rs   rt   ru   rv   rw   re   r\   ry   rx   s               r   _register_fileszFiles._register_files  s    <  O    4  
 ?OOl%))&11	  **+;<<##H--L 100y..00dXt$$$04L*"/;$+8l*<88L6|DDL''lL H g-t  08LLLl
''555&mJBBHM1J1JM$ G7FFm.== ?Hd33#*#*,=t$ $ )0#*,BD) ) '.#*,@$' '
 

 
 ! >  L& 	%%l333r   c                6   | j         j        rt          d          t          j                    }|rPt          |t                    rt          j        di |}n|}t          j        |j        |j	        |j
                  }nt          j                    }|j	        )|j	                            d          sd|j	         |_	        t          j        ||j        |j                  \  }}}||_        ||_        |                     |t          j        |d                    }|j        |j        j        d	|j        j        vrt)          d
          |j        j        d	         }	t          |t*          j                  r$| j                             ||	|j        |          }
n7t1          j        |          }| j                             ||	|j        |          }
t          j                            |
j        d         |r|                                ni           S )a  Calls the API to upload a file using a supported file service.

    Args:
      file: A path to the file or an `IOBase` object to be uploaded. If it's an
        IOBase object, it must be opened in blocking (the default) mode and
        binary mode. In other words, do not use non-blocking mode or text mode.
        The given stream must be seekable, that is, it must be able to call
        `seek()` on 'path'.
      config: Optional parameters to set `diplay_name`, `mime_type`, and `name`.
    =This method is only supported in the Gemini Developer client.	mime_typer(   display_nameNfiles/user_http_optionsuser_mime_typeTre   r   r}   x-goog-upload-urlPFailed to create file. Upload URL did not returned from the create file request.re   r   r[   rE   )r   ra   rb   r   UploadFileConfig
isinstancedictr   r   r(   r   
startswithr   prepare_resumable_uploadre   
size_bytesr   CreateFileConfigr#   r_   KeyErrorioIOBaseupload_fileosfspathrm   rj   
model_dumprr   r   r>   config_modelfile_objre   r   r   r\   
upload_urlreturn_filefs_paths               r   uploadzFiles.uploadA  sU       
I   )++L 	FD	!	! -7777 * #0  hh h} )A)A()K)K .x}..hm*6*O&3#-+ + +'L*i
 %H"H||%%4
 
 
   H 	"*%-5h&@&HHH   +34GHJ$	"" $00

H/l 1  kk 	$g$00
:x2 1  k :$$!&),2:|&&((( %   r   c                x   | j         j        rt          d          d}|r)t          |t                    rt          j        di |}n|}t          |t
          j                  r|j        t          d          t          j
        |          }d| d}ddi}| dt          |           }d}t          |d	g          t          |d	g          }| j                             ||
          }t          |t
          j                  r||_        n-t          |t
          j                  r|j        ||j        _        |S )ar  Downloads a file's data from storage.

    Files created by `upload` can't be downloaded. You can tell which files are
    downloadable by checking the `source` or `download_uri` property.

    Note: This method returns the data as bytes. For `Video` and
    `GeneratedVideo` objects there is an additional side effect, that it also
    sets the `video_bytes` property on the `Video` object.

    Args:
      file (str): A file name, uri, or file object. Identifying which file to
        download.
      config (DownloadFileConfigOrDict): Optional, configuration for the get
        method.

    Returns:
      File: The file data as bytes.

    Usage:

    .. code-block:: python

      for file client.files.list():
        if file.download_uri is not None:
          break
      else:
        raise ValueError('No files found with a `download_uri`.')
      data = client.files.download(file=file)
      # data = client.files.download(file=file.name)
      # data = client.files.download(file=file.download_uri)

      video = types.Video(uri=file.uri)
      video_bytes = client.files.download(file=video)
      video.video_bytes
    r   NzOnly generated files can be downloaded, uploaded files can't be downloaded. You can tell which files are downloadable by checking the `source` or `download_uri` property.r   	:downloadaltmediarU   re   r   rE   )r   ra   rb   r   r   r   DownloadFileConfigr   download_urir+   r,   r   r   download_fileVideovideo_bytesGeneratedVideovideo)	rr   r   r>   r   r(   rv   rw   re   datas	            r   downloadzFiles.download  sx   R   
I   L 	FD	!	! /99&99$
## (9(A5  
 =D#D###D7#L..Y|,,..DLL>*++7,(899l))! *  D
 $$$ $d	D%.	/	/ $DJ4J#djKr   authc                0   t          |t          j        j        j                  st          d          |t          j                    }n5t          j                            |          }|	                    d          }|j
        pt          j                    }|j        pi }d |                                D             }t          j        | j        |          }d| |d<   |j        r
|j        |d<   ||_        ||_
        |                     ||	          S )
*Registers gcs files with the file service.:auth must be a google.auth.credentials.Credentials object.NTdeepc                 >    i | ]\  }}|                                 |S rE   lowerrG   kvs      r   
<dictcomp>z(Files.register_files.<locals>.<dictcomp>  &    8881qwwyy!888r   Bearer authorizationx-goog-user-projectr   )r   googler   credentialsCredentialsrb   r   RegisterFilesConfigmodel_validate
model_copyre   HttpOptionsr_   itemsr   get_token_from_credentialsquota_project_idr   rr   r   r4   r>   re   r_   tokens          r   register_fileszFiles.register_files  s    dFK3?@@ 
F   ~(**ff(77??f  d ++f&=%*;*=*=L"(bG88888G243CTJJE000GO ='+'<g#$"L&FT&999r   c                \    | j         }t          d||                      |          |          S )a  Lists all files from the service.

    Args:
      config (ListFilesConfig): Optional, configuration for the list method.

    Returns:
      A Pager object that contains one page of files. When iterating over
      the pager, it automatically fetches the next page if there are more.

    Usage:

    .. code-block:: python

      for file in client.files.list(config={'page_size': 10}):
        print(file.name)
    rC   rQ   )rz   r   rr   r>   list_requests      r   listz
Files.list  s7    ( :L

&
!!	  r   ))__name__
__module____qualname__r   r   ListFilesConfigOrDictrl   rz   
FileOrDictCreateFileConfigOrDictr   r   strGetFileConfigOrDictr   rV   DeleteFileConfigOrDictr   r   r   RegisterFilesConfigOrDictr   r   r   r   PathLiker   r   UploadFileConfigOrDictr   r   r   DownloadFileConfigOrDictbytesr   r   r   r   r   r   r   rE   r   r   rP   rP      s,        @DB B B ;<BB B B BP 8<	M M M M u34	M
 M M M M` IMO O OO"*5+D"EOzO O O Od LPU U UU"*5+G"HUU U U Uv ;?	M M M IM u67	M
 "M M M Mf 8<	J J J #r{3'23J u34	J
 zJ J J J` :>	O O O #uz5;0DDEO u56	O
 O O O Ol ;?: : : K#/: I	:
 u67: ": : : :D @D   ;<UZ     r   rP   c            	          e Zd Zdddeej                 dej        fdZdddej        deej	                 dej
        fdZdddedeej                 dej        fd	Zdddedeej                 dej        fd
Zdddee         deej                 dej        fdZdddeeej        e         ej        f         deej                 dej        fdZdddeeej        f         deej                 defdZ ddde!j"        j#        j$        dee         deej                 dej        fdZ%dddeej                 de&ej                 fdZdS )
AsyncFilesNrQ   r>   r   c                  K   t          j        |          }| j        j        rt	          d          t          |          }|                    d          }|rd                    |          }nd}|                    d          }|r| dt          |           }|	                    dd            d }|j
        |j
        j        |j
        j        }t          j        |          }t          j        |          }| j                            d|||           d {V }|j        si nt#          j        |j                  }	| j        j        st'          |	          }	t           j                            |	t-          |dd           rDdt-          |j
        d	d           t-          |j
        d
d           t-          |j
        dd           dini           }
t          j        |j                  |
_        | j                            |
           |
S rS   )r   r`   r   ra   rb   r?   rV   rc   r   rd   r>   re   r
   rf   rg   async_requestri   rj   rk   rK   rl   rm   rn   ro   r_   r#   rp   rq   s              r   rz   zAsyncFiles._list  sx      0  O
   4  
 3?CCl%))&11	 !!"233##H--L 100y..00dXt$$$04L*"/;$+8l*<88L6|DDL%33t\<       H 'mJBBHM1J1JM$ C3MBBm*99 ?Hd33#*#*,=t$ $ )0#*,BD) ) '.#*,@$' '
 

 
 ! :  L$ &+%7 & & &L" 	%%l333r   r   c                d  K   t          j        ||          }| j        j        rt	          d          t          |          }|                    d          }|rd                    |          }nd}|                    d          }|r| dt          |           }|	                    dd            d }|j
        |j
        j        |j
        j        }t          j        |          }t          j        |          }| j                            d|||           d {V }	|Bt!          |d	d           r1t          j        |	
          }
| j                            |
           |
S |	j        si nt)          j        |	j                  }| j        j        st-          |          }t           j                            |t!          |dd           rDdt!          |j
        dd           t!          |j
        dd           t!          |j
        dd           dini           }
| j                            |
           |
S r|   )r   r   r   ra   rb   r   rV   rc   r   rd   r>   re   r
   rf   rg   r   rn   r   rp   ri   rj   rk   r$   rm   r   s               r   r   zAsyncFiles._created  s      1  O   %4  
 4ODDl%))&11	 %$//0@AA$##H--L 100y..00dXt$$$04L*"/;$+8l*<88L6|DDL%33lL       H g-t  -IIIl
''555&mJBBHM1J1JM$ D4]CCm+:: ?Hd33#*#*,=t$ $ )0#*,BD) ) '.#*,@$' '
 

 
 ! ;  L& 	%%l333r   r(   c                  K   t          j        ||          }| j        j        rt	          d          t          |          }|                    d          }|rd                    |          }nd}|                    d          }|r| dt          |           }|	                    dd           d}|j
        |j
        j        |j
        j        }t          j        |          }t          j        |          }| j                            d	|||           d{V }	|	j        si nt#          j        |	j                  }
t           j                            |
t+          |dd          rDdt+          |j
        d
d          t+          |j
        dd          t+          |j
        dd          dini           }| j                            |           |S )as  Retrieves the file information from the service.

    Args:
      name (str): The name identifier for the file to retrieve.
      config (GetFileConfig): Optional, configuration for the get method.

    Returns:
      File: The file information.

    Usage:

    .. code-block:: python

      file = await client.aio.files.get(name='files/...')
      print(file.uri)
    r   rT   r)   r   r8   rU   r>   NrV   rW   rX   rY   rZ   r[   )r   r   r   ra   rb   r2   rV   rc   r   rd   r>   re   r
   rf   rg   r   ri   rj   rk   r   rm   rn   rp   r   s               r   rV   zAsyncFiles.get  s<     ( .  O   4  
 1AAl%))&11	 (()9::##H--L 100y..00dXt$$$04L*"/;$+8l*<88L6|DDL%33t\<       H 'mJBBHM1J1JM:,, ?Hd33#*#*,=t$ $ )0#*,BD) ) '.#*,@$' '
 

 
 ! -  L& 	%%l333r   c                  K   t          j        ||          }| j        j        rt	          d          t          |          }|                    d          }|rd                    |          }nd}|                    d          }|r| dt          |           }|	                    dd           d}|j
        |j
        j        |j
        j        }t          j        |          }t          j        |          }| j                            d	|||           d{V }	|	j        si nt#          j        |	j                  }
| j        j        st'          |
          }
t           j                            |
t-          |dd          rDdt-          |j
        d
d          t-          |j
        dd          t-          |j
        dd          dini           }t          j        |	j                  |_        | j                            |           |S )ag  Deletes a remotely stored file.

    Args:
      name (str): The name identifier for the file to delete.
      config (DeleteFileConfig): Optional, configuration for the delete method.

    Returns:
      DeleteFileResponse: The response for the delete method

    Usage:

    .. code-block:: python

      await client.aio.files.delete(name='files/...')
    r   rT   r)   r   r8   rU   r>   Nr   rW   rX   rY   rZ   r[   r^   )r   r   r   ra   rb   r-   rV   rc   r   rd   r>   re   r
   rf   rg   r   ri   rj   rk   r0   r   rm   rn   ro   r_   r#   rp   r   s               r   r   zAsyncFiles.delete  s{     & 1  O   4  
 4ODDl%))&11	 (()9::##H--L 100y..00dXt$$$04L*"/;$+8l*<88L6|DDL%33$l       H 'mJBBHM1J1JM$ D4]CCm+:: ?Hd33#*#*,=t$ $ )0#*,BD) ) '.#*,@$' '
 

 
 ! ;  L$ &+%7 & & &L" 	%%l333r   r4   c                d  K   t          j        ||          }| j        j        rt	          d          t          |          }|                    d          }|rd                    |          }nd}|                    d          }|r| dt          |           }|	                    dd            d }|j
        |j
        j        |j
        j        }t          j        |          }t          j        |          }| j                            d|||           d {V }	|Bt!          |d	d           r1t          j        |	
          }
| j                            |
           |
S |	j        si nt)          j        |	j                  }| j        j        st-          |          }t           j                            |t!          |dd           rDdt!          |j
        dd           t!          |j
        dd           t!          |j
        dd           dini           }
| j                            |
           |
S r   )r   r   r   ra   rb   r5   rV   rc   r   rd   r>   re   r
   rf   rg   r   rn   r   rp   ri   rj   rk   rN   rm   r   s               r   r   zAsyncFiles._register_files]  s      <  O    4  
 ?OOl%))&11	  **+;<<##H--L 100y..00dXt$$$04L*"/;$+8l*<88L6|DDL%33lL       H g-t  08LLLl
''555&mJBBHM1J1JM$ G7FFm.== ?Hd33#*#*,=t$ $ )0#*,BD) ) '.#*,@$' '
 

 
 ! >  L& 	%%l333r   c                  K   | j         j        rt          d          t          j                    }|rPt          |t                    rt          j        di |}n|}t          j        |j        |j	        |j
                  }nt          j                    }|j	        )|j	                            d          sd|j	         |_	        t          j        ||j        |j                  \  }}}||_        ||_        |                     |t          j        |d                     d{V }|j        (|j        j        d	|j        j        vrd
|j        j        vrt)          d          d	|j        j        v r|j        j        d	         }	n|j        j        d
         }	t          |t*          j                  r*| j                             ||	|j        |           d{V }
n=t1          j        |          }| j                             ||	|j        |           d{V }
t          j                            |
j        d         |r|                                ni           S )a  Calls the API to upload a file asynchronously using a supported file service.

    Args:
      file: A path to the file or an `IOBase` object to be uploaded. If it's an
        IOBase object, it must be opened in blocking (the default) mode and
        binary mode. In other words, do not use non-blocking mode or text mode.
        The given stream must be seekable, that is, it must be able to call
        `seek()` on 'path'.
      config: Optional parameters to set `diplay_name`, `mime_type`, and `name`.
    r   r   Nr   r   Tr   r}   r   zX-Goog-Upload-URLr   r   r   r[   rE   )r   ra   rb   r   r   r   r   r   r   r(   r   r   r   r   re   r   r   r   r#   r_   r   r   r   async_upload_filer   r   rm   rj   r   r   s               r   r   zAsyncFiles.upload  s         
I   )++L 	FD	!	! -7777 * #0  hh h} )A)A()K)K .x}..hm*6*O&3#-+ + +'L*i
 %H"H\\%%4
 
 
 "        H 	"*%-5x'A'III#8+E+MMM    
 : B	B	B-56IJjj-56IJj$	"" *<<

H/l =        kk 	$g*<<
:x2 =        k :$$!&),2:|&&((( %   r   c                  K   | j         j        rt          d          d}|r)t          |t                    rt          j        d
i |}n|}t          j        |          }d| d}d}t          |dg          t          |dg          }ddi}|r| dt          |           }| j                             ||	           d{V }|S )a  Downloads a file's data from the file service.

    The Gemini Enterprise Agent Platform implementation of the API foes not
    include the file service.

    Files created by `upload` can't be downloaded. You can tell which files are
    downloadable by checking the `download_uri` property.

    Args:
      File (str): A file name, uri, or file object. Identifying which file to
        download.
      config (DownloadFileConfigOrDict): Optional, configuration for the get
        method.

    Returns:
      File: The file data as bytes.

    Usage:

    .. code-block:: python

      for file client.files.list():
        if file.download_uri is not None:
          break
      else:
        raise ValueError('No files found with a `download_uri`.')
      data = client.files.download(file=file)
      # data = client.files.download(file=file.name)
      # data = client.files.download(file=file.uri)
    r   Nr   r   re   r   r   rU   r   rE   )r   ra   rb   r   r   r   r   r+   r,   r   r   async_download_file)	rr   r   r>   r   r(   rv   re   rw   r   s	            r   r   zAsyncFiles.download  s(     H   
I   L 	FD	!	! /99&99=D#D###DLL>*++7,(899l7#L 100y..00d!55! 6        D
 Kr   r   c                L  K   t          |t          j        j        j                  st          d          |t          j                    }n5t          j                            |          }|	                    d          }|j
        pt          j                    }|j        pi }d |                                D             }t          j        | j        |           d{V }d| |d<   |j        r
|j        |d<   ||_        ||_
        |                     ||	           d{V S )
r   r   NTr   c                 >    i | ]\  }}|                                 |S rE   r   r   s      r   r   z-AsyncFiles.register_files.<locals>.<dictcomp>T  r   r   r   r   r   r   )r   r   r   r   r   rb   r   r   r   r   re   r   r_   r   r    async_get_token_from_credentialsr   r   r   s          r   r   zAsyncFiles.register_files@  sX      dFK3?@@ 
F   ~(**ff(77??f  d ++f&=%*;*=*=L"(bG88888G>$       E  100GO ='+'<g#$"L&F%%4%?????????r   c                l   K   | j         }t          d||                      |           d{V |          S )a  Lists all files from the service asynchronously.

    Args:
      config (ListFilesConfig): Optional, configuration for the list method.

    Returns:
      A Pager object that contains one page of files. When iterating over
      the pager, it automatically fetches the next page if there are more.

    Usage:

    .. code-block:: python

      async for file in await client.aio.files.list(config={'page_size': 10}):
        print(file.name)
    rC   rQ   N)rz   r   r   s      r   r   zAsyncFiles.listc  sM      ( :Ljjj''''''''	  r   )'r   r   r   r   r   r   rl   rz   r   r   r   r   r   r   r   rV   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rE   r   r   r   r     s,        @DD D D ;<DD D D DT 8<	M M M M u34	M
 M M M M` IMQ Q QQ"*5+D"EQzQ Q Q Qh LPU U UU"*5+G"HUU U U Uv ;?	M M M IM u67	M
 "M M M Mf 8<	O O O #r{3'23O u34	O
 zO O O Oj :>	A A A #uz/"A u56	A
 A A A AP ;?!@ !@ !@ K#/!@ I	!@
 u67!@ "!@ !@ !@ !@H @D   ;<%*     r   r   )N)-r   rj   loggingr   typingr   r   r   urllib.parser   google.authr    r   r	   r
   r   r   r+   r   r   r   r   r   pagersr   r   	getLoggerloggerr   r   objectr   r$   r-   r0   r2   r5   r<   r?   rK   rN   
BaseModulerP   r   rE   r   r   <module>r     sO  $ 
			   				 ' ' ' ' ' ' ' ' ' ' " " " " " "                                               . . . . . . . . . . . . % % % % % % % %		/	0	0
 /3 tCH~v-.DcN+ 
#s(^    /3
 
tCH~v-.
DcN+
 
#s(^
 
 
 
 /3
 
tCH~v-.
DcN+
 
#s(^
 
 
 
 /3
 
tCH~v-.
DcN+
 
#s(^
 
 
 
 /3
 
tCH~v-.
DcN+
 
#s(^
 
 
 
 /3 tCH~v-.DcN+ 
#s(^    /3 tCH~v-.DcN+ 
#s(^   . /3 tCH~v-.DcN+ 
#s(^    /3 tCH~v-.DcN+ 
#s(^   * /3 tCH~v-.DcN+ 
#s(^    d	 d	 d	 d	 d	K" d	 d	 d	Na	 a	 a	 a	 a	' a	 a	 a	 a	 a	r   