
    OjǮ              	          S SK r S SKrS SKrS SKrS SKJrJrJr  S SKJ	r	  S SK
rSSKJr  SSKJr  SSKJr  SSKJr  SS	KJr  SS
KJr  SSKJr  SSKJr  SSKJrJr  \R6                  " S5      r S S\\\\4   \4   S\\\\4      S\\\4   4S jjr  S S\\\\4   \4   S\\\\4      S\\\4   4S jjr! S S\\\\4   \4   S\\\\4      S\\\4   4S jjr" S S\\\\4   \4   S\\\\4      S\\\4   4S jjr# S S\\\\4   \4   S\\\\4      S\\\4   4S jjr$ S S\\\\4   \4   S\\\\4      S\\\4   4S jjr% S S\\\\4   \4   S\\\\4      S\\\4   4S jjr& S S\\\\4   \4   S\\\\4      S\\\4   4S jjr' S S\\\\4   \4   S\\\\4      S\\\4   4S jjr( S S\\\\4   \4   S\\\\4      S\\\4   4S jjr) " S S\RT                  5      r+ " S S\RT                  5      r,g)!    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                 X    0 n[        U S/5      b  [        US/[        U S/5      5        U$ )Nfilegetvsetvr   r   	to_objects      T/var/www/html/leaf-doctor-v1/venv/lib/python3.13/site-packages/google/genai/files.py_CreateFileParameters_to_mldevr   (   5     !)	+x ,VHd;9:	    c                 X    0 n[        U S/5      b  [        US/[        U S/5      5        U$ NsdkHttpResponsesdk_http_responser   r   s      r   _CreateFileResponse_from_mldevr$   3   @     !)	+)*+7'(${=N<O*P 
r   c           
          0 n[        U S/5      b.  [        USS/[        R                  " [        U S/5      5      5        U$ Nname_urlr   r   r   tt_file_namer   s      r   _DeleteFileParameters_to_mldevr-   @   F     !)	+x ,FF#Q]]4fX3N%O 
r   c                 X    0 n[        U S/5      b  [        US/[        U S/5      5        U$ r!   r   r   s      r   _DeleteFileResponse_from_mldevr0   M   r%   r   c           
          0 n[        U S/5      b.  [        USS/[        R                  " [        U S/5      5      5        U$ r'   r*   r   s      r   _GetFileParameters_to_mldevr2   Z   r.   r   c                 X    0 n[        U S/5      b  [        US/[        U S/5      5        U$ )Nurisr   r   s      r   )_InternalRegisterFilesParameters_to_mldevr5   g   r   r   c                     0 n[        U S/5      b  [        USS/[        U S/5      5        [        U S/5      b  [        USS/[        U S/5      5        U$ )N	page_size_querypageSize
page_token	pageTokenr   r   s      r   _ListFilesConfig_to_mldevr<   r   sm     !)	+}%1*-tK+/O 
+~&2	;[<.) 
r   c                 T    0 n[        U S/5      b  [        [        U S/5      U5        U$ )Nconfig)r   r<   r   s      r   _ListFilesParameters_to_mldevr?      s1     !)	+z".d;
;YG	r   c                    0 n[        U S/5      b  [        US/[        U S/5      5        [        U S/5      b  [        US/[        U S/5      5        [        U S/5      b)  [        US/[        U S/5       Vs/ s H  o3PM     sn5        U$ s  snf )Nr"   r#   nextPageTokennext_page_tokenfilesr   r   r   r   items       r   _ListFilesResponse_from_mldevrF      s     !)	+)*+7'(${=N<O*P 
+()5&'kO;L)MN	+y!-WIkG91MN1M1MNO	  Os   6B
c                     0 n[        U S/5      b  [        US/[        U S/5      5        [        U S/5      b)  [        US/[        U S/5       Vs/ s H  o3PM     sn5        U$ s  snf )Nr"   r#   rC   r   rD   s       r   !_RegisterFilesResponse_from_mldevrH      s}     !)	+)*+7'(${=N<O*P 
+y!-WIkG91MN1M1MNO	  Os   A#c            	          \ rS rSrSS.S\\R                     S\R                  4S jjrSS.S\R                  S\\R                     S\R                  4S jjrSS.S	\S\\R                     S\R                  4S
 jjrSS.S	\S\\R"                     S\R$                  4S jjrSS.S\\   S\\R*                     S\R,                  4S jjrSS.S\\\R4                  \   \R8                  4   S\\R:                     S\R                  4S jjrSS.S\\\R                  \R>                  \R@                  4   S\\RB                     S\"4S jjr#SS.S\$RJ                  RL                  RN                  S\\   S\\R*                     S\R,                  4S jjr(SS.S\\R                     S\)\R                     4S jjrSr*g)Files   Nr>   r>   r   c                   [         R                  " US9nU R                  R                  (       a  [	        S5      e[        U5      nUR                  S5      nU(       a  SR                  U5      nOSnUR                  S5      nU(       a  U S[        U5       3nUR                  SS 5        S nUR                  b-  UR                  R                  b  UR                  R                  n[        R                  " U5      n[        R                  " U5      nU R                  R                  SXSU5      nUR                   (       d  0 O["        R$                  " UR                   5      n	U R                  R                  (       d  ['        U	5      n	[         R(                  R+                  U	[-        USS 5      (       aG  S[-        UR                  S	S 5      [-        UR                  S
S 5      [-        UR                  SS 5      S.0O0 S9n
[         R.                  " UR0                  S9U
l        U R                  R5                  U
5        U
$ NrL   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rR   rS   rT   responsekwargsheaders)r   _ListFilesParametersr   vertexai
ValueErrorr?   rQ   
format_mapr   popr>   http_optionsr
   convert_to_dictencode_unserializable_typesrequestbodyjsonloadsrF   ListFilesResponse_from_responsegetattrHttpResponserZ   r#   _verify_responseselfr>   parameter_modelrequest_dictrequest_url_dictpathquery_paramsr`   rW   response_dictreturn_values              r   _listFiles._list   s    00O
   4 
 3?Cl%))&1	!!"23##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL''t<PH&mmBHMM1JM$$3MBm**99 ?Hd33 #*#**,=t$ )0#**,BD) '.#**,@$'

 ! : L$ &+%7%7  &L" 	%%l3r   r   c                   [         R                  " UUS9nU R                  R                  (       a  [	        S5      e[        U5      nUR                  S5      nU(       a  SR                  U5      nOSnUR                  S5      nU(       a  U S[        U5       3nUR                  SS 5        S nUR                  b-  UR                  R                  b  UR                  R                  n[        R                  " U5      n[        R                  " U5      nU R                  R                  SXdU5      n	UbC  [!        US	S 5      (       a1  [         R"                  " U	S
9n
U R                  R%                  U
5        U
$ U	R&                  (       d  0 O[(        R*                  " U	R&                  5      nU R                  R                  (       d  [-        U5      n[         R"                  R/                  U[!        USS 5      (       aG  S[!        UR                  SS 5      [!        UR                  SS 5      [!        UR                  SS 5      S.0O0 S9n
U R                  R%                  U
5        U
$ Nr   r>   rO   r)   zupload/v1beta/filesr8   rP   r>   postshould_return_http_responser#   rR   rS   rT   rU   rV   )r   _CreateFileParametersr   r\   r]   r   rQ   r^   r   r_   r>   r`   r
   ra   rb   rc   ri   CreateFileResponserk   rd   re   rf   r$   rh   rm   r   r>   rn   ro   rp   rq   rr   r`   rW   rt   rs   s               r   _createFiles._create   s=    11O   4 
 4ODl%))&1	$//0@A$##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL''LH g-t  --Il
''5&mmBHMM1JM$$4]Cm++:: ?Hd33 #*#**,=t$ )0#**,BD) '.#**,@$'

 ! ; L& 	%%l3r   r(   c                   [         R                  " UUS9nU R                  R                  (       a  [	        S5      e[        U5      nUR                  S5      nU(       a  SR                  U5      nOSnUR                  S5      nU(       a  U S[        U5       3nUR                  SS5        SnUR                  b-  UR                  R                  b  UR                  R                  n[        R                  " U5      n[        R                  " U5      nU R                  R                  S	XdU5      n	U	R                   (       d  0 O["        R$                  " U	R                   5      n
[         R&                  R)                  U
[+        USS5      (       aG  S[+        UR                  S
S5      [+        UR                  SS5      [+        UR                  SS5      S.0O0 S9nU R                  R-                  U5        U$ )aA  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>   rO   r)   files/{file}r8   rP   r>   NrQ   rR   rS   rT   rU   rV   )r   _GetFileParametersr   r\   r]   r2   rQ   r^   r   r_   r>   r`   r
   ra   rb   rc   rd   re   rf   Filerh   ri   rk   rm   r(   r>   rn   ro   rp   rq   rr   r`   rW   rs   rt   s               r   rQ   	Files.getJ  s   ( ..O   4 
 1Al%))&1	(()9:##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL''t<PH&mmBHMM1JM::,, ?Hd33 #*#**,=t$ )0#**,BD) '.#**,@$'

 ! - L& 	%%l3r   c                   [         R                  " UUS9nU R                  R                  (       a  [	        S5      e[        U5      nUR                  S5      nU(       a  SR                  U5      nOSnUR                  S5      nU(       a  U S[        U5       3nUR                  SS5        SnUR                  b-  UR                  R                  b  UR                  R                  n[        R                  " U5      n[        R                  " U5      nU R                  R                  S	XdU5      n	U	R                   (       d  0 O["        R$                  " U	R                   5      n
U R                  R                  (       d  ['        U
5      n
[         R(                  R+                  U
[-        USS5      (       aG  S[-        UR                  S
S5      [-        UR                  SS5      [-        UR                  SS5      S.0O0 S9n[         R.                  " U	R0                  S9Ul        U R                  R5                  U5        U$ )a9  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   rO   r)   r   r8   rP   r>   NdeleterR   rS   rT   rU   rV   rY   )r   _DeleteFileParametersr   r\   r]   r-   rQ   r^   r   r_   r>   r`   r
   ra   rb   rc   rd   re   rf   r0   DeleteFileResponserh   ri   rj   rZ   r#   rk   r   s               r   r   Files.delete  s   & 11O   4 
 4ODl%))&1	(()9:##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL''$lH 'mmBHMM1JM$$4]Cm++:: ?Hd33 #*#**,=t$ )0#**,BD) '.#**,@$'

 ! ; L$ &+%7%7  &L" 	%%l3r   r4   c                   [         R                  " UUS9nU R                  R                  (       a  [	        S5      e[        U5      nUR                  S5      nU(       a  SR                  U5      nOSnUR                  S5      nU(       a  U S[        U5       3nUR                  SS 5        S nUR                  b-  UR                  R                  b  UR                  R                  n[        R                  " U5      n[        R                  " U5      nU R                  R                  SXdU5      n	UbC  [!        US	S 5      (       a1  [         R"                  " U	S
9n
U R                  R%                  U
5        U
$ U	R&                  (       d  0 O[(        R*                  " U	R&                  5      nU R                  R                  (       d  [-        U5      n[         R"                  R/                  U[!        USS 5      (       aG  S[!        UR                  SS 5      [!        UR                  SS 5      [!        UR                  SS 5      S.0O0 S9n
U R                  R%                  U
5        U
$ Nr4   r>   rO   r)   zfiles:registerr8   rP   r>   rz   r{   r|   rR   rS   rT   rU   rV   )r    _InternalRegisterFilesParametersr   r\   r]   r5   rQ   r^   r   r_   r>   r`   r
   ra   rb   rc   ri   RegisterFilesResponserk   rd   re   rf   rH   rh   rm   r4   r>   rn   ro   rp   rq   rr   r`   rW   rt   rs   s               r   _register_filesFiles._register_files  s=    <<O   4 
 ?Ol%))&1	**+;<##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL''LH g-t  008Ll
''5&mmBHMM1JM$$7Fm..== ?Hd33 #*#**,=t$ )0#**,BD) '.#**,@$'

 ! > L& 	%%l3r   c                   U R                   R                  (       a  [        S5      e[        R                  " 5       nU(       ac  [        U[        5      (       a  [        R                  " S0 UD6nOUn[        R                  " UR                  UR                  UR                  S9nO[        R                  " 5       nUR                  b4  UR                  R                  S5      (       d  SUR                   3Ul	        [        R                  " UUR                  UR                  S9u  pVnXdl        Xtl        U R!                  U[        R"                  " USS9S9nUR$                  b1  UR$                  R&                  b  SUR$                  R&                  ;  a  [)        S	5      eUR$                  R&                  S   n	[        U[*        R,                  5      (       a&  U R                   R/                  XUR                  US
9n
O;[0        R2                  " U5      nU R                   R/                  XUR                  US
9n
[        R                  R5                  U
R6                  S   U(       a  UR9                  5       S9$ 0 S9$ )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 `display_name`, `mime_type`, and
    `name`.
=This method is only supported in the Gemini Developer client.	mime_typer(   display_namefiles/user_http_optionsuser_mime_typeTr`   r{   ry   x-goog-upload-urlPFailed to create file. Upload URL was not returned from the create file request.r`   r   rV    )r   r\   r]   r   UploadFileConfig
isinstancedictr   r   r(   r   
startswithr   prepare_resumable_uploadr`   
size_bytesr   CreateFileConfigr#   rZ   KeyErrorioIOBaseupload_fileosfspathrh   re   
model_dumprm   r   r>   config_modelfile_objr`   r   r   rW   
upload_urlreturn_filefs_paths               r   uploadFiles.uploadA  s=   "   
I  ))+L	FD	!	!--77 **  #00h h}} )A)A()K)Kx}}o.hm*6*O*O&33#--+'Li
 %"||%%%4
  H 	""*%%--5h&@&@&H&HH  ++334GHJ$		""$$00
H//l 1 k 		$g$$00
x22 1 k ::$$!!&),2|&&( %  8: %  r   c                   U R                   R                  (       a  [        S5      eSnU(       a.  [        U[        5      (       a  [
        R                  " S0 UD6nOUn[        U[
        R                  5      (       a  UR                  c  [        S5      e[        R                  " U5      nSU S3nSS0nU S[        U5       3nSn[        US	/5      b  [        US	/5      nU R                   R                  UUS
9n[        U[
        R                  5      (       a  Xl        U$ [        U[
        R                   5      (       a  UR"                  b  XR"                  l        U$ )a
  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mediarP   r`   r   r   )r   r\   r]   r   r   r   DownloadFileConfigr   download_urir+   r,   r   r   download_fileVideovideo_bytesGeneratedVideovideo)	rm   r   r>   r   r(   rq   rr   r`   datas	            r   downloadFiles.download  sQ   R   
I  L	FD	!	!//9&9$

##(9(9(A5 
 ==DD6#D7#LV1Y|,-.DLL>*+7,(89l))! * D
 $$$ K 
D%..	/	/DJJ4J#jjKr   authc                   [        U[        R                  R                  R                  5      (       d  [        S5      eUc  [        R                  " 5       nO.[        R                  R                  U5      nUR                  SS9nUR                  =(       d    [        R                  " 5       nUR                  =(       d    0 nUR                  5        VVs0 s H  u  pgUR                  5       U_M     nnn[        R                   " U R                  U5      nSU 3US'   UR"                  (       a  UR"                  US'   XTl        XCl
        U R%                  X#S9$ s  snnf )*Registers gcs files with the file service.:auth must be a google.auth.credentials.Credentials object.TdeepBearer authorizationx-goog-user-projectr   )r   googler   credentialsCredentialsr]   r   RegisterFilesConfigmodel_validate
model_copyr`   HttpOptionsrZ   itemslowerr   get_token_from_credentialsquota_project_idr   	rm   r   r4   r>   r`   rZ   kvtokens	            r   register_filesFiles.register_files  s&    dFKK33??@@
F  ~((*f((77?f  d +f&&=%*;*;*=L""(bG(/8qwwy!|G82243C3CTJE!(0GO'+'<'<g#$"&T99 9s   Ec                P    U R                   n[        SUU R                  US9U5      $ )az  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   rL   )ru   r   rm   r>   list_requests      r   list
Files.list   s1    ( ::L

&
!	 r   r   )+__name__
__module____qualname____firstlineno__r   r   ListFilesConfigOrDictrg   ru   
FileOrDictCreateFileConfigOrDictr~   r   strGetFileConfigOrDictr   rQ   DeleteFileConfigOrDictr   r   r   RegisterFilesConfigOrDictr   r   r   r   PathLiker   r   UploadFileConfigOrDictr   r   r   DownloadFileConfigOrDictbytesr   r   r   r   r   r   r   __static_attributes__r   r   r   rJ   rJ      sa    @DB ; ;<BBP 8<	M M u334	M
 M` IMOO"*5+D+D"EOzzOd LPUU"*5+G+G"HUUv ;?	M IM u667	M
 ""Mf 8<	K #r{{3'23K u334	K
 zzKb :>	O #uzz5;;0D0DDEO u556	O
 Ol ;?: KK##//: I	:
 u667: "":D @D ; ;<UZZ r   rJ   c            	       b   \ rS rSrSS.S\\R                     S\R                  4S jjrSS.S\R                  S\\R                     S\R                  4S jjrSS.S	\S\\R                     S\R                  4S
 jjrSS.S	\S\\R"                     S\R$                  4S jjrSS.S\\   S\\R*                     S\R,                  4S jjrSS.S\\\R4                  \   \R8                  4   S\\R:                     S\R                  4S jjrSS.S\\\R                  4   S\\R>                     S\ 4S jjr!SS.S\"RF                  RH                  RJ                  S\\   S\\R*                     S\R,                  4S jjr&SS.S\\R                     S\'\R                     4S jjrSr(g)
AsyncFilesi  NrL   r>   r   c                  #    [         R                  " US9nU R                  R                  (       a  [	        S5      e[        U5      nUR                  S5      nU(       a  SR                  U5      nOSnUR                  S5      nU(       a  U S[        U5       3nUR                  SS 5        S nUR                  b-  UR                  R                  b  UR                  R                  n[        R                  " U5      n[        R                  " U5      nU R                  R                  SXSU5      I S h  vN nUR                   (       d  0 O["        R$                  " UR                   5      n	U R                  R                  (       d  ['        U	5      n	[         R(                  R+                  U	[-        USS 5      (       aG  S[-        UR                  S	S 5      [-        UR                  S
S 5      [-        UR                  SS 5      S.0O0 S9n
[         R.                  " UR0                  S9U
l        U R                  R5                  U
5        U
$  GN7frN   )r   r[   r   r\   r]   r?   rQ   r^   r   r_   r>   r`   r
   ra   rb   async_requestrd   re   rf   rF   rg   rh   ri   rj   rZ   r#   rk   rl   s              r   ru   AsyncFiles._list  s     00O
   4 
 3?Cl%))&1	!!"23##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL%%33t< H 'mmBHMM1JM$$3MBm**99 ?Hd33 #*#**,=t$ )0#**,BD) '.#**,@$'

 ! : L$ &+%7%7  &L" 	%%l3?s   D4I6I7DIr   c                  #    [         R                  " UUS9nU R                  R                  (       a  [	        S5      e[        U5      nUR                  S5      nU(       a  SR                  U5      nOSnUR                  S5      nU(       a  U S[        U5       3nUR                  SS 5        S nUR                  b-  UR                  R                  b  UR                  R                  n[        R                  " U5      n[        R                  " U5      nU R                  R                  SXdU5      I S h  vN n	UbC  [!        US	S 5      (       a1  [         R"                  " U	S
9n
U R                  R%                  U
5        U
$ U	R&                  (       d  0 O[(        R*                  " U	R&                  5      nU R                  R                  (       d  [-        U5      n[         R"                  R/                  U[!        USS 5      (       aG  S[!        UR                  SS 5      [!        UR                  SS 5      [!        UR                  SS 5      S.0O0 S9n
U R                  R%                  U
5        U
$  GN87frx   )r   r}   r   r\   r]   r   rQ   r^   r   r_   r>   r`   r
   ra   rb   r   ri   r~   rk   rd   re   rf   r$   rh   r   s               r   r   AsyncFiles._createe  sK     11O   4 
 4ODl%))&1	$//0@A$##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL%%33L H g-t  --Il
''5&mmBHMM1JM$$4]Cm++:: ?Hd33 #*#**,=t$ )0#**,BD) '.#**,@$'

 ! ; L& 	%%l3I   D5I27I/8D8I2r(   c                  #    [         R                  " UUS9nU R                  R                  (       a  [	        S5      e[        U5      nUR                  S5      nU(       a  SR                  U5      nOSnUR                  S5      nU(       a  U S[        U5       3nUR                  SS5        SnUR                  b-  UR                  R                  b  UR                  R                  n[        R                  " U5      n[        R                  " U5      nU R                  R                  S	XdU5      I Sh  vN n	U	R                   (       d  0 O["        R$                  " U	R                   5      n
[         R&                  R)                  U
[+        USS5      (       aG  S[+        UR                  S
S5      [+        UR                  SS5      [+        UR                  SS5      S.0O0 S9nU R                  R-                  U5        U$  N7f)aK  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   rO   r)   r   r8   rP   r>   NrQ   rR   rS   rT   rU   rV   )r   r   r   r\   r]   r2   rQ   r^   r   r_   r>   r`   r
   ra   rb   r   rd   re   rf   r   rh   ri   rk   r   s               r   rQ   AsyncFiles.get  s    ( ..O   4 
 1Al%))&1	(()9:##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL%%33t< H 'mmBHMM1JM::,, ?Hd33 #*#**,=t$ )0#**,BD) '.#**,@$'

 ! - L& 	%%l35s   D5H7H8CHc                  #    [         R                  " UUS9nU R                  R                  (       a  [	        S5      e[        U5      nUR                  S5      nU(       a  SR                  U5      nOSnUR                  S5      nU(       a  U S[        U5       3nUR                  SS5        SnUR                  b-  UR                  R                  b  UR                  R                  n[        R                  " U5      n[        R                  " U5      nU R                  R                  S	XdU5      I Sh  vN n	U	R                   (       d  0 O["        R$                  " U	R                   5      n
U R                  R                  (       d  ['        U
5      n
[         R(                  R+                  U
[-        USS5      (       aG  S[-        UR                  S
S5      [-        UR                  SS5      [-        UR                  SS5      S.0O0 S9n[         R.                  " U	R0                  S9Ul        U R                  R5                  U5        U$  GN7f)aC  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   rO   r)   r   r8   rP   r>   Nr   rR   rS   rT   rU   rV   rY   )r   r   r   r\   r]   r-   rQ   r^   r   r_   r>   r`   r
   ra   rb   r   rd   re   rf   r0   r   rh   ri   rj   rZ   r#   rk   r   s               r   r   AsyncFiles.delete  s"    & 11O   4 
 4ODl%))&1	(()9:##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL%%33$l H 'mmBHMM1JM$$4]Cm++:: ?Hd33 #*#**,=t$ )0#**,BD) '.#**,@$'

 ! ; L$ &+%7%7  &L" 	%%l3?s   D5I7I8DIr4   c                  #    [         R                  " UUS9nU R                  R                  (       a  [	        S5      e[        U5      nUR                  S5      nU(       a  SR                  U5      nOSnUR                  S5      nU(       a  U S[        U5       3nUR                  SS 5        S nUR                  b-  UR                  R                  b  UR                  R                  n[        R                  " U5      n[        R                  " U5      nU R                  R                  SXdU5      I S h  vN n	UbC  [!        US	S 5      (       a1  [         R"                  " U	S
9n
U R                  R%                  U
5        U
$ U	R&                  (       d  0 O[(        R*                  " U	R&                  5      nU R                  R                  (       d  [-        U5      n[         R"                  R/                  U[!        USS 5      (       aG  S[!        UR                  SS 5      [!        UR                  SS 5      [!        UR                  SS 5      S.0O0 S9n
U R                  R%                  U
5        U
$  GN87fr   )r   r   r   r\   r]   r5   rQ   r^   r   r_   r>   r`   r
   ra   rb   r   ri   r   rk   rd   re   rf   rH   rh   r   s               r   r   AsyncFiles._register_files^  sK     <<O   4 
 ?Ol%))&1	**+;<##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL%%33L H g-t  008Ll
''5&mmBHMM1JM$$7Fm..== ?Hd33 #*#**,=t$ )0#**,BD) '.#**,@$'

 ! > L& 	%%l3Ir   c                  #    U R                   R                  (       a  [        S5      e[        R                  " 5       nU(       ac  [        U[        5      (       a  [        R                  " S0 UD6nOUn[        R                  " UR                  UR                  UR                  S9nO[        R                  " 5       nUR                  b4  UR                  R                  S5      (       d  SUR                   3Ul	        [        R                  " UUR                  UR                  S9u  pVnXdl        Xtl        U R!                  U[        R"                  " USS9S9I Sh  vN nUR$                  bK  UR$                  R&                  b4  S	UR$                  R&                  ;  a%  S
UR$                  R&                  ;  a  [)        S5      eS	UR$                  R&                  ;   a  UR$                  R&                  S	   n	OUR$                  R&                  S
   n	[        U[*        R,                  5      (       a.  U R                   R/                  XUR                  US9I Sh  vN n
OC[0        R2                  " U5      nU R                   R/                  XUR                  US9I Sh  vN n
[        R                  R5                  U
R6                  S   U(       a  UR9                  5       S9$ 0 S9$  GN N NM7f)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 `display_name`, `mime_type`, and
    `name`.
r   r   Nr   r   Tr   ry   r   zX-Goog-Upload-URLr   r   r   rV   r   )r   r\   r]   r   r   r   r   r   r   r(   r   r   r   r   r`   r   r   r   r#   rZ   r   r   r   async_upload_filer   r   rh   re   r   r   s               r   r   AsyncFiles.upload  s    "   
I  ))+L	FD	!	!--77 **  #00h h}} )A)A()K)Kx}}o.hm*6*O*O&33#--+'Li
 %"\\%%%4
 "  H 	""*%%--5x'A'A'I'II#8+E+E+M+MM   
 : : B B	B--556IJj--556IJj$		""**<<
H//l =  k 		$g**<<
x22 =  k ::$$!!&),2|&&( %  8: %  C0
s9   EK-K&C;K-K)AK-K+A	K-)K-+K-c                  #    U R                   R                  (       a  [        S5      eSnU(       a.  [        U[        5      (       a  [
        R                  " S
0 UD6nOUn[        R                  " U5      nSU S3nSn[        US/5      b  [        US/5      nSS0nU(       a  U S[        U5       3nU R                   R                  UUS	9I Sh  vN nU$  N7f)a7  Downloads a file's data from the file service.

The Gemini Enterprise Agent Platform implementation of the API does 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   r`   r   r   rP   r   r   )r   r\   r]   r   r   r   r   r+   r,   r   r   async_download_file)	rm   r   r>   r   r(   rq   r`   rr   r   s	            r   r   AsyncFiles.download  s     H   
I  L	FD	!	!//9&9==DD6#DLL>*+7,(89l7#LvQy./0d!!55! 6  D
 Ks   CCCCr   c                  #    [        U[        R                  R                  R                  5      (       d  [        S5      eUc  [        R                  " 5       nO.[        R                  R                  U5      nUR                  SS9nUR                  =(       d    [        R                  " 5       nUR                  =(       d    0 nUR                  5        VVs0 s H  u  pgUR                  5       U_M     nnn[        R                   " U R                  U5      I Sh  vN nSU 3US'   UR"                  (       a  UR"                  US'   XTl        XCl
        U R%                  X#S9I Sh  vN $ s  snnf  NU N7f)	r   r   NTr   r   r   r   r   )r   r   r   r   r   r]   r   r   r   r   r`   r   rZ   r   r   r    async_get_token_from_credentialsr   r   r   s	            r   r   AsyncFiles.register_filesB  sA     dFKK33??@@
F  ~((*f((77?f  d +f&&=%*;*;*=L""(bG(/8qwwy!|G8>>$ E ")0GO'+'<'<g#$"&%%4%??? 9 @s1   CE6E,5'E6E2A
E6'E4(E64E6c                l   #    U R                   n[        SUU R                  US9I Sh  vN U5      $  N	7f)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   rL   N)ru   r   r   s      r   r   AsyncFiles.liste  s<     ( ::Ljjj''	  	(s   &42
4r   ))r   r   r   r   r   r   r   rg   ru   r   r   r~   r   r   r   r   rQ   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     sW    @DD ; ;<DDT 8<	M M u334	M
 M` IMQQ"*5+D+D"EQzzQh LPUU"*5+G+G"HUUv ;?	M IM u667	M
 ""Mf 8<	P #r{{3'23P u334	P
 zzPl :>	A #uzz/"A u556	A
 AP ;?!@ KK##//!@ I	!@
 u667!@ ""!@H @D ; ;<%** r   r   )N)-r   re   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?   rF   rH   
BaseModulerJ   r   r   r   r   <module>r     sb  $ 
   	 ' ' "         . . %			/	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(^ e	K"" e	Pb	'' b	r   