U
    hQ                     @  s<  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 dd	l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Z-dS )    )annotations)Optional)LiteralN   )_legacy_response)batch_list_paramsbatch_create_params)	NOT_GIVENBodyQueryHeadersNotGiven)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                   @  s   e Zd ZeddddZeddddZeeddded	d
dddddddddd
ddZdddeddddddddddZeedddedddddddddd d!Z	dddeddddddddd"d#Z
dS )$r   BatchesWithRawResponsereturnc                 C  s   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#   </tmp/pip-unpacked-wheel-dms8d3uv/openai/resources/batches.pywith_raw_response   s    zBatches.with_raw_responseBatchesWithStreamingResponsec                 C  s   t | S 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$   s    zBatches.with_streaming_responseNmetadataoutput_expires_afterextra_headersextra_query
extra_bodytimeoutLiteral['24h']WLiteral[('/v1/responses', '/v1/chat/completions', '/v1/embeddings', '/v1/completions')]strOptional[Metadata] | NotGiven1batch_create_params.OutputExpiresAfter | NotGivenHeaders | NoneQuery | NoneBody | None'float | httpx.Timeout | None | NotGivenr   
completion_windowendpointinput_file_idr*   r+   r,   r-   r.   r/   r   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`, and `/v1/completions`
              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r:   r;   r<   r*   r+   r,   r-   r.   r/   bodyoptionscast_to)_postr   r   BatchCreateParamsr   r   
r"   r:   r;   r<   r*   r+   r,   r-   r.   r/   r#   r#   r$   create-   s&    7
   zBatches.creater@   batch_idr,   r-   r.   r/   r   c                C  s4   |st d|| j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/r@   rC   rD   
ValueError_getr   r   r"   rJ   r,   r-   r.   r/   r#   r#   r$   retrievev   s       zBatches.retrieveafterlimitr,   r-   r.   r/   str | NotGivenint | NotGivenzSyncCursorPage[Batch]rU   rV   r,   r-   r.   r/   r   c                C  s2   | 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
        r>   )rU   rV   )r,   r-   r.   r/   query)pagerC   model)_get_api_listr   r   r   r   r   BatchListParamsr"   rU   rV   r,   r-   r.   r/   r#   r#   r$   list   s"    !zBatches.listc                C  s6   |st d|| jd| dt||||dtdS )
  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
        rL   rM   /cancelr@   rN   rP   rE   r   r   rR   r#   r#   r$   cancel   s    
   zBatches.cancel__name__
__module____qualname__r   r%   r(   r	   rH   rS   ra   re   r#   r#   r#   r$   r      s8   	$O$:c                   @  s   e Zd ZeddddZeddddZeeddded	d
dddddddddd
ddZdddeddddddddddZeedddedddddddddd d!Z	dddeddddddddd"d#Z
dS )$r   AsyncBatchesWithRawResponser   c                 C  s   t | S r    )rj   r!   r#   r#   r$   r%      s    zAsyncBatches.with_raw_response!AsyncBatchesWithStreamingResponsec                 C  s   t | S r'   )rk   r!   r#   r#   r$   r(      s    z$AsyncBatches.with_streaming_responseNr)   r0   r1   r2   r3   r4   r5   r6   r7   r8   r   r9   c       	   
   	     s>   | j dt|||||dtjI dH t||||	dtdI dH S )r=   r>   r?   Nr@   rA   )rE   r   r   rF   r   r   rG   r#   r#   r$   rH     s&    7
   zAsyncBatches.creater@   rI   c                  s:   |st d|| jd| t||||dtdI dH S )rK   rL   rM   r@   rN   NrO   rR   r#   r#   r$   rS   M  s       zAsyncBatches.retrieverT   rW   rX   z-AsyncPaginator[Batch, AsyncCursorPage[Batch]]rY   c                C  s2   | j dtt t||||t||dtjdtdS rZ   )r^   r   r   r   r   r   r_   r`   r#   r#   r$   ra   n  s"    !zAsyncBatches.listc                  s<   |st d|| jd| dt||||dtdI dH S )rb   rL   rM   rc   r@   rN   Nrd   rR   r#   r#   r$   re     s    
   zAsyncBatches.cancelrf   r#   r#   r#   r$   r      s8   	$O$:c                   @  s   e Zd ZdddddZdS )r   r   Nonebatchesr   c                 C  sB   || _ t|j| _t|j| _t|j| _t|j| _d S N)_batchesr   Zto_raw_response_wrapperrH   rS   ra   re   r"   rn   r#   r#   r$   __init__  s    zBatchesWithRawResponse.__init__Nrg   rh   ri   rr   r#   r#   r#   r$   r     s   r   c                   @  s   e Zd ZdddddZdS )rj   r   rl   rm   c                 C  sB   || _ t|j| _t|j| _t|j| _t|j| _d S ro   )rp   r   Zasync_to_raw_response_wrapperrH   rS   ra   re   rq   r#   r#   r$   rr     s    z$AsyncBatchesWithRawResponse.__init__Nrs   r#   r#   r#   r$   rj     s   rj   c                   @  s   e Zd ZdddddZdS )r&   r   rl   rm   c                 C  s:   || _ t|j| _t|j| _t|j| _t|j| _d S ro   )rp   r   rH   rS   ra   re   rq   r#   r#   r$   rr     s    z%BatchesWithStreamingResponse.__init__Nrs   r#   r#   r#   r$   r&     s   r&   c                   @  s   e Zd ZdddddZdS )rk   r   rl   rm   c                 C  s:   || _ t|j| _t|j| _t|j| _t|j| _d S ro   )rp   r   rH   rS   ra   re   rq   r#   r#   r$   rr     s    z*AsyncBatchesWithStreamingResponse.__init__Nrs   r#   r#   r#   r$   rk     s   rk   ).
__future__r   typingr   Ztyping_extensionsr   Zhttpx r   typesr   r   _typesr	   r
   r   r   r   _utilsr   r   _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   rj   r&   rk   r#   r#   r#   r$   <module>   s.    X X