
    Li                       d dl Z d dlZd dlmZmZmZmZmZmZ d dl	m
Z
 ddlmZ ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ 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eddfdZ!deddfdZ"deddfdZ#	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fdZ'	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fdZ(	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fdZ)	 ddedee$e%ef   e&f   dee$e%ef      de$e%ef   fdZ*	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fdZ+	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fdZ,	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fd Z-	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fd!Z.	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fd"Z/	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fd#Z0	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fd$Z1	 ddedee$e%ef   e&f   dee$e%ef      de$e%ef   fd%Z2	 ddedee$e%ef   e&f   dee$e%ef      de$e%ef   fd&Z3	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fd'Z4	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fd(Z5	 ddedee$e%ef   e&f   dee$e%ef      de$e%ef   fd)Z6	 ddedee$e%ef   e&f   dee$e%ef      de$e%ef   fd*Z7	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fd+Z8	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fd,Z9	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fd-Z:	 ddedee$e%ef   e&f   dee$e%ef      de$e%ef   fd.Z;	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fd/Z<	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fd0Z=	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fd1Z>	 ddedee$e%ef   e&f   dee$e%ef      de$e%ef   fd2Z?	 ddedee$e%ef   e&f   dee$e%ef      de$e%ef   fd3Z@	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fd4ZA	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fd5ZB	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fd6ZC	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fd7ZD	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fd8ZE	 ddedee$e%ef   e&f   dee$e%ef      de$e%ef   fd9ZF	 ddedee$e%ef   e&f   dee$e%ef      de$e%ef   fd:ZG	 ddedee$e%ef   e&f   dee$e%ef      de$e%ef   fd;ZH	 ddedee$e%ef   e&f   dee$e%ef      de$e%ef   fd<ZI	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fd=ZJ	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fd>ZK	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fd?ZL	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fd@ZM	 ddedee$e%ef   e&f   dee$e%ef      de$e%ef   fdAZN	 ddedee$e%ef   e&f   dee$e%ef      de$e%ef   fdBZO	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fdCZP	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fdDZQ	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fdEZR	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fdFZS	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fdGZT	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fdHZU	 ddedee$e%ef   e&f   dee$e%ef      de$e%ef   fdIZV	 ddedee$e%ef   e&f   dee$e%ef      de$e%ef   fdJZW	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fdKZX	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fdLZY	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fdMZZ	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fdNZ[	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fdOZ\	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fdPZ]	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fdQZ^	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fdRZ_	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fdSZ`	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fdTZa	 ddedee$e%ef   e&f   dee$e%ef      de$e%ef   fdUZb	 ddedee$e%ef   e&f   dee$e%ef      de$e%ef   fdVZc	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fdWZd	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fdXZe	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fdYZf	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fdZZg	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fd[Zh	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fd\Zi	 ddedee$e%ef   e&f   dee$e%ef      de$e%ef   fd]Zj	 ddedee$e%ef   e&f   dee$e%ef      de$e%ef   fd^Zk	 ddedee$e%ef   e&f   dee$e%ef      de$e%ef   fd_Zl	 ddedee$e%ef   e&f   dee$e%ef      de$e%ef   fd`Zm	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fdaZn	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fdbZo	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fdcZp	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fddZq	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fdeZr	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fdfZs	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fdgZt	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fdhZu	 ddedee$e%ef   e&f   dee$e%ef      de$e%ef   fdiZv	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fdjZw	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fdkZx	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fdlZy	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fdmZz	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fdnZ{	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fdoZ|	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fdpZ}	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fdqZ~	 ddedee$e%ef   e&f   dee$e%ef      de$e%ef   fdrZ	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fdsZ	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fdtZ	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fduZ	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fdvZ	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fdwZ	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fdxZ	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fdyZ	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fdzZ	 ddedee$e%ef   e&f   dee$e%ef      de$e%ef   fd{Z	 ddedee$e%ef   e&f   dee$e%ef      de$e%ef   fd|Z	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fd}Z	 ddedee$e%ef   e&f   dee$e%ef      de$e%ef   fd~Z	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fdZ	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fdZ	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fdZ	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fdZ	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fdZ	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fdZ	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fdZ	 ddee$e%ef   e&f   dee$e%ef      de$e%ef   fdZ G d dej(                        Z G d dej(                        Zy)    N)AnyAsyncIterator	AwaitableIteratorOptionalUnion)	urlencode   )_api_module)_base_transformers)_common)_extra_utils)
_mcp_utils)_transformers)errors)types)BaseApiClient)get_value_by_path)set_value_by_path)
AsyncPagerPagerzgoogle_genai.models
enum_valuereturnc                 <    | t        dg      v rt        |  d      y )N	ALLOW_ALL+ enum value is not supported in Gemini API.set
ValueErrorr   s    Q/var/www/html/eduruby.in/venv/lib/python3.12/site-packages/google/genai/models.py(_PersonGeneration_to_mldev_enum_validater"   (   s)    3}%%

|#NO
PP &    c                 <    | t        dg      v rt        |  d      y )N
BLOCK_NONEr   r   r    s    r!   )_SafetyFilterLevel_to_mldev_enum_validater&   -   s)    3~&&

|#NO
PP 'r#   c                 <    | t        dg      v rt        |  d      y )NSTYLEr   r   r    s    r!   4_VideoGenerationReferenceType_to_mldev_enum_validater)   2   s*     3y>!

|#NO
PP "r#   from_objectparent_objectc                     i }t        | dg      t        |dgt        | dg             t        | dg      t        d      t        | dg      t        |dgt        | dg             |S )Ndatadisplay_name6display_name parameter is not supported in Gemini API.	mime_typemimeTypegetvsetvr   r*   r+   	to_objects      r!   _Blob_to_mldevr7   9   sw     !)	+x ,VHd;9:	+'(4
M
NN	+}%1ZL${[M"BC	r#   c           
      <   i }t        | dg      t        |dgt        | dg             t        | dg      #t        |dgt        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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t        | dg             t        | dg      't        |dgt        | dg      D cg c]  }| c}       t        | dg      t        |dgt        | dg             |S c c}w )NcontentcitationMetadatacitation_metadata
tokenCounttoken_countfinishReasonfinish_reasonavgLogprobsavg_logprobsgroundingMetadatagrounding_metadataindexlogprobsResultlogprobs_resultsafetyRatingssafety_ratingsurlContextMetadataurl_context_metadata)r3   r4   _CitationMetadata_from_mldevr*   r+   r6   items       r!   _Candidate_from_mldevrN   J   s    !)	+	{#/YKkI;!?@	+*+,8	$123Y	
 
+~&2]OT+~%FG	+'(4_%tK.9I'JK	+'3^$d;&HI	++,-9	[./0 
+y!-WItK';<	+()*6&'k<L;M)NO	+()5	{_,=>?$? 
+,-.:	 [/01 
 	@s   !	Fc                 |    i }t        | dg      't        |dgt        | dg      D cg c]  }| c}       |S c c}w )NcitationSources	citationsr3   r4   rL   s       r!   rK   rK      sQ     !)	+)*+7	{->,?@A$A 
 	Bs   	9
api_clientc                    i }t        |dg      .t        |ddgt        j                  | t        |dg                   t        |dg      :t        |dgt        j                  t        |dg            D cg c]  }| c}       |S c c}w )Nmodel_urlcontents)r3   r4   tt_model
t_contentsrS   r*   r+   r6   rM   s        r!   "_ComputeTokensParameters_to_vertexr\      s    
 !)	+y!-				*d;	:; 
+
|$0	,,tK*'FGH$H 
 	Is   5	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 )NsdkHttpResponsesdk_http_response
tokensInfotokens_inforR   rL   s       r!   "_ComputeTokensResponse_from_vertexrb      s}     !)	+)*+7'(${=N<O*P 
+~&2	{\N;<$< 
 	=s   	Ac                     i }t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             |S )N	truncatedr=   rR   r5   s      r!   '_ContentEmbeddingStatistics_from_vertexre      s[     !)	+}%1[M4k]#CD	+'3]OT+%GH	r#   c           
          i }t        | dg      t        |dgt        | dg             t        | dg      #t        |dgt        t        | dg      |             |S )Nvalues
statistics)r3   r4   re   r5   s      r!   _ContentEmbedding_from_vertexri      sl     !)	+z".XJ[8* =>	+~&2	/|n-y	
 
r#   c                     i }t        | dg      1t        |dgt        | dg      D cg c]  }t        ||       c}       t        | dg      t        |dgt        | dg             |S c c}w )Npartsrole)r3   r4   _Part_to_mldevrL   s       r!   _Content_to_mldevrn      s     !)	+y!-		 [7)4	
 4+	
 
+x ,VHd;9:		
s   A)c                     i }t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             |S )Ncontrol_typecontrolType enable_control_image_computationcomputeControlrR   r5   s      r!   !_ControlReferenceConfig_to_vertexrt      si     !)	+'(4]OT+7G%HI	+:;<H	[=>? 
r#   c                     i }t        | dg      t        d      t        | dg      t        d      t        | dg      t        d      |S )Nsystem_instructionz<system_instruction parameter is not supported in Gemini API.toolsz/tools parameter is not supported in Gemini API.generation_configz;generation_config parameter is not supported in Gemini API.)r3   r   r5   s      r!   _CountTokensConfig_to_mldevry     sp     !)	+,-.:
F  
+y!-
F
GG	++,-9
E  
r#   c                 b   i }t        | dg      ,t        |dgt        j                  t        | dg                   t        | dg      1t        |dgt        | dg      D cg c]  }t	        ||       c}       t        | dg      #t        |dgt        t        | dg      |             |S c c}w )Nrv   systemInstructionrw   rx   generationConfig)r3   r4   rX   	t_content_Tool_to_vertex_GenerationConfig_to_vertexrL   s       r!   _CountTokensConfig_to_vertexr     s     !)	+,-.:		D';&<=> 
+y!-		 [7)4	
 D),	
 
++,-9	#234i	
 
	
s    B,c                 t   i }t        |dg      .t        |ddgt        j                  | t        |dg                   t        |dg      Dt        |dgt        j                  t        |dg            D cg c]  }t        ||       c}       t        |dg      t        t        |dg      |       |S c c}w NrU   rV   rW   config)r3   r4   rX   rY   rZ   rn   ry   r[   s        r!   _CountTokensParameters_to_mldevr   >  s    
 !)	+y!-				*d;	:; 
+
|$0	 T+
|%DE	
 dI.	
 
+z".[8* =yI		
s   5B5c                 `   i }t        |dg      .t        |ddgt        j                  | t        |dg                   t        |dg      :t        |dgt        j                  t        |dg            D cg c]  }| c}       t        |dg      t        t        |dg      |       |S c c}w r   )r3   r4   rX   rY   rZ   r   r[   s        r!    _CountTokensParameters_to_vertexr   [  s    
 !)	+y!-				*d;	:; 
+
|$0	,,tK*'FGH$H 
+z". kH:!>	J	 	Is   5	B+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             |S )Nr^   r_   totalTokenstotal_tokenscachedContentTokenCountcached_content_token_countrR   r5   s      r!   _CountTokensResponse_from_mldevr   u  s     !)	+)*+7'(${=N<O*P 
+'3^$d;&HI	+123?	%&[456 
r#   c                     i }t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             |S )Nr^   r_   r   r   rR   r5   s      r!    _CountTokensResponse_from_vertexr     sg     !)	+)*+7'(${=N<O*P 
+'3^$d;&HI	r#   c                     i }t        |dg      .t        |ddgt        j                  | t        |dg                   |S NrU   rV   namer3   r4   rX   rY   rS   r*   r+   r6   s       r!   _DeleteModelParameters_to_mldevr     J    
 !)	+y!-				*d;	:; 
r#   c                     i }t        |dg      .t        |ddgt        j                  | t        |dg                   |S r   r   r   s       r!    _DeleteModelParameters_to_vertexr     r   r#   c                 V    i }t        | dg      t        |dgt        | dg             |S Nr^   r_   rR   r5   s      r!   _DeleteModelResponse_from_mldevr     @     !)	+)*+7'(${=N<O*P 
r#   c                 V    i }t        | dg      t        |dgt        | dg             |S r   rR   r5   s      r!    _DeleteModelResponse_from_vertexr     r   r#   c                 6   i }t        | dg      t        |ddgt        | dg             t        | dg      t        |ddgt        | dg             t        | dg      t        |ddgt        | dg             t        | dg      t        |dd	gt        | dg             t        | d
g      t        |ddgt        | d
g             t        | dg      t        |ddgt        | dg             t        | dg      t        |ddgt        | dg             t        | dg      t        |ddgt        | dg             t        | dg      t        |ddgt        | dg             t        | dg      t        |ddgt        | dg             t        | dg      t        |ddgt        | dg             t        | dg      t        |g dt        | dg             t        | dg      t        |g dt        | dg             t        | dg      t        |ddgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      t        |ddgt        | dg             t        | dg      t        |g d t        | dg             |S )!Noutput_gcs_uri
parameters
storageUrinegative_promptnegativePromptnumber_of_imagessampleCountaspect_ratioaspectRatioguidance_scaleguidanceScaleseedsafety_filter_levelsafetySettingperson_generationpersonGenerationinclude_safety_attributesincludeSafetyAttributesinclude_rai_reasonincludeRaiReasonlanguageoutput_mime_typer   outputOptionsr1   output_compression_qualityr   r   compressionQualityadd_watermarkaddWatermarklabels	edit_modeeditMode
base_steps)r   
editConfig	baseStepsrR   r5   s      r!   _EditImageConfig_to_vertexr     sO    !)	+()*6	|$[+,- 
+)*+7	'([,-. 
+*+,8	}%[-./ 
+'(4	}%[>*+ 
+()*6	'[+,- 
+x ,v.[6(0KL	+-./;	'[012 
++,-9	)*[./0 
+345A	01[678 
+,-.:	)*[/01 
+
|$0	z"[:,' 
+*+,83[-./ 
+456B=[789 
+()5	~&[?+, 
+z".
Dxj$AB	+}%1	z"[;-( 
+~&21[<.) 
r#   c                    i }t        |dg      .t        |ddgt        j                  | t        |dg                   t        |dg      t        |ddgt        |dg             t        |dg      2t        |ddgt        |dg      D cg c]  }t	        ||       c}       t        |dg      t        t        |dg      |       |S c c}w )NrU   rV   promptinstances[0]reference_imagesreferenceImagesr   )r3   r4   rX   rY   _ReferenceImageAPI_to_vertexr   r[   s        r!   _EditImageParameters_to_vertexr   N  s    
 !)	+y!-				*d;	:; 
+z".^X.[8*0MN	+*+,8	*+ [+=*>?	
 )y9	
 
+z".tK(<iH		
s   
C
c                     i }t        | dg      t        |dgt        | dg             t        | dg      1t        |dgt        | dg      D cg c]  }t        ||       c}       |S c c}w Nr^   r_   predictionsgenerated_imagesr3   r4   _GeneratedImage_from_vertexrL   s       r!   _EditImageResponse_from_vertexr   n       !)	+)*+7'(${=N<O*P 
+'3	 [=/:	
 (i8	
 
	
   A)c                 T   i }t        | dg      t        |ddgt        | dg             t        | dg      t        |ddgt        | dg             t        | dg      t        |ddgt        | dg             t        | dg      t        d      t        | d	g      t        d
      |S )N	task_type
requests[]taskTypetitleoutput_dimensionalityoutputDimensionalityr0   z3mime_type parameter is not supported in Gemini API.auto_truncatez7auto_truncate parameter is not supported in Gemini API.r2   r5   s      r!   _EmbedContentConfig_to_mldevr     s     !)	+}%1	z"[;-( 
+y!-w/kG91MN	+/01=	-.[234 
+}%1
J
KK	+()5
N
OO	r#   c                    i }t        | dg      t        |ddgt        | dg             t        | dg      t        |ddgt        | dg             t        | dg      t        |ddgt        | dg             t        | dg      t        |ddgt        | dg             t        | d	g      t        |dd
gt        | d	g             |S )Nr   instances[]r   r   r   r   r0   r1   r   autoTruncaterR   r5   s      r!   _EmbedContentConfig_to_vertexr     s     !)	+}%1	$[;-( 
+y!-0${WI2NO	+/01=	-.[234 
+}%1	
#[;-( 
+()5	~&[?+, 
r#   c                    i }t        |dg      .t        |ddgt        j                  | t        |dg                   t        |dg      <t        |ddgt        j                  | t        |dg            D cg c]  }| c}       t        |dg      t        t        |dg      |       t        |ddgt        j                  | t        |dg                   |S c c}w )NrU   rV   rW   r   r9   r   )r3   r4   rX   rY   t_contents_for_embedr   r[   s        r!    _EmbedContentParameters_to_mldevr     s    
 !)	+y!-				*d;	:; 
+
|$0	y! ..Dzl;	
 	
	 
+z". kH:!>	JWii
Dwi89
 
!	
s   7	Cc                 d   i }t        |dg      .t        |ddgt        j                  | t        |dg                   t        |dg      <t        |ddgt        j                  | t        |dg            D cg c]  }| c}       t        |dg      t        t        |dg      |       |S c c}w )NrU   rV   rW   r   r9   r   )r3   r4   rX   rY   r   r   r[   s        r!   !_EmbedContentParameters_to_vertexr     s    
 !)	+y!-				*d;	:; 
+
|$0		" ..Dzl;	
 	
	 
+z".!${XJ"?K		
s   7	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}       t        | dg      t        |dgt        | dg             |S c c}w )Nr^   r_   
embeddingsmetadatarR   rL   s       r!    _EmbedContentResponse_from_mldevr     s     !)	+)*+7'(${=N<O*P 
+~&2	{\N;<$< 
+
|$0ZL${ZL"AB	 	=s   	Bc                 ,   i }t        | dg      t        |dgt        | dg             t        | ddg      2t        |dgt        | ddg      D cg c]  }t        ||       c}       t        | dg      t        |dgt        | dg             |S c c}w )Nr^   r_   zpredictions[]r   r   )r3   r4   ri   rL   s       r!   !_EmbedContentResponse_from_vertexr   '  s     !)	+)*+7'(${=N<O*P 
+67C	 [?L*IJ	
 *$	:	
 
+
|$0ZL${ZL"AB		
s   Bc                     i }t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             |S )Nendpointr   deployedModelIddeployed_model_idrR   r5   s      r!   _Endpoint_from_vertexr   A  sf     !)	+
|$0VHd;=>	+)*+7'(${=N<O*P 
r#   c                     i }t        | dg      t        d      t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             |S )Nr.   r/   file_urifileUrir0   r1   r3   r   r4   r5   s      r!   _FileData_to_mldevr   Q  sw     !)	+'(4
M
NN	+
|$0YKkJ<!@A	+}%1ZL${[M"BC	r#   c                    i }t        | dg      t        d      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             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             |S )Nbehaviorz1behavior parameter is not supported in Vertex AI.descriptionr   r   parameters_json_schemaparametersJsonSchemaresponseresponse_json_schemaresponseJsonSchemar   r5   s      r!   _FunctionDeclaration_to_vertexr   b  s&    !)	+
|$0
H
II	+'3]OT+%GH	+x ,VHd;9:	+~&2\ND|n$EF	+012>	 [345 
+
|$0ZL${ZL"AB	+./0<	[123 
r#   c                 ^	   i }t        |dg      6t        |dgt        t        j                  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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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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t        |dg             t        |dg      -t        |dgt        j
                  | t        |dg                   t        |dg      t        |dgt        |dg             t        |dg      t        d      t        |dg      t        d      t        |d g      1t        |d!gt        |d g      D cg c]  }t        ||       c}       t        |d"g      Yt        |d"gt        j                  | t        |d"g            D cg c]"  }t        t        j                  | |      |      $ c}       t        |d#g      t        |d$gt        |d#g             t        |d%g      t        d&      t        |d'g      -t        |d(gt        j                  | 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t        j                  t        |d-g                   t        |d/g      t        d0      t        |d1g      t        |d2gt        |d1g             t        |d3g      t        |d4gt        |d3g             |S c c}w c c}w )5Nrv   r{   temperaturetop_ptopPtop_ktopKcandidate_countcandidateCountmax_output_tokensmaxOutputTokensstop_sequencesstopSequencesresponse_logprobsresponseLogprobslogprobspresence_penaltypresencePenaltyfrequency_penaltyfrequencyPenaltyr   response_mime_typeresponseMimeTyperesponse_schemaresponseSchemar   r   routing_configz8routing_config parameter is not supported in Gemini API.model_selection_configz@model_selection_config parameter is not supported in Gemini API.safety_settingssafetySettingsrw   tool_config
toolConfigr   0labels parameter is not supported in Gemini API.cached_contentcachedContentresponse_modalitiesresponseModalitiesmedia_resolutionmediaResolutionspeech_configspeechConfigaudio_timestampz9audio_timestamp parameter is not supported in Gemini API.thinking_configthinkingConfigimage_configimageConfig)r3   r4   rn   rX   r}   t_schemar   _SafetySetting_to_mldevt_tools_Tool_to_mldevt_toolt_cached_content_namet_speech_configr[   s        r!   _GenerateContentConfig_to_mldevr0    s`   
 !)	+,-.:	KK[+?*@ABI	
 
+'3]OT+%GH	+y!-VHd;	:;	+y!-VHd;	:;	+)*+7%&[;L:M(NO	++,-9%&[;N:O(P 
+()*6_%tK:J9K'LM	++,-9	[./0 
+
|$0ZL${ZL"AB	+*+,8%&[;M:N(O 
++,-9	[./0 
+x ,VHd;9:	+,-.:	[/01 
+)*+7		

:tK2C1DEF 
+./0<	[123 
+()*6
O
PP	+012>
J  
+)*+7	 [+<*=>	
 $D)4	
 
+y!-		 		*d;	.JK	
 188J5yA	
 
+'3[=/(JK	+z".
G
HH	+()*6		[+;*<=	
 
+-./;	[012 
+*+,8%&[;M:N(O 
+()5		${_,=>? 
+)*+7
C  
+)*+7%&[;L:M(NO	+'(4]OT+7G%HI	{	
	
s   R%'R*c                 	   i }t        |dg      ,t        |dgt        j                  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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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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t        |dg             t        |dg      -t        |dgt        j                  | 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t        |dg             t        |d g      't        |d!gt        |d g      D cg c]  }| c}       t        |d"g      Yt        |d"gt        j
                  | t        |d"g            D cg c]"  }t        t        j                  | |      |      $ c}       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        j                  | t        |d&g                   t        |d(g      t        |d)gt        |d(g             t        |d*g      t        |d+gt        |d*g             t        |d,g      6t        |d-gt        t        j                  t        |d,g            |             t        |d.g      t        |d/gt        |d.g             t        |d0g      t        |d1gt        |d0g             t        |d2g      t        |d3gt        |d2g             |S c c}w c c}w )4Nrv   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  routingConfigr  modelConfigr  r  rw   r  r  r   r  r  r  r  r   r!  r"  r#  r$  audioTimestampr%  r&  r'  r(  )r3   r4   rX   r}   r)  r+  r~   r-  r.  _SpeechConfig_to_vertexr/  r[   s        r!    _GenerateContentConfig_to_vertexr6  %  s   
 !)	+,-.:		D';&<=> 
+'3]OT+%GH	+y!-VHd;	:;	+y!-VHd;	:;	+)*+7%&[;L:M(NO	++,-9%&[;N:O(P 
+()*6_%tK:J9K'LM	++,-9	[./0 
+
|$0ZL${ZL"AB	+*+,8%&[;M:N(O 
++,-9	[./0 
+x ,VHd;9:	+,-.:	[/01 
+)*+7		

:tK2C1DEF 
+./0<	[123 
+()*6_%tK:J9K'LM	+012>	[345 
+)*+7	{->,?@A$A 
+y!-		 		*d;	.JK	
 AHHZ6	B	
 
+'3[=/(JK	+z".
Dxj$AB	+()*6		[+;*<=	
 
+-./;	[012 
+*+,8%&[;M:N(O 
+()5	d;0ABCY	
 
+)*+7%&[;L:M(NO	+)*+7%&[;L:M(NO	+'(4]OT+7G%HI	u 	B	
s   	S'Sc                    i }t        |dg      .t        |ddgt        j                  | t        |dg                   t        |dg      Dt        |dgt        j                  t        |dg            D cg c]  }t        ||       c}       t        |dg      $t        |dgt        | t        |dg      |             |S c c}w NrU   rV   rW   r   r|   )r3   r4   rX   rY   rZ   rn   r0  r[   s        r!   #_GenerateContentParameters_to_mldevr9    s    
 !)	+y!-				*d;	:; 
+
|$0	 T+
|%DE	
 dI.	
 
+z".	'[8*5y	
 
	
s   5Cc                 z   i }t        |dg      .t        |ddgt        j                  | t        |dg                   t        |dg      :t        |dgt        j                  t        |dg            D cg c]  }| c}       t        |dg      $t        |dgt        | t        |dg      |             |S c c}w r8  )r3   r4   rX   rY   rZ   r6  r[   s        r!   $_GenerateContentParameters_to_vertexr;    s    
 !)	+y!-				*d;	:; 
+
|$0	,,tK*'FGH$H 
+z".	([8*5y	
 
 	Is   5	B8c                    i }t        | dg      t        |dgt        | dg             t        | dg      1t        |dgt        | dg      D cg c]  }t        ||       c}       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             t        | d
g      t        |dgt        | d
g             |S c c}w )Nr^   r_   
candidatesmodelVersionmodel_versionpromptFeedbackprompt_feedback
responseIdresponse_idusageMetadatausage_metadata)r3   r4   rN   rL   s       r!   #_GenerateContentResponse_from_mldevrF    s3    !)	+)*+7'(${=N<O*P 
+~&2	 [<.9	
 "$	2	
 
+'(4_%tK.9I'JK	+()*6&'k<L;M)NO	+~&2]OT+~%FG	+()5%&[?:K(LM	%	
s   Dc                 D   i }t        | dg      t        |dgt        | dg             t        | dg      't        |dgt        | dg      D cg c]  }| c}       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             t        | d
g      t        |dgt        | d
g             t        | dg      t        |dgt        | dg             |S c c}w )Nr^   r_   r=  
createTimecreate_timer>  r?  r@  rA  rB  rC  rD  rE  rR   rL   s       r!   $_GenerateContentResponse_from_vertexrJ  &  sH    !)	+)*+7'(${=N<O*P 
+~&2	{\N;<$< 
+~&2]OT+~%FG	+'(4_%tK.9I'JK	+()*6&'k<L;M)NO	+~&2]OT+~%FG	+()5%&[?:K(LM	% 	=s   	Dc                    i }t        | dg      t        d      t        | dg      t        d      t        | dg      t        |ddgt        | dg             t        | dg      t        |dd	gt        | dg             t        | d
g      t        |ddgt        | d
g             t        | dg      t        d      t        | dg      0t        t        | dg             t        |ddgt        | dg             t        | dg      0t	        t        | dg             t        |ddgt        | dg             t        | dg      t        |ddgt        | dg             t        | dg      t        |ddgt        | dg             t        | dg      t        |ddgt        | dg             t        | dg      t        |g dt        | dg             t        | dg      t        |g dt        | dg             t        | dg      t        d      t        | dg      t        d      t        | dg      t        |dd gt        | dg             t        | d!g      t        d"      |S )#Nr   8output_gcs_uri parameter is not supported in Gemini API.r   z9negative_prompt parameter is not supported in Gemini API.r   r   r   r   r   r   r   r   .seed parameter is not supported in Gemini API.r   r   r   r   r   r   r   r   r   r   r   r   r   r   z7add_watermark parameter is not supported in Gemini API.r   r  
image_sizesampleImageSizeenhance_promptz8enhance_prompt parameter is not supported in Gemini API.)r3   r   r4   r&   r"   r5   s      r!   _GenerateImagesConfig_to_mldevrQ  I  s    !)	+()*6
O
PP	+)*+7
C  
+*+,8	}%[-./ 
+'(4	}%[>*+ 
+()*6	'[+,- 
+x ,
E
FF	+-./;-[012 		'[012 
++,-9,[./0 		)*[./0 
+345A	01[678 
+,-.:	)*[/01 
+
|$0	z"[:,' 
+*+,83[-./ 
+456B=[789 
+()5
N
OO	+z".
G
HH	+~&2	()[<.) 
+()*6
O
PP	r#   c                 6   i }t        | dg      t        |ddgt        | dg             t        | dg      t        |ddgt        | dg             t        | dg      t        |ddgt        | dg             t        | dg      t        |dd	gt        | dg             t        | d
g      t        |ddgt        | d
g             t        | dg      t        |ddgt        | dg             t        | dg      t        |ddgt        | dg             t        | dg      t        |ddgt        | dg             t        | dg      t        |ddgt        | dg             t        | dg      t        |ddgt        | dg             t        | dg      t        |ddgt        | dg             t        | dg      t        |g dt        | dg             t        | dg      t        |g dt        | dg             t        | dg      t        |ddgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      t        |ddgt        | dg             t        | dg      t        |dd gt        | dg             |S )!Nr   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   rN  rO  rP  enhancePromptrR   r5   s      r!   _GenerateImagesConfig_to_vertexrT    sY    !)	+()*6	|$[+,- 
+)*+7	'([,-. 
+*+,8	}%[-./ 
+'(4	}%[>*+ 
+()*6	'[+,- 
+x ,v.[6(0KL	+-./;	'[012 
++,-9	)*[./0 
+345A	01[678 
+,-.:	)*[/01 
+
|$0	z"[:,' 
+*+,83[-./ 
+456B=[789 
+()5	~&[?+, 
+z".
Dxj$AB	+~&2	()[<.) 
+()*6	'[+,- 
r#   c                    i }t        |dg      .t        |ddgt        j                  | t        |dg                   t        |dg      t        |ddgt        |dg             t        |dg      t	        t        |dg      |       |S NrU   rV   r   r   r   )r3   r4   rX   rY   rQ  r   s       r!   "_GenerateImagesParameters_to_mldevrW  1  s    
 !)	+y!-				*d;	:; 
+z".^X.[8*0MN	+z"."4hZ#@)L	r#   c                    i }t        |dg      .t        |ddgt        j                  | t        |dg                   t        |dg      t        |ddgt        |dg             t        |dg      t	        t        |dg      |       |S rV  )r3   r4   rX   rY   rT  r   s       r!   #_GenerateImagesParameters_to_vertexrY  G  s    
 !)	+y!-				*d;	:; 
+z".^X.[8*0MN	+z".#Dxj$A9M	r#   c                 <   i }t        | dg      t        |dgt        | dg             t        | dg      1t        |dgt        | dg      D cg c]  }t        ||       c}       t        | dg      #t        |dgt        t        | dg      |             |S c c}w Nr^   r_   r   r   positivePromptSafetyAttributes!positive_prompt_safety_attributes)r3   r4   _GeneratedImage_from_mldev_SafetyAttributes_from_mldevrL   s       r!   "_GenerateImagesResponse_from_mldevr`  ]  s     !)	+)*+7'(${=N<O*P 
+'3	 [=/:	
 'tY7	
 
+89:F	,-$?@A9	
 
	
   Bc                 <   i }t        | dg      t        |dgt        | dg             t        | dg      1t        |dgt        | dg      D cg c]  }t        ||       c}       t        | dg      #t        |dgt        t        | dg      |             |S c c}w r[  )r3   r4   r   _SafetyAttributes_from_vertexrL   s       r!   #_GenerateImagesResponse_from_vertexrd  }  s     !)	+)*+7'(${=N<O*P 
+'3	 [=/:	
 (i8	
 
+89:F	,-%?@A9	
 
	
ra  c                 f   i }t        | dg      t        |ddgt        | dg             t        | dg      t        d      t        | dg      t        d      t        | dg      t        |dd	gt        | dg             t        | d
g      t        d      t        | dg      t        |ddgt        | dg             t        | dg      t        |ddgt        | dg             t        | dg      t        |ddgt        | dg             t        | dg      t        d      t        | dg      t        |ddgt        | dg             t        | dg      t        |ddgt        | dg             t        | dg      t        d      t        | dg      $t        |ddgt        t        | dg      |             t        | dg      2t        |ddgt        | dg      D cg c]  }t	        ||       c}       t        | dg      t        d      t        | d g      t        d!      |S c c}w )"Nnumber_of_videosr   r   r   rL  fpsz-fps parameter is not supported in Gemini API.duration_secondsdurationSecondsr   rM  r   r   
resolutionr   r   pubsub_topicz6pubsub_topic parameter is not supported in Gemini API.r   r   rP  rS  generate_audioz8generate_audio parameter is not supported in Gemini API.
last_framer   	lastFramer   r   maskz.mask parameter is not supported in Gemini API.compression_qualityz=compression_quality parameter is not supported in Gemini API.)r3   r4   r   _Image_to_mldev'_VideoGenerationReferenceImage_to_mldevrL   s       r!   _GenerateVideosConfig_to_mldevrs    s    !)	+*+,8	}%[-./ 
+()*6
O
PP	+w+
D
EE	+*+,8	()[-./ 
+x ,
E
FF	+'(4	}%[>*+ 
+~&2	|$[<.) 
++,-9	)*[./0 
+'(4
M
NN	+)*+7	'([,-. 
+()*6	'[+,- 
+()*6
O
PP	+~&2	%[<.99E 
+*+,8	*+ [+=*>?	
 4D)D	
 
+x ,
E
FF	+-./;
G  
	
s   "H.c                 L   i }t        | dg      t        |ddgt        | dg             t        | dg      t        |ddgt        | dg             t        | dg      t        |ddgt        | dg             t        | dg      t        |ddgt        | dg             t        | d	g      t        |dd	gt        | d	g             t        | d
g      t        |ddgt        | d
g             t        | dg      t        |ddgt        | dg             t        | dg      t        |ddgt        | dg             t        | dg      t        |ddgt        | dg             t        | dg      t        |ddgt        | dg             t        | dg      t        |ddgt        | dg             t        | dg      t        |ddgt        | dg             t        | dg      $t        |ddgt        t        | dg      |             t        | dg      2t        |ddgt        | dg      D cg c]  }t        ||       c}       t        | dg      $t        |ddgt	        t        | dg      |             t        | dg      t        |ddgt        | dg             |S c c}w )Nrf  r   r   r   r   rg  rh  ri  r   r   r   rj  r   r   rk  pubsubTopicr   r   rP  rS  rl  generateAudiorm  r   rn  r   r   ro  rp  r   )r3   r4   _Image_to_vertex(_VideoGenerationReferenceImage_to_vertex_VideoGenerationMask_to_vertexrL   s       r!   _GenerateVideosConfig_to_vertexrz    s]    !)	+*+,8	}%[-./ 
+()*6	|$[+,- 
+w+u-tK%/IJ	+*+,8	()[-./ 
+x ,v.[6(0KL	+'(4	}%[>*+ 
+~&2	|$[<.) 
++,-9	)*[./0 
+'(4	}%[>*+ 
+)*+7	'([,-. 
+()*6	'[+,- 
+()*6	'[+,- 
+~&2	%kL>:IF 
+*+,8	*+ [+=*>?	
 5T9E	
 
+x ,	 &tK&'BIN 
+-./;	+,[012 
)	
s   -J!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             t        | dg      t        |dgt        | dg             t        | ddg      $t        |dgt        t        | ddg      |             t        | ddg      $t        |dgt        t        | ddg      |             |S )Nr   r   doneerrorr   generateVideoResponseresult)r3   r4   "_GenerateVideosResponse_from_mldevr5   s      r!   #_GenerateVideosOperation_from_mldevr  s  s%    !)	+x ,VHd;9:	+
|$0ZL${ZL"AB	+x ,VHd;9:	+y!-WItK';<	+
$;<=I	*z+BCDi	
 
+
$;<=I	
*z+BCDi	
 
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             t        | dg      t        |dgt        | dg             t        | dg      #t        |dgt        t        | dg      |             t        | dg      #t        |dgt        t        | dg      |             |S )Nr   r   r|  r}  r   r  )r3   r4   #_GenerateVideosResponse_from_vertexr5   s      r!   $_GenerateVideosOperation_from_vertexr    s    !)	+x ,VHd;9:	+
|$0ZL${ZL"AB	+x ,VHd;9:	+y!-WItK';<	+
|$0	+zl+Y	
 
+
|$0	
+zl+Y	
 
r#   c                 "   i }t        |dg      .t        |ddgt        j                  | t        |dg                   t        |dg      t        |ddgt        |dg             t        |dg      $t        |ddgt	        t        |dg      |             t        |dg      $t        |ddgt        t        |dg      |             t        |dg      t        t        |dg      |       t        |dg      t        t        |dg      |       |S 	NrU   rV   r   r   imagevideosourcer   )r3   r4   rX   rY   rq  _Video_to_mldev_GenerateVideosSource_to_mldevrs  r   s       r!   "_GenerateVideosParameters_to_mldevr    s%   
 !)	+y!-				*d;	:; 
+z".^X.[8*0MN	+y!-	![7)4i@ 
+y!-	![7)4i@ 
+z"."4hZ#@)L	+z"."4hZ#@)L	r#   c                 "   i }t        |dg      .t        |ddgt        j                  | t        |dg                   t        |dg      t        |ddgt        |dg             t        |dg      $t        |ddgt	        t        |dg      |             t        |dg      $t        |ddgt        t        |dg      |             t        |dg      t        t        |dg      |       t        |dg      t        t        |dg      |       |S r  )r3   r4   rX   rY   rw  _Video_to_vertex_GenerateVideosSource_to_vertexrz  r   s       r!   #_GenerateVideosParameters_to_vertexr    s%   
 !)	+y!-				*d;	:; 
+z".^X.[8*0MN	+y!-	!kG95yA 
+y!-	!kG95yA 
+z".#Dxj$A9M	+z".#Dxj$A9M	r#   c                 (   i }t        | dg      1t        |dgt        | dg      D cg c]  }t        ||       c}       t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             |S c c}w )NgeneratedSamplesgenerated_videosraiMediaFilteredCountrai_media_filtered_countraiMediaFilteredReasonsrai_media_filtered_reasons)r3   r4   _GeneratedVideo_from_mldevrL   s       r!   r  r    s     !)	+*+,8	 [+=*>?	
 'tY7	
 
+/01=	#$[234 
+123?	%&[456 
)	
   Bc                 (   i }t        | dg      1t        |dgt        | dg      D cg c]  }t        ||       c}       t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             |S c c}w )Nvideosr  r  r  r  r  )r3   r4   _GeneratedVideo_from_vertexrL   s       r!   r  r  -  s     !)	+z".	 [8*5	
 (i8	
 
+/01=	#$[234 
+123?	%&[456 
)	
r  c           
         i }t        | dg      t        |ddgt        | dg             t        | dg      $t        |ddgt        t        | dg      |             t        | dg      $t        |ddgt        t        | dg      |             |S Nr   r   r  r  )r3   r4   rq  r  r5   s      r!   r  r  M  s     !)	+z".14hZ3P 
+y!-	![7)4i@ 
+y!-	![7)4i@ 
r#   c           
         i }t        | dg      t        |ddgt        | dg             t        | dg      $t        |ddgt        t        | dg      |             t        | dg      $t        |ddgt        t        | dg      |             |S r  )r3   r4   rw  r  r5   s      r!   r  r  h  s     !)	+z".14hZ3P 
+y!-	!kG95yA 
+y!-	!kG95yA 
r#   c           
          i }t        | dg      #t        |dgt        t        | dg      |             t        | dg      't        |dgt        | dg      D cg c]  }| c}       |S c c}w )N_selfro  r   )r3   r4   _Image_from_vertexrL   s       r!   _GeneratedImageMask_from_vertexr    s     !)	+y!-	4gY7C 
+z".H:kH:1NOO 
  Ps   	A)c           
         i }t        | dg      #t        |dgt        t        | dg      |             t        | dg      t        |dgt        | dg             t        | dg      #t        |dgt        t        | dg      |             |S )Nr  r  raiFilteredReasonrai_filtered_reasonsafety_attributes)r3   r4   _Image_from_mldevr_  r5   s      r!   r^  r^    s     !)	+y!-		${WI6	B 
++,-9	[./0 
+y!-	$T+y%A9M 
r#   c           
      b   i }t        | dg      #t        |dgt        t        | dg      |             t        | dg      t        |dgt        | dg             t        | dg      #t        |dgt        t        | dg      |             t        | dg      t        |dgt        | dg             |S )Nr  r  r  r  r  r   enhanced_prompt)r3   r4   r  rc  r5   s      r!   r   r     s     !)	+y!-		4gY7C 
++,-9	[./0 
+y!-	%d;	&BIN 
+z".&'kH:)FG	r#   c           
      j    i }t        | dg      #t        |dgt        t        | dg      |             |S )Nr  )r3   r4   _Video_from_mldevr5   s      r!   r  r    sC     !)	+y!-		${WI6	B 
r#   c           
      j    i }t        | dg      #t        |dgt        t        | dg      |             |S )Nr  r  )r3   r4   _Video_from_vertexr5   s      r!   r  r    sC     !)	+y!-		4gY7C 
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             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             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             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             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             t        | dg      t        |dgt        | dg             t        | dg      #t        |d gt        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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+      |S ),Nr  r3  r   r   r$  r4  r  r  enable_affective_dialogenableAffectiveDialogr  r  r  r  r  r   r!  r  r  r
  r  r  r  r  r  r  r  r  r2  r   r"  r#  r  r	  r   r%  r&  r  r  r   r  enable_enhanced_civic_answerszFenable_enhanced_civic_answers parameter is not supported in Vertex AI.)r3   r4   r5  r   r5   s      r!   r   r     s     !)	+012>	[345 
+./0<	[123 
+)*+7%&[;L:M(NO	+)*+7%&[;L:M(NO	+123?	 ![456 
++,-9	[./0 
+
|$0ZL${ZL"AB	++,-9%&[;N:O(P 
+*+,8%&[;M:N(O 
+*+,8%&[;M:N(O 
++,-9	[./0 
+,-.:	[/01 
+-./;	[012 
+)*+7%&[;L:M(NO	+()*6_%tK:J9K'LM	+x ,VHd;9:	+()5	/0)	
 
+()*6_%tK:J9K'LM	+'3]OT+%GH	+)*+7%&[;L:M(NO	+y!-VHd;	:;	+y!-VHd;	:;	+789E
P  
r#   c                     i }t        |dg      .t        |ddgt        j                  | t        |dg                   |S r   r   r   s       r!   _GetModelParameters_to_mldevr  i	  r   r#   c                     i }t        |dg      .t        |ddgt        j                  | t        |dg                   |S r   r   r   s       r!   _GetModelParameters_to_vertexr  y	  r   r#   c                     i }t        | dg      t        d      t        | dg      t        |dgt        | dg             |S )Nauth_configz5auth_config parameter is not supported in Gemini API.enable_widgetenableWidgetr   r5   s      r!   _GoogleMaps_to_mldevr  	  sS     !)	+'3
L
MM	+()5^$d;8I&JK	r#   c                     i }t        | dg      t        d      t        | dg      t        d      t        | dg      t        |dgt        | dg             |S )Nexclude_domainsz9exclude_domains parameter is not supported in Gemini API.blocking_confidencez=blocking_confidence parameter is not supported in Gemini API.time_range_filtertimeRangeFilterr   r5   s      r!   _GoogleSearch_to_mldevr  	  s     !)	+)*+7
C  
+-./;
G  
++,-9%&[;N:O(P 
r#   c           
          i }t        | dg      ,t        |dgt        j                  t        | dg                   t        | dg      t        |dgt        | dg             |S )NbytesBase64Encodedimage_bytesr1   r0   r3   r4   base_tt_bytesr5   s      r!   r  r  	  so     !)	+,-.:	tK*>)?@A 
+
|$0[M4j\#BC	r#   c           
         i }t        | dg      t        |dgt        | dg             t        | dg      ,t        |dgt        j                  t        | dg                   t        | dg      t        |dgt        | dg             |S )NgcsUrigcs_urir  r  r1   r0   r  r5   s      r!   r  r  	  s     !)	+z".YKkH:!>?	+,-.:	tK*>)?@A 
+
|$0[M4j\#BC	r#   c           
          i }t        | dg      t        d      t        | dg      ,t        |dgt        j                  t        | dg                   t        | dg      t        |dgt        | dg             |S )Nr  z1gcs_uri parameter is not supported in Gemini API.r  r  r0   r1   )r3   r   r4   r  r  r5   s      r!   rq  rq  	  s     !)	+	{#/
H
II	+'3	tK-9: 
+}%1ZL${[M"BC	r#   c           
         i }t        | dg      t        |dgt        | dg             t        | dg      ,t        |dgt        j                  t        | dg                   t        | dg      t        |dgt        | dg             |S )Nr  r  r  r  r0   r1   r  r5   s      r!   rw  rw  	  s     !)	+	{#/XJ[9+ >?	+'3	tK-9: 
+}%1ZL${[M"BC	r#   c                 j   i }t        |dg      t        |ddgt        |dg             t        |dg      t        |ddgt        |dg             t        |dg      t        |ddgt        |dg             t        |dg      .t        |dd	gt        j                  | t        |dg                   |S 
N	page_size_querypageSize
page_token	pageTokenfilter
query_baserV   
models_urlr3   r4   rX   t_models_urlr   s       r!   _ListModelsConfig_to_mldevr   
      
 !)	+}%1*-tK+/O 
+~&2	;[<.) 
+z".8,d;
.KL	+~&2		z4l^#DE 
r#   c                 j   i }t        |dg      t        |ddgt        |dg             t        |dg      t        |ddgt        |dg             t        |dg      t        |ddgt        |dg             t        |dg      .t        |dd	gt        j                  | t        |dg                   |S r  r  r   s       r!   _ListModelsConfig_to_vertexr   
  r  r#   c                 T    i }t        |dg      t        | t        |dg      |       |S Nr   )r3   r  r   s       r!   _ListModelsParameters_to_mldevr  @
  s8    
 !)	+z".Dxj19 
r#   c                 T    i }t        |dg      t        | t        |dg      |       |S r  )r3   r  r   s       r!   _ListModelsParameters_to_vertexr  N
  s8    
 !)	+z".Dxj19 
r#   c                 N   i }t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      Dt        |dgt        j                  t        | dg            D cg c]  }t	        ||       c}       |S c c}w Nr^   r_   nextPageTokennext_page_tokenr  models)r3   r4   rX   t_extract_models_Model_from_mldevrL   s       r!   _ListModelsResponse_from_mldevr  \
  s     !)	+)*+7'(${=N<O*P 
+()5&'kO;L)MN	+y!-	
 **4gY+GH	
 dI.	
 
	
   B"c                 N   i }t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      Dt        |dgt        j                  t        | dg            D cg c]  }t	        ||       c}       |S c c}w r  )r3   r4   rX   r  _Model_from_vertexrL   s       r!   _ListModelsResponse_from_vertexr  v
  s     !)	+)*+7'(${=N<O*P 
+()5&'kO;L)MN	+y!-	
 **4gY+GH	
 tY/	
 
	
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             |S )N	mask_modemaskModesegmentation_classesmaskClassesmask_dilationdilationrR   r5   s      r!   _MaskReferenceConfig_to_vertexr  
  s     !)	+}%1ZL${[M"BC	+./0<M?D7M6N$O 
+()5ZL${_4E"F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             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             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             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             t        | dg      t        |dgt        | dg             |S )Nr   displayNamer.   r   versionr  tuned_model_infoinputTokenLimitinput_token_limitoutputTokenLimitoutput_token_limitsupportedGenerationMethodssupported_actionsr   maxTemperaturemax_temperaturer  r   r  r  thinkingrR   r5   s      r!   r  r  
  s)    !)	+x ,VHd;9:	+'3^$d;&HI	+'3]OT+%GH	+	{#/YKkI;!?@	+y!-'(${WI*FG	+)*+7'(${=N<O*P 
+*+,8	[-./ 
+456B	[789 
+'3]OT+%GH	+()*6&'k<L;M)NO	+x ,WItK&:;	+x ,WItK&:;	+
|$0ZL${ZL"AB	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             t        | dg      t        |dgt        | dg             t        | dg      1t        |dgt        | dg      D cg c]  }t        ||       c}       t        | d	g      t        |d	gt        | d	g             t        | d
g      #t        |dgt        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 c c}w )Nr   r  r.   r   	versionIdr  deployedModels	endpointsr   r  r  defaultCheckpointIddefault_checkpoint_idcheckpoints)r3   r4   r   _TunedModelInfo_from_vertexrL   s       r!   r  r  
  s    !)	+x ,VHd;9:	+'3^$d;&HI	+'3]OT+%GH	+}%1YKkK=!AB	+()*6	 [+;*<=	
 "$	2	
 
+z".XJ[8* =>	+y!-	#Dwi$@)L 
+-./;	 ![012 
+'3	{]O<=$= 
=	
6 	>s   ?F9	F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             t        | dg      #t        |dgt        t        | dg      |             t        | d	g      t        |d
gt        | d	g             t        | dg      #t        |dgt        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t        | dg             t        | dg      t        |dgt        | dg             |S )Nfunction_callfunctionCallcode_execution_resultcodeExecutionResultexecutable_codeexecutableCode	file_datafileDatafunction_responsefunctionResponseinline_data
inlineDatatextthoughtthought_signaturethoughtSignaturevideo_metadatavideoMetadata)r3   r4   r   r7   r5   s      r!   rm   rm     s    !)	+()5^$d;8I&JK	+/01=	[234 
+)*+7%&[;L:M(NO	+}%1	4k];YG 
++,-9	[./0 
+'3	tK-99E 
+x ,VHd;9:	+	{#/YKkI;!?@	++,-9	[./0 
+()*6_%tK:J9K'LM	r#   c           
      j    i }t        | dg      #t        |dgt        t        | dg      |             |S )Nproduct_imager  r3   r4   rw  r5   s      r!   _ProductImage_to_vertexr!  L  sE     !)	+()5		kO+<=yI 
r#   c                 b   i }t        | dg      t        |ddgt        | dg             t        | dg      t        |ddgt        | dg             t        | dg      t        |ddgt        | dg             t        | dg      t        |ddgt        | dg             t        | d	g      t        |dd
gt        | d	g             t        | dg      t        |ddgt        | dg             t        | dg      t        |ddgt        | dg             t        | dg      t        |g dt        | dg             t        | dg      t        |g dt        | dg             t        | dg      t        |ddgt        | dg             t        | dg      t        |dgt        | dg             |S )Nr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rP  rS  r   rR   r5   s      r!   _RecontextImageConfig_to_vertexr#  [  s#    !)	+*+,8	}%[-./ 
+~&2	{#[<.) 
+()*6	|$[+,- 
+x ,v.[6(0KL	+-./;	'[012 
++,-9	)*[./0 
+()5	~&[?+, 
+*+,83[-./ 
+456B=[789 
+()*6	'[+,- 
+z".
Dxj$AB	r#   c                    i }t        |dg      .t        |ddgt        j                  | t        |dg                   t        |dg      t	        t        |dg      |       t        |dg      t        t        |dg      |       |S NrU   rV   r  r   )r3   r4   rX   rY   _RecontextImageSource_to_vertexr#  r   s       r!   #_RecontextImageParameters_to_vertexr'    s    
 !)	+y!-				*d;	:; 
+z".#Dxj$A9M	+z".#Dxj$A9M	r#   c                     i }t        | dg      1t        |dgt        | dg      D cg c]  }t        ||       c}       |S c c}w )Nr   r   r   rL   s       r!   #_RecontextImageResponse_from_vertexr)    s^     !)	+'3	 [=/:	
 (i8	
 
	
   Ac                 B   i }t        | dg      t        |ddgt        | dg             t        | dg      $t        |g dt        t        | dg      |             t        | dg      2t        |ddgt        | dg      D cg c]  }t        ||       c}       |S c c}w )Nr   r   person_image)r   personImager  product_imagesproductImages)r3   r4   rw  r!  rL   s       r!   r&  r&    s     !)	+z".14hZ3P 
+'(40kN+;<iH 
+()*6	) [+;*<=	
 $D)4	
 
	
s    Bc           
      Z   i }t        | dg      #t        |dgt        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t        t        | dg      |             t        | d	g      #t        |d
gt	        t        | d	g      |             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             |S )Nreference_imagereferenceImagereference_idreferenceIdreference_typereferenceTypemask_image_configmaskImageConfigcontrol_image_configcontrolImageConfigstyle_image_configstyleImageConfigsubject_image_configsubjectImageConfig)r3   r4   rw  r  rt   r5   s      r!   r   r     sw    !)	+)*+7	k,=+>?K 
+'(4]OT+7G%HI	+()*6_%tK:J9K'LM	++,-9	&234i	
 
+./0<	)567	
 
+,-.:	[/01 
+./0<	[123 
r#   c           	          i }t        | ddg      t        |dgt        | ddg             t        | ddg      t        |dgt        | ddg             t        | dg      t        |dgt        | dg             |S NsafetyAttributes
categoriesscorescontentTypecontent_typerR   r5   s      r!   r_  r_  $       !)	+*L9:F	[-|<= 
+*H56BH:tK2Dh1OP 
+'3^$d;&HI	r#   c           	          i }t        | ddg      t        |dgt        | ddg             t        | ddg      t        |dgt        | ddg             t        | dg      t        |dgt        | dg             |S r@  rR   r5   s      r!   rc  rc  ;  rF  r#   c                     i }t        | dg      t        |dgt        | dg             t        | dg      t        d      t        | dg      t        |dgt        | dg             |S )Ncategorymethodz0method parameter is not supported in Gemini API.	thresholdr2   r5   s      r!   r*  r*  R  sv     !)	+
|$0ZL${ZL"AB	+z".
G
HH	+}%1[M4k]#CD	r#   c           
      j    i }t        | dg      #t        |dgt        t        | dg      |             |S )Nr  r   r5   s      r!   _ScribbleImage_to_vertexrM  c  sC     !)	+y!-		kG95yA 
r#   c                    i }t        | dg      t        |ddgt        | dg             t        | dg      t        |ddgt        | dg             t        | dg      t        |ddgt        | dg             t        | dg      t        |ddgt        | dg             t        | d	g      t        |dd
gt        | d	g             t        | dg      t        |dgt        | dg             |S )Nmoder   max_predictionsmaxPredictionsconfidence_thresholdconfidenceThresholdr  maskDilationbinary_color_thresholdbinaryColorThresholdr   rR   r5   s      r!   _SegmentImageConfig_to_vertexrW  r  s/    !)	+x ,v.[6(0KL	+)*+7	'([,-. 
+./0<	,-[123 
+()5	~&[?+, 
+012>	-.[345 
+z".
Dxj$AB	r#   c                    i }t        |dg      .t        |ddgt        j                  | t        |dg                   t        |dg      t	        t        |dg      |       t        |dg      t        t        |dg      |       |S r%  )r3   r4   rX   rY   _SegmentImageSource_to_vertexrW  r   s       r!   !_SegmentImageParameters_to_vertexrZ    s    
 !)	+y!-				*d;	:; 
+z".!${XJ"?K	+z".!${XJ"?K	r#   c                     i }t        | dg      1t        |dgt        | dg      D cg c]  }t        ||       c}       |S c c}w )Nr   generated_masks)r3   r4   r  rL   s       r!   !_SegmentImageResponse_from_vertexr]    s^     !)	+'3	 [=/:	
 ,D)<	
 
	
r*  c           
         i }t        | dg      t        |ddgt        | dg             t        | dg      $t        |ddgt        t        | dg      |             t        | dg      $t        |ddgt        t        | dg      |             |S )Nr   r   r  scribble_imagescribble)r3   r4   rw  rM  r5   s      r!   rY  rY    s     !)	+z".14hZ3P 
+y!-	!kG95yA 
+()*6	$ /019	
 
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      |S )Nlanguage_codelanguageCodevoice_configvoiceConfigmulti_speaker_voice_configzCmulti_speaker_voice_config parameter is not supported in Vertex AI.r2   r5   s      r!   r5  r5    s     !)	+()5^$d;8I&JK	+'(4]OT+7G%HI	+456B
M  
r#   c           
         i }t        | dg      't        |dgt        | dg      D cg c]  }| c}       t        | dg      t        d      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             t        | dg      t        |dgt        | dg             t        | dg      t        d      t        | dg      #t        |dgt        t        | dg      |             t        | dg      #t        |dgt	        t        | dg      |             t        | dg      t        |dgt        | dg             |S c c}w )Nfunction_declarationsfunctionDeclarations	retrievalz3retrieval parameter is not supported in Gemini API.google_search_retrievalgoogleSearchRetrievalcomputer_usecomputerUsefile_search
fileSearchcode_executioncodeExecutionenterprise_web_searchz?enterprise_web_search parameter is not supported in Gemini API.google_maps
googleMapsgoogle_searchgoogleSearchurl_context
urlContext)r3   r4   r   r  r  rL   s       r!   r,  r,    s    !)	+/01=	 {-D,EFG$G 
+}%1
J
KK	+123?	 ![456 
+'(4]OT+7G%HI	+'3\ND}o$FG	+()*6_%tK:J9K'LM	+/01=
I  
+'3	T+?K 
+()5	tK/1BCYO 
+'3\ND}o$FG	Y 	Hs   	Fc                     i }t        | dg      1t        |dgt        | dg      D cg c]  }t        ||       c}       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             t        | dg      t        d	      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             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             |S c c}w )Nrh  ri  rj  rk  rl  rm  rn  ro  z4file_search parameter is not supported in Vertex AI.rq  rr  rs  enterpriseWebSearchrt  ru  rv  rw  rx  ry  )r3   r4   r   r   rL   s       r!   r~   r~   -  s    !)	+/01=	  [+B*CD	
 +4;	
 
+}%1[M4k]#CD	+123?	 ![456 
+'(4]OT+7G%HI	+'3
K
LL	+()*6_%tK:J9K'LM	+/01=	[234 
+'3\ND}o$FG	+()5^$d;8I&JK	+'3\ND}o$FG	S	
s   Fc           	          i }t        | ddg      	 t        |dgt        | ddg             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             |S )Nr   z&google-vertex-llm-tuning-base-model-id
base_modelrH  rI  
updateTimeupdate_timerR   r5   s      r!   r
  r
  b  s     !)
;#KLM 		[8%MNO 
+~&2]OT+~%FG	+~&2]OT+~%F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             |S Nr.   r  r   r  r  rR   r5   s      r!   _UpdateModelConfig_to_mldevr  z       !)	+'(4kN;K)LM	+'3kM?)KL	+/01=	[234 
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             |S r  rR   r5   s      r!   _UpdateModelConfig_to_vertexr    r  r#   c                     i }t        |dg      .t        |ddgt        j                  | t        |dg                   t        |dg      t	        t        |dg      |       |S )NrU   rV   r   r   )r3   r4   rX   rY   r  r   s       r!   _UpdateModelParameters_to_mldevr    sl    
 !)	+y!-				*d;	:; 
+z".[8* =yI	r#   c                     i }t        |dg      .t        |ddgt        j                  | t        |dg                   t        |dg      t	        t        |dg      |       |S )NrU   rV   r   )r3   r4   rX   rY   r  r   s       r!    _UpdateModelParameters_to_vertexr    sl    
 !)	+y!-				*d;	:; 
+z". kH:!>	J	r#   c                 b   i }t        | dg      t        |ddgt        | dg             t        | dg      t        |ddgt        | dg             t        | dg      t        |ddgt        | dg             t        | dg      t        |dd	gt        | dg             t        | d
g      t        |g dt        | d
g             t        | dg      t        |g dt        | dg             t        | dg      t        |g dt        | dg             t        | dg      t        |g dt        | dg             t        | dg      t        |dgt        | dg             t        | dg      t        |ddgt        | dg             t        | dg      t        |ddgt        | dg             |S )Nr   r   r   r   r   r   r   r   r   r   r   r   r   enhance_input_image)r   upscaleConfigenhanceInputImageimage_preservation_factor)r   r  imagePreservationFactorr   r   r   rO  rR   r5   s      r!    _UpscaleImageAPIConfig_to_vertexr    s     !)	+()*6	|$[+,- 
+-./;	'[012 
++,-9	)*[./0 
+,-.:	)*[/01 
+*+,83[-./ 
+456B=[789 
+-./;<[012 
+345AB[678 
+z".
Dxj$AB	+*+,8	}%[-./ 
+x ,v.[6(0KL	r#   c                 x   i }t        |dg      .t        |ddgt        j                  | t        |dg                   t        |dg      $t        |ddgt	        t        |dg      |             t        |dg      t        |g dt        |dg             t        |dg      t        t        |dg      |       |S )NrU   rV   r  r   upscale_factor)r   r  upscaleFactorr   )r3   r4   rX   rY   rw  r  r   s       r!   $_UpscaleImageAPIParameters_to_vertexr    s    
 !)	+y!-				*d;	:; 
+y!-	!kG95yA 
+()*68[+,- 
+z".$T+z%BIN	r#   c                     i }t        | dg      t        |dgt        | dg             t        | dg      1t        |dgt        | dg      D cg c]  }t        ||       c}       |S c c}w r   r   rL   s       r!   !_UpscaleImageResponse_from_vertexr  ;  r   r   c           
          i }t        | dg      #t        |dgt        t        | dg      |             t        | dg      t        |dgt        | dg             |S )Nr  r  r  r  r   r5   s      r!   ry  ry  R  si     !)	+y!-		kG95yA 
+}%1ZL${[M"BC	r#   c           
          i }t        | dg      #t        |dgt        t        | dg      |             t        | dg      /t        t        | dg             t        |dgt        | dg             |S Nr  r5  r6  )r3   r4   rq  r)   r5   s      r!   rr  rr  d  s     !)	+y!-		[7)4i@ 
+()*68[+,- 	_%tK:J9K'LM	r#   c           
          i }t        | dg      #t        |dgt        t        | dg      |             t        | dg      t        |dgt        | dg             |S r  r   r5   s      r!   rx  rx  y  sn     !)	+y!-		kG95yA 
+()*6_%tK:J9K'LM	r#   c           
         i }t        | dg      t        |dgt        | dg             t        | dg      ,t        |dgt        j                  t        | dg                   t        | dg      t        |dgt        | dg             |S )NuriencodedVideovideo_bytesencodingr0   r  r5   s      r!   r  r    s     !)	+w+UGT+w78	+'(4	tK.)9:; 
+
|$0[M4j\#BC	r#   c           
         i }t        | dg      t        |dgt        | dg             t        | dg      ,t        |dgt        j                  t        | dg                   t        | dg      t        |dgt        | dg             |S )Nr  r  r  r  r1   r0   r  r5   s      r!   r  r    s     !)	+z".UGT+z:;	+,-.:	tK*>)?@A 
+
|$0[M4j\#BC	r#   c           
         i }t        | dg      t        |dgt        | dg             t        | dg      ,t        |dgt        j                  t        | dg                   t        | dg      t        |dgt        | dg             |S )Nr  r  r  r0   r  r  r5   s      r!   r  r    s     !)	+w+UGT+w78	+'3	tK-9: 
+}%1ZL${[M"BC	r#   c           
         i }t        | dg      t        |dgt        | dg             t        | dg      ,t        |dgt        j                  t        | dg                   t        | dg      t        |dgt        | dg             |S )Nr  r  r  r  r0   r1   r  r5   s      r!   r  r    s     !)	+w+XJ[5' :;	+'3	tK-9: 
+}%1ZL${[M"BC	r#   c                   	   e Zd Zdddedeej                  ej                  f   deej                     dej                  fdZdddedeej                  ej                  f   deej                     deej                     fdZdddedeej                  ej                  f   deej                     dej                  fd	Zddded
edeej"                     dej$                  fdZddded
edeej*                     deej,                     dej.                  f
dZdddedej2                  dedeej4                     dej6                  f
dZdddedej:                  deej<                     dej>                  fdZ dddedejB                  deejD                     dejF                  fdZ$dddedeejJ                     dejL                  fdZ'dddeejP                     dejR                  fdZ*dddedeejV                     dejL                  fdZ,dddedeejZ                     dej\                  fdZ/dddedeej                  ej                  f   deej`                     dejb                  fdZ2dddedeej                  ej                  f   deejf                     dejh                  fdZ5ddddddded
ee   deej2                     deejl                     deejn                     deejp                     dejr                  fdZ:dddedej                  deej                     dej                  fdZ;dddedej                  deej                     deej                     fdZ<ddded
edeej"                     dej$                  fdZ=ddded
edeej*                     deej,                     dej.                  f
d Z>dddedej2                  dedeej~                     dej6                  f
d!Z@ddddddded
ee   deej2                     deejl                     deejn                     deejp                     dejr                  fd"ZAdddeejP                     deBejL                     fd#Zy)$ModelsNr   rU   rW   r   r   c                   t        j                  |||      }| j                  j                  r>t	        | j                  |      }|j                  d      }|rdj                  |      }n@d}n=t        | j                  |      }|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                  rt-        |      }| j                  j                  st/        |      }t         j"                  j1                  ||j3                         
      }t        j4                  |
j6                        |_        | j                  j%                  |       |S NrU   rW   r   rV   z{model}:generateContentr  ?r   postshould_return_http_response)r_   r   kwargsheaders)r   _GenerateContentParameters_api_clientvertexair;  get
format_mapr9  r	   popr   http_optionsr   convert_to_dictencode_unserializable_typesrequestgetattrGenerateContentResponse_verify_responsebodyjsonloadsrJ  rF  _from_response
model_dumpHttpResponser  r_   selfrU   rW   r   parameter_modelrequest_dictrequest_url_dictpathquery_paramsr  r   return_valueresponse_dicts                r!   _generate_contentzModels._generate_content  sO    66O   9


Ol &))&1	(334DE(8


Ol &))&1	(334DE(##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL''lLH g-t 22XNl
''5&mmBHMM1JM  :=Im$$9-Hm00??'A'A'C @ L &+%7%7  &L" 	%%l3r#   c             #     K   t        j                  |||      }| j                  j                  r>t	        | j                  |      }|j                  d      }|rdj                  |      }n@d}n=t        | j                  |      }|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                  |      }|t        |dd       rt!        d      | j                  j#                  d	|||	      D ]  }
|
j$                  si nt'        j(                  |
j$                        }| j                  j                  rt+        |      }| j                  j                  st-        |      }t         j.                  j1                  ||j3                         
      }t        j4                  |
j6                        |_        | j                  j;                  |       |  y w)Nr  rV   %{model}:streamGenerateContent?alt=sser  r  r   r  FAccessing the raw HTTP response is not supported in streaming methods.r  r  r  )r   r  r  r  r;  r  r  r9  r	   r  r   r  r   r  r  r  r   request_streamedr  r  r  rJ  rF  r  r  r  r  r  r_   r  r  rU   rW   r   r  r  r  r  r  r  r   r  r  s                r!   _generate_content_streamzModels._generate_content_stream.  sO     66O   9


Ol &))&1	6AA
 78


Ol &))&1	6AA
 7##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DLg-t  
 $$55lL  !)b4::hmm3Lm				"	"<]K&&;MJ22AA )C)C)E B l (-'9'9""(l$ ''5's   I#I%c                   t        j                  |||      }| j                  j                  r>t	        | j                  |      }|j                  d      }|rdj                  |      }n@d}n=t        | j                  |      }|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                  rt'        |      }| j                  j                  st)        |      }t         j*                  j-                  ||j/                         
      }t        j0                  |
j2                        |_        | j                  j7                  |       |S )aA  Calculates embeddings for the given contents. Only text is supported.

    Args:
      model (str): The model to use.
      contents (list[Content]): The contents to embed.
      config (EmbedContentConfig): Optional configuration for embeddings.

    Usage:

    .. code-block:: python

      embeddings = client.models.embed_content(
          model= 'text-embedding-004',
          contents=[
              'What is your name?',
              'What is your favorite color?',
          ],
          config={
              'output_dimensionality': 64
          },
      )
    r  rV   {model}:predict{model}:batchEmbedContentsr  r  r   Nr  r  r  )r   _EmbedContentParametersr  r  r   r  r  r   r	   r  r   r  r   r  r  r  r  r  r  r   r   EmbedContentResponser  r  r  r  r_   r  r  s                r!   embed_contentzModels.embed_content  s   < 33O   6


Ol &))&1	 ++,<= 5


Ol &))&1	+667GH+##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL''lLH 'mmBHMM1JM  7Fm$$6}Em--<<'A'A'C = L &+%7%7  &L" 	%%l3r#   r   c                   t        j                  |||      }| j                  j                  r>t	        | j                  |      }|j                  d      }|rdj                  |      }n@d}n=t        | j                  |      }|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                  rt'        |      }| j                  j                  st)        |      }t         j*                  j-                  ||j/                         	      }t        j0                  |
j2                  
      |_        | j                  j7                  |       |S )z%Private method for generating images.rU   r   r   rV   r  r  r  r   Nr  r  r  )r   _GenerateImagesParametersr  r  rY  r  r  rW  r	   r  r   r  r   r  r  r  r  r  r  rd  r`  GenerateImagesResponser  r  r  r  r_   r  r  rU   r   r   r  r  r  r  r  r  r   r  r  s                r!   _generate_imageszModels._generate_images  s    55O   8


Ol &))&1	 ++,<= 7


Ol &))&1	 ++,<= ##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL''lLH 'mmBHMM1JM  9-Hm$$8Gm//>>'A'A'C ? L &+%7%7  &L" 	%%l3r#   r   c                   t        j                  ||||      }| j                  j                  st	        d      t        | j                  |      }|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                  rt'        |      }t         j(                  j+                  ||j-                         
      }t        j.                  |j0                        |_        | j                  j5                  |       |S )z$Private method for editing an image.rU   r   r   r   6This method is only supported in the Vertex AI client.rV   r  r  r  r   Nr  r  r  )r   _EditImageParametersr  r  r   r   r  r  r	   r  r   r  r   r  r  r  r  r  r  r   EditImageResponser  r  r  r  r_   r  r  rU   r   r   r   r  r  r  r  r  r  r   r  r  s                 r!   _edit_imagezModels._edit_image%  s    00)	O $$OPP3


Ol &))&1	 ++,<= ##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL''lLH 'mmBHMM1JM  4]Cm**99'A'A'C : L &+%7%7  &L" 	%%l3r#   r  r  c                   t        j                  ||||      }| j                  j                  st	        d      t        | j                  |      }|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                  rt'        |      }t         j(                  j+                  ||j-                         
      }t        j.                  |j0                        |_        | j                  j5                  |       |S )z&Private method for upscaling an image.rU   r  r  r   r  rV   r  r  r  r   Nr  r  r  )r   _UpscaleImageAPIParametersr  r  r   r  r  r  r	   r  r   r  r   r  r  r  r  r  r  r  UpscaleImageResponser  r  r  r  r_   r  r  rU   r  r  r   r  r  r  r  r  r  r   r  r  s                 r!   _upscale_imagezModels._upscale_imagee  s    66%	O $$OPP9


Ol &))&1	 ++,<= ##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL''lLH 'mmBHMM1JM  7Fm--<<'A'A'C = L &+%7%7  &L" 	%%l3r#   r  c                   t        j                  |||      }| j                  j                  st	        d      t        | j                  |      }|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                  rt'        |      }t         j(                  j+                  ||j-                         
      }| j                  j/                  |       |S a  Recontextualizes an image.

    There are two types of recontextualization currently supported:
    1) Imagen Product Recontext - Generate images of products in new scenes
       and contexts.
    2) Virtual Try-On: Generate images of persons modeling fashion products.

    Args:
      model (str): The model to use.
      source (RecontextImageSource): An object containing the source inputs
        (prompt, person_image, product_images) for image recontext. prompt is
        optional for product recontext and disallowed for virtual try-on.
        person_image is required for virtual try-on, disallowed for product
        recontext. product_images is required for both product recontext and
        virtual try-on. Only one product image is supported for virtual try-on,
        and up to 3 product images (different angles of the same product) are
        supported for product recontext.
      config (RecontextImageConfig): Configuration for recontextualization.

    Usage:

      ```
      product_recontext_response = client.models.recontext_image(
          model="imagen-product-recontext-preview-06-30",
          source=types.RecontextImageSource(
              prompt="In a modern kitchen setting.",
              product_images=[types.ProductImage.from_file(IMAGE_FILE_PATH)],
          ),
          config=types.RecontextImageConfig(
              number_of_images=1,
          ),
      )
      image = product_recontext_response.generated_images[0].image

      virtual_try_on_response = client.models.recontext_image(
          model="virtual-try-on-preview-08-04",
          source=types.RecontextImageSource(
              person_image=types.Image.from_file(IMAGE1_FILE_PATH),
              product_images=[types.ProductImage.from_file(IMAGE2_FILE_PATH)],
          ),
          config=types.RecontextImageConfig(
              number_of_images=1,
          ),
      )
      image = virtual_try_on_response.generated_images[0].image
      ```
    rU   r  r   r  rV   r  r  r  r   Nr  r  )r   _RecontextImageParametersr  r  r   r'  r  r  r	   r  r   r  r   r  r  r  r  r  r  r)  RecontextImageResponser  r  r  r  rU   r  r   r  r  r  r  r  r  r   r  r  s                r!   recontext_imagezModels.recontext_image  s   n 55O $$OPP8


Ol &))&1	 ++,<= ##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL''lLH 'mmBHMM1JM  9-Hm//>>'A'A'C ? L 	%%l3r#   c                   t        j                  |||      }| j                  j                  st	        d      t        | j                  |      }|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                  rt'        |      }t         j(                  j+                  ||j-                         
      }| j                  j/                  |       |S )a"  Segments an image, creating a mask of a specified area.

    Args:
      model (str): The model to use.
      source (SegmentImageSource): An object containing the source inputs
        (prompt, image, scribble_image) for image segmentation. The prompt is
        required for prompt mode and semantic mode, disallowed for other modes.
        scribble_image is required for the interactive mode, disallowed for
        other modes.
      config (SegmentImageConfig): Configuration for segmentation.

    Usage:

      ```
      response = client.models.segment_image(
          model="image-segmentation-001",
          source=types.SegmentImageSource(
              image=types.Image.from_file(IMAGE_FILE_PATH),
          ),
      )

      mask_image = response.generated_masks[0].mask
      ```
    r  r  rV   r  r  r  r   Nr  r  )r   _SegmentImageParametersr  r  r   rZ  r  r  r	   r  r   r  r   r  r  r  r  r  r  r]  SegmentImageResponser  r  r  r  s                r!   segment_imagezModels.segment_image  s   @ 33O $$OPP6


Ol &))&1	 ++,<= ##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL''lLH 'mmBHMM1JM  7Fm--<<'A'A'C = L 	%%l3r#   c                6   t        j                  ||      }| j                  j                  r>t	        | j                  |      }|j                  d      }|rdj                  |      }n@d}n=t        | j                  |      }|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                  rt'        |
      }
| j                  j                  st)        |
      }
t         j*                  j-                  |
|j/                               }| j                  j1                  |       |S 	NrU   r   rV   {name}r  r  r   r  r  )r   _GetModelParametersr  r  r  r  r  r  r	   r  r   r  r   r  r  r  r  r  r  r  r  Modelr  r  r  r  rU   r   r  r  r  r  r  r  r   r  r  s               r!   r  z
Models.getb  s    //O   2


Ol &))&1	""#341


Ol &))&1	""#34##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL''t\<PH&mmBHMM1JM  (7m$$'6m;;--'A'A'C . L 	%%l3r#   c                   t        j                  |      }| j                  j                  r>t	        | j                  |      }|j                  d      }|rdj                  |      }n@d}n=t        | j                  |      }|j                  d      }|rdj                  |      }nd}|j                  d      }|r=|j                  d      r,|j                  d      }| d| }|r$|dt        |       z  }n|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                  rt'        |
      }
| j                  j                  st)        |
      }
t         j*                  j-                  |
|j/                               }t        j0                  |	j2                        |_        | j                  j7                  |       |S Nr  rV   z{models_url}r  r  z?filter=&r  r   r  r  r  )r   _ListModelsParametersr  r  r  r  r  r  r  r	   r   r  r   r  r  r  r  r  r  r  r  ListModelsResponser  r  r  r  r_   r  r  r   r  r  r  r  r  query_param_filterr  r   r  r  s               r!   _listzModels._list  sO    11O   4


Ol &))&1	(()9:3


Ol &))&1	(()9:##H-L((2'++H5vX012d	!Il+,--	vQy./0dXt$04L*""//;$++88l**<8L66|DL''t\<PH&mmBHMM1JM  5mDm$$4]Cm++::'A'A'C ; L &+%7%7  &L" 	%%l3r#   c                6   t        j                  ||      }| j                  j                  r>t	        | j                  |      }|j                  d      }|rdj                  |      }n@d}n=t        | j                  |      }|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                  rt'        |
      }
| j                  j                  st)        |
      }
t         j*                  j-                  |
|j/                         	      }| j                  j1                  |       |S 
Nr  rV   z{model}r  r  r  r   patchr  )r   _UpdateModelParametersr  r  r  r  r  r  r	   r  r   r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  s               r!   updatezModels.update  s    22O   5


Ol &))&1	##$454


Ol &))&1	""#34##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL''|\H 'mmBHMM1JM  (7m$$'6m;;--'A'A'C . L 	%%l3r#   c                   t        j                  ||      }| j                  j                  r>t	        | j                  |      }|j                  d      }|rdj                  |      }n@d}n=t        | j                  |      }|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                  rt'        |
      }
| j                  j                  st)        |
      }
t         j*                  j-                  |
|j/                               }t        j0                  |	j2                  	      |_        | j                  j7                  |       |S 
Nr  rV   r  r  r  r   deleter  r  )r   _DeleteModelParametersr  r  r   r  r  r   r	   r  r   r  r   r  r  r  r  r  r  r   r   DeleteModelResponser  r  r  r  r_   r  r  s               r!   r  zModels.delete$  s
    22O   5


Ol &))&1	""#344


Ol &))&1	""#34##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL''$lH 'mmBHMM1JM  6}Em$$5mDm,,;;'A'A'C < L &+%7%7  &L" 	%%l3r#   c                   t        j                  |||      }| j                  j                  r>t	        | j                  |      }|j                  d      }|rdj                  |      }n@d}n=t        | j                  |      }|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                  rt'        |      }| j                  j                  st)        |      }t         j*                  j-                  ||j/                         	      }t        j0                  |
j2                  
      |_        | j                  j7                  |       |S )a8  Counts the number of tokens in the given content.

    Multimodal input is supported for Gemini models.

    Args:
      model (str): The model to use for counting tokens.
      contents (list[types.Content]): The content to count tokens for.
      config (CountTokensConfig): The configuration for counting tokens.

    Usage:

    .. code-block:: python

      response = client.models.count_tokens(
          model='gemini-2.0-flash',
          contents='What is your name?',
      )
      print(response)
      # total_tokens=5 cached_content_token_count=None
    r  rV   {model}:countTokensr  r  r   Nr  r  r  )r   _CountTokensParametersr  r  r   r  r  r   r	   r  r   r  r   r  r  r  r  r  r  r   r   CountTokensResponser  r  r  r  r_   r  r  s                r!   count_tokenszModels.count_tokensh  s   8 22O   5


Ol &))&1	$//0@A$4


Ol &))&1	$//0@A$##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL''lLH 'mmBHMM1JM  6}Em$$5mDm,,;;'A'A'C < L &+%7%7  &L" 	%%l3r#   c                   t        j                  |||      }| j                  j                  st	        d      t        | j                  |      }|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                  rt'        |      }t         j(                  j+                  ||j-                         
      }t        j.                  |
j0                        |_        | j                  j5                  |       |S )az  Given a list of contents, returns a corresponding TokensInfo containing the

    list of tokens and list of token ids.

    This method is not supported by the Gemini Developer API.

    Args:
      model (str): The model to use.
      contents (list[shared.Content]): The content to compute tokens for.

    Usage:

    .. code-block:: python

      response = client.models.compute_tokens(
          model='gemini-2.0-flash',
          contents='What is your name?',
      )
      print(response)
      # tokens_info=[TokensInfo(role='user', token_ids=['1841', ...],
      # tokens=[b'What', b' is', b' your', b' name', b'?'])]
    r  r  rV   {model}:computeTokensr  r  r   Nr  r  r  )r   _ComputeTokensParametersr  r  r   r\   r  r  r	   r  r   r  r   r  r  r  r  r  r  rb   ComputeTokensResponser  r  r  r  r_   r  r  s                r!   compute_tokenszModels.compute_tokens  s   < 44O $$OPP7


Ol &))&1	&112BC&##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL''lLH 'mmBHMM1JM  8Gm..=='A'A'C > L &+%7%7  &L" 	%%l3r#   r   r  r  r  r   r  c                >   t        j                  ||||||      }| j                  j                  r>t	        | j                  |      }|j                  d      }	|	rdj                  |	      }
n@d}
n=t        | j                  |      }|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                  rt'        |      }| j                  j                  st)        |      }t         j*                  j-                  ||j/                         	      }| j                  j1                  |       |S )
z%Private method for generating videos.rU   r   r  r  r  r   rV   {model}:predictLongRunningr  r  r   Nr  r  )r   _GenerateVideosParametersr  r  r  r  r  r  r	   r  r   r  r   r  r  r  r  r  r  r  r  GenerateVideosOperationr  r  r  r  rU   r   r  r  r  r   r  r  r  r  r  r  r   r  r  s                   r!   _generate_videoszModels._generate_videos  s    55O   8


Ol &))&1	+667GH+7


Ol &))&1	+667GH+##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL''lLH 'mmBHMM1JM  :=Im$$9-Hm00??'A'A'C @ L 	%%l3r#   c                   t        j                  |      }t        j                  |      }|r@|j                  r4t	        j
                  |j                        rt        j                  d      t        j                  |      r| j                  |||      S |rd}t        |t        j                        r"|j                  rEt        |j                        }n/t        |t              r|j                  dg       }|rt        |      }t        |      |k7  r5dj!                  t#        t$        |            }t&        j)                  d|       | j                  |||      S t        j*                  |      }	t&        j-                  d|	 d       g }
t        j.                         }d}|	dkD  r|d	z  }| j                  |||      }t        j0                  |      }|snR|snN|j2                  r<|j2                  d   j4                  r#|j2                  d   j4                  j6                  snt        j8                  ||      }|snt&        j-                  d
| d       |	d	z  }	|	dk(  rt&        j-                  d       |j2                  d   j4                  }t        j:                  d|      }t=        j>                  |      }|
s|
jA                  |       t        |tB              r"|jE                  |       |jE                  |       |
jE                  |       |
jE                  |       |	dkD  rt        jF                  |      r	||
|_$        |S )a  Makes an API request to generate content using a model.

    For the `model` parameter, supported formats for Vertex AI API include:
    - The Gemini model ID, for example: 'gemini-2.0-flash'
    - The full resource name starts with 'projects/', for example:
      'projects/my-project-id/locations/us-central1/publishers/google/models/gemini-2.0-flash'
    - The partial resource name with 'publishers/', for example:
      'publishers/google/models/gemini-2.0-flash' or
    - `/` separated publisher and model name, for example:
      'google/gemini-2.0-flash'

    For the `model` parameter, supported formats for Gemini API include:
    - The Gemini model ID, for example: 'gemini-2.0-flash'
    - The model name starts with 'models/', for example:
      'models/gemini-2.0-flash'
    - For tuned models, the model name starts with 'tunedModels/',
      for example:
      'tunedModels/1234567890123456789'

    Some models support multimodal input and output.

    Built-in MCP support is an experimental feature.

    Usage:

    .. code-block:: python

      from google.genai import types
      from google import genai

      client = genai.Client(
          vertexai=True, project='my-project-id', location='us-central1'
      )

      response = client.models.generate_content(
        model='gemini-2.0-flash',
        contents='''What is a good name for a flower shop that specializes in
          selling bouquets of dried flowers?'''
      )
      print(response.text)
      # **Elegant & Classic:**
      # * The Dried Bloom
      # * Everlasting Florals
      # * Timeless Petals

      response = client.models.generate_content(
        model='gemini-2.0-flash',
        contents=[
          types.Part.from_text(text='What is shown in this image?'),
          types.Part.from_uri(file_uri='gs://generativeai-downloads/images/scones.jpg',
          mime_type='image/jpeg')
        ]
      )
      print(response.text)
      # The image shows a flat lay arrangement of freshly baked blueberry
      # scones.
    6MCP sessions are not supported in synchronous methods.r  r   rw   , Tools at indices [%s] are not compatible with automatic function calling (AFC). AFC is disabled. If AFC is intended, please include python callables in the tool list, and do not include function declaration in the tool list.&AFC is enabled with max remote calls: .r
   AFC remote call 	 is done.8Reached max remote calls for automatic function calling.userrl   rk   )%r   "find_afc_incompatible_tool_indexesparse_config_for_mcp_usagerw   r   has_mcp_session_usager   UnsupportedFunctionErrorshould_disable_afcr  
isinstancer   GenerateContentConfiglendictr  joinmapstrloggerwarningget_max_remote_calls_afcinfor  get_function_mapr=  r9   rk   get_function_response_partsContentrX   rZ   extendlistappendshould_append_afc_history"automatic_function_calling_history)r  rU   rW   r   incompatible_tools_indexesparsed_configoriginal_tools_lengthrw   indices_strremaining_remote_calls_afcrD  r   ifunction_mapfunc_response_partsfunc_call_contentfunc_response_contents                    r!   generate_contentzModels.generate_contentb  s/   D 	77?  !;;FCM,,]-@-@A++
B  &&}5## $   "	FE77	8<<"%fll"3
fd#

7B'"%e*
	'	(,A	AiiC)C DE5 	
 ## $   ".!F!F" KK
01K0LAN ?A&,,.H	A
$q
(1fa'' ( h "22=Al!!$$Q'//$$Q'//55(DD
L !kk$QCy12 A% 	#q	(NO"--a088#mm# h'h/*11(;	Hd	#)*-.(//0AB(//0EFO %q
(R 	..}=  - 1 Or#   c             #   X  K   t        j                  |      }t        j                  |      }|r@|j                  r4t	        j
                  |j                        rt        j                  d      t        j                  |      r| j                  |||      E d{    y|rd}t        |t        j                        r"|j                  rEt        |j                        }n/t        |t              r|j                  dg       }|rt        |      }t        |      |k7  r5dj!                  t#        t$        |            }t&        j)                  d|       | j                  |||      E d{    yt        j*                  |      }	t&        j-                  d|	 d	       g }
d}d}d}|	dkD  rw|d
z  }| j                  |||      }t        j.                  |      }|d
k(  r|D ]  }|st        j0                  ||      }|  |j2                  r<|j2                  d   j4                  r#|j2                  d   j4                  j6                  s nt        j8                  ||      }|rt        j0                  ||      }|  n|D ]8  }t        j:                  |      r|
|_        t        j0                  ||      }| : |H|j2                  r<|j2                  d   j4                  r#|j2                  d   j4                  j6                  syt        j8                  ||      }|sy|syt&        j-                  d| d       |	d
z  }	|	dk(  rt&        j-                  d       ||j2                  |j2                  d   j4                  }t        j>                  d|      }tA        jB                  |      }|
s|
jE                  |       t        |tF              r$|"|jI                  |       |jI                  |       ||
jI                  |       |
jI                  |       |	dkD  rvyy7 7 w)a  Makes an API request to generate content using a model and yields the model's response in chunks.

    For the `model` parameter, supported formats for Vertex AI API include:
    - The Gemini model ID, for example: 'gemini-2.0-flash'
    - The full resource name starts with 'projects/', for example:
      'projects/my-project-id/locations/us-central1/publishers/google/models/gemini-2.0-flash'
    - The partial resource name with 'publishers/', for example:
      'publishers/google/models/gemini-2.0-flash' or
    - `/` separated publisher and model name, for example:
      'google/gemini-2.0-flash'

    For the `model` parameter, supported formats for Gemini API include:
    - The Gemini model ID, for example: 'gemini-2.0-flash'
    - The model name starts with 'models/', for example:
      'models/gemini-2.0-flash'
    - For tuned models, the model name starts with 'tunedModels/',
      for example:
      'tunedModels/1234567890123456789'

    Some models support multimodal input and output.

    Built-in MCP support is an experimental feature.

    Usage:

    .. code-block:: python

      from google.genai import types
      from google import genai

      client = genai.Client(
          vertexai=True, project='my-project-id', location='us-central1'
      )

      for chunk in client.models.generate_content_stream(
        model='gemini-2.0-flash',
        contents='''What is a good name for a flower shop that specializes in
          selling bouquets of dried flowers?'''
      ):
        print(chunk.text)
      # **Elegant & Classic:**
      # * The Dried Bloom
      # * Everlasting Florals
      # * Timeless Petals

      for chunk in client.models.generate_content_stream(
        model='gemini-2.0-flash',
        contents=[
          types.Part.from_text('What is shown in this image?'),
          types.Part.from_uri('gs://generativeai-downloads/images/scones.jpg',
          'image/jpeg')
        ]
      ):
        print(chunk.text)
      # The image shows a flat lay arrangement of freshly baked blueberry
      # scones.
    r#  r  Nr   rw   r$  z_Tools at indices [%s] are not compatible with automatic function calling. AFC will be disabled.r&  r'  r
   r(  r)  r*  r+  r,  )%r   r-  r.  rw   r   r/  r   r0  r1  r  r2  r   r3  r4  r5  r  r6  r7  r8  r9  r:  r;  r<  r=  append_chunk_contentsr=  r9   rk   r>  rC  rD  r?  rX   rZ   r@  rA  rB  )r  rU   rW   r   rE  rF  rG  rw   rH  rI  rD  chunkrL  rJ  r   rK  rM  rN  s                     r!   generate_content_streamzModels.generate_content_stream  s"    D 	77?  !;;FCM,,]-@-@A++
B  &&}5.. /    !	FE77	8<<"%fll"3
fd#

7B'"%e*
	'	(,A	AiiC)C DE-	

 .. /    !-!F!F" KK
01K0LAN ?A&E	A
$q
(1fa.. / h "22=Al	
a  	E#99(EJHK $$''*22''*2288"."J"J|# '%;;HeLhk!	(  	E33MB2 4 "77%H(+	 M####A&..##A&..44
*FF<
  kk$QCy12 A% 	#q	(NO 
	u//;!,,Q/77 %%!
 <<)1
,
3
3H
=h%*;*G
//+
,
///
0(
,
3
34E
F*112GHU %q
(I*s3   BP*P$CP**P'+C8P*$F<P*"P*'P*c                ,   | j                  |||      }d}g }|r|j                  s|S |j                  D ]E  }|j                  r&|j                  j                  dk(  r|j                  }5|j	                  |       G t        j                  ||      }|S )ap  Generates images based on a text description and configuration.

    Args:
      model (str): The model to use.
      prompt (str): A text description of the images to generate.
      config (GenerateImagesConfig): Configuration for generation.

    Usage:

    .. code-block:: python

      response = client.models.generate_images(
        model='imagen-3.0-generate-002',
        prompt='Man with a dog',
        config=types.GenerateImagesConfig(
            number_of_images= 1,
            include_rai_reason= True,
        )
      )
      response.generated_images[0].image.show()
      # Shows a man with a dog.
    r  NPositive Promptr   r]  r  r   r  rE  rB  r   r  	r  rU   r   r   api_responser]  r   generated_imager   s	            r!   generate_imageszModels.generate_images  s    : (( ) L
 )-%|<<'88 1

+
+//<< -<,M,M)01 ++)*KH Or#   c                ,    | j                  ||||      S )aL  Edits an image based on a text description and configuration.

    Args:
      model (str): The model to use.
      prompt (str): A text description of the edit to apply to the image.
        reference_images (list[Union[RawReferenceImage, MaskReferenceImage,
        ControlReferenceImage, StyleReferenceImage, SubjectReferenceImage]): The
        reference images for editing.
      config (EditImageConfig): Configuration for editing.

    Usage:

    .. code-block:: python

      from google.genai.types import RawReferenceImage, MaskReferenceImage

      raw_ref_image = RawReferenceImage(
        reference_id=1,
        reference_image=types.Image.from_file(IMAGE_FILE_PATH),
      )

      mask_ref_image = MaskReferenceImage(
        reference_id=2,
        config=types.MaskReferenceConfig(
            mask_mode='MASK_MODE_FOREGROUND',
            mask_dilation=0.06,
        ),
      )
      response = client.models.edit_image(
        model='imagen-3.0-capability-001',
        prompt='man with dog',
        reference_images=[raw_ref_image, mask_ref_image],
        config=types.EditImageConfig(
            edit_mode= "EDIT_MODE_INPAINT_INSERTION",
            number_of_images= 1,
            include_rai_reason= True,
        )
      )
      response.generated_images[0].image.show()
      # Shows a man with a dog instead of a cat.
    r  r  r  rU   r   r   r   s        r!   
edit_imagezModels.edit_image  s)    b )	   r#   c                h   t        j                  ||||       |xs i }t        |t         j                        r|j	                         }nt        |      }t        j                  |j                  dd      |j                  dd      |j                  dd      |j                  dd      |j                  dd      |j                  dd      |j                  d	d      |j                  d
d      |j                  dd      |j                  dd      
      }d|d<   d|d<   | j                  ||||      S )a  Makes an API request to upscale a provided image.

    Args:
      model (str): The model to use.
      image (Image): The input image for upscaling.
      upscale_factor (str): The factor to upscale the image (x2 or x4).
      config (UpscaleImageConfig): Configuration for upscaling.

    Usage:

    .. code-block:: python

      from google.genai.types import Image

      IMAGE_FILE_PATH="my-image.png"
      response=client.models.upscale_image(
          model='imagen-3.0-generate-001',
          image=types.Image.from_file(IMAGE_FILE_PATH),
          upscale_factor='x2',
      )
      response.generated_images[0].image.show()
      # Opens my-image.png which is upscaled by a factor of 2.
    r  r  Nr   r   r   r   r   r   r  r  r   
r  r   r   r   r   r   r   r  r  r   upscalerO  r
   r   	r   UpscaleImageParametersr2  UpscaleImageConfigr  r5  _UpscaleImageAPIConfigDictr  r  r  rU   r  r  r   
config_dct
api_configs          r!   upscale_imagezModels.upscale_image0  s8   B 
  %	 \rF&%223$$&j<j11^^ND9!~~&6=&NN+@$G$..)<dC%>>*>E#(:DA#->>($$
 'NN+@$G",..'#
 ~~h-J$ #Jv%&J!"%	   r#   c          
      D   |s|s|r|rt        d      i }| j                  j                  s|rt        |t        j
                        r|j                         }nt        |      }|j                  d      r|j                  d      rt	        j
                  |j                  d      |j                  d            }nL| j                  j                  s5|r2t        |t        j                        r#|j                         }|j                  di       }nht        |      }t        |j                  d      t        j
                        r4|j                  dt	        j
                               }	|	j                         }|r|j                  d      rz|j                  d      rit	        j                  |j                  d      |j                  d      t	        j
                  |j                  d      |j                  d            	      }| j                  ||||||
      S )  Generates videos based on an input (text, image, or video) and configuration.

    The following use cases are supported:
    1. Text to video generation.
    2a. Image to video generation (additional text prompt is optional).
    2b. Image to video generation with frame interpolation (specify last_frame
    in config).
    3. Video extension (additional text prompt is optional)

    Args:
      model: The model to use.
      prompt: The text prompt for generating the videos. Optional for image to
        video and video extension use cases. This argument is deprecated, please
        use source instead.
      image: The input image for generating the videos. Optional if prompt is
        provided. This argument is deprecated, please use source instead.
      video: The input video for video extension use cases. Optional if prompt
        or image is provided. This argument is deprecated, please use source
        instead.
      source: The input source for generating the videos (prompt, image, and/or
        video)
      config: Configuration for generation.

    Usage:

      ```
      operation = client.models.generate_videos(
          model="veo-2.0-generate-001",
          source=types.GenerateVideosSource(
              prompt="A neon hologram of a cat driving at top speed",
          ),
      )
      while not operation.done:
          time.sleep(10)
          operation = client.operations.get(operation)

      operation.result.generated_videos[0].video.uri
      ```
    MSource and prompt/image/video are mutually exclusive. Please only use source.r  r  r0   r  r0   r  r   r  r   r  r  r  r   r  r  r2  r   Videor  r5  r  GenerateVideosSourcer!  
r  rU   r   r  r  r  r   	video_dct
source_dct	video_objs
             r!   generate_videoszModels.generate_videosz  s   b 	%5f' 
 !#I$$	E5;;	'$$&	K		u	)--">e$	k0J
 &&6	FE66	7&&(
NN7B/	&\
jnnW-u{{;#->>'5;;=#I)**,)	y}}U+	m0L++>>(+..)++MM%(#--4
    !  r#   c                |   t        j                  |      j                  xs t        j                         }|j                  d|_        | j
                  j                  r6|j                         }|j                  s|j                  }|r|dz   nd|_        t        d| j                  | j                  |      |      S )a  Makes an API request to list the available models.

    If `query_base` is set to True in the config or not set (default), the
    API will return all available base models. If set to False, it will return
    all tuned models.

    Args:
      config (ListModelsConfigOrDict): Configuration for retrieving models.

    Usage:

    .. code-block:: python

      response=client.models.list(config={'page_size': 5})
      print(response.page)
      # [Model(name='projects/./locations/./models/123', display_name='my_model'

      response=client.models.list(config={'page_size': 5, 'query_base': True})
      print(response.page)
      # [Model(name='publishers/google/models/gemini-2.0-flash-exp' ...
    r  T&filter=labels.tune-type:*labels.tune-type:*r  )r   r  r   ListModelsConfigr  r  r  copyr  r   r  r  r   filter_values      r!   rA  zModels.list  s    8 	##6299 	$!!#   f  {{}f}}  77% 	
 



&
!	 r#   )C__name__
__module____qualname__r8  r   r   ContentListUnionContentListUnionDictr   GenerateContentConfigOrDictr  r  r   r  EmbedContentConfigOrDictr  r  GenerateImagesConfigOrDictr  r  rA  _ReferenceImageAPIOrDictEditImageConfigOrDictr  r  ImageOrDict_UpscaleImageAPIConfigOrDictr  r  RecontextImageSourceOrDictRecontextImageConfigOrDictr  r  SegmentImageSourceOrDictSegmentImageConfigOrDictr  r  GetModelConfigOrDictr  r  ListModelsConfigOrDictr  r  UpdateModelConfigOrDictr
  DeleteModelConfigOrDictr  r  CountTokensConfigOrDictr  r  ComputeTokensConfigOrDictr  r  VideoOrDictGenerateVideosSourceOrDictGenerateVideosConfigOrDictr  r!  rO  rS  r[  r_  UpscaleImageConfigOrDictrj  rw  r    r#   r!   r  r    sd    =AK K e,,e.H.HHI	K
 u889K $$Kd =AP P e,,e.H.HHI	P
 u889P --.Pn :>[ [ e,,e.H.HHI	[
 u556[ !![D <@F F 	F
 u778F ##F\ 7;> > 	>
 U;;<> u223> >L >B> > 	>
 > u99:> !!>J <@h h ..	h
 u778h ##h^ :>Q Q ,,	Q
 u556Q !!Qh KO;;#+E,F,F#G;{{;| AEA < <=AAN 9=	@ @ u445	@
 {{@L 9=	B B u445	B
   BR 9=Y Y e,,e.H.HHI	Y
 u445Y   Y@ ;?Q Q e,,e.H.HHI	Q
 u667Q ""Qn #+/+/;?;?J J sm	J
 e''(J e''(J u778J u778J $$Jb =A_ _ **	_
 u889_ $$_L =A|I |I **	|I
 u889|I --.|IF <@5 5 	5
 u7785 ##5z 7;6 6 	6
 U;;<6 u2236 6| :>H H 	H
 H u556H !!H\ #+/+/;?;?[ [ sm	[
 e''([ e''([ u778[ u778[ $$[@ 8<0 u3340 U[[	0r#   r  c                   R	   e Zd Zdddedeej                  ej                  f   deej                     dej                  fdZdddedeej                  ej                  f   deej                     deeej                        fdZdddedeej                  ej                  f   deej                     dej                   fd	Zddded
edeej$                     dej&                  fdZddded
edeej,                     deej.                     dej0                  f
dZdddedej4                  dedeej6                     dej8                  f
dZdddedej<                  deej>                     dej@                  fdZ!dddedejD                  deejF                     dejH                  fdZ%dddedeejL                     dejN                  fdZ(dddeejR                     dejT                  fdZ+dddedeejX                     dejN                  fdZ-dddedeej\                     dej^                  fdZ0dddedeej                  ej                  f   deejb                     dejd                  fdZ3dddedeej                  ej                  f   deejh                     dejj                  fdZ6ddddddded
ee   deej4                     deejn                     deejp                     deejr                     dejt                  fdZ;dddedeej                  ej                  f   deej                     dej                  fdZ<dddedeej                  ej                  f   deej                     deej                     fdZ=ddded
edeej,                     deej.                     dej0                  f
dZ>dddeejR                     de?ejN                     fd Zddded
edeej$                     dej&                  fd!Z@dddedej4                  dedeej                     dej8                  f
d"ZBddddddded
ee   deej4                     deejn                     deejp                     deejr                     dejt                  fd#ZCy)$AsyncModelsNr  rU   rW   r   r   c                $  K   t        j                  |||      }| j                  j                  r>t	        | j                  |      }|j                  d      }|rdj                  |      }n@d}n=t        | j                  |      }|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                  rt-        |      }| j                  j                  st/        |      }t         j"                  j1                  ||j3                         
      }t        j4                  |
j6                        |_        | j                  j%                  |       |S 7 'wr  )r   r  r  r  r;  r  r  r9  r	   r  r   r  r   r  r  async_requestr  r  r  r  r  r  rJ  rF  r  r  r  r  r_   r  s                r!   r  zAsyncModels._generate_content  s]     66O   9


Ol &))&1	(334DE(8


Ol &))&1	(334DE(##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL%%33lL H g-t 22XNl
''5&mmBHMM1JM  :=Im$$9-Hm00??'A'A'C @ L &+%7%7  &L" 	%%l35s   E$J&J'D'Jc                4   
K   t        j                  |||      
 j                  j                  r>t	         j                  
      }|j                  d      }|rdj                  |      }n@d}n=t         j                  
      }|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                  |      }|t        |dd       rt!        d       j                  j#                  d	|||       d {   
 fd
}	 |	       S 7 w)Nr  rV   r  r  r  r   r  r  r  c                   K   2 3 d {   } | j                   si nt        j                  | j                         }j                  j                  rt        |      }j                  j                  st        |      }t        j                  j                  |j                               }t        j                  | j                        |_        j                  j                  |       | 7 6 y w)Nr  r  )r  r  r  r  r  rJ  rF  r   r  r  r  r  r  r_   r  )r   r  r  r  response_streamr  s      r!   async_generatorz=AsyncModels._generate_content_stream.<locals>.async_generator  s     +  "*--TZZ5N$$>}M-((=mL-44CC"?+E+E+G D 
 */););$$*
& 	)),7#Os&   C7C5C3C5C%C73C55C7)r   r  r  r  r;  r  r  r9  r	   r  r   r  r   r  r  r  r   async_request_streamed)r  rU   rW   r   r  r  r  r  r  r  r  r  s   `         @@r!   r  z$AsyncModels._generate_content_streamY  s     66O   9


Ol &))&1	6AA
 78


Ol &))&1	6AA
 7##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DLg-t  
 !,,CClL O( 1s   E>FFFc                  K   t        j                  |||      }| j                  j                  r>t	        | j                  |      }|j                  d      }|rdj                  |      }n@d}n=t        | j                  |      }|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                  rt'        |      }| j                  j                  st)        |      }t         j*                  j-                  ||j/                         
      }t        j0                  |
j2                        |_        | j                  j7                  |       |S 7 w)aK  Calculates embeddings for the given contents. Only text is supported.

    Args:
      model (str): The model to use.
      contents (list[Content]): The contents to embed.
      config (EmbedContentConfig): Optional configuration for embeddings.

    Usage:

    .. code-block:: python

      embeddings = await client.aio.models.embed_content(
          model= 'text-embedding-004',
          contents=[
              'What is your name?',
              'What is your favorite color?',
          ],
          config={
              'output_dimensionality': 64
          },
      )
    r  rV   r  r  r  r  r   Nr  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_   r  r  s                r!   r  zAsyncModels.embed_content  s    < 33O   6


Ol &))&1	 ++,<= 5


Ol &))&1	+667GH+##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL%%33lL H 'mmBHMM1JM  7Fm$$6}Em--<<'A'A'C = L &+%7%7  &L" 	%%l3'   E$I&I'C%Ir   c                  K   t        j                  |||      }| j                  j                  r>t	        | j                  |      }|j                  d      }|rdj                  |      }n@d}n=t        | j                  |      }|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                  rt'        |      }| j                  j                  st)        |      }t         j*                  j-                  ||j/                         	      }t        j0                  |
j2                  
      |_        | j                  j7                  |       |S 7 w)z4Private method for generating images asynchronously.r  rV   r  r  r  r   Nr  r  r  )r   r  r  r  rY  r  r  rW  r	   r  r   r  r   r  r  r  r  r  r  rd  r`  r  r  r  r  r  r_   r  r  s                r!   r  zAsyncModels._generate_images  s     55O   8


Ol &))&1	 ++,<= 7


Ol &))&1	 ++,<= ##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL%%33lL H 'mmBHMM1JM  9-Hm$$8Gm//>>'A'A'C ? L &+%7%7  &L" 	%%l3'r  r   c                  K   t        j                  ||||      }| j                  j                  st	        d      t        | j                  |      }|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                  rt'        |      }t         j(                  j+                  ||j-                         
      }t        j.                  |j0                        |_        | j                  j5                  |       |S 7 íw)z3Private method for editing an image asynchronously.r  r  rV   r  r  r  r   Nr  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  r  s                 r!   r  zAsyncModels._edit_imageU  s     00)	O $$OPP3


Ol &))&1	 ++,<= ##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL%%33lL H 'mmBHMM1JM  4]Cm**99'A'A'C : L &+%7%7  &L" 	%%l3!   D2G:4G85CG:r  r  c                  K   t        j                  ||||      }| j                  j                  st	        d      t        | j                  |      }|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                  rt'        |      }t         j(                  j+                  ||j-                         
      }t        j.                  |j0                        |_        | j                  j5                  |       |S 7 íw)z5Private method for upscaling an image asynchronously.r  r  rV   r  r  r  r   Nr  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  r  s                 r!   r  zAsyncModels._upscale_image  s     66%	O $$OPP9


Ol &))&1	 ++,<= ##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL%%33lL H 'mmBHMM1JM  7Fm--<<'A'A'C = L &+%7%7  &L" 	%%l3!r  r  c                  K   t        j                  |||      }| j                  j                  st	        d      t        | j                  |      }|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                  rt'        |      }t         j(                  j+                  ||j-                         
      }| j                  j/                  |       |S 7 w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  s                r!   r  zAsyncModels.recontext_image  s    n 55O $$OPP8


Ol &))&1	 ++,<= ##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL%%33lL H 'mmBHMM1JM  9-Hm//>>'A'A'C ? L 	%%l3   D1G3G4BGc                  K   t        j                  |||      }| j                  j                  st	        d      t        | j                  |      }|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                  rt'        |      }t         j(                  j+                  ||j-                         
      }| j                  j/                  |       |S 7 w)a  Segments an image, creating a mask of a specified area.

    Args:
      model (str): The model to use.
      source (SegmentImageSource): An object containing the source inputs
        (prompt, image, scribble_image) for image segmentation. The prompt is
        required for prompt mode and semantic mode, disallowed for other modes.
        scribble_image is required for the interactive mode, disallowed for
        other modes.
      config (SegmentImageConfig): Configuration for segmentation.

    Usage:

      ```
      response = client.models.segment_image(
          model="image-segmentation-001",
          source=types.SegmentImageSource(
              image=types.Image.from_file(IMAGE_FILE_PATH),
          ),
          config=types.SegmentImageConfig(
              mode=types.SegmentMode.foreground,
          ),
      )

      mask_image = response.generated_masks[0].mask
      ```
    r  r  rV   r  r  r  r   Nr  r  )r   r  r  r  r   rZ  r  r  r	   r  r   r  r   r  r  r  r  r  r  r]  r  r  r  r  r  s                r!   r  zAsyncModels.segment_image?  s    F 33O $$OPP6


Ol &))&1	 ++,<= ##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL%%33lL H 'mmBHMM1JM  7Fm--<<'A'A'C = L 	%%l3r  c                R  K   t        j                  ||      }| j                  j                  r>t	        | j                  |      }|j                  d      }|rdj                  |      }n@d}n=t        | j                  |      }|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                  rt'        |
      }
| j                  j                  st)        |
      }
t         j*                  j-                  |
|j/                               }| j                  j1                  |       |S 7 w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  s               r!   r  zAsyncModels.get  s     //O   2


Ol &))&1	""#341


Ol &))&1	""#34##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL%%33t\< H 'mmBHMM1JM  (7m$$'6m;;--'A'A'C . L 	%%l3#   E#H'%H%&C H'c                  K   t        j                  |      }| j                  j                  r>t	        | j                  |      }|j                  d      }|rdj                  |      }n@d}n=t        | j                  |      }|j                  d      }|rdj                  |      }nd}|j                  d      }|r=|j                  d      r,|j                  d      }| d| }|r$|dt        |       z  }n|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                  rt'        |
      }
| j                  j                  st)        |
      }
t         j*                  j-                  |
|j/                               }t        j0                  |	j2                        |_        | j                  j7                  |       |S 7 w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  r  s               r!   r  zAsyncModels._list  sb     11O   4


Ol &))&1	(()9:3


Ol &))&1	(()9:##H-L((2'++H5vX012d	!Il+,--	vQy./0dXt$04L*""//;$++88l**<8L66|DL%%33t\< H 'mmBHMM1JM  5mDm$$4]Cm++::'A'A'C ; L &+%7%7  &L" 	%%l3's   F!J
#J$C%J
c                R  K   t        j                  ||      }| j                  j                  r>t	        | j                  |      }|j                  d      }|rdj                  |      }n@d}n=t        | j                  |      }|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                  rt'        |
      }
| j                  j                  st)        |
      }
t         j*                  j-                  |
|j/                         	      }| j                  j1                  |       |S 7 w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  s               r!   r
  zAsyncModels.update  s     22O   5


Ol &))&1	##$454


Ol &))&1	""#34##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL%%33|\ H 'mmBHMM1JM  (7m$$'6m;;--'A'A'C . L 	%%l3#r  c                  K   t        j                  ||      }| j                  j                  r>t	        | j                  |      }|j                  d      }|rdj                  |      }n@d}n=t        | j                  |      }|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                  rt'        |
      }
| j                  j                  st)        |
      }
t         j*                  j-                  |
|j/                               }t        j0                  |	j2                  	      |_        | j                  j7                  |       |S 7 w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  r  s               r!   r  zAsyncModels.delete[  s     22O   5


Ol &))&1	""#344


Ol &))&1	""#34##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL%%33$l H 'mmBHMM1JM  6}Em$$5mDm,,;;'A'A'C < L &+%7%7  &L" 	%%l3's   E#I%I
&C%Ic                  K   t        j                  |||      }| j                  j                  r>t	        | j                  |      }|j                  d      }|rdj                  |      }n@d}n=t        | j                  |      }|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                  rt'        |      }| j                  j                  st)        |      }t         j*                  j-                  ||j/                         	      }t        j0                  |
j2                  
      |_        | j                  j7                  |       |S 7 w)aB  Counts the number of tokens in the given content.

    Multimodal input is supported for Gemini models.

    Args:
      model (str): The model to use for counting tokens.
      contents (list[types.Content]): The content to count tokens for.
      config (CountTokensConfig): The configuration for counting tokens.

    Usage:

    .. code-block:: python

      response = await client.aio.models.count_tokens(
          model='gemini-2.0-flash',
          contents='What is your name?',
      )
      print(response)
      # total_tokens=5 cached_content_token_count=None
    r  rV   r  r  r  r   Nr  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_   r  r  s                r!   r  zAsyncModels.count_tokens  s    8 22O   5


Ol &))&1	$//0@A$4


Ol &))&1	$//0@A$##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL%%33lL H 'mmBHMM1JM  6}Em$$5mDm,,;;'A'A'C < L &+%7%7  &L" 	%%l3'r  c                  K   t        j                  |||      }| j                  j                  st	        d      t        | j                  |      }|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                  rt'        |      }t         j(                  j+                  ||j-                         
      }t        j.                  |
j0                        |_        | j                  j5                  |       |S 7 íw)aF  Given a list of contents, returns a corresponding TokensInfo containing the

    list of tokens and list of token ids.


    Args:
      model (str): The model to use.
      contents (list[shared.Content]): The content to compute tokens for.

    Usage:

    .. code-block:: python

      response = await client.aio.models.compute_tokens(
          model='gemini-2.0-flash',
          contents='What is your name?',
      )
      print(response)
      # tokens_info=[TokensInfo(role='user', token_ids=['1841', ...],
      # tokens=[b'What', b' is', b' your', b' name', b'?'])]
    r  r  rV   r  r  r  r   Nr  r  r  )r   r  r  r  r   r\   r  r  r	   r  r   r  r   r  r  r  r  r  r  rb   r  r  r  r  r  r_   r  r  s                r!   r  zAsyncModels.compute_tokens  s    : 44O $$OPP7


Ol &))&1	&112BC&##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL%%33lL H 'mmBHMM1JM  8Gm..=='A'A'C > L &+%7%7  &L" 	%%l3!s   D1G93G74CG9r  r  c                Z  K   t        j                  ||||||      }| j                  j                  r>t	        | j                  |      }|j                  d      }	|	rdj                  |	      }
n@d}
n=t        | j                  |      }|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                  rt'        |      }| j                  j                  st)        |      }t         j*                  j-                  ||j/                         	      }| j                  j1                  |       |S 7 w)
z4Private method for generating videos asynchronously.r  rV   r  r  r  r   Nr  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   s                   r!   r!  zAsyncModels._generate_videosL  s     55O   8


Ol &))&1	+667GH+7


Ol &))&1	+667GH+##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL%%33lL H 'mmBHMM1JM  :=Im$$9-Hm00??'A'A'C @ L 	%%l3#s   E'H+)H)*C H+c                R  K   t        j                  |      }t        j                  |       d{   \  }}t        j                  |      r| j	                  |||       d{   S |rd}t        |t        j                        r"|j                  rEt        |j                        }n/t        |t              r|j                  dg       }|rt        |      }t        |      |k7  r5dj                  t        t        |            }	t        j!                  d|	       | j	                  |||       d{   S t        j"                  |      }
t        j%                  d|
 d       g }t        j&                         }|
dkD  rx| j	                  |||       d{   }|
d	z  }
|
dk(  rt        j%                  d
       t        j(                  ||d      }|sn!|sn|j*                  r<|j*                  d   j,                  r#|j*                  d   j,                  j.                  snt        j0                  ||       d{   }|sn|j*                  d   j,                  }t        j2                  d|      }t5        j6                  |      }|s|j9                  |       t        |t:              r"|j=                  |       |j=                  |       |j=                  |       |j=                  |       |
dkD  rxt        j>                  |      r	|||_         |S 7 7 7 7 7 w)ad  Makes an API request to generate content using a model.

    Some models support multimodal input and output.

    Built-in MCP support is an experimental feature.

    Usage:

    .. code-block:: python

      from google.genai import types
      from google import genai

      client = genai.Client(
          vertexai=True, project='my-project-id', location='us-central1'
      )

      response = await client.aio.models.generate_content(
          model='gemini-2.0-flash',
          contents='User input: I like bagels. Answer:',
          config=types.GenerateContentConfig(
              system_instruction=
                [
                  'You are a helpful language translator.',
                  'Your mission is to translate text in English to French.'
                ]
          ),
      )
      print(response.text)
      # J'aime les bagels.
    Nr  r   rw   r$  r%  r&  r'  r
   r*  Tis_caller_method_asyncr+  r,  )!r   r-  parse_config_for_mcp_sessionsr1  r  r2  r   r3  rw   r4  r5  r  r6  r7  r8  r9  r:  r;  r<  r  r=  r=  r9   rk   !get_function_response_parts_asyncr?  rX   rZ   r@  rA  rB  rC  rD  )r  rU   rW   r   rE  rF  mcp_to_genai_tool_adaptersrG  rw   rH  rI  rD  r   rK  rL  rM  rN  s                    r!   rO  zAsyncModels.generate_content  s#    P 	77?  88@@ .M- &&}5)) *    "	FE77	8<<"%fll"3
fd#

7B'"%e*
	'	(,A	AiiC)C DE5 	
 )) *    ".!F!F" KK
01K0LAN ?A&,,.H
$q
(-- .  h !A% 	#q	(NO!22
3Dl !!$$Q'//$$Q'//55>>  
 !"--a088#mm# h'h/*11(;	Hd	#)*-.(//0AB(//0EFQ %q
(V 	..}=  - 1 Oi 	A**sa   .L'L3L'$L%CL'2L3A%L'L"B%L'>L%?B8L'9!L'L'L'"L'%L'c                   K   t        j                  |      }t        j                  |       d{   \  }t        j                  |      r+ j	                  |||       d{   fd} ||||      S |rd}t        |t        j                        r"|j                  rEt        |j                        }n/t        |t              r|j                  dg       }|rt        |      }t        |      |k7  r5dj                  t        t        |            }	t        j!                  d|	        j	                  |||       d{   fd} ||||      S  fd	}
 |
|||      S 7 57 7 )w)
a2  Makes an API request to generate content using a model and yields the model's response in chunks.

    For the `model` parameter, supported formats for Vertex AI API include:
    - The Gemini model ID, for example: 'gemini-2.0-flash'
    - The full resource name starts with 'projects/', for example:
      'projects/my-project-id/locations/us-central1/publishers/google/models/gemini-2.0-flash'
    - The partial resource name with 'publishers/', for example:
      'publishers/google/models/gemini-2.0-flash' or
    - `/` separated publisher and model name, for example:
      'google/gemini-2.0-flash'

    For the `model` parameter, supported formats for Gemini API include:
    - The Gemini model ID, for example: 'gemini-2.0-flash'
    - The model name starts with 'models/', for example:
      'models/gemini-2.0-flash'
    - For tuned models, the model name starts with 'tunedModels/',
      for example:
      'tunedModels/1234567890123456789'

    Some models support multimodal input and output.

    Built-in MCP support is an experimental feature.

    Usage:

    .. code-block:: python

      from google.genai import types
      from google import genai

      client = genai.Client(
          vertexai=True, project='my-project-id', location='us-central1'
      )

      async for chunk in await client.aio.models.generate_content_stream(
        model='gemini-2.0-flash',
        contents='''What is a good name for a flower shop that specializes in
          selling bouquets of dried flowers?'''
      ):
        print(chunk.text)
      # **Elegant & Classic:**
      # * The Dried Bloom
      # * Everlasting Florals
      # * Timeless Petals

      async for chunk in await client.aio.models.generate_content_stream(
        model='gemini-2.0-flash',
        contents=[
          types.Part.from_text('What is shown in this image?'),
          types.Part.from_uri('gs://generativeai-downloads/images/scones.jpg',
          'image/jpeg')
        ]
      ):
        print(chunk.text)
      # The image shows a flat lay arrangement of freshly baked blueberry
      # scones.
    Nr  c                6   K   2 3 d {   }| 7 
6 y wNr  rU   rW   r   rR  r   s       r!   base_async_generatorzAAsyncModels.generate_content_stream.<locals>.base_async_generatorg  #     # 	 	%+	8   r   rw   r$  r%  c                6   K   2 3 d {   }| 7 
6 y wr  r  r  s       r!   r  zAAsyncModels.generate_content_stream.<locals>.base_async_generator  r  r  c                  K   t        j                  |      }t        j                  d| d       g }d }d }d}|dkD  r5|dz  }j	                  | ||       d {   }|dkD  rt        j                  d| d       |dz  }|dkD  r|dk(  rt        j                  d       t        j
                  |d	
      }	|dk(  r|2 3 d {   }|	st        j                  ||      }| '|j                  r<|j                  d   j                  r#|j                  d   j                  j                  s nt        j                  ||	       d {   }|rt        j                  ||      }| |2 3 d {   }t        j                  |      r||_        t        j                  ||      }| A|	sy |sy ||j                  d   j                  }
t        j                  d|      }t        j                   |      }|s|j#                  |       t%        |t&              r$|
"|j)                  |
       |j)                  |       |
|j)                  |
       |j)                  |       |dkD  r4y y 7 7 7 06 7 6 |H|j                  r<|j                  d   j                  r#|j                  d   j                  j                  sy t        j                  ||	       d {  7  }>w)Nr&  r'  r   r
   r  r(  r)  r*  Tr  r+  r,  )r   r;  r9  r<  r  r=  rQ  r=  r9   rk   r  rC  rD  r   r?  rX   rZ   r@  r2  rA  rB  )rU   rW   r   rI  rD  rL  rR  rJ  r   rK  rM  rN  r  r  s               r!   r  z<AsyncModels.generate_content_stream.<locals>.async_generator  s
    #/#H#H#P kk23M2Na
P AC( e
a&*	Q66(6 7 
 
 q5
++(95
6"a'"q5/14
++H $44.t
 6 &  E%;;HeLhk &&))!,44))!,44::$FF\  "
 )'==hN &  E55f=4 6 $99(EJHK 
"
=
!,,Q/77 %%!
 <<)1
,
3
3H
=h%*;*G
//+
,
///
0(
,
3
34E
F*112GHm '*
( &,X m%%%%a(00%%a(0066 BB   s   AK1I6A%K1I?I9I?
BK1I<K1K12J6J7J:C8K14K19I?<K1?K1JA%K1)K,*K1)r   r-  r  r1  r  r2  r   r3  rw   r4  r5  r  r6  r7  r8  r9  r:  )r  rU   rW   r   rE  rF  r  rG  rw   rH  r  r  r   s   `          @@r!   rS  z#AsyncModels.generate_content_stream  sw    F 	77? 
 88@@ .M- &&}544 5  h "%=AA!	FE77	8<<"%fll"3
fd#

7B'"%e*
	'	(,A	AiiC)C DE5 	
 44 5  h "%=AA_IB 5(M::U 	A8s4   .E0E(3E0'E+(CE0E.$E0+E0.E0c                H   K   | j                  ||||       d{   S 7 w)aV  Edits an image based on a text description and configuration.

    Args:
      model (str): The model to use.
      prompt (str): A text description of the edit to apply to the image.
        reference_images (list[Union[RawReferenceImage, MaskReferenceImage,
        ControlReferenceImage, StyleReferenceImage, SubjectReferenceImage]): The
        reference images for editing.
      config (EditImageConfig): Configuration for editing.

    Usage:

    .. code-block:: python

      from google.genai.types import RawReferenceImage, MaskReferenceImage

      raw_ref_image = RawReferenceImage(
        reference_id=1,
        reference_image=types.Image.from_file(IMAGE_FILE_PATH),
      )

      mask_ref_image = MaskReferenceImage(
        reference_id=2,
        config=types.MaskReferenceConfig(
            mask_mode='MASK_MODE_FOREGROUND',
            mask_dilation=0.06,
        ),
      )
      response = await client.aio.models.edit_image(
        model='imagen-3.0-capability-001',
        prompt='man with dog',
        reference_images=[raw_ref_image, mask_ref_image],
        config=types.EditImageConfig(
            edit_mode= "EDIT_MODE_INPAINT_INSERTION",
            number_of_images= 1,
            include_rai_reason= True,
        )
      )
      response.generated_images[0].image.show()
      # Shows a man with a dog instead of a cat.
    r  Nr]  r^  s        r!   r_  zAsyncModels.edit_image  s7     b !!)	 "    s   " "c                  K   t        j                  |      j                  xs t        j                         }|j                  d|_        | j
                  j                  r6|j                         }|j                  s|j                  }|r|dz   nd|_        t        d| j                  | j                  |       d{   |      S 7 	w)a  Makes an API request to list the available models.

    If `query_base` is set to True in the config or not set (default), the
    API will return all available base models. If set to False, it will return
    all tuned models.

    Args:
      config (ListModelsConfigOrDict): Configuration for retrieving models.

    Usage:

    .. code-block:: python

      response = await client.aio.models.list(config={'page_size': 5})
      print(response.page)
      # [Model(name='projects/./locations/./models/123', display_name='my_model'

      response = await client.aio.models.list(
          config={'page_size': 5, 'query_base': True}
        )
      print(response.page)
      # [Model(name='publishers/google/models/gemini-2.0-flash-exp' ...
    r  NTry  rz  r  )r   r  r   r{  r  r  r  r|  r  r   r  r}  s      r!   rA  zAsyncModels.list$  s     < 	##6299 	$!!#   f  {{}f}}  77% 	
 

jjj''	  	(s   B<C
>C?
C
c                H  K   | j                  |||       d{   }d}g }|r|j                  s|S |j                  D ]E  }|j                  r&|j                  j                  dk(  r|j                  }5|j	                  |       G t        j                  ||      }|S 7 w)az  Generates images based on a text description and configuration.

    Args:
      model (str): The model to use.
      prompt (str): A text description of the images to generate.
      config (GenerateImagesConfig): Configuration for generation.

    Usage:

    .. code-block:: python

      response = await client.aio.models.generate_images(
        model='imagen-3.0-generate-002',
        prompt='Man with a dog',
        config=types.GenerateImagesConfig(
            number_of_images= 1,
            include_rai_reason= True,
        )
      )
      response.generated_images[0].image.show()
      # Shows a man with a dog.
    r  NrU  rV  rW  rX  s	            r!   r[  zAsyncModels.generate_imagesX  s     : .. /  L
 )-%|<<'88 1

+
+//<< -<,M,M)01 ++)*KH O1s   B"B BB"c                  K   t        j                  ||||       |xs i }t        |t         j                        r|j	                         }nt        |      }t        j                  |j                  dd      |j                  dd      |j                  dd      |j                  dd      |j                  dd      |j                  dd      |j                  d	d      |j                  d
d      |j                  dd      |j                  dd      
      }d|d<   d|d<   | j                  ||||       d{   S 7 w)a  Makes an API request to upscale a provided image.

    Args:
      model (str): The model to use.
      image (Image): The input image for upscaling.
      upscale_factor (str): The factor to upscale the image (x2 or x4).
      config (UpscaleImageConfig): Configuration for upscaling.

    Usage:

    .. code-block:: python

      from google.genai.types import Image

      IMAGE_FILE_PATH="my-image.png"
      response = await client.aio.models.upscale_image(
          model='imagen-3.0-generate-001',
          image=types.Image.from_file(IMAGE_FILE_PATH),
          upscale_factor='x2',
      )
      response.generated_images[0].image.show()
      # Opens my-image.png which is upscaled by a factor of 2.
    r  r  Nr   r   r   r   r   r   r  r  r   ra  rb  rO  r
   r   rc  rg  s          r!   rj  zAsyncModels.upscale_image  sF    B 
  %	 \rF&%223$$&j<j11^^ND9!~~&6=&NN+@$G$..)<dC%>>*>E#(:DA#->>($$
 'NN+@$G",..'#
 ~~h-J$ #Jv%&J!"$$%	 %    s   D7E 9D>:E c          
      `  K   |s|s|r|rt        d      i }| j                  j                  s|rt        |t        j
                        r|j                         }nt        |      }|j                  d      r|j                  d      rt	        j
                  |j                  d      |j                  d            }nL| j                  j                  s5|r2t        |t        j                        r#|j                         }|j                  di       }nht        |      }t        |j                  d      t        j
                        r4|j                  dt	        j
                               }	|	j                         }|r|j                  d      rz|j                  d      rit	        j                  |j                  d      |j                  d      t	        j
                  |j                  d      |j                  d            	      }| j                  ||||||
       d{   S 7 w)rl  rm  r  r  r0   rn  r  r   r  ro  r  Nrp  rs  s
             r!   rw  zAsyncModels.generate_videos  s    b 	%5f' 
 !#I$$	E5;;	'$$&	K		u	)--">e$	k0J
 &&6	FE66	7&&(
NN7B/	&\
jnnW-u{{;#->>'5;;=#I)**,)	y}}U+	m0L++>>(+..)++MM%(#--4
 && '    s   H%H.'H,(H.)Dr  r  r  r8  r   r   r  r  r   r  r  r  r   r   r  r  r  r  r  r  r  rA  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  r  r  r  r  r  r  r  r  r!  rO  rS  r_  r   r[  r  rj  rw  r  r#   r!   r  r  
  s    =AK K e,,e.H.HHI	K
 u889K $$Kd =AU U e,,e.H.HHI	U
 u889U u<<=>Ux :>[ [ e,,e.H.HHI	[
 u556[ !![D <@F F 	F
 u778F ##F\ 7;> > 	>
 U;;<> u223> >L >B> > 	>
 > u99:> !!>J <@h h ..	h
 u778h ##h^ :>T T ,,	T
 u556T !!Tn KO==#+E,F,F#G={{=@ AEC < <=CCR 9=	@ @ u445	@
 {{@L 9=	B B u445	B
   BR 9=Y Y e,,e.H.HHI	Y
 u445Y   Y@ ;?P P e,,e.H.HHI	P
 u667P ""Pl #+/+/;?;?J J sm	J
 e''(J e''(J u778J u778J $$Jb =A  e,,e.H.HHI	
 u889 $$L =AQ; Q; e,,e.H.HHI	Q;
 u889Q; U223Q;r 7;6 6 	6
 U;;<6 u2236 6v 8<2 u3342 %++	2r <@5 5 	5
 u7785 ##5z :>H H 	H
 H u556H !!H\ #+/+/;?;?[ [ sm	[
 e''([ e''([ u778[ u778[ $$[r#   r  r  )r  loggingtypingr   r   r   r   r   r   urllib.parser	    r   r   r  r   r   r   r   rX   r   r   r  r   r   r3   r   r4   pagersr   r   	getLoggerr9  r"   r&   r)   r5  r8  objectr7   rN   rK   r\   rb   re   ri   rn   rt   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r0  r6  r9  r;  rF  rJ  rQ  rT  rW  rY  r`  rd  rs  rz  r  r  r  r  r  r  r  r  r  r^  r   r  r  r   r  r  r  r  r  r  rq  rw  r  r  r  r  r  r  r  r  r  rm   r!  r#  r'  r)  r&  r   r_  rc  r*  rM  rW  rZ  r]  rY  r5  r,  r~   r
  r  r  r  r  r  r  r  ry  rr  rx  r  r  r  r  
BaseModuler  r  r  r#   r!   <module>r     s"  $   K K "  *        & . . % 
		0	1Q Q Q
Q# Q$ Q
QQ	Q /3tCH~v-.DcN+ 
#s(^& /35tCH~v-.5DcN+5 
#s(^5t /3tCH~v-.DcN+ 
#s(^$ /3tCH~v-. DcN+ 
#s(^	2 /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(^0 /3 tCH~v-. DcN+  
#s(^ L /3tCH~v-. DcN+ 
#s(^	@ /3tCH~v-. DcN+ 
#s(^	8 /3tCH~v-.DcN+ 
#s(^2 /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utCH~v-.uDcN+u 
#s(^uv /3tCH~v-. DcN+ 
#s(^	D /3tCH~v-.DcN+ 
#s(^2 /3tCH~v-.DcN+ 
#s(^D /3%tCH~v-.%DcN+% 
#s(^%V /3!!tCH~v-.! DcN+! 
#s(^	!N /3tCH~v-. DcN+ 
#s(^	B /3tCH~v-.DcN+ 
#s(^2 /3tCH~v-.DcN+ 
#s(^8 /3tCH~v-.DcN+ 
#s(^$ /3tCH~v-.DcN+ 
#s(^& /3"tCH~v-."DcN+" 
#s(^"P /3[[tCH~v-.[ DcN+[ 
#s(^	[B /3XXtCH~v-.X DcN+X 
#s(^	X| /3  tCH~v-.  DcN+  
#s(^	 L /3tCH~v-. DcN+ 
#s(^	D /3 tCH~v-. DcN+  
#s(^ J /3 tCH~v-. DcN+  
#s(^ J /3mtCH~v-.mDcN+m 
#s(^md /3utCH~v-.uDcN+u 
#s(^uv /3tCH~v-. DcN+ 
#s(^	2 /3tCH~v-. DcN+ 
#s(^	0 /3tCH~v-.DcN+ 
#s(^D /3tCH~v-.DcN+ 
#s(^D /3_tCH~v-._DcN+_ 
#s(^_H /3qtCH~v-.qDcN+q 
#s(^ql /3#tCH~v-.#DcN+# 
#s(^#P /3#tCH~v-.#DcN+# 
#s(^#R /3$$tCH~v-.$ DcN+$ 
#s(^	$T /3$$tCH~v-.$ DcN+$ 
#s(^	$R /3tCH~v-.DcN+ 
#s(^D /3tCH~v-.DcN+ 
#s(^D /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 /3tCH~v-.DcN+ 
#s(^" /3tCH~v-.DcN+ 
#s(^" /3ttCH~v-.tDcN+t 
#s(^tt /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(^2 /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(^0 /3tCH~v-. DcN+ 
#s(^	F /3tCH~v-. DcN+ 
#s(^	F /3tCH~v-. DcN+ 
#s(^	" /3tCH~v-. DcN+ 
#s(^	  /3tCH~v-.DcN+ 
#s(^8 /3tCH~v-.DcN+ 
#s(^8 /3tCH~v-.DcN+ 
#s(^* /36tCH~v-.6DcN+6 
#s(^6v /33tCH~v-.3DcN+3 
#s(^3p /37tCH~v-.7DcN+7 
#s(^7x /3tCH~v-.DcN+ 
#s(^" /3KtCH~v-.KDcN+K 
#s(^Kb /3tCH~v-. DcN+ 
#s(^	0 /3tCH~v-.DcN+ 
#s(^( /3tCH~v-.DcN+ 
#s(^@ /32tCH~v-.2DcN+2 
#s(^2n /3tCH~v-.DcN+ 
#s(^2 /3tCH~v-.DcN+ 
#s(^2 /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(^	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5tCH~v-.5DcN+5 
#s(^5t /32tCH~v-.2DcN+2 
#s(^2n /3tCH~v-.DcN+ 
#s(^4 /3tCH~v-.DcN+ 
#s(^0 /3tCH~v-.DcN+ 
#s(^2 /3tCH~v-. DcN+ 
#s(^	, /3tCH~v-. DcN+ 
#s(^	* /3KtCH~v-.KDcN+K 
#s(^Kb /3tCH~v-. DcN+ 
#s(^	F /3tCH~v-.DcN+ 
#s(^2 /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(^*h[## hV9j+(( jr#   