o
    Yi>                    @   s2  d dl Z d dlZd dlmZmZmZ d dlmZ ddlm	Z	 ddlm
Z
 ddlmZ ddlmZ dd	lmZ dd
lmZ ddl
mZ ddl
mZ ddl
mZ ddlmZmZ edZ	d|deeeef ef deeeef  deeef fddZ	d|deeeef ef deeeef  deeef fddZ 	d|deeeef ef deeeef  deeef fddZ!	d|deeeef ef deeeef  deeef fddZ"	d|deeeef ef deeeef  deeef fddZ#	d|dedeeeef ef deeeef  deeef fddZ$	d|deeeef ef deeeef  deeef fd d!Z%	d|deeeef ef deeeef  deeef fd"d#Z&	d|deeeef ef deeeef  deeef fd$d%Z'	d|deeeef ef deeeef  deeef fd&d'Z(	d|dedeeeef ef deeeef  deeef fd(d)Z)	d|dedeeeef ef deeeef  deeef fd*d+Z*	d|deeeef ef deeeef  deeef fd,d-Z+	d|deeeef ef deeeef  deeef fd.d/Z,	d|deeeef ef deeeef  deeef fd0d1Z-	d|deeeef ef deeeef  deeef fd2d3Z.	d|deeeef ef deeeef  deeef fd4d5Z/	d|dedeeeef ef deeeef  deeef fd6d7Z0	d|dedeeeef ef deeeef  deeef fd8d9Z1	d|deeeef ef deeeef  deeef fd:d;Z2	d|dedeeeef ef deeeef  deeef fd<d=Z3	d|dedeeeef ef deeeef  deeef fd>d?Z4	d|dedeeeef ef deeeef  deeef fd@dAZ5	d|deeeef ef deeeef  deeef fdBdCZ6	d|deeeef ef deeeef  deeef fdDdEZ7	d|dedeeeef ef deeeef  deeef fdFdGZ8	d|deeeef ef deeeef  deeef fdHdIZ9	d|dedeeeef ef deeeef  deeef fdJdKZ:	d|deeeef ef deeeef  deeef fdLdMZ;	d|deeeef ef deeeef  deeef fdNdOZ<	d|deeeef ef deeeef  deeef fdPdQZ=	d|dedeeeef ef deeeef  deeef fdRdSZ>	d|deeeef ef deeeef  deeef fdTdUZ?	d|dedeeeef ef deeeef  deeef fdVdWZ@	d|dedeeeef ef deeeef  deeef fdXdYZA	d|deeeef ef deeeef  deeef fdZd[ZB	d|deeeef ef deeeef  deeef fd\d]ZC	d|deeeef ef deeeef  deeef fd^d_ZD	d|dedeeeef ef deeeef  deeef fd`daZE	d|deeeef ef deeeef  deeef fdbdcZF	d|deeeef ef deeeef  deeef fdddeZG	d|deeeef ef deeeef  deeef fdfdgZH	d|deeeef ef deeeef  deeef fdhdiZI	d|deeeef ef deeeef  deeef fdjdkZJ	d|deeeef ef deeeef  deeef fdldmZK	d|deeeef ef deeeef  deeef fdndoZL	d|deeeef ef deeeef  deeef fdpdqZM	d|deeeef ef deeeef  deeef fdrdsZN	d|deeeef ef deeeef  deeef fdtduZO	d|deeeef ef deeeef  deeef fdvdwZPG dxdy dye	jQZRG dzd{ d{e	jQZSdS )}    N)AnyOptionalUnion)	urlencode   )_api_module)_common)_extra_utils)_transformers)types)BaseApiClient)get_value_by_path)move_value_by_path)set_value_by_path)
AsyncPagerPagerzgoogle_genai.batchesfrom_objectparent_objectreturnc                 C   s   i }t | dgd urt|dgt | dg t | dgd ur!tdt | dgd ur-tdt | dgd ur9tdt | d	gd urEtd
t | dgd urQtdt | dgd ur]td|S )NZapi_keyZapiKeyZapi_key_configz8api_key_config parameter is not supported in Gemini API.Z	auth_typez3auth_type parameter is not supported in Gemini API.Zgoogle_service_account_configzGgoogle_service_account_config parameter is not supported in Gemini API.Zhttp_basic_auth_configz@http_basic_auth_config parameter is not supported in Gemini API.Zoauth_configz6oauth_config parameter is not supported in Gemini API.Zoidc_configz5oidc_config parameter is not supported in Gemini API.getvsetv
ValueErrorr   r   	to_object r   N/home/kim/smarthome/.venv/lib/python3.10/site-packages/google/genai/batches.py_AuthConfig_to_mldev&   s(   r   c                    s   i  t | dgd urt dgt | dg t | ddgd ur1t dg fddt | ddgD  t | ddgd urKt dgd	d t | ddgD   S )
NZresponsesFile	file_nameZinlinedResponsesinlined_responsesc                       g | ]}t | qS r   )_InlinedResponse_from_mldev.0itemr   r   r   
<listcomp>U       z3_BatchJobDestination_from_mldev.<locals>.<listcomp>ZinlinedEmbedContentResponsesinlined_embed_content_responsesc                 S      g | ]}|qS r   r   r"   r   r   r   r&   d       r   r   r   r   r   r%   r   _BatchJobDestination_from_mldevH   s6   
r-   c                 C      i }t | dgd urt|dgt | dg t | ddgd ur*t|dgt | ddg t | ddgd ur?t|dgt | ddg |S )	NpredictionsFormatformatgcsDestinationoutputUriPrefixgcs_uribigqueryDestination	outputUribigquery_urir+   r   r   r   r    _BatchJobDestination_from_vertexp   s    r7   c                 C   s   i }t | dgd urt|dgt | dg t | dgd ur)t|ddgt | dg t | dgd ur=t|ddgt | dg t | d	gd urItd
t | dgd urUtdt | dgd uratd|S )Nr0   r/   r3   r1   r2   r6   r4   r5   r   2file_name parameter is not supported in Vertex AI.r   z:inlined_responses parameter is not supported in Vertex AI.r(   zHinlined_embed_content_responses parameter is not supported in Vertex AI.r   r   r   r   r   _BatchJobDestination_to_vertex   s4   

r9   c                 C   r.   )	NinstancesFormatr0   	gcsSourceurisr3   bigquerySourceinputUrir6   r+   r   r   r   r   _BatchJobSource_from_vertex   s   r?   
api_clientc                    s   i t |dgd urtdt |dgd urtdt |dgd ur&tdt |dgd ur9tdgt |dg t |d	gd urUtd
d
g fddt |d	gD  S )Nr0   z0format parameter is not supported in Gemini API.r3   z1gcs_uri parameter is not supported in Gemini API.r6   z6bigquery_uri parameter is not supported in Gemini API.r   fileNameinlined_requestsrequestsc                    s   g | ]}t  |qS r   )_InlinedRequest_to_mldevr"   r@   r   r   r   r&      s    
z,_BatchJobSource_to_mldev.<locals>.<listcomp>r   r   r   r@   r   r   r   rE   r   _BatchJobSource_to_mldev   s$   
	rH   c                 C   s   i }t | dgd urt|dgt | dg t | dgd ur)t|ddgt | dg t | dgd ur=t|ddgt | dg t | d	gd urItd
t | dgd urUtd|S )Nr0   r:   r3   r;   r<   r6   r=   r>   r   r8   rB   z9inlined_requests parameter is not supported in Vertex AI.r   r   r   r   r   _BatchJobSource_to_vertex   s$   
rI   c              
   C   sf  i }t | dgd urt|dgt | dg t | ddgd ur*t|dgt | ddg t | ddgd urBt|dgtt | ddg t | ddgd urWt|dgt | ddg t | ddgd urlt|d	gt | ddg t | dd
gd urt|dgt | dd
g t | ddgd urt|dgt | ddg t | ddgd urt|dgttt | ddg| |S )NnamemetadatadisplayNamedisplay_namestate
createTimecreate_timeendTimeend_time
updateTimeupdate_timemodeloutputdest)r   r   tt_job_stater-   t_recv_batch_job_destinationr   r   r   r   _BatchJob_from_mldev  sV   r[   c              	   C   s  i }t | dgd urt|dgt | dg t | dgd ur(t|dgt | dg t | dgd ur>t|dgtt | dg t | dgd urQt|dgt | dg t | dgd urdt|dgt | dg t | dgd urwt|d	gt | dg t | d
gd urt|dgt | d
g t | dgd urt|dgt | dg t | dgd urt|dgt | dg t | dgd urt|dgtt | dg| t | dgd urt|dgttt | dg| t | dgd urt|dgt | dg |S )NrJ   rL   rM   rN   errorrO   rP   Z	startTime
start_timerQ   rR   rS   rT   rU   inputConfigsrcoutputConfigrW   ZcompletionStatsZcompletion_stats)r   r   rX   rY   r?   r7   rZ   r   r   r   r   _BatchJob_from_vertex:  sR   	ra   c                 C   sl   i }t | dgd urt|dgt | dg t | dgd ur!tdt | dgd ur4t|dgt | dg |S )NdatarM   6display_name parameter is not supported in Gemini API.	mime_typemimeTyper   r   r   r   r   _Blob_to_mldevu     rf   c              	   C   8   i }t |dgd urt|ddgt| t |dg |S NrJ   _urlr   r   rX   Zt_batch_job_namer@   r   r   r   r   r   r   "_CancelBatchJobParameters_to_mldev     rm   c              	   C   rh   ri   rk   rl   r   r   r   #_CancelBatchJobParameters_to_vertex  rn   ro   c                 C   s  i }t | dgd urt|dgt | dg t | dgd ur+t|dgtt | dg| t | dgd ur>t|dgt | dg t | dgd urQt|dgt | dg t | dgd urdt|d	gt | dg t | d
gd urwt|dgt | d
g t | dgd urt|dgt | dg t | dgd urt|dgt | dg t | dgd urt|dgdd t | dgD  t | dgd urt|dgt | dg |S )NcontentZcitationMetadataZcitation_metadataZ
tokenCountZtoken_countZfinishReasonZfinish_reasonZgroundingMetadataZgrounding_metadataZavgLogprobsZavg_logprobsindexZlogprobsResultZlogprobs_resultZsafetyRatingsZsafety_ratingsc                 S   r)   r   r   r"   r   r   r   r&         z)_Candidate_from_mldev.<locals>.<listcomp>ZurlContextMetadataZurl_context_metadata)r   r   _CitationMetadata_from_mldevr   r   r   r   _Candidate_from_mldev  sP   

rt   c                 C   s8   i }t | dgd urt|dgdd t | dgD  |S )NZcitationSourcesZ	citationsc                 S   r)   r   r   r"   r   r   r   r&     rr   z0_CitationMetadata_from_mldev.<locals>.<listcomp>r+   r   r   r   r   rs     s   rs   c                    sb   i  t | dgd urt dg fddt | dgD  t | dgd ur/t dgt | dg  S )Npartsc                    r    r   )_Part_to_mldevr"   r%   r   r   r&     r'   z%_Content_to_mldev.<locals>.<listcomp>Zroler+   r,   r   r%   r   _Content_to_mldev  s   

	rw   c                 C   sH   i }t | dgd urt|ddgt | dg t | dgd ur"td|S )NrM   batchrL   rW   z.dest parameter is not supported in Gemini API.r   r   r   r   r   _CreateBatchJobConfig_to_mldev  s   
ry   c              	   C   s`   i }t | dgd urt|dgt | dg t | dgd ur.t|dgttt | dg| |S )NrM   rL   rW   r`   )r   r   r9   rX   Zt_batch_job_destinationr   r   r   r   _CreateBatchJobConfig_to_vertex  s   rz   c                 C   s   i }t |dgd urt|ddgt| t |dg t |dgd ur6t|ddgt| t| t |dg| t |dgd urGtt |dg| |S NrU   rj   r_   rx   r^   config)r   r   rX   t_modelrH   t_batch_job_sourcery   rl   r   r   r   "_CreateBatchJobParameters_to_mldev*  s(   
r   c              
   C   s   i }t |dgd urt|dgt| t |dg t |dgd ur3t|dgtt| t |dg| t |dgd urDtt |dg| |S )NrU   r_   r^   r|   )r   r   rX   r}   rI   r~   rz   rl   r   r   r   #_CreateBatchJobParameters_to_vertexH  s&   	r   c                 C   s0   i }t | dgd urt|ddgt | dg |S )NrM   rx   rL   r+   r   r   r   r   (_CreateEmbeddingsBatchJobConfig_to_mldeve  s   
r   c              	   C   s   i }t |dgd urt|ddgt| t |dg t |dgd ur2t|ddgt| t |dg| t |dgd urCtt |dg| |S r{   )r   r   rX   r}   "_EmbeddingsBatchJobSource_to_mldevr   rl   r   r   r   ,_CreateEmbeddingsBatchJobParameters_to_mldevu  s(   r   c              	   C   rh   ri   rk   rl   r   r   r   "_DeleteBatchJobParameters_to_mldev  rn   r   c              	   C   rh   ri   rk   rl   r   r   r   #_DeleteBatchJobParameters_to_vertex  rn   r   c                 C      i }t | dgd urt|dgt | dg t | dgd ur(t|dgt | dg t | dgd ur;t|dgt | dg t | dgd urNt|dgt | dg |S NsdkHttpResponsesdk_http_responserJ   doner\   r+   r   r   r   r   _DeleteResourceJob_from_mldev     r   c                 C   r   r   r+   r   r   r   r   _DeleteResourceJob_from_vertex  r   r   c              
   C   s|   i }t |dgd urt|g ddd t| t |dgD  t |dgd ur<t|dgtt |dg| t|ddi |S )	Ncontents)
requests[]requestrp   c                 S   r)   r   r   r"   r   r   r   r&     r*   z/_EmbedContentBatch_to_mldev.<locals>.<listcomp>r|   _selfzrequests[].*zrequests[].request.*)r   r   rX   Zt_contents_for_embed_EmbedContentConfig_to_mldevmovevrl   r   r   r   _EmbedContentBatch_to_mldev  s&   r   c                 C   s   i }t | dgd urt|ddgt | dg t | dgd ur*t|ddgt | dg t | dgd ur>t|ddgt | dg t | dgd urJtdt | d	gd urVtd
|S )NZ	task_typer   ZtaskTypetitleZoutput_dimensionalityZoutputDimensionalityrd   z3mime_type parameter is not supported in Gemini API.Zauto_truncatez7auto_truncate parameter is not supported in Gemini API.r   r   r   r   r   r     s(   

r   c                 C   s\   i }t |dgd urt|dgt |dg t |dgd ur,t|dgt| t |dg| |S )Nr   rB   rC   )r   r   r   rl   r   r   r   r     s   r   c                 C   sl   i }t | dgd urtdt | dgd ur!t|dgt | dg t | dgd ur4t|dgt | dg |S )NrM   rc   Zfile_uriZfileUrird   re   rF   r   r   r   r   _FileData_to_mldev0  s   r   c                 C   s   i }t | dgd urt|dgt | dg t | dgd ur(t|dgt | dg t | dgd ur;t|dgt | dg t | dgd urGtdt | dgd urStd|S )NidargsrJ   partial_argsz6partial_args parameter is not supported in Gemini API.Zwill_continuez7will_continue parameter is not supported in Gemini API.r   r   r   r   r   _FunctionCall_to_mldevA  s   r   c                 C   sl   i }t | dgd urt|dgt | dg t | dgd ur(t|dgt | dg t | dgd ur4td|S )NZallowed_function_namesZallowedFunctionNamesmodeZstream_function_call_argumentszHstream_function_call_arguments parameter is not supported in Gemini API.r   r   r   r   r   _FunctionCallingConfig_to_mldevX  s   
r   c              
      s  i t |dgd urt|dgttt |dg t |dgd ur.tdgt |dg t |dgd urAtdgt |dg t |dgd urTtdgt |dg t |dgd urgtd	gt |dg t |d
gd urztdgt |d
g t |dgd urtdgt |dg t |dgd urtdgt |dg t |dgd urtdgt |dg t |dgd urtdgt |dg t |dgd urtdgt |dg t |dgd urtdgt |dg t |dgd urtdgt |dg t |dgd urtdgt t |dg t |dgd ur+tdgt |dg t |dgd ur8tdt |dgd urEtdt |d gd ur`t|d!gfd"d#t |d gD  t |d$gd urt|d$g fd%d#t t |d$gD  t |d&gd urt|d'gtt |d&g t |d(gd urtd)t |d*gd urt|d+gt	 t |d*g t |d,gd urtd-gt |d,g t |d.gd urtd/gt |d.g t |d0gd urtd1gt
t |d0g t |d2gd urtd3t |d4gd urtd5gt |d4g t |d6gd ur3td7gtt |d6g t |d8gd urGtd9gt |d8g t |d:gd urTtd;S )<NZsystem_instructionZsystemInstructionZtemperatureZtop_pZtopPZtop_kZtopKZcandidate_countZcandidateCountZmax_output_tokensZmaxOutputTokensZstop_sequencesZstopSequencesZresponse_logprobsZresponseLogprobsZlogprobsZpresence_penaltyZpresencePenaltyZfrequency_penaltyZfrequencyPenaltyseedZresponse_mime_typeZresponseMimeTypeZresponse_schemaZresponseSchemaZresponse_json_schemaZresponseJsonSchemaZrouting_configz8routing_config parameter is not supported in Gemini API.Zmodel_selection_configz@model_selection_config parameter is not supported in Gemini API.Zsafety_settingsZsafetySettingsc                    r    r   )_SafetySetting_to_mldevr"   r%   r   r   r&     r'   z3_GenerateContentConfig_to_mldev.<locals>.<listcomp>Ztoolsc                    s   g | ]}t t |qS r   )_Tool_to_mldevrX   Zt_toolr"   rE   r   r   r&     s    Ztool_configZ
toolConfiglabelsz0labels parameter is not supported in Gemini API.Zcached_contentZcachedContentZresponse_modalitiesZresponseModalitiesmedia_resolutionmediaResolutionZspeech_configZspeechConfigZaudio_timestampz9audio_timestamp parameter is not supported in Gemini API.Zthinking_configZthinkingConfigZimage_configZimageConfigZenable_enhanced_civic_answersZenableEnhancedCivicAnswersZmodel_armor_configz<model_armor_config parameter is not supported in Gemini API.)r   r   rw   rX   Z	t_contentZt_schemar   Zt_tools_ToolConfig_to_mldevZt_cached_content_nameZt_speech_config_ImageConfig_to_mldevrG   r   rE   r   _GenerateContentConfig_to_mldevp  s  





		

r   c                    s   i  t | dgd urt dgt | dg t | dgd ur/t dg fddt | dgD  t | dgd urBt dgt | dg t | dgd urUt d	gt | dg t | d
gd urht dgt | d
g t | dgd ur{t dgt | dg  S )Nr   r   
candidatesc                    r    r   )rt   r"   r%   r   r   r&   0  r'   z7_GenerateContentResponse_from_mldev.<locals>.<listcomp>ZmodelVersionZmodel_versionZpromptFeedbackZprompt_feedbackZ
responseIdZresponse_idZusageMetadataZusage_metadatar+   r,   r   r%   r   #_GenerateContentResponse_from_mldev"  s,   

	r   c              	   C   rh   ri   rk   rl   r   r   r   _GetBatchJobParameters_to_mldevE  rn   r   c              	   C   rh   ri   rk   rl   r   r   r    _GetBatchJobParameters_to_vertexU  rn   r   c                 C   sZ   i }t | dgd urt|dgtt | dg| t | dgd ur+t|dgt | dg |S )NZauth_configZ
authConfigZenable_widgetZenableWidget)r   r   r   r   r   r   r   _GoogleMaps_to_mldeve  s   r   c                 C   s   i }t | dgd urt|dgt | dg t | dgd ur!tdt | dgd ur-tdt | dgd ur@t|dgt | dg |S )	NZsearch_typesZsearchTypesZblocking_confidencez=blocking_confidence parameter is not supported in Gemini API.Zexclude_domainsz9exclude_domains parameter is not supported in Gemini API.Ztime_range_filterZtimeRangeFilterr   r   r   r   r   _GoogleSearch_to_mldevw  s    r   c                 C   s   i }t | dgd urt|dgt | dg t | dgd ur(t|dgt | dg t | dgd ur4tdt | dgd ur@tdt | d	gd urLtd
t | dgd urXtdt | dgd urdtd|S )NZaspect_ratioZaspectRatioZ
image_sizeZ	imageSizeZperson_generationz;person_generation parameter is not supported in Gemini API.Zprominent_peoplez:prominent_people parameter is not supported in Gemini API.Zoutput_mime_typez:output_mime_type parameter is not supported in Gemini API.Zoutput_compression_qualityzDoutput_compression_quality parameter is not supported in Gemini API.Zimage_output_optionsz>image_output_options parameter is not supported in Gemini API.r   r   r   r   r   r     s4   r   c                    s   i  t |dgd urt ddgt| t |dg t |dgd ur8t ddg fddtt |dgD  t |dgd urKt dgt |dg t |dgd urit ddgt| t |dgt  dgi d	  S )
NrU   r   r   c                    r    r   )rw   r"   r%   r   r   r&     r'   z,_InlinedRequest_to_mldev.<locals>.<listcomp>rK   r|   ZgenerationConfig)default_value)r   r   rX   r}   Z
t_contentsr   rG   r   r%   r   rD     s8   
	

rD   c                 C   s   i }t | dgd urt|dgtt | dg| t | dgd ur+t|dgt | dg t | dgd ur>t|dgt | dg |S )NresponserK   r\   )r   r   r   r   r   r   r   r!     s   r!   c                 C   sp   i }t | dgd urt|ddgt | dg t | dgd ur*t|ddgt | dg t | dgd ur6td|S )N	page_size_querypageSize
page_token	pageTokenfilterz0filter parameter is not supported in Gemini API.r   r   r   r   r   _ListBatchJobsConfig_to_mldev  s   
r   c                 C   s   i }t | dgd urt|ddgt | dg t | dgd ur*t|ddgt | dg t | dgd ur>t|ddgt | dg |S )Nr   r   r   r   r   r   r+   r   r   r   r   _ListBatchJobsConfig_to_vertex  s   
r   c                 C   *   i }t | dgd urtt | dg| |S Nr|   )r   r   r   r   r   r   !_ListBatchJobsParameters_to_mldev'     r   c                 C   r   r   )r   r   r   r   r   r   "_ListBatchJobsParameters_to_vertex2  r   r   c                       i  t | dgd urt dgt | dg t | dgd ur(t dgt | dg t | dgd urBt dg fddt | dgD   S )	Nr   r   nextPageTokennext_page_token
operations
batch_jobsc                    r    r   )r[   r"   r%   r   r   r&   N  r'   z5_ListBatchJobsResponse_from_mldev.<locals>.<listcomp>r+   r,   r   r%   r   !_ListBatchJobsResponse_from_mldev=      

	r   c                    r   )	Nr   r   r   r   batchPredictionJobsr   c                    r    r   )ra   r"   r%   r   r   r&   h  r'   z6_ListBatchJobsResponse_from_vertex.<locals>.<listcomp>r+   r,   r   r%   r   "_ListBatchJobsResponse_from_vertexW  r   r   c                 C   s
  i }t | dgd urt|dgt | dg t | dgd ur(t|dgt | dg t | dgd ur;t|dgt | dg t | dgd urQt|dgtt | dg| t | d	gd urgt|d
gtt | d	g| t | dgd urzt|dgt | dg t | dgd urt|dgtt | dg| t | dgd urt|dgt | dg t | dgd urt|dgt | dg t | dgd urt|dgt | dg t | dgd urt|dgt | dg t | dgd urt|dgt | dg t | dgd urt|dgt | dg |S )Nr   r   Zcode_execution_resultZcodeExecutionResultZexecutable_codeZexecutableCode	file_dataZfileDataZfunction_callZfunctionCallZfunction_responseZfunctionResponseZinline_dataZ
inlineDatatextZthoughtZthought_signatureZthoughtSignatureZvideo_metadataZvideoMetadataZ	tool_callZtoolCallZtool_responseZtoolResponse)r   r   r   r   rf   r   r   r   r   rv   q  sl   


rv   c                 C   sl   i }t | dgd urt|dgt | dg t | dgd ur!tdt | dgd ur4t|dgt | dg |S )Ncategorymethodz0method parameter is not supported in Gemini API.	thresholdr   r   r   r   r   r     rg   r   c                 C   s   i }t | dgd urt|dgt | dg t | dgd ur+t|dgtt | dg| t | dgd ur>t|dgt | dg |S )NZretrieval_configZretrievalConfigZfunction_calling_configZfunctionCallingConfigZ$include_server_side_tool_invocationsZ includeServerSideToolInvocations)r   r   r   r   r   r   r   r     s(   
r   c                 C   s  i }t | dgd urtdt | dgd ur!t|dgt | dg t | dgd ur4t|dgt | dg t | dgd urJt|dgtt | dg| t | d	gd ur`t|d
gtt | d	g| t | dgd urst|dgt | dg t | dgd urtdt | dgd urt|dgdd t | dgD  t | dgd urt|dgt | dg t | dgd urtdt | dgd urt|dgt | dg t | dgd urt|dgdd t | dgD  |S )NZ	retrievalz3retrieval parameter is not supported in Gemini API.Zcomputer_useZcomputerUseZfile_searchZ
fileSearchZgoogle_searchZgoogleSearchZgoogle_mapsZ
googleMapsZcode_executionZcodeExecutionZenterprise_web_searchz?enterprise_web_search parameter is not supported in Gemini API.Zfunction_declarationsZfunctionDeclarationsc                 S   r)   r   r   r"   r   r   r   r&     rr   z"_Tool_to_mldev.<locals>.<listcomp>Zgoogle_search_retrievalZgoogleSearchRetrievalZparallel_ai_searchz<parallel_ai_search parameter is not supported in Gemini API.Zurl_contextZ
urlContextZmcp_serversZ
mcpServersc                 S   r)   r   r   r"   r   r   r   r&   &  rr   )r   r   r   r   r   r   r   r   r   r     sd   
r   c                	   @   x  e Zd Zddddee deejejf deej	 dej
fddZddddee dejdeej dej
fd	d
Zdddedeej dej
fddZdddedeej ddfddZdddeej dejfddZdddedeej dejfddZdddedejdeej	 dej
fddZdddedejdeej dej
fddZdddeej deej
 fddZdS )BatchesNrU   r|   rU   r_   r|   r   c                C   s<  t j|||d}| jjr"t| j|}|d}|rd|}nd}nt| j|}|d}|r5d|}nd}|d}|rG| dt| }|	dd  d }	|j
d ur^|j
jd ur^|j
j}	t|}t|}| jd|||	}
|
jsvi nt|
j}| jjrt|}| jjst|}t jj|| d	}| j| |S 
NrU   r_   r|   rj   r   z{model}:batchGenerateContentr   ?r|   postr   kwargs)r   _CreateBatchJobParameters_api_clientvertexair   get
format_mapr   r   popr|   http_optionsr   convert_to_dictencode_unserializable_typesr   bodyjsonloadsra   r[   BatchJob_from_response
model_dump_verify_responseselfrU   r_   r|   parameter_modelrequest_dictrequest_url_dictpathquery_paramsr   r   response_dictreturn_valuer   r   r   _create.  sV   





zBatches._createc                C   s  t j|||d}| jjrtdt| j|}|d}|r#d|}nd}|d}|r5| dt| }|	dd  d }	|j
d urL|j
jd urL|j
j}	t|}t|}| jd|||	}
|
jsdi nt|
j}| jjsrt|}t jj|| d	}| j| |S 
Nr   z=This method is only supported in the Gemini Developer client.rj   z{model}:asyncBatchEmbedContentr   r   r|   r   r   )r   #_CreateEmbeddingsBatchJobParametersr   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   _create_embeddingsr  sJ   




zBatches._create_embeddingsr|   rJ   c                C   s:  t j||d}| jjr!t| j|}|d}|rd|}nd}nt| j|}|d}|r4d|}nd}|d}|rF| dt| }|	dd d}|j
dur]|j
jdur]|j
j}t|}t|}| jd	|||}	|	jsui nt|	j}
| jjrt|
}
| jjst|
}
t jj|
| d
}| j| |S )a6  Gets a batch job.

    Args:
      name (str): A fully-qualified BatchJob resource name or ID.
        Example: "projects/.../locations/.../batchPredictionJobs/456" or "456"
          when project and location are initialized in the Vertex AI client. Or
          "batches/abc" using the Gemini Developer AI client.

    Returns:
      A BatchJob object that contains details about the batch job.

    Usage:

    .. code-block:: python

      batch_job = client.batches.get(name='123456789')
      print(f"Batch job: {batch_job.name}, state {batch_job.state}")
    rJ   r|   rj   batchPredictionJobs/{name}batches/{name}r   r   r|   Nr   r   )r   _GetBatchJobParametersr   r   r   r   r   r   r   r   r|   r   r   r   r   r   r   r   r   ra   r[   r   r   r   r   r   rJ   r|   r   r   r   r   r   r   r   r   r   r   r   r   r     sP   





zBatches.getc          
      C   s   t j||d}| jjr!t| j|}|d}|rd|}nd}nt| j|}|d}|r4d|}nd}|d}|rF| dt| }|	dd d}|j
dur]|j
jdur]|j
j}t|}t|}| jd	|||}	dS )
a  Cancels a batch job.

    Only available for batch jobs that are running or pending.

    Args:
      name (str): A fully-qualified BatchJob resource name or ID.
        Example: "projects/.../locations/.../batchPredictionJobs/456" or "456"
          when project and location are initialized in the Vertex AI client. Or
          "batches/abc" using the Gemini Developer AI client.

    Usage:

    .. code-block:: python

      client.batches.cancel(name='123456789')
    r   rj   !batchPredictionJobs/{name}:cancelbatches/{name}:cancelr   r   r|   Nr   )r   _CancelBatchJobParametersr   r   ro   r   r   rm   r   r   r|   r   r   r   r   r   
r   rJ   r|   r   r   r   r   r   r   r   r   r   r   cancel  s@   





zBatches.cancelc                C   s@  t j|d}| jjrt|}|d}|rd|}nd}nt|}|d}|r/d|}nd}|d}|rA| dt| }|	dd  d }|j
d urX|j
jd urX|j
j}t|}t|}| jd|||}|jspi nt|j}	| jjr~t|	}	| jjst|	}	t jj|	| d	}
t j|jd
|
_| j|
 |
S Nr   rj   r   Zbatchesr   r   r|   r   r   headers)r   _ListBatchJobsParametersr   r   r   r   r   r   r   r   r|   r   r   r   r   r   r   r   r   r   r   ListBatchJobsResponser   r   HttpResponser   r   r   r   r|   r   r   r   r   r   r   r   r   r   r   r   r   _listB  sL   





zBatches._listc                C   sJ  t j||d}| jjr!t| j|}|d}|rd|}nd}nt| j|}|d}|r4d|}nd}|d}|rF| dt| }|	dd d}|j
dur]|j
jdur]|j
j}t|}t|}| jd	|||}	|	jsui nt|	j}
| jjrt|
}
| jjst|
}
t jj|
| d
}t j|	jd|_| j| |S )a  Deletes a batch job.

    Args:
      name (str): A fully-qualified BatchJob resource name or ID.
        Example: "projects/.../locations/.../batchPredictionJobs/456" or "456"
          when project and location are initialized in the client.

    Returns:
      A DeleteResourceJob object that shows the status of the deletion.

    Usage:

    .. code-block:: python

      client.batches.delete(name='123456789')
    r   rj   r   r   r   r   r|   Ndeleter   r   )r   _DeleteBatchJobParametersr   r   r   r   r   r   r   r   r|   r   r   r   r   r   r   r   r   r   r   DeleteResourceJobr   r   r   r   r   r   r   r   r   r   r  |  sZ   





zBatches.deletec                C   sT   t | j|}tj|||d}| jjr"t||j}| j	|||dS | j	|||dS )a  Creates a batch job.

    Args:
      model (str): The model to use for the batch job.
      src: The source of the batch job. Currently Vertex AI supports GCS URI(-s)
        or BigQuery URI. Example: "gs://path/to/input/data" or
        "bq://projectId.bqDatasetId.bqTableId". Gemini Developer API supports
        List of inlined_request, or file name. Example: "files/file_name".
      config (CreateBatchJobConfig): Optional configuration for the batch job.

    Returns:
      A BatchJob object that contains details about the batch job.

    Usage:

    .. code-block:: python

      batch_job = client.batches.create(
          model="gemini-2.0-flash-001",
          src="gs://path/to/input/data",
      )
      print(batch_job.state)
    r   
rX   r~   r   r   r   r   r	   Zformat_destinationr|   r   r   rU   r_   r|   r   r   r   r   create  s   zBatches.createc                C   sX   ddl }|jdtjdd t| j|}tj|||d}| jj	r$t
d| j|||dS )a]  **Experimental** Creates an embedding batch job.

    Args:
      model (str): The model to use for the batch job.
      src: Gemini Developer API supports List of inlined_request, or file name.
        Example: "files/file_name".
      config (CreateBatchJobConfig): Optional configuration for the batch job.

    Returns:
      A BatchJob object that contains details about the batch job.

    Usage:

    .. code-block:: python

      batch_job = client.batches.create_embeddings(
          model="text-embedding-004",
          src="files/my_embedding_input",
      )
      print(batch_job.state)
    r   NJbatches.create_embeddings() is experimental and may change without notice.   r   
stacklevelr   5Vertex AI does not support batches.create_embeddings.)warningswarnr   ExperimentalWarningrX   t_embedding_batch_job_sourcer   r   r   r   r   r   )r   rU   r_   r|   r  r   r   r   r   create_embeddings  s   zBatches.create_embeddingsc                C   s   | j }td|| j |d|S )a  Lists batch jobs.

    Args:
      config (ListBatchJobsConfig): Optional configuration for the list request.

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

    Usage:

    .. code-block:: python
      config = {'page_size': 10}
      for batch_job in client.batches.list(config):
        print(batch_job.name)
    r   r   )r  r   r   r|   Zlist_requestr   r   r   list0  s   
zBatches.list)__name__
__module____qualname__r   strr   r   BatchJobSourceUnionBatchJobSourceUnionDictCreateBatchJobConfigOrDictr   r   EmbeddingsBatchJobSourceOrDict$CreateEmbeddingsBatchJobConfigOrDictr   GetBatchJobConfigOrDictr   CancelBatchJobConfigOrDictr   ListBatchJobsConfigOrDictr   r  DeleteBatchJobConfigOrDictr  r  r  r  r   r  r   r   r   r   r   ,  s    
G
=
T
E
>
Z
2
3r   c                	   @   r   )AsyncBatchesNr   rU   r_   r|   r   c                   sD  t j|||d}| jjr#t| j|}|d}|r d|}nd}nt| j|}|d}|r6d|}nd}|d}|rH| dt| }|	dd  d }	|j
d ur_|j
jd ur_|j
j}	t|}t|}| jd|||	I d H }
|
jszi nt|
j}| jjrt|}| jjst|}t jj|| d	}| j| |S r   )r   r   r   r   r   r   r   r   r   r   r|   r   r   r   r   async_requestr   r   r   ra   r[   r   r   r   r   r   r   r   r   r   O  sX   






zAsyncBatches._createc                   s  t j|||d}| jjrtdt| j|}|d}|r$d|}nd}|d}|r6| dt| }|	dd  d }	|j
d urM|j
jd urM|j
j}	t|}t|}| jd|||	I d H }
|
jshi nt|
j}| jjsvt|}t jj|| d	}| j| |S 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     sL   





zAsyncBatches._create_embeddingsr   rJ   c                   sB  t j||d}| jjr"t| j|}|d}|rd|}nd}nt| j|}|d}|r5d|}nd}|d}|rG| dt| }|	dd d}|j
dur^|j
jdur^|j
j}t|}t|}| jd	|||I dH }	|	jsyi nt|	j}
| jjrt|
}
| jjst|
}
t jj|
| d
}| j| |S )a@  Gets a batch job.

    Args:
      name (str): A fully-qualified BatchJob resource name or ID.
        Example: "projects/.../locations/.../batchPredictionJobs/456" or "456"
          when project and location are initialized in the Vertex AI client. Or
          "batches/abc" using the Gemini Developer AI client.

    Returns:
      A BatchJob object that contains details about the batch job.

    Usage:

    .. code-block:: python

      batch_job = await client.aio.batches.get(name='123456789')
      print(f"Batch job: {batch_job.name}, state {batch_job.state}")
    r   rj   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   ra   r[   r   r   r   r   r   r   r   r   r     sV   






zAsyncBatches.getc          
         s   t j||d}| jjr"t| j|}|d}|rd|}nd}nt| j|}|d}|r5d|}nd}|d}|rG| dt| }|	dd d}|j
dur^|j
jdur^|j
j}t|}t|}| jd	|||I dH }	dS )
a  Cancels a batch job.

    Only available for batch jobs that are running or pending.

    Args:
      name (str): A fully-qualified BatchJob resource name or ID.
        Example: "projects/.../locations/.../batchPredictionJobs/456" or "456"
          when project and location are initialized in the Vertex AI client. Or
          "batches/abc" using the Gemini Developer AI client.

    Usage:

    .. code-block:: python

      await client.aio.batches.cancel(name='123456789')
    r   rj   r   r   r   r   r|   Nr   )r   r   r   r   ro   r   r   rm   r   r   r|   r   r   r   r   r"  r   r   r   r   r   !	  sB   





zAsyncBatches.cancelc                   sH  t j|d}| jjrt|}|d}|rd|}nd}nt|}|d}|r0d|}nd}|d}|rB| dt| }|	dd  d }|j
d urY|j
jd urY|j
j}t|}t|}| jd|||I d H }|jsti nt|j}	| jjrt|	}	| jjst|	}	t jj|	| d	}
t j|jd
|
_| j|
 |
S 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  e	  sR   






zAsyncBatches._listc                   sR  t j||d}| jjr"t| j|}|d}|rd|}nd}nt| j|}|d}|r5d|}nd}|d}|rG| dt| }|	dd d}|j
dur^|j
jdur^|j
j}t|}t|}| jd	|||I dH }	|	jsyi nt|	j}
| jjrt|
}
| jjst|
}
t jj|
| d
}t j|	jd|_| j| |S )a  Deletes a batch job.

    Args:
      name (str): A fully-qualified BatchJob resource name or ID.
        Example: "projects/.../locations/.../batchPredictionJobs/456" or "456"
          when project and location are initialized in the client.

    Returns:
      A DeleteResourceJob object that shows the status of the deletion.

    Usage:

    .. code-block:: python

      await client.aio.batches.delete(name='123456789')
    r   rj   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   r   r   r   r  	  s\   






zAsyncBatches.deletec                   sb   t | j|}tj|||d}| jjr&t||j}| j	|||dI dH S | j	|||dI dH S )a  Creates a batch job asynchronously.

    Args:
      model (str): The model to use for the batch job.
      src: The source of the batch job. Currently Vertex AI supports GCS URI(-s)
        or BigQuery URI. Example: "gs://path/to/input/data" or
        "bq://projectId.bqDatasetId.bqTableId". Gemini Develop API supports List
        of inlined_request, or file name. Example: "files/file_name".
      config (CreateBatchJobConfig): Optional configuration for the batch job.

    Returns:
      A BatchJob object that contains details about the batch job.

    Usage:

    .. code-block:: python

      batch_job = await client.aio.batches.create(
          model="gemini-2.0-flash-001",
          src="gs://path/to/input/data",
      )
    r   Nr  r  r   r   r   r  	  s   zAsyncBatches.createc                   s   ddl }|jdtjdd t| j|}tj|||d}d}|j	dur.|j	j
dur.|j	j
}| jjr6td| j|||dI dH S )ao  **Experimental** Creates an asynchronously embedding batch job.

    Args:
      model (str): The model to use for the batch job.
      src: Gemini Developer API supports inlined_requests, or file name.
        Example: "files/file_name".
      config (CreateBatchJobConfig): Optional configuration for the batch job.

    Returns:
      A BatchJob object that contains details about the batch job.

    Usage:

    .. code-block:: python

      batch_job = await client.aio.batches.create_embeddings(
          model="text-embedding-004",
          src="files/my_embedding_input",
      )
      print(batch_job.state)
    r   Nr  r	  r
  r   r  )r  r  r   r  rX   r  r   r   r   r|   r   r   r   r   )r   rU   r_   r|   r  r   r   r   r   r   r  "
  s(   
zAsyncBatches.create_embeddingsc                   s$   | j }td|| j |dI dH |S )a  Lists batch jobs asynchronously.

    Args:
      config (ListBatchJobsConfig): Optional configuration for the list request.

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

    Usage:

    .. code-block:: python
      async for batch_job in await client.aio.batches.list():
        print(batch_job.name)
    r   r   N)r  r   r  r   r   r   r  [
  s   zAsyncBatches.list)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!  M  s    
G
=
V
E
@
Z
1
:r!  )N)Tr   loggingtypingr   r   r   urllib.parser    r   r   r	   r
   rX   r   r   r   r   r   r   r   r   r   Zpagersr   r   	getLoggerloggerdictr  objectr   r-   r7   r9   r?   rH   rI   r[   ra   rf   rm   ro   rt   rs   rw   ry   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rD   r!   r   r   r   r   r   r   rv   r   r   r   Z
BaseModuler   r!  r   r   r   r   <module>   s  


$

*



)



!



;

=







:









!





!











#









 5

&









*

*















K





D    %