o
    iT                     @  sH  d dl mZ d dlmZ d dlmZ d dlZddlmZ ddl	m
Z
mZ ddlmZmZmZmZmZmZmZ dd	lmZmZmZ dd
lmZ ddlmZmZ ddlmZmZ ddl m!Z!m"Z" ddl#m$Z$ ddl%m&Z&m'Z' ddl(m)Z) ddgZ*G dd deZ+G dd deZ,G dd dZ-G dd dZ.G dd dZ/G dd dZ0dS )    )annotations)Optional)LiteralN   )_legacy_response)batch_list_paramsbatch_create_params)BodyOmitQueryHeadersNotGivenomit	not_given)path_templatemaybe_transformasync_maybe_transform)cached_property)SyncAPIResourceAsyncAPIResource)to_streamed_response_wrapper"async_to_streamed_response_wrapper)SyncCursorPageAsyncCursorPage)Batch)AsyncPaginatormake_request_options)MetadataBatchesAsyncBatchesc                   @     e Zd ZdZed.ddZed/ddZeed	d	d	ed
d0ddZ	d	d	d	ed d1d"d#Z
eed	d	d	ed$d2d*d+Zd	d	d	ed d1d,d-Zd	S )3r   ;Create large batches of API requests to run asynchronously.returnBatchesWithRawResponsec                 C     t | S a  
        This property can be used as a prefix for any HTTP method call to return
        the raw response object instead of the parsed content.

        For more information, see https://www.github.com/openai/openai-python#accessing-raw-response-data-eg-headers
        )r#   self r(   R/home/kim/smarthome/.venv/lib/python3.10/site-packages/openai/resources/batches.pywith_raw_response      zBatches.with_raw_responseBatchesWithStreamingResponsec                 C  r$   z
        An alternative to `.with_raw_response` that doesn't eagerly read the response body.

        For more information, see https://www.github.com/openai/openai-python#with_streaming_response
        )r,   r&   r(   r(   r)   with_streaming_response&      zBatches.with_streaming_responseNmetadataoutput_expires_afterextra_headersextra_query
extra_bodytimeoutcompletion_windowLiteral['24h']endpointLiteral['/v1/responses', '/v1/chat/completions', '/v1/embeddings', '/v1/completions', '/v1/moderations', '/v1/images/generations', '/v1/images/edits', '/v1/videos']input_file_idstrr1   Optional[Metadata] | Omitr2   -batch_create_params.OutputExpiresAfter | Omitr3   Headers | Noner4   Query | Noner5   Body | Noner6   'float | httpx.Timeout | None | NotGivenr   c       	   
   	   C  s2   | j dt|||||dtjt||||	dtdS )  
        Creates and executes a batch from an uploaded file of requests

        Args:
          completion_window: The time frame within which the batch should be processed. Currently only `24h`
              is supported.

          endpoint: The endpoint to be used for all requests in the batch. Currently
              `/v1/responses`, `/v1/chat/completions`, `/v1/embeddings`, `/v1/completions`,
              `/v1/moderations`, `/v1/images/generations`, `/v1/images/edits`, and
              `/v1/videos` are supported. Note that `/v1/embeddings` batches are also
              restricted to a maximum of 50,000 embedding inputs across all requests in the
              batch.

          input_file_id: The ID of an uploaded file that contains requests for the new batch.

              See [upload file](https://platform.openai.com/docs/api-reference/files/create)
              for how to upload a file.

              Your input file must be formatted as a
              [JSONL file](https://platform.openai.com/docs/api-reference/batch/request-input),
              and must be uploaded with the purpose `batch`. The file can contain up to 50,000
              requests, and can be up to 200 MB in size.

          metadata: Set of 16 key-value pairs that can be attached to an object. This can be useful
              for storing additional information about the object in a structured format, and
              querying for objects via API or the dashboard.

              Keys are strings with a maximum length of 64 characters. Values are strings with
              a maximum length of 512 characters.

          output_expires_after: The expiration policy for the output and/or error file that are generated for a
              batch.

          extra_headers: Send extra headers

          extra_query: Add additional query parameters to the request

          extra_body: Add additional JSON properties to the request

          timeout: Override the client-level default timeout for this request, in seconds
        /batchesr7   r9   r;   r1   r2   r3   r4   r5   r6   bodyoptionscast_to)_postr   r   BatchCreateParamsr   r   
r'   r7   r9   r;   r1   r2   r3   r4   r5   r6   r(   r(   r)   create/   s    B
zBatches.createrF   batch_idc                C  6   |s	t d|| jtd|dt||||dtdS )F  
        Retrieves a batch.

        Args:
          extra_headers: Send extra headers

          extra_query: Add additional query parameters to the request

          extra_body: Add additional JSON properties to the request

          timeout: Override the client-level default timeout for this request, in seconds
        7Expected a non-empty value for `batch_id` but received /batches/{batch_id}rO   rF   rI   rJ   
ValueError_getr   r   r   r'   rO   r3   r4   r5   r6   r(   r(   r)   retrieve   s   
zBatches.retrieveafterlimitr3   r4   r5   r6   r\   
str | Omitr]   
int | OmitSyncCursorPage[Batch]c                C  2   | j dtt t||||t||dtjdtdS a,  List your organization's batches.

        Args:
          after: A cursor for use in pagination.

        `after` is an object ID that defines your place
              in the list. For instance, if you make a list request and receive 100 objects,
              ending with obj_foo, your subsequent call can include after=obj_foo in order to
              fetch the next page of the list.

          limit: A limit on the number of objects to be returned. Limit can range between 1 and
              100, and the default is 20.

          extra_headers: Send extra headers

          extra_query: Add additional query parameters to the request

          extra_body: Add additional JSON properties to the request

          timeout: Override the client-level default timeout for this request, in seconds
        rD   )r\   r]   )r3   r4   r5   r6   query)pagerI   model)_get_api_listr   r   r   r   r   BatchListParamsr'   r\   r]   r3   r4   r5   r6   r(   r(   r)   list   "   !zBatches.listc                C  rP   )
  Cancels an in-progress batch.

        The batch will be in status `cancelling` for up to
        10 minutes, before changing to `cancelled`, where it will have partial results
        (if any) available in the output file.

        Args:
          extra_headers: Send extra headers

          extra_query: Add additional query parameters to the request

          extra_body: Add additional JSON properties to the request

          timeout: Override the client-level default timeout for this request, in seconds
        rR   /batches/{batch_id}/cancelrT   rF   rU   rW   rK   r   r   r   rY   r(   r(   r)   cancel   s   
zBatches.cancel)r"   r#   )r"   r,   r7   r8   r9   r:   r;   r<   r1   r=   r2   r>   r3   r?   r4   r@   r5   rA   r6   rB   r"   r   rO   r<   r3   r?   r4   r@   r5   rA   r6   rB   r"   r   )r\   r^   r]   r_   r3   r?   r4   r@   r5   rA   r6   rB   r"   r`   __name__
__module____qualname____doc__r   r*   r.   r   r   rN   rZ   ri   rn   r(   r(   r(   r)   r      <    	Z$:c                   @  r    )3r   r!   r"   AsyncBatchesWithRawResponsec                 C  r$   r%   )rw   r&   r(   r(   r)   r*      r+   zAsyncBatches.with_raw_response!AsyncBatchesWithStreamingResponsec                 C  r$   r-   )rx   r&   r(   r(   r)   r.   
  r/   z$AsyncBatches.with_streaming_responseNr0   r7   r8   r9   r:   r;   r<   r1   r=   r2   r>   r3   r?   r4   r@   r5   rA   r6   rB   r   c       	   
   	     s@   | j dt|||||dtjI dH t||||	dtdI dH S )rC   rD   rE   NrF   rG   )rK   r   r   rL   r   r   rM   r(   r(   r)   rN     s"   B
zAsyncBatches.createrF   rO   c                  >   |s
t d|| jtd|dt||||dtdI dH S )rQ   rR   rS   rT   rF   rU   NrV   rY   r(   r(   r)   rZ   g  s   
zAsyncBatches.retriever[   r\   r^   r]   r_   -AsyncPaginator[Batch, AsyncCursorPage[Batch]]c                C  ra   rb   )rf   r   r   r   r   r   rg   rh   r(   r(   r)   ri     rj   zAsyncBatches.listc                  ry   )rk   rR   rl   rT   rF   rU   Nrm   rY   r(   r(   r)   rn     s   
zAsyncBatches.cancel)r"   rw   )r"   rx   ro   rp   )r\   r^   r]   r_   r3   r?   r4   r@   r5   rA   r6   rB   r"   rz   rq   r(   r(   r(   r)   r      rv   c                   @     e Zd ZdddZdS )	r#   batchesr   r"   Nonec                 C  B   || _ t|j| _t|j| _t|j| _t|j| _d S N)_batchesr   Zto_raw_response_wrapperrN   rZ   ri   rn   r'   r|   r(   r(   r)   __init__     
zBatchesWithRawResponse.__init__Nr|   r   r"   r}   rr   rs   rt   r   r(   r(   r(   r)   r#         r#   c                   @  r{   )	rw   r|   r   r"   r}   c                 C  r~   r   )r   r   Zasync_to_raw_response_wrapperrN   rZ   ri   rn   r   r(   r(   r)   r     r   z$AsyncBatchesWithRawResponse.__init__Nr|   r   r"   r}   r   r(   r(   r(   r)   rw     r   rw   c                   @  r{   )	r,   r|   r   r"   r}   c                 C  :   || _ t|j| _t|j| _t|j| _t|j| _d S r   )r   r   rN   rZ   ri   rn   r   r(   r(   r)   r        
z%BatchesWithStreamingResponse.__init__Nr   r   r(   r(   r(   r)   r,     r   r,   c                   @  r{   )	rx   r|   r   r"   r}   c                 C  r   r   )r   r   rN   rZ   ri   rn   r   r(   r(   r)   r     r   z*AsyncBatchesWithStreamingResponse.__init__Nr   r   r(   r(   r(   r)   rx     r   rx   )1
__future__r   typingr   Ztyping_extensionsr   Zhttpx r   typesr   r   _typesr	   r
   r   r   r   r   r   Z_utilsr   r   r   Z_compatr   Z	_resourcer   r   	_responser   r   Z
paginationr   r   Ztypes.batchr   Z_base_clientr   r   Ztypes.shared_params.metadatar   __all__r   r   r#   rw   r,   rx   r(   r(   r(   r)   <module>   s0   $ e e