
    עi              	          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j6                  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jT                        Z+ G d dejT                        Z,y)!    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                 V    i }t        | dg      t        |dgt        | dg             |S )Nfilegetvsetvr   r   	to_objects      S/sites/domain-asset-master/.venv/lib/python3.12/site-packages/google/genai/files.py_CreateFileParameters_to_mldevr   )   5     !)	+x ,VHd;9:	    c                 V    i }t        | dg      t        |dgt        | dg             |S NsdkHttpResponsesdk_http_responser   r   s      r   _CreateFileResponse_from_mldevr$   4   @     !)	+)*+7'(${=N<O*P 
r   c           
      ~    i }t        | dg      -t        |ddgt        j                  t        | dg                   |S Nname_urlr   r   r   tt_file_namer   s      r   _DeleteFileParameters_to_mldevr-   A   F     !)	+x ,FF#Q]]4fX3N%O 
r   c                 V    i }t        | dg      t        |dgt        | dg             |S r!   r   r   s      r   _DeleteFileResponse_from_mldevr0   N   r%   r   c           
      ~    i }t        | dg      -t        |ddgt        j                  t        | dg                   |S r'   r*   r   s      r   _GetFileParameters_to_mldevr2   [   r.   r   c                 V    i }t        | dg      t        |dgt        | dg             |S )Nurisr   r   s      r   )_InternalRegisterFilesParameters_to_mldevr5   h   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<   s   sm     !)	+}%1*-tK+/O 
+~&2	;[<.) 
r   c                 R    i }t        | dg      t        t        | dg      |       |S )Nconfig)r   r<   r   s      r   _ListFilesParameters_to_mldevr?      s1     !)	+z".d;
;YG	r   c                    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t        | dg      D cg c]  }| c}       |S c c}w )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NNO	  Os   3	Bc                     i }t        | dg      t        |dgt        | dg             t        | dg      't        |dgt        | dg      D cg c]  }| c}       |S c c}w )Nr"   r#   rC   r   rD   s       r   !_RegisterFilesResponse_from_mldevrH      sw     !)	+)*+7'(${=N<O*P 
+y!-WIkG91MNNO	  Os   	Ac            	       b   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j2                  e   ej6                  f   deej8                     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#jH                  jJ                  jL                  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y)FilesNr>   r>   r   c                   t        j                  |      }| j                  j                  rt	        d      t        |      }|j                  d      }|rdj                  |      }nd}|j                  d      }|r| dt        |       }|j                  dd        d }|j                  ,|j                  j                  |j                  j                  }t        j                  |      }t        j                  |      }| j                  j                  d|||      }|j                   si nt#        j$                  |j                         }	| j                  j                  st'        |	      }	t         j(                  j+                  |	|j-                         	      }
t        j.                  |j0                  
      |
_        | j                  j5                  |
       |
S NrK   =This method is only supported in the Gemini Developer client.r)   rC   r8   ?r>   getresponsekwargsheaders)r   _ListFilesParametersr   vertexai
ValueErrorr?   rP   
format_mapr   popr>   http_optionsr
   convert_to_dictencode_unserializable_typesrequestbodyjsonloadsrF   ListFilesResponse_from_response
model_dumpHttpResponserU   r#   _verify_responseselfr>   parameter_modelrequest_dictrequest_url_dictpathquery_paramsr[   rR   response_dictreturn_values              r   _listzFiles._list   s    00O
   
I  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'A'A'C : L &+%7%7  &L" 	%%l3r   r   c                   t        j                  ||      }| j                  j                  rt	        d      t        |      }|j                  d      }|rdj                  |      }nd}|j                  d      }|r| dt        |       }|j                  dd        d }|j                  ,|j                  j                  |j                  j                  }t        j                  |      }t        j                  |      }| j                  j                  d|||      }	|@t!        |d	d       r3t        j"                  |	
      }
| j                  j%                  |
       |
S |	j&                  si nt)        j*                  |	j&                        }| j                  j                  st-        |      }t         j"                  j/                  ||j1                               }
| j                  j%                  |
       |
S Nr   r>   rN   r)   zupload/v1beta/filesr8   rO   r>   postshould_return_http_responser#   rQ   )r   _CreateFileParametersr   rW   rX   r   rP   rY   r   rZ   r>   r[   r
   r\   r]   r^   getattrCreateFileResponserf   r_   r`   ra   r$   rc   rd   rh   r   r>   ri   rj   rk   rl   rm   r[   rR   ro   rn   s               r   _createzFiles._create   s    11O   
I  4ODl%))&1	$//0@A$##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL''lLH g-t --Il
''5&mmBHMM1JM$$4]Cm++::'A'A'C ; L 	%%l3r   r(   c                6   t        j                  ||      }| j                  j                  rt	        d      t        |      }|j                  d      }|rdj                  |      }nd}|j                  d      }|r| dt        |       }|j                  dd       d}|j                  ,|j                  j                  |j                  j                  }t        j                  |      }t        j                  |      }| j                  j                  d	|||      }	|	j                   si nt#        j$                  |	j                         }
t         j&                  j)                  |
|j+                         
      }| j                  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>   rN   r)   files/{file}r8   rO   r>   NrP   rQ   )r   _GetFileParametersr   rW   rX   r2   rP   rY   r   rZ   r>   r[   r
   r\   r]   r^   r_   r`   ra   Filerc   rd   rf   rh   r(   r>   ri   rj   rk   rl   rm   r[   rR   rn   ro   s               r   rP   z	Files.get+  sw   ( ..O   
I  1Al%))&1	(()9:##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL''t\<PH&mmBHMM1JM::,,'A'A'C - L 	%%l3r   c                   t        j                  ||      }| j                  j                  rt	        d      t        |      }|j                  d      }|rdj                  |      }nd}|j                  d      }|r| dt        |       }|j                  dd       d}|j                  ,|j                  j                  |j                  j                  }t        j                  |      }t        j                  |      }| j                  j                  d	|||      }	|	j                   si nt#        j$                  |	j                         }
| j                  j                  st'        |
      }
t         j(                  j+                  |
|j-                         
      }t        j.                  |	j0                        |_        | j                  j5                  |       |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}   rN   r)   r~   r8   rO   r>   NdeleterQ   rT   )r   _DeleteFileParametersr   rW   rX   r-   rP   rY   r   rZ   r>   r[   r
   r\   r]   r^   r_   r`   ra   r0   DeleteFileResponserc   rd   re   rU   r#   rf   r   s               r   r   zFiles.deletel  s   & 11O   
I  4ODl%))&1	(()9:##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL''$lH 'mmBHMM1JM$$4]Cm++::'A'A'C ; L &+%7%7  &L" 	%%l3r   r4   c                   t        j                  ||      }| j                  j                  rt	        d      t        |      }|j                  d      }|rdj                  |      }nd}|j                  d      }|r| dt        |       }|j                  dd        d }|j                  ,|j                  j                  |j                  j                  }t        j                  |      }t        j                  |      }| j                  j                  d|||      }	|@t!        |d	d       r3t        j"                  |	
      }
| j                  j%                  |
       |
S |	j&                  si nt)        j*                  |	j&                        }| j                  j                  st-        |      }t         j"                  j/                  ||j1                               }
| j                  j%                  |
       |
S Nr4   r>   rN   r)   zfiles:registerr8   rO   r>   rt   ru   rv   rQ   )r    _InternalRegisterFilesParametersr   rW   rX   r5   rP   rY   r   rZ   r>   r[   r
   r\   r]   r^   rx   RegisterFilesResponserf   r_   r`   ra   rH   rc   rd   rh   r4   r>   ri   rj   rk   rl   rm   r[   rR   ro   rn   s               r   _register_fileszFiles._register_files  s    <<O   
I  ?Ol%))&1	**+;<##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL''lLH g-t 008Ll
''5&mmBHMM1JM$$7Fm..=='A'A'C > L 	%%l3r   c                   | j                   j                  rt        d      t        j                         }|r_t        |t              rt        j                  di |}n|}t        j                  |j                  |j                  |j                        }nt        j                         }|j                  /|j                  j                  d      sd|j                   |_	        t        j                  ||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/                  ||	|j                  |
      }
n>t1        j2                  |      }| j                   j/                  ||	|j                  |
      }
t        j                  j5                  |
j6                  d   |r|j9                               S 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`.
    rN   	mime_typer(   display_namefiles/user_http_optionsuser_mime_typeTr[   ru   rs   x-goog-upload-urlPFailed to create file. Upload URL did not returned from the create file request.r[   r   rQ    )r   rW   rX   r   UploadFileConfig
isinstancedictr   r   r(   r   
startswithr   prepare_resumable_uploadr[   
size_bytesr{   CreateFileConfigr#   rU   KeyErrorioIOBaseupload_fileosfspathrc   r`   rd   rh   r   r>   config_modelfile_objr[   r   r   rR   
upload_urlreturn_filefs_paths               r   uploadzFiles.upload  s>       
I  ))+L	FD	!--77 **  #00h h}} )A)A()Kx}}o.hm*6*O*O&33#--+'L*i
 %H"H||%%%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                   | 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                   j                  ||
      }t        |t
        j                        r	||_        |S 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
    rN   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mediarO   r[   r   r   )r   rW   rX   r   r   r   DownloadFileConfigr   download_urir+   r,   r   r   download_fileVideovideo_bytesGeneratedVideovideo)	rh   r   r>   r   r(   rl   rm   r[   datas	            r   downloadzFiles.download>  sI   R   
I  L	FD	!//9&9$

#(9(9(A5 
 ==DD6#D7#LV1Y|,-.DLL>*+7,(89l))! * D
 $$d K 
D%..	/DJJ4J#djjKr   authc                   t        |t        j                  j                  j                        st        d      |t        j                         }n1t        j                  j                  |      }|j                  d      }|j                  xs t        j                         }|j                  xs i }|j                         D ci c]  \  }}|j                         | }}}t        j                   | j                  |      }d| |d<   |j"                  r|j"                  |d<   ||_        ||_
        | j%                  ||      S c c}}w )*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CredentialsrX   r   RegisterFilesConfigmodel_validate
model_copyr[   HttpOptionsrU   itemslowerr   get_token_from_credentialsquota_project_idr   	rh   r   r4   r>   r[   rU   kvtokens	            r   register_fileszFiles.register_files  s*    dFKK33??@
F  ~((*f((77?f  d +f&&=%*;*;*=L""(bG(/81qwwy!|8G82243C3CTJE!(0GO'+'<'<g#$"L&FT&99 9s   E	c                V    | j                   }t        d|| j                  |      |      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   rK   )rp   r   rh   r>   list_requests      r   listz
Files.list  s1    ( ::L

&
!	 r   ))__name__
__module____qualname__r   r   ListFilesConfigOrDictrb   rp   
FileOrDictCreateFileConfigOrDictry   r{   strGetFileConfigOrDictr   rP   DeleteFileConfigOrDictr   r   r   RegisterFilesConfigOrDictr   r   r   r   PathLiker   r   UploadFileConfigOrDictr   r   r   DownloadFileConfigOrDictbytesr   r   r   r   r   r   r   r   r   r   rJ   rJ      sM    @D2 ; ;<22p 8<	= = u334	=
 =@ IM??"*5+D+D"E?zz?D LPEE"*5+G+G"HEEV ;?	= I= u667	=
 ""=F 8<	J #r{{3'23J u334	J
 zzJ` :>	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            	       6   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j2                  e   ej6                  f   deej8                     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!jD                  jF                  jH                  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y)
AsyncFilesNrK   r>   r   c                  K   t        j                  |      }| j                  j                  rt	        d      t        |      }|j                  d      }|rdj                  |      }nd}|j                  d      }|r| dt        |       }|j                  dd        d }|j                  ,|j                  j                  |j                  j                  }t        j                  |      }t        j                  |      }| j                  j                  d|||       d {   }|j                   si nt#        j$                  |j                         }	| j                  j                  st'        |	      }	t         j(                  j+                  |	|j-                         	      }
t        j.                  |j0                  
      |
_        | j                  j5                  |
       |
S 7 íwrM   )r   rV   r   rW   rX   r?   rP   rY   r   rZ   r>   r[   r
   r\   r]   async_requestr_   r`   ra   rF   rb   rc   rd   re   rU   r#   rf   rg   s              r   rp   zAsyncFiles._list  s     00O
   
I  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'A'A'C : L &+%7%7  &L" 	%%l3!s   D$G,&G*'CG,r   c                  K   t        j                  ||      }| j                  j                  rt	        d      t        |      }|j                  d      }|rdj                  |      }nd}|j                  d      }|r| dt        |       }|j                  dd        d }|j                  ,|j                  j                  |j                  j                  }t        j                  |      }t        j                  |      }| j                  j                  d|||       d {   }	|@t!        |d	d       r3t        j"                  |	
      }
| j                  j%                  |
       |
S |	j&                  si nt)        j*                  |	j&                        }| j                  j                  st-        |      }t         j"                  j/                  ||j1                               }
| j                  j%                  |
       |
S 7 wrr   )r   rw   r   rW   rX   r   rP   rY   r   rZ   r>   r[   r
   r\   r]   r   rx   ry   rf   r_   r`   ra   r$   rc   rd   rz   s               r   r{   zAsyncFiles._create  s     11O   
I  4ODl%))&1	$//0@A$##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL%%33lL H g-t --Il
''5&mmBHMM1JM$$4]Cm++::'A'A'C ; L 	%%l3+   D%H
'H(C!H
r(   c                R  K   t        j                  ||      }| j                  j                  rt	        d      t        |      }|j                  d      }|rdj                  |      }nd}|j                  d      }|r| dt        |       }|j                  dd       d}|j                  ,|j                  j                  |j                  j                  }t        j                  |      }t        j                  |      }| j                  j                  d	|||       d{   }	|	j                   si nt#        j$                  |	j                         }
t         j&                  j)                  |
|j+                         
      }| j                  j-                  |       |S 7 }w)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}   rN   r)   r~   r8   rO   r>   NrP   rQ   )r   r   r   rW   rX   r2   rP   rY   r   rZ   r>   r[   r
   r\   r]   r   r_   r`   ra   r   rc   rd   rf   r   s               r   rP   zAsyncFiles.getD  s    ( ..O   
I  1Al%))&1	(()9:##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL%%33t\< H 'mmBHMM1JM::,,'A'A'C - L 	%%l3s   D%F''F%(A>F'c                  K   t        j                  ||      }| j                  j                  rt	        d      t        |      }|j                  d      }|rdj                  |      }nd}|j                  d      }|r| dt        |       }|j                  dd       d}|j                  ,|j                  j                  |j                  j                  }t        j                  |      }t        j                  |      }| j                  j                  d	|||       d{   }	|	j                   si nt#        j$                  |	j                         }
| j                  j                  st'        |
      }
t         j(                  j+                  |
|j-                         
      }t        j.                  |	j0                        |_        | j                  j5                  |       |S 7 íw)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}   rN   r)   r~   r8   rO   r>   Nr   rQ   rT   )r   r   r   rW   rX   r-   rP   rY   r   rZ   r>   r[   r
   r\   r]   r   r_   r`   ra   r0   r   rc   rd   re   rU   r#   rf   r   s               r   r   zAsyncFiles.delete  s    & 11O   
I  4ODl%))&1	(()9:##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL%%33$l H 'mmBHMM1JM$$4]Cm++::'A'A'C ; L &+%7%7  &L" 	%%l3!s   D%G-'G+(CG-r4   c                  K   t        j                  ||      }| j                  j                  rt	        d      t        |      }|j                  d      }|rdj                  |      }nd}|j                  d      }|r| dt        |       }|j                  dd        d }|j                  ,|j                  j                  |j                  j                  }t        j                  |      }t        j                  |      }| j                  j                  d|||       d {   }	|@t!        |d	d       r3t        j"                  |	
      }
| j                  j%                  |
       |
S |	j&                  si nt)        j*                  |	j&                        }| j                  j                  st-        |      }t         j"                  j/                  ||j1                               }
| j                  j%                  |
       |
S 7 wr   )r   r   r   rW   rX   r5   rP   rY   r   rZ   r>   r[   r
   r\   r]   r   rx   r   rf   r_   r`   ra   rH   rc   rd   r   s               r   r   zAsyncFiles._register_files  s     <<O   
I  ?Ol%))&1	**+;<##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL%%33lL H g-t 008Ll
''5&mmBHMM1JM$$7Fm..=='A'A'C > L 	%%l3+r   c                  K   | j                   j                  rt        d      t        j                         }|r_t        |t              rt        j                  di |}n|}t        j                  |j                  |j                  |j                        }nt        j                         }|j                  /|j                  j                  d      sd|j                   |_	        t        j                  ||j                  |j                        \  }}}||_        ||_        | j!                  |t        j"                  |d             d{   }|j$                  F|j$                  j&                  0d	|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,                        r2| j                   j/                  ||	|j                  |       d{   }
nFt1        j2                  |      }| j                   j/                  ||	|j                  |       d{   }
t        j                  j5                  |
j6                  d   |r|j9                               S i       S 7 7 7 Nw)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`.
    rN   r   Nr   r   Tr   rs   r   zX-Goog-Upload-URLr   r   r   rQ   r   )r   rW   rX   r   r   r   r   r   r   r(   r   r   r   r   r[   r   r{   r   r#   rU   r   r   r   async_upload_filer   r   rc   r`   rd   r   s               r   r   zAsyncFiles.upload  s        
I  ))+L	FD	!--77 **  #00h h}} )A)A()Kx}}o.hm*6*O*O&33#--+'L*i
 %H"H\\%%%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C2KKAKKA
KKK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                   j                  ||	       d{   }|S 7 w)at  Downloads a file's data from the file service.

    The Vertex-AI 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)
    rN   Nr   r   r[   r   r   rO   r   r   )r   rW   rX   r   r   r   r   r+   r,   r   r   async_download_file)	rh   r   r>   r   r(   rl   r[   rm   r   s	            r   r   zAsyncFiles.download^  s     F   
I  L	FD	!//9&9==DD6#DLL>*+7,(89l7#LvQy./0d!!55! 6  D
 Ks   B;C=C>Cr   c                  K   t        |t        j                  j                  j                        st        d      |t        j                         }n1t        j                  j                  |      }|j                  d      }|j                  xs t        j                         }|j                  xs i }|j                         D ci c]  \  }}|j                         | }}}t        j                   | j                  |       d{   }d| |d<   |j"                  r|j"                  |d<   ||_        ||_
        | j%                  ||       d{   S c c}}w 7 V7 w)	r   r   NTr   r   r   r   r   )r   r   r   r   r   rX   r   r   r   r   r[   r   rU   r   r   r    async_get_token_from_credentialsr   r   r   s	            r   r   zAsyncFiles.register_files  sG     dFKK33??@
F  ~((*f((77?f  d +f&&=%*;*;*=L""(bG(/81qwwy!|8G8>>$ E ")0GO'+'<'<g#$"L&F%%4%??? 9 @s1   CE%	E$&E%
E!AE%E#E%#E%c                r   K   | j                   }t        d|| j                  |       d{   |      S 7 	w)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   rK   N)rp   r   r   s      r   r   zAsyncFiles.list  s=     ( ::Ljjj''	  	(s   )75
7)'r   r   r   r   r   r   rb   rp   r   r   ry   r{   r   r   r   rP   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     sG    @D4 ; ;<44t 8<	= = u334	=
 =@ IMAA"*5+D+D"EAzzAH LPEE"*5+G+G"HEEV ;?	= I= u667	=
 ""=F 8<	O #r{{3'23O u334	O
 zzOj :>	@ #uzz/"@ u556	@
 @N ;?!@ KK##//!@ I	!@
 u667!@ ""!@H @D ; ;<%**r   r   )N)-r   r`   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      sf  $ 
   	 ' ' "         . . % 
		/	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(^ TK"" TnP'' Pr   