o
    "iE@                    @   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 )Napi_keyapiKeyapi_key_configz8api_key_config parameter is not supported in Gemini API.	auth_typez3auth_type parameter is not supported in Gemini API.google_service_account_configzGgoogle_service_account_config parameter is not supported in Gemini API.http_basic_auth_configz@http_basic_auth_config parameter is not supported in Gemini API.oauth_configz6oauth_config parameter is not supported in Gemini API.oidc_configz5oidc_config parameter is not supported in Gemini API.getvsetv
ValueErrorr   r   	to_object r#   Y/var/www/html/crm_dreinet/venv_linux/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 )
NresponsesFile	file_nameinlinedResponsesinlined_responsesc                       g | ]}t | qS r#   )_InlinedResponse_from_mldev.0itemr"   r#   r$   
<listcomp>U       z3_BatchJobDestination_from_mldev.<locals>.<listcomp>inlinedEmbedContentResponsesinlined_embed_content_responsesc                 S      g | ]}|qS r#   r#   r,   r#   r#   r$   r0   d       r   r   r   r   r#   r/   r$   _BatchJobDestination_from_mldevH   s6   
r8   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_urir6   r!   r#   r#   r$    _BatchJobDestination_from_vertexp   s    rB   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 )Nr;   r:   r>   r<   r=   rA   r?   r@   r'   2file_name parameter is not supported in Vertex AI.r)   z:inlined_responses parameter is not supported in Vertex AI.r3   zHinlined_embed_content_responses parameter is not supported in Vertex AI.r   r!   r#   r#   r$   _BatchJobDestination_to_vertex   s4   

rD   c                 C   r9   )	NinstancesFormatr;   	gcsSourceurisr>   bigquerySourceinputUrirA   r6   r!   r#   r#   r$   _BatchJobSource_from_vertex   s   rJ   
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 )Nr;   z0format parameter is not supported in Gemini API.r>   z1gcs_uri parameter is not supported in Gemini API.rA   z6bigquery_uri parameter is not supported in Gemini API.r'   fileNameinlined_requestsrequestsc                    s   g | ]}t  |qS r#   )_InlinedRequest_to_mldevr,   rK   r"   r#   r$   r0      s    
z,_BatchJobSource_to_mldev.<locals>.<listcomp>r   r    r   rK   r   r   r#   rP   r$   _BatchJobSource_to_mldev   s$   
	rS   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 )Nr;   rE   r>   rF   rG   rA   rH   rI   r'   rC   rM   z9inlined_requests parameter is not supported in Vertex AI.r   r!   r#   r#   r$   _BatchJobSource_to_vertex   s$   
rT   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_stater8   t_recv_batch_job_destinationr!   r#   r#   r$   _BatchJob_from_mldev  sV   rf   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 )NrU   rW   rX   rY   errorrZ   r[   	startTime
start_timer\   r]   r^   r_   r`   inputConfigsrcoutputConfigrb   completionStatscompletion_stats)r   r   rc   rd   rJ   rB   re   r!   r#   r#   r$   _BatchJob_from_vertex:  sR   	ro   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datarX   6display_name parameter is not supported in Gemini API.	mime_typemimeTyper   r!   r#   r#   r$   _Blob_to_mldevu     rt   c              	   C   8   i }t |dgd urt|ddgt| t |dg |S NrU   _urlr   r   rc   t_batch_job_namerK   r   r   r"   r#   r#   r$   "_CancelBatchJobParameters_to_mldev     r|   c              	   C   rv   rw   ry   r{   r#   r#   r$   #_CancelBatchJobParameters_to_vertex  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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contentcitationMetadatacitation_metadata
tokenCounttoken_countfinishReasonfinish_reasongroundingMetadatagrounding_metadataavgLogprobsavg_logprobsindexlogprobsResultlogprobs_resultsafetyRatingssafety_ratingsc                 S   r4   r#   r#   r,   r#   r#   r$   r0         z)_Candidate_from_mldev.<locals>.<listcomp>urlContextMetadataurl_context_metadata)r   r   _CitationMetadata_from_mldevr!   r#   r#   r$   _Candidate_from_mldev  sP   

r   c                 C   s8   i }t | dgd urt|dgdd t | dgD  |S )NcitationSources	citationsc                 S   r4   r#   r#   r,   r#   r#   r$   r0     r   z0_CitationMetadata_from_mldev.<locals>.<listcomp>r6   r!   r#   r#   r$   r     s   r   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$   r0     r1   z%_Content_to_mldev.<locals>.<listcomp>roler6   r7   r#   r/   r$   _Content_to_mldev  s   

	r   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 )NrX   batchrW   rb   z.dest parameter is not supported in Gemini API.r   r!   r#   r#   r$   _CreateBatchJobConfig_to_mldev  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t | dg| |S )NrX   rW   rb   rl   )r   r   rD   rc   t_batch_job_destinationr!   r#   r#   r$   _CreateBatchJobConfig_to_vertex  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r6t|ddgt| t| t |dg| t |dgd urGtt |dg| |S Nr`   rx   rk   r   rj   config)r   r   rc   t_modelrS   t_batch_job_sourcer   r{   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 )Nr`   rk   rj   r   )r   r   rc   r   rT   r   r   r{   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 )NrX   r   rW   r6   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   rc   r   "_EmbeddingsBatchJobSource_to_mldevr   r{   r#   r#   r$   ,_CreateEmbeddingsBatchJobParameters_to_mldevu  s(   r   c              	   C   rv   rw   ry   r{   r#   r#   r$   "_DeleteBatchJobParameters_to_mldev  r}   r   c              	   C   rv   rw   ry   r{   r#   r#   r$   #_DeleteBatchJobParameters_to_vertex  r}   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_responserU   donerg   r6   r!   r#   r#   r$   _DeleteResourceJob_from_mldev     r   c                 C   r   r   r6   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[]requestr   c                 S   r4   r#   r#   r,   r#   r#   r$   r0     r5   z/_EmbedContentBatch_to_mldev.<locals>.<listcomp>r   _selfzrequests[].*zrequests[].request.*)r   r   rc   t_contents_for_embed_EmbedContentConfig_to_mldevmovevr{   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 )N	task_typer   taskTypetitleoutput_dimensionalityoutputDimensionalityrr   z3mime_type parameter is not supported in Gemini API.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'   rM   rN   )r   r   r   r{   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 )NrX   rq   file_urifileUrirr   rs   rQ   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argsrU   partial_argsz6partial_args parameter is not supported in Gemini API.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 )Nallowed_function_namesallowedFunctionNamesmode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;t |d<gd urht|d=gt |d<g S )>Nsystem_instructionsystemInstruction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frequencyPenaltyseedresponse_mime_typeresponseMimeTyperesponse_schemaresponseSchemaresponse_json_schemaresponseJsonSchema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safetySettingsc                    r*   r#   )_SafetySetting_to_mldevr,   r/   r#   r$   r0     r1   z3_GenerateContentConfig_to_mldev.<locals>.<listcomp>toolsc                    s   g | ]}t t |qS r#   )_Tool_to_mldevrc   t_toolr,   rP   r#   r$   r0     s    tool_config
toolConfiglabelsz0labels 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enable_enhanced_civic_answersenableEnhancedCivicAnswersmodel_armor_configz<model_armor_config parameter is not supported in Gemini API.service_tierserviceTier)r   r   r   rc   	t_contentt_schemar    t_tools_ToolConfig_to_mldevt_cached_content_namet_speech_config_ImageConfig_to_mldevrR   r#   rP   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 t | dgd urt dgt | dg  S )Nr   r   
candidatesc                    r*   r#   )r   r,   r/   r#   r$   r0   3  r1   z7_GenerateContentResponse_from_mldev.<locals>.<listcomp>modelVersionmodel_versionpromptFeedbackprompt_feedback
responseIdresponse_idusageMetadatausage_metadatamodelStatusmodel_statusr6   r7   r#   r/   r$   #_GenerateContentResponse_from_mldev%  s0   

	r  c              	   C   rv   rw   ry   r{   r#   r#   r$   _GetBatchJobParameters_to_mldevK  r}   r  c              	   C   rv   rw   ry   r{   r#   r#   r$    _GetBatchJobParameters_to_vertex[  r}   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 )Nauth_config
authConfigenable_widgetenableWidget)r   r   r%   r!   r#   r#   r$   _GoogleMaps_to_mldevk  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 )	Nsearch_typessearchTypesblocking_confidencez=blocking_confidence parameter is not supported in Gemini API.exclude_domainsz9exclude_domains parameter is not supported in Gemini API.time_range_filtertimeRangeFilterr   r!   r#   r#   r$   _GoogleSearch_to_mldev}  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 )Naspect_ratioaspectRatio
image_size	imageSizeperson_generationz;person_generation parameter is not supported in Gemini API.prominent_peoplez:prominent_people parameter is not supported in Gemini API.output_mime_typez:output_mime_type parameter is not supported in Gemini API.output_compression_qualityzDoutput_compression_quality parameter is not supported in Gemini API.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 )
Nr`   r   r   c                    r*   r#   )r   r,   r/   r#   r$   r0     r1   z,_InlinedRequest_to_mldev.<locals>.<listcomp>rV   r   generationConfig)default_value)r   r   rc   r   
t_contentsr  rR   r#   r/   r$   rO     s8   
	

rO   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responserV   rg   )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   
r9  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 )Nr3  r4  r5  r6  r7  r8  r6   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   r9  r!   r#   r#   r$   !_ListBatchJobsParameters_to_mldev-     r=  c                 C   r;  r<  )r   r:  r!   r#   r#   r$   "_ListBatchJobsParameters_to_vertex8  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#   )rf   r,   r/   r#   r$   r0   T  r1   z5_ListBatchJobsResponse_from_mldev.<locals>.<listcomp>r6   r7   r#   r/   r$   !_ListBatchJobsResponse_from_mldevC      

	rE  c                    r@  )	Nr   r   rA  rB  batchPredictionJobsrD  c                    r*   r#   )ro   r,   r/   r#   r$   r0   n  r1   z6_ListBatchJobsResponse_from_vertex.<locals>.<listcomp>r6   r7   r#   r/   r$   "_ListBatchJobsResponse_from_vertex]  rF  rH  c                 C   s2  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 t | dgd urt|dgt | dg |S )Nr   r   code_execution_resultcodeExecutionResultexecutable_codeexecutableCode	file_datafileDatafunction_callfunctionCallfunction_responsefunctionResponseinline_data
inlineDatatextthoughtthought_signaturethoughtSignaturevideo_metadatavideoMetadata	tool_calltoolCalltool_responsetoolResponsepart_metadatapartMetadata)r   r   r   r   rt   r!   r#   r#   r$   r   w  sp   


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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     ru   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 )Nretrieval_configretrievalConfigfunction_calling_configfunctionCallingConfig$include_server_side_tool_invocations 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 )N	retrievalz3retrieval parameter is not supported in Gemini API.computer_usecomputerUsefile_search
fileSearchgoogle_searchgoogleSearchgoogle_maps
googleMapscode_executioncodeExecutionenterprise_web_searchz?enterprise_web_search parameter is not supported in Gemini API.function_declarationsfunctionDeclarationsc                 S   r4   r#   r#   r,   r#   r#   r$   r0     r   z"_Tool_to_mldev.<locals>.<listcomp>google_search_retrievalgoogleSearchRetrievalparallel_ai_searchz<parallel_ai_search parameter is not supported in Gemini API.url_context
urlContextmcp_servers
mcpServersc                 S   r4   r#   r#   r,   r#   r#   r$   r0   /  r   )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r`   r   r`   rk   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r`   rk   r   rx   rG  z{model}:batchGenerateContentr4  ?r   postr2  kwargs)r   _CreateBatchJobParameters_api_clientvertexair   get
format_mapr   r   popr   http_optionsr   convert_to_dictencode_unserializable_typesr   bodyjsonloadsro   rf   BatchJob_from_response
model_dump_verify_responseselfr`   rk   r   parameter_modelrequest_dictrequest_url_dictpathquery_paramsr  r2  response_dictreturn_valuer#   r#   r$   _create7  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.rx   z{model}:asyncBatchEmbedContentr4  r  r   r  r  )r   #_CreateEmbeddingsBatchJobParametersr  r  r    r   r  r  r   r  r   r  r   r  r  r   r  r  r  rf   r  r  r  r  r  r#   r#   r$   _create_embeddings{  sJ   




zBatches._create_embeddingsr   rU   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}")
    rU   r   rx   batchPredictionJobs/{name}batches/{name}r4  r  r   Nr  r  )r   _GetBatchJobParametersr  r  r  r  r  r  r   r  r   r  r   r  r  r   r  r  r  ro   rf   r  r  r  r  r  rU   r   r  r  r  r  r  r  r2  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  rx   !batchPredictionJobs/{name}:cancelbatches/{name}:cancelr4  r  r   Nr  )r   _CancelBatchJobParametersr  r  r~   r  r  r|   r   r  r   r  r   r  r  r   
r  rU   r   r  r  r  r  r  r  r2  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  rx   rG  batchesr4  r  r   r  r  headers)r   _ListBatchJobsParametersr  r  r?  r  r  r=  r   r  r   r  r   r  r  r   r  r  r  rH  rE  ListBatchJobsResponser  r  HttpResponser  r   r  r  r   r  r  r  r  r  r  r2  r  r  r#   r#   r$   _listK  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  rx   r  r  r4  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  
rc   r   r  r   r  r  r	   format_destinationr   r  r  r`   rk   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.   ra  
stacklevelr  5Vertex AI does not support batches.create_embeddings.)warningswarnr   ExperimentalWarningrc   t_embedding_batch_job_sourcer  r   r  r  r    r  )r  r`   rk   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)
    rD  r  )r  r   r  r   list_requestr#   r#   r$   list9  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  5  s    
G
=
T
E
>
Z
2
3r  c                	   @   r  )AsyncBatchesNr  r`   rk   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  ro   rf   r  r  r  r  r  r#   r#   r$   r  X  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  rf   r  r  r  r  r  r#   r#   r$   r    sL   





zAsyncBatches._create_embeddingsr  rU   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  rx   r  r  r4  r  r   Nr  r  )r   r  r  r  r  r  r  r  r   r  r   r  r   r  r  r  r  r  r  ro   rf   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  rx   r  r  r4  r  r   Nr  )r   r  r  r  r~   r  r  r|   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  rH  rE  r  r  r  r  r  r   r  r  r#   r#   r$   r  n	  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  rx   r  r  r4  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  rc   r  r  r   r  r   r  r  r    r  )r  r`   rk   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)
    rD  r  N)r  r   r  r#   r#   r$   r  d
  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  V  s    
G
=
V
E
@
Z
1
:r  )N)Tr  loggingtypingr   r   r   urllib.parser    r   r   r	   r
   rc   r   r  r   r   r   r   r   r   r   pagersr   r   	getLoggerloggerdictr  objectr%   r8   rB   rD   rJ   rS   rT   rf   ro   rt   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   r+   r9  r:  r=  r?  rE  rH  r   r   r  r   
BaseModuler  r  r#   r#   r#   r$   <module>   s  


$

*



)



!



;

=







:









!





!











#









 8

)









*

*















N





D    %