o
    0Xxi                  	   @   s(  d dl 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mZ 	dRdedeeef dedefddZ	dRdedeeef dedefddZ	dRdedeeef dedefddZ	dRdedeeef dedefddZ	dRdedeeef dedefddZ	dRdedeeef dedefddZ	dRdedeeef dedefddZ	dRdedeeef dedefd d!Z	dRdedeeef dedefd"d#Z	dRdedeeef dedefd$d%Z 	dRdedeeef dedefd&d'Z!	dRdedeeef dedefd(d)Z"	dRdedeeef dedefd*d+Z#	dRdedeeef dedefd,d-Z$	dRdedeeef dedefd.d/Z%	dRdedeeef dedefd0d1Z&	dRdedeeef dedefd2d3Z'	dRdedeeef dedefd4d5Z(	dRdedeeef dedefd6d7Z)	dRdedeeef dedefd8d9Z*	dRdedeeef dedefd:d;Z+	dRdedeeef dedefd<d=Z,	dRdedeeef dedefd>d?Z-	dRdedeeef dedefd@dAZ.	dRdedeeef dedefdBdCZ/	dRdedeeef dedefdDdEZ0	dRdedeeef dedefdFdGZ1	dRdedeeef dedefdHdIZ2	dRdedeeef dedefdJdKZ3	dRdedeeef dedefdLdMZ4G dNdO dOej5Z6G dPdQ dQej5Z7dS )S    )OptionalUnion)	urlencode   )_api_module)_common)_extra_utils)_transformers)types)	ApiClient)get_value_by_path)set_value_by_path)
AsyncPagerPagerN
api_clientfrom_objectparent_objectreturnc                 C   P   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|S Nformatz0format parameter is not supported in Gemini API.gcs_uriz1gcs_uri parameter is not supported in Gemini API.bigquery_uriz6bigquery_uri parameter is not supported in Gemini API.getv
ValueErrorr   r   r   	to_object r   S/home/air/biblejyuku/back/venv/lib/python3.10/site-packages/google/genai/batches.py_BatchJobSource_to_mldev      r    c                 C   ~   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 |S )	Nr   instancesFormatr   	gcsSourceurisr   bigquerySourceinputUrir   setvr   r   r   r   _BatchJobSource_to_vertex1   s   
r*   c                 C   r   r   r   r   r   r   r   _BatchJobDestination_to_mldevG   r!   r+   c                 C   r"   )	Nr   predictionsFormatr   gcsDestinationoutputUriPrefixr   bigqueryDestination	outputUrir(   r   r   r   r   _BatchJobDestination_to_vertexY   s    

r1   c                 C   sF   i }t |dgd urt|dgt |dg t |dgd ur!td|S )Ndisplay_namedisplayNamedestz.dest parameter is not supported in Gemini API.r   r)   r   r   r   r   r   _CreateBatchJobConfig_to_mldevs   s   r6   c                 C   sd   i }t |dgd urt|dgt |dg t |dgd ur0t|dgt| t| t |dg| |S )Nr2   r3   r4   outputConfig)r   r)   r1   tt_batch_job_destinationr   r   r   r   _CreateBatchJobConfig_to_vertex   s   
r:   c                 C   sf   i }t |dgd urtdt |dgd urtdt |dgd ur1t|dgt| t |dg| |S )Nmodelz/model parameter is not supported in Gemini API.srcz-src parameter is not supported in Gemini API.config)r   r   r)   r6   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r4t|dgt| t| t |dg| t |dgd urKt|dgt| t |dg| |S )Nr;   r<   inputConfigr=   )r   r)   r8   t_modelr*   t_batch_job_sourcer:   r   r   r   r   #_CreateBatchJobParameters_to_vertex   s4   
rB   c                 C   F   i }t |dgd urtdt |dgd ur!t|dgt |dg |S Nnamez.name parameter is not supported in Gemini API.r=   r   r   r)   r   r   r   r   _GetBatchJobParameters_to_mldev      rG   c              	   C   ^   i }t |dgd urt|ddgt| t |dg t |dgd ur-t|dgt |dg |S NrE   _urlr=   r   r)   r8   t_batch_job_namer   r   r   r    _GetBatchJobParameters_to_vertex      rN   c                 C   rC   rD   rF   r   r   r   r   "_CancelBatchJobParameters_to_mldev   rH   rP   c              	   C   rI   rJ   rL   r   r   r   r   #_CancelBatchJobParameters_to_vertex  rO   rQ   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.r5   r   r   r   r   _ListBatchJobsConfig_to_mldev  s   
rX   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 )NrR   rS   rT   rU   rV   rW   r(   r   r   r   r   _ListBatchJobsConfig_to_vertex4  s   
rY   c                 C   s    i }t |dgd urtd|S )Nr=   z0config parameter is not supported in Gemini API.r   r   r   r   r   !_ListBatchJobsParameters_to_mldevM  s   rZ   c                 C   s6   i }t |dgd urt|dgt| t |dg| |S )Nr=   )r   r)   rY   r   r   r   r   "_ListBatchJobsParameters_to_vertexY  s   r[   c                 C   rC   rD   rF   r   r   r   r   "_DeleteBatchJobParameters_to_mldevk  rH   r\   c              	   C   rI   rJ   rL   r   r   r   r   #_DeleteBatchJobParameters_to_vertexz  rO   r]   c                 C      i }|S Nr   r   r   r   r   _JobError_from_mldev     r`   c                 C   sz   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 |S )Ndetailscodemessager(   r   r   r   r   _JobError_from_vertex  s   re   c                 C   r^   r_   r   r   r   r   r   _BatchJobSource_from_mldev  ra   rf   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 )	Nr#   r   r$   r%   r   r&   r'   r   r(   r   r   r   r   _BatchJobSource_from_vertex  s   rh   c                 C   r^   r_   r   r   r   r   r   _BatchJobDestination_from_mldev  ra   ri   c                 C   rg   )	Nr,   r   r-   r.   r   r/   r0   r   r(   r   r   r   r    _BatchJobDestination_from_vertex  s    rj   c                 C   r^   r_   r   r   r   r   r   _BatchJob_from_mldev  ra   rk   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rRt|dgt| t |dg| t |dgd uret|dgt |dg t |dgd urxt|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 |dg| |S )NrE   r3   r2   stateerror
createTimecreate_time	startTime
start_timeendTimeend_time
updateTimeupdate_timer;   r?   r<   r7   r4   )r   r)   re   rh   rj   r   r   r   r   _BatchJob_from_vertex  sT   rv   c                 C   s.   i }t |dgd urt|dgt |dg |S )NnextPageTokennext_page_tokenr(   r   r   r   r   !_ListBatchJobsResponse_from_mldev3  s   ry   c                    sd   i t |dgd urtdgt |dg t |dgd ur0tdg fddt |dgD  S )Nrw   rx   batchPredictionJobs
batch_jobsc                    s   g | ]}t  |qS r   )rv   ).0itemr   r   r   r   
<listcomp>L  s    
z6_ListBatchJobsResponse_from_vertex.<locals>.<listcomp>r(   )r   r   r   r   r~   r   "_ListBatchJobsResponse_from_vertex?  s   
	r   c                 C   r^   r_   r   r   r   r   r   _DeleteResourceJob_from_mldevU  ra   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| |S )NrE   donerm   )r   r)   re   r   r   r   r   _DeleteResourceJob_from_vertex_  s   r   c                	   @      e Zd Zdddede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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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<   r=   r   c                C   s   t j|||d}| jjstdt| j|}d|d}|d}|r.| dt| }|	dd  d }t
|trB|dd }nt|drJ|j}t|}t|}| jd	|||}	| jjrht| j|	}	nt| j|	}	t jj|	|d
}
| j|
 |
S Nr;   r<   r=   6This method is only supported in the Vertex AI client.rz   rK   rS   ?r=   http_optionspostresponsekwargs)r
   _CreateBatchJobParameters_api_clientvertexair   rB   
format_mapgetr   pop
isinstancedicthasattrr   r   convert_to_dictencode_unserializable_typesrequestrv   rk   BatchJob_from_response_verify_responseselfr;   r<   r=   parameter_modelrequest_dictpathquery_paramsr   response_dictreturn_valuer   r   r   _createy  sB   




zBatches._createrE   c          
      C      t j||d}| jjstdt| j|}d|d}|d}|r-| dt| }|	dd d}t
|trA|d	d}nt|d	rI|j}t|}t|}| jd
|||}| jjrgt| j|}nt| j|}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 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}")
    rE   r=   r   batchPredictionJobs/{name}rK   rS   r   r=   Nr   r   r   )r
   _GetBatchJobParametersr   r   r   rN   r   r   r   r   r   r   r   r   r   r   r   r   rv   rk   r   r   r   
r   rE   r=   r   r   r   r   r   r   r   r   r   r   r     s@   




zBatches.getc          	      C   s   t j||d}| jjstdt| j|}d|d}|d}|r-| dt| }|	dd d}t
|trA|d	d}nt|d	rI|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/123456789" or
          "123456789" when project and location are initialized in the client.

    Usage:

    .. code-block:: python

      client.batches.cancel(name='123456789')
    r   r   z!batchPredictionJobs/{name}:cancelrK   rS   r   r=   Nr   r   )r
   _CancelBatchJobParametersr   r   r   rQ   r   r   r   r   r   r   r   r   r   r   r   r   	r   rE   r=   r   r   r   r   r   r   r   r   r   cancel  s4   




zBatches.cancelc          	      C   s   t j|d}| jjstdt| j|}d|d}|d}|r,| dt| }|	dd  d }t
|tr@|dd }nt|drH|j}t|}t|}| jd	|||}| jjrft| j|}nt| j|}t jj||d
}| j| |S Nr   r   rz   rK   rS   r   r=   r   r   r   )r
   _ListBatchJobsParametersr   r   r   r[   r   r   r   r   r   r   r   r   r   r   r   r   r   ry   ListBatchJobsResponser   r   	r   r=   r   r   r   r   r   r   r   r   r   r   _list$  sF   




zBatches._listc          
      C   r   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   r   r   rK   rS   r   r=   Nr   deleter   )r
   _DeleteBatchJobParametersr   r   r   r]   r   r   r   r   r   r   r   r   r   r   r   r   r   r   DeleteResourceJobr   r   r   r   r   r   r   U  sH   




zBatches.deletec                C   s   t ||}| j|||dS )a{  Creates a batch job.

    Args:
      model (str): The model to use for the batch job.
      src (str): The source of the batch job. Currently supports GCS URI(-s) or
        BigQuery URI. Example: "gs://path/to/input/data" or
        "bq://projectId.bqDatasetId.bqTableId".
      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-1.5-flash",
          src="gs://path/to/input/data",
      )
      print(batch_job.state)
    r   r   format_destinationr   r   r;   r<   r=   r   r   r   create  s   zBatches.createc                C   s   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}")
    r{   r   )r   r   r   r=   r   r   r   list  s   
zBatches.list)__name__
__module____qualname__strr   r
   CreateBatchJobConfigOrDictr   r   GetBatchJobConfigOrDictr   CancelBatchJobConfigOrDictr   ListBatchJobsConfigOrDictr   r   DeleteBatchJobConfigOrDictr   r   r   r   r   r   r   r   r   r   w  sp    
4
D
8
5
K
!r   c                	   @   r   )AsyncBatchesNr   r;   r<   r=   r   c                   s  t j|||d}| jjstdt| j|}d|d}|d}|r/| dt| }|	dd  d }t
|trC|dd }nt|drK|j}t|}t|}| jd	|||I d H }	| jjrlt| j|	}	nt| j|	}	t jj|	|d
}
| j|
 |
S r   )r
   r   r   r   r   rB   r   r   r   r   r   r   r   r   r   r   r   async_requestrv   rk   r   r   r   r   r   r   r   r     sD   





zAsyncBatches._createrE   c          
           t j||d}| jjstdt| j|}d|d}|d}|r.| dt| }|	dd d}t
|trB|d	d}nt|d	rJ|j}t|}t|}| jd
|||I dH }| jjrkt| j|}nt| j|}t jj||d}	| j|	 |	S r   )r
   r   r   r   r   rN   r   r   r   r   r   r   r   r   r   r   r   r   rv   rk   r   r   r   r   r   r   r   r     sB   





zAsyncBatches.getc          	         s   t j||d}| jjstdt| j|}d|d}|d}|r.| dt| }|	dd d}t
|trB|d	d}nt|d	rJ|j}t|}t|}| jd
|||I dH }dS r   )r
   r   r   r   r   rQ   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   L  s6   




zAsyncBatches.cancelc          	         s   t j|d}| jjstdt| j|}d|d}|d}|r-| dt| }|	dd  d }t
|trA|dd }nt|drI|j}t|}t|}| jd	|||I d H }| jjrjt| j|}nt| j|}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   ry   r   r   r   r   r   r   r   r     sH   





zAsyncBatches._listc          
         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     sJ   





zAsyncBatches.deletec                   s$   t ||}| j|||dI dH S )aw  Creates a batch job asynchronously.

    Args:
      model (str): The model to use for the batch job.
      src (str): The source of the batch job. Currently supports GCS URI(-s) or
        BigQuery URI. Example: "gs://path/to/input/data" or
        "bq://projectId.bqDatasetId.bqTableId".
      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-1.5-flash",
          src="gs://path/to/input/data",
      )
    r   Nr   r   r   r   r   r     s   zAsyncBatches.createc                   s    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}")
    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     sp    
4
D
8
5
K
 r   r_   )8typingr   r   urllib.parser    r   r   r   r	   r8   r
   r   r   r   r   r   r)   pagersr   r   r   objectr    r*   r+   r1   r6   r:   r>   rB   rG   rN   rP   rQ   rX   rY   rZ   r[   r\   r]   r`   re   rf   rh   ri   rj   rk   rv   ry   r   r   r   
BaseModuler   r   r   r   r   r   <module>   sv  















'



































?







  b