o
    i&                    @   s  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	drdeeeef ef deeeef  deeef fddZ	drdeeeef ef deeeef  deeef fddZ 	drdeeeef ef deeeef  deeef fddZ!	drdeeeef ef deeeef  deeef fddZ"	drdedeeeef ef deeeef  deeef fddZ#	drdeeeef ef deeeef  deeef fddZ$	drdeeeef ef deeeef  deeef fd d!Z%	drdeeeef ef deeeef  deeef fd"d#Z&	drdeeeef ef deeeef  deeef fd$d%Z'	drdedeeeef ef deeeef  deeef fd&d'Z(	drdedeeeef ef deeeef  deeef fd(d)Z)	drdeeeef ef deeeef  deeef fd*d+Z*	drdeeeef ef deeeef  deeef fd,d-Z+	drdeeeef ef deeeef  deeef fd.d/Z,	drdeeeef ef deeeef  deeef fd0d1Z-	drdeeeef ef deeeef  deeef fd2d3Z.	drdedeeeef ef deeeef  deeef fd4d5Z/	drdedeeeef ef deeeef  deeef fd6d7Z0	drdeeeef ef deeeef  deeef fd8d9Z1	drdedeeeef ef deeeef  deeef fd:d;Z2	drdedeeeef ef deeeef  deeef fd<d=Z3	drdedeeeef ef deeeef  deeef fd>d?Z4	drdeeeef ef deeeef  deeef fd@dAZ5	drdeeeef ef deeeef  deeef fdBdCZ6	drdedeeeef ef deeeef  deeef fdDdEZ7	drdeeeef ef deeeef  deeef fdFdGZ8	drdedeeeef ef deeeef  deeef fdHdIZ9	drdeeeef ef deeeef  deeef fdJdKZ:	drdedeeeef ef deeeef  deeef fdLdMZ;	drdeeeef ef deeeef  deeef fdNdOZ<	drdedeeeef ef deeeef  deeef fdPdQZ=	drdedeeeef ef deeeef  deeef fdRdSZ>	drdeeeef ef deeeef  deeef fdTdUZ?	drdeeeef ef deeeef  deeef fdVdWZ@	drdedeeeef ef deeeef  deeef fdXdYZA	drdeeeef ef deeeef  deeef fdZd[ZB	drdeeeef ef deeeef  deeef fd\d]ZC	drdeeeef ef deeeef  deeef fd^d_ZD	drdeeeef ef deeeef  deeef fd`daZE	drdeeeef ef deeeef  deeef fdbdcZF	drdeeeef ef deeeef  deeef fdddeZG	drdeeeef ef deeeef  deeef fdfdgZH	drdeeeef ef deeeef  deeef fdhdiZI	drdeeeef ef deeeef  deeef fdjdkZJ	drdeeeef ef deeeef  deeef fdldmZKG dndo doe	jLZMG dpdq dqe	jLZNdS )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                    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  )_InlinedResponse_from_mldev.0item	to_objectr   Z/var/www/html/karishye-ai-python/venv/lib/python3.10/site-packages/google/genai/batches.py
<listcomp>3       z3_BatchJobDestination_from_mldev.<locals>.<listcomp>inlinedEmbedContentResponsesinlined_embed_content_responsesc                 S      g | ]}|qS r   r   r   r   r   r!   r"   B       getvsetvr   r   r   r   r!   _BatchJobDestination_from_mldev&   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   r   r!    _BatchJobDestination_from_vertexN   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 )Nr/   r.   r2   r0   r1   r5   r3   r4   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*   
ValueErrorr6   r   r   r!   _BatchJobDestination_to_vertexg   s4   

r;   c                 C   r-   )	NinstancesFormatr/   	gcsSourceurisr2   bigquerySourceinputUrir5   r(   r6   r   r   r!   _BatchJobSource_from_vertex   s   rA   
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.r2   z1gcs_uri parameter is not supported in Gemini API.r5   z6bigquery_uri parameter is not supported in Gemini API.r   fileNameinlined_requestsrequestsc                    s   g | ]}t  |qS r   )_InlinedRequest_to_mldevr   rB   r    r   r!   r"      s    
z,_BatchJobSource_to_mldev.<locals>.<listcomp>r)   r:   r*   rB   r   r   r   rG   r!   _BatchJobSource_to_mldev   s$   
	rJ   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/   r<   r2   r=   r>   r5   r?   r@   r   r8   rD   z9inlined_requests parameter is not supported in Vertex AI.r9   r6   r   r   r!   _BatchJobSource_to_vertex   s$   
rK   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_destinationr6   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 )NrL   rN   rO   rP   errorrQ   rR   	startTime
start_timerS   rT   rU   rV   rW   inputConfigsrcoutputConfigrY   completionStatscompletion_stats)r)   r*   rZ   r[   rA   r7   r\   r6   r   r   r!   _BatchJob_from_vertex  sR   	rf   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datarO   6display_name parameter is not supported in Gemini API.	mime_typemimeTyper9   r6   r   r   r!   _Blob_to_mldevS     rk   c              	   C   8   i }t |dgd urt|ddgt| t |dg |S NrL   _urlr)   r*   rZ   t_batch_job_namerB   r   r   r    r   r   r!   "_CancelBatchJobParameters_to_mldevd     rs   c              	   C   rm   rn   rp   rr   r   r   r!   #_CancelBatchJobParameters_to_vertext  rt   ru   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avgLogprobsavg_logprobsgroundingMetadatagrounding_metadataindexlogprobsResultlogprobs_resultsafetyRatingssafety_ratingsc                 S   r&   r   r   r   r   r   r!   r"         z)_Candidate_from_mldev.<locals>.<listcomp>urlContextMetadataurl_context_metadata)r)   r*   _CitationMetadata_from_mldevr6   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   r&   r   r   r   r   r   r!   r"     r   z0_CitationMetadata_from_mldev.<locals>.<listcomp>r(   r6   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!   r"     r#   z%_Content_to_mldev.<locals>.<listcomp>roler(   r+   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 )NrO   batchrN   rY   z.dest parameter is not supported in Gemini API.r9   r6   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 )NrO   rN   rY   rc   )r)   r*   r;   rZ   t_batch_job_destinationr6   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 NrW   ro   rb   r   ra   config)r)   r*   rZ   t_modelrJ   t_batch_job_sourcer   rr   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 )NrW   rb   ra   r   )r)   r*   rZ   r   rK   r   r   rr   r   r   r!   #_CreateBatchJobParameters_to_vertex&  s&   	r   c                 C   s0   i }t | dgd urt|ddgt | dg |S )NrO   r   rN   r(   r6   r   r   r!   (_CreateEmbeddingsBatchJobConfig_to_mldevC  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*   rZ   r   "_EmbeddingsBatchJobSource_to_mldevr   rr   r   r   r!   ,_CreateEmbeddingsBatchJobParameters_to_mldevS  s(   r   c              	   C   rm   rn   rp   rr   r   r   r!   "_DeleteBatchJobParameters_to_mldevq  rt   r   c              	   C   rm   rn   rp   rr   r   r   r!   #_DeleteBatchJobParameters_to_vertex  rt   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_responserL   doner^   r(   r6   r   r   r!   _DeleteResourceJob_from_mldev     r   c                 C   r   r   r(   r6   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[]requestrv   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*   rZ   t_contents_for_embed_EmbedContentConfig_to_mldevmovevrr   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outputDimensionalityri   z3mime_type parameter is not supported in Gemini API.auto_truncatez7auto_truncate parameter is not supported in Gemini API.r9   r6   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   rD   rE   )r)   r*   r   rr   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 )NrO   rh   file_urifileUriri   rj   rH   r6   r   r   r!   _FileData_to_mldev  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 |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r-td7gt |d6g S )8N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!   r"   }  r#   z3_GenerateContentConfig_to_mldev.<locals>.<listcomp>toolsc                    s   g | ]}t t |qS r   )_Tool_to_mldevrZ   t_toolr   rG   r   r!   r"     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)
r)   r*   r   rZ   	t_contentt_schemar:   t_toolst_cached_content_namet_speech_configrI   r   rG   r!   _GenerateContentConfig_to_mldev  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   )r   r   r   r   r!   r"     r#   z7_GenerateContentResponse_from_mldev.<locals>.<listcomp>modelVersionmodel_versionpromptFeedbackprompt_feedback
responseIdresponse_idusageMetadatausage_metadatar(   r+   r   r   r!   #_GenerateContentResponse_from_mldev  s,   

	r   c              	   C   rm   rn   rp   rr   r   r   r!   _GetBatchJobParameters_to_mldev  rt   r   c              	   C   rm   rn   rp   rr   r   r   r!    _GetBatchJobParameters_to_vertex  rt   r   c                 C   sF   i }t | dgd urtdt | dgd ur!t|dgt | dg |S )Nauth_configz5auth_config parameter is not supported in Gemini API.enable_widgetenableWidgetrH   r6   r   r   r!   _GoogleMaps_to_mldev   s   r  c                 C   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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timeRangeFilterrH   r6   r   r   r!   _GoogleSearch_to_mldev  s   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 )
NrW   r   r   c                    r   r   )r   r   r   r   r!   r"   6  r#   z,_InlinedRequest_to_mldev.<locals>.<listcomp>rM   r   generationConfig)default_value)r)   r*   rZ   r   
t_contentsr   rI   r   r   r!   rF   %  s8   
	

rF   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responser^   )r)   r*   r   r6   r   r   r!   r   M  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.r9   r6   r   r   r!   _ListBatchJobsConfig_to_mldeva  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(   r6   r   r   r!   _ListBatchJobsConfig_to_vertexy  s   
r  c                 C   *   i }t | dgd urtt | dg| |S Nr   )r)   r  r6   r   r   r!   !_ListBatchJobsParameters_to_mldev     r  c                 C   r  r  )r)   r  r6   r   r   r!   "_ListBatchJobsParameters_to_vertex  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"     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   )rf   r   r   r   r!   r"     r#   z6_ListBatchJobsResponse_from_vertex.<locals>.<listcomp>r(   r+   r   r   r!   "_ListBatchJobsResponse_from_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 | 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rdt|d
gt | d	g t | dgd urzt|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 |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)r)   r*   r   rk   r6   r   r   r!   r     sT   


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.	thresholdr9   r6   r   r   r!   r     rl   r   c                 C   s~  i }t | dgd urt|dgdd t | dg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rLt|d
gt | d	g t | dgd ur_t|dgt | dg t | dgd urrt|dgt | dg t | dgd ur~tdt | dgd urt|dgt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 |S )Nfunction_declarationsfunctionDeclarationsc                 S   r&   r   r   r   r   r   r!   r"   /  r   z"_Tool_to_mldev.<locals>.<listcomp>	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)r)   r*   r:   r  r  r6   r   r   r!   r   &  sP   
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rW   r   rW   rb   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rW   rb   r   ro   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loadsrf   r]   BatchJob_from_response
model_dump_verify_responseselfrW   rb   r   parameter_modelrequest_dictrequest_url_dictpathquery_paramsrW  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 
NrL  z=This method is only supported in the Gemini Developer client.ro   z{model}:asyncBatchEmbedContentr  rM  r   rN  rO  )r   #_CreateEmbeddingsBatchJobParametersrR  rS  r:   r   rT  rU  r   rV  r   rW  r   rX  rY  r   rZ  r[  r\  r]   r]  r^  r_  r`  ra  r   r   r!   _create_embeddings  sJ   




zBatches._create_embeddingsr   rL   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}")
    rL   r   ro   batchPredictionJobs/{name}batches/{name}r  rM  r   NrT  rO  )r   _GetBatchJobParametersrR  rS  r   rT  rU  r   r   rV  r   rW  r   rX  rY  r   rZ  r[  r\  rf   r]   r]  r^  r_  r`  rb  rL   r   rc  rd  re  rf  rg  rW  r
  rh  ri  r   r   r!   rT    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')
    ro  ro   !batchPredictionJobs/{name}:cancelbatches/{name}:cancelr  rM  r   NrN  )r   _CancelBatchJobParametersrR  rS  ru   rT  rU  rs   r   rV  r   rW  r   rX  rY  r   
rb  rL   r   rc  rd  re  rf  rg  rW  r
  r   r   r!   cancel0  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 Nrn  ro   r  batchesr  rM  r   rT  rO  headers)r   _ListBatchJobsParametersrR  rS  r  rT  rU  r  r   rV  r   rW  r   rX  rY  r   rZ  r[  r\  r   r  ListBatchJobsResponser^  r_  HttpResponser|  r   r`  rb  r   rc  rd  re  rf  rg  rW  r
  rh  ri  r   r   r!   _listt  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')
    ro  ro   rp  rq  r  rM  r   NdeleterO  r{  )r   _DeleteBatchJobParametersrR  rS  r   rT  rU  r   r   rV  r   rW  r   rX  rY  r   rZ  r[  r\  r   r   DeleteResourceJobr^  r_  r  r|  r   r`  rs  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)
    rL  
rZ   r   rR  r   rQ  rS  r	   format_destinationr   rj  rb  rW   rb   r   rc  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.   r3  
stacklevelrL  5Vertex AI does not support batches.create_embeddings.)warningswarnr   ExperimentalWarningrZ   t_embedding_batch_job_sourcerR  r   rl  rS  r:   rm  )rb  rW   rb   r   r  rc  r   r   r!   create_embeddings0  s   zBatches.create_embeddingsc                C   s(   |du rt  }td| j| 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

      batch_jobs = client.batches.list(config={"page_size": 10})
      for batch_job in batch_jobs:
        print(f"Batch job: {batch_job.name}, state {batch_job.state}")
    Nr  rn  )r   ListBatchJobsConfigr   r  rb  r   r   r   r!   listb  s   
zBatches.list)__name__
__module____qualname__r   strr   r   BatchJobSourceUnionBatchJobSourceUnionDictCreateBatchJobConfigOrDictr]  rj  EmbeddingsBatchJobSourceOrDict$CreateEmbeddingsBatchJobConfigOrDictrm  GetBatchJobConfigOrDictrT  CancelBatchJobConfigOrDictrx  ListBatchJobsConfigOrDictr~  r  DeleteBatchJobConfigOrDictr  r  r  r  r   r  r   r   r   r!   rI  ^  s    
G
=
T
E
>
Z
2
3rI  c                	   @   rH  )AsyncBatchesNrJ  rW   rb   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 rK  )r   rQ  rR  rS  r   rT  rU  r   r   rV  r   rW  r   rX  rY  async_requestrZ  r[  r\  rf   r]   r]  r^  r_  r`  ra  r   r   r!   rj    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 rk  )r   rl  rR  rS  r:   r   rT  rU  r   rV  r   rW  r   rX  rY  r  rZ  r[  r\  r]   r]  r^  r_  r`  ra  r   r   r!   rm    sL   





zAsyncBatches._create_embeddingsrn  rL   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}")
    ro  ro   rp  rq  r  rM  r   NrT  rO  )r   rr  rR  rS  r   rT  rU  r   r   rV  r   rW  r   rX  rY  r  rZ  r[  r\  rf   r]   r]  r^  r_  r`  rs  r   r   r!   rT    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')
    ro  ro   rt  ru  r  rM  r   NrN  )r   rv  rR  rS  ru   rT  rU  rs   r   rV  r   rW  r   rX  rY  r  rw  r   r   r!   rx  T  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 ry  )r   r}  rR  rS  r  rT  rU  r  r   rV  r   rW  r   rX  rY  r  rZ  r[  r\  r   r  r~  r^  r_  r  r|  r   r`  r  r   r   r!   r    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')
    ro  ro   rp  rq  r  rM  r   Nr  rO  r{  )r   r  rR  rS  r   rT  rU  r   r   rV  r   rW  r   rX  rY  r  rZ  r[  r\  r   r   r  r^  r_  r  r|  r   r`  rs  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",
      )
    rL  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  rL  r  )r  r  r   r  rZ   r  rR  r   rl  r   rW  rS  r:   rm  )rb  rW   rb   r   r  rc  rW  r   r   r!   r  U	  s(   
zAsyncBatches.create_embeddingsc                   s0   |du r	t  }td| j| 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

      batch_jobs = await client.aio.batches.list(config={'page_size': 5})
      print(f"current page: {batch_jobs.page}")
      await batch_jobs_pager.next_page()
      print(f"next page: {batch_jobs_pager.page}")
    Nr  rn  )r   r  r   r  r  r   r   r!   r  	  s   zAsyncBatches.list)r  r  r  r   r  r   r   r  r  r  r]  rj  r  r  rm  r  rT  r  rx  r  r~  r  r  r  r  r  r  r   r  r   r   r   r!   r    s    
G
=
V
E
@
Z
1
:r  )N)Or[  loggingtypingr   r   r   urllib.parser    r   r   r	   r
   rZ   r   rR  r   r   r)   r   r   r   r*   pagersr   r   	getLoggerloggerdictr  objectr,   r7   r;   rA   rJ   rK   r]   rf   rk   rs   ru   r   r   r   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   r   
BaseModulerI  r  r   r   r   r!   <module>   s4  


*



)



!



;

=







:









!





!











#





 !

&









*















<



8    &