U
    ·ÜŸjÅa  ã                   @  sÌ  d dl mZ d dlZd dlmZmZmZ d dlmZm	Z	 d dl
Z
ddlmZ ddl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m Z m!Z!m"Z"m#Z#m$Z$ ddl%m&Z&m'Z' ddlm(Z(m)Z) ddl*m+Z+m,Z,m-Z- ddl.m/Z/ ddl0m1Z1 ddl2m3Z3 ddl4m5Z5 ddl6m7Z7 ddl8m9Z9 ddl:m;Z; ddl<m=Z= ddddddddgZ>G dd„ de,ƒZ?G d d„ de-ƒZ@G d!d"„ d"ƒZAG d#d$„ d$ƒZBG d%d&„ d&ƒZCG d'd(„ d(ƒZDe?ZEe@ZFdS ))é    )ÚannotationsN)ÚAnyÚUnionÚMapping)ÚSelfÚoverrideé   )Ú_exceptions©ÚQuerystring)Ú	NOT_GIVENÚOmitÚTimeoutÚNotGivenÚ	TransportÚProxiesTypesÚRequestOptions)Úis_givenÚ
is_mappingÚget_async_library)Ú__version__)ÚfilesÚimagesÚmodelsÚbatchesÚ
embeddingsÚcompletionsÚmoderations)ÚStreamÚAsyncStream)ÚOpenAIErrorÚAPIStatusError)ÚDEFAULT_MAX_RETRIESÚSyncAPIClientÚAsyncAPIClient)Úbeta)Úchat)Úaudio)Úevals)Úuploads)Ú	responses)Úfine_tuning)Úvector_storesr   r   r   r   ÚOpenAIÚAsyncOpenAIÚClientÚAsyncClientc                      s¤  e Zd ZU ded< ded< ded< ded< d	ed
< ded< ded< ded< ded< ded< ded< ded< ded< ded< ded< ded < d!ed"< d#ed$< d%ed&< d%ed'< d(ed)< d*d*d*d*d*eed*d*d*d+d,œd%d%d%d(d(d-d.d/d0d1d2d3d4œ‡ fd5d6„Zeed7d8œd9d:„ƒƒZ	eed;d8œd<d=„ƒƒZ
eed>d8œ‡ fd?d@„ƒƒZd*d*d*d*d*ed*ed*d*d*d*i dAœd%d%d%d(d(dBd1dCd/d/d0d0dDdEdFœdGdH„ZeZed#dIdJdKdLœdMdN„ƒZ‡  ZS )Or-   zcompletions.Completionsr   z	chat.Chatr&   zembeddings.Embeddingsr   zfiles.Filesr   zimages.Imagesr   zaudio.Audior'   zmoderations.Moderationsr   zmodels.Modelsr   zfine_tuning.FineTuningr+   zvector_stores.VectorStoresr,   z	beta.Betar%   zbatches.Batchesr   zuploads.Uploadsr)   zresponses.Responsesr*   zevals.Evalsr(   ÚOpenAIWithRawResponseÚwith_raw_responseÚOpenAIWithStreamedResponseÚwith_streaming_responseÚstrÚapi_keyú
str | NoneÚorganizationÚprojectústr | httpx.URL | NoneÚwebsocket_base_urlNF©r6   r8   r9   Úbase_urlr;   ÚtimeoutÚmax_retriesÚdefault_headersÚdefault_queryÚhttp_clientÚ_strict_response_validationú%Union[float, Timeout, None, NotGiven]ÚintúMapping[str, str] | NoneúMapping[str, object] | Nonezhttpx.Client | NoneÚboolÚNone©r6   r8   r9   r=   r;   r>   r?   r@   rA   rB   rC   Úreturnc             
     sr  |dkrt j d¡}|dkr$tdƒ‚|| _|dkr>t j d¡}|| _|dkrXt j d¡}|| _|| _|dkrxt j d¡}|dkr„d}tƒ j	t
||||
||	|d� t| _t | ¡| _t | ¡| _t | ¡| _t | ¡| _t | ¡| _t | ¡| _t | ¡| _t | ¡| _t | ¡| _t  | ¡| _t! "| ¡| _!t# $| ¡| _#t% &| ¡| _%t' (| ¡| _'t) *| ¡| _)t+| ƒ| _,t-| ƒ| _.dS )	aE  Construct a new synchronous OpenAI client instance.

        This automatically infers the following arguments from their corresponding environment variables if they are not provided:
        - `api_key` from `OPENAI_API_KEY`
        - `organization` from `OPENAI_ORG_ID`
        - `project` from `OPENAI_PROJECT_ID`
        NÚOPENAI_API_KEYúƒThe api_key client option must be set either by passing api_key to the client or by setting the OPENAI_API_KEY environment variableÚOPENAI_ORG_IDÚOPENAI_PROJECT_IDÚOPENAI_BASE_URLúhttps://api.openai.com/v1©Úversionr=   r?   r>   rB   Zcustom_headersZcustom_queryrC   )/ÚosÚenvironÚgetr    r6   r8   r9   r;   ÚsuperÚ__init__r   r   Ú_default_stream_clsr   ZCompletionsr&   ZChatr   Z
Embeddingsr   ZFilesr   ZImagesr'   ZAudior   ZModerationsr   ZModelsr+   Z
FineTuningr,   ZVectorStoresr%   ÚBetar   ZBatchesr)   ZUploadsr*   Z	Responsesr(   ZEvalsr1   r2   r3   r4   ©Úselfr6   r8   r9   r=   r;   r>   r?   r@   rA   rB   rC   ©Ú	__class__© ú2/tmp/pip-unpacked-wheel-2qj3ofc_/openai/_client.pyrX   P   s\    !ÿø
zOpenAI.__init__r   ©rK   c                 C  s
   t dd�S ©NZbrackets)Zarray_formatr
   ©r\   r_   r_   r`   Úqs§   s    z	OpenAI.qsúdict[str, str]c                 C  s   | j }dd|› �iS ©NÚAuthorizationzBearer ©r6   ©r\   r6   r_   r_   r`   Úauth_headers¬   s    zOpenAI.auth_headersúdict[str, str | Omit]c                   s<   t ƒ jd| jd k	r| jntƒ | jd k	r,| jntƒ dœ| j–S )NÚfalse©zX-Stainless-AsynczOpenAI-OrganizationzOpenAI-Project)rW   r@   r8   r   r9   Ú_custom_headersrc   r]   r_   r`   r@   ²   s    üûzOpenAI.default_headers©r6   r8   r9   r;   r=   r>   rB   r?   r@   Úset_default_headersrA   Úset_default_queryÚ_extra_kwargsú!float | Timeout | None | NotGivenúint | NotGivenúMapping[str, Any]r   ©r6   r8   r9   r;   r=   r>   rB   r?   r@   rp   rA   rq   rr   rK   c                C  sä   |	dk	r|
dk	rt dƒ‚|dk	r0|dk	r0t dƒ‚| j}|	dk	rH||	–}n|
dk	rT|
}| j}|dk	rl||–}n|dk	rx|}|p€| j}| jf |p�| j|p˜| j|p | j|p¨| j|p°| j	t
|tƒrÀ| jn||t|ƒrÐ|n| j||dœ
|—ŽS ©z~
        Create a new client instance re-using the same options given to the current client with optional overriding.
        NzPThe `default_headers` and `set_default_headers` arguments are mutually exclusivezLThe `default_query` and `set_default_query` arguments are mutually exclusive)
r6   r8   r9   r;   r=   r>   rB   r?   r@   rA   ©Ú
ValueErrorrn   Z_custom_queryZ_clientr^   r6   r8   r9   r;   r=   Ú
isinstancer   r>   r   r?   ©r\   r6   r8   r9   r;   r=   r>   rB   r?   r@   rp   rA   rq   rr   ÚheadersÚparamsr_   r_   r`   Úcopy½   s:    


öõzOpenAI.copyÚobjectúhttpx.Responser!   ©Úerr_msgÚbodyÚresponserK   c                C  sö   t |ƒr| d|¡n|}|jdkr2tj|||d�S |jdkrLtj|||d�S |jdkrftj|||d�S |jdkr€tj|||d�S |jdkrštj|||d�S |jdkr´tj	|||d�S |jd	krÎtj
|||d�S |jd
krètj|||d�S t|||d�S ©NÚerrori�  )r„   rƒ   i‘  i“  i”  i™  i¦  i­  iô  ©r   rV   Ústatus_coder	   ZBadRequestErrorÚAuthenticationErrorZPermissionDeniedErrorZNotFoundErrorZConflictErrorZUnprocessableEntityErrorZRateLimitErrorZInternalServerErrorr!   ©r\   r‚   rƒ   r„   Údatar_   r_   r`   Ú_make_status_errorö   s$    







zOpenAI._make_status_error©Ú__name__Ú
__module__Ú__qualname__Ú__annotations__r   r"   rX   Úpropertyr   rd   rj   r@   r~   Zwith_optionsrŒ   Ú__classcell__r_   r_   r]   r`   r-   0   sv   
	è,Wñ,7c                      s¤  e Zd ZU ded< ded< ded< ded< d	ed
< ded< ded< ded< ded< ded< ded< ded< ded< ded< ded< ded < d!ed"< d#ed$< d%ed&< d%ed'< d(ed)< d*d*d*d*d*eed*d*d*d+d,œd%d%d%d(d(d-d.d/d0d1d2d3d4œ‡ fd5d6„Zeed7d8œd9d:„ƒƒZ	eed;d8œd<d=„ƒƒZ
eed>d8œ‡ fd?d@„ƒƒZd*d*d*d*d*ed*ed*d*d*d*i dAœd%d%d%d(d(dBd1dCd/d/d0d0dDdEdFœdGdH„ZeZed#dIdJdKdLœdMdN„ƒZ‡  ZS )Or.   zcompletions.AsyncCompletionsr   zchat.AsyncChatr&   zembeddings.AsyncEmbeddingsr   zfiles.AsyncFilesr   zimages.AsyncImagesr   zaudio.AsyncAudior'   zmoderations.AsyncModerationsr   zmodels.AsyncModelsr   zfine_tuning.AsyncFineTuningr+   zvector_stores.AsyncVectorStoresr,   zbeta.AsyncBetar%   zbatches.AsyncBatchesr   zuploads.AsyncUploadsr)   zresponses.AsyncResponsesr*   zevals.AsyncEvalsr(   ÚAsyncOpenAIWithRawResponser2   ÚAsyncOpenAIWithStreamedResponser4   r5   r6   r7   r8   r9   r:   r;   NFr<   rD   rE   rF   rG   zhttpx.AsyncClient | NonerH   rI   rJ   c             
     sr  |dkrt j d¡}|dkr$tdƒ‚|| _|dkr>t j d¡}|| _|dkrXt j d¡}|| _|| _|dkrxt j d¡}|dkr„d}tƒ j	t
||||
||	|d� t| _t | ¡| _t | ¡| _t | ¡| _t | ¡| _t | ¡| _t | ¡| _t | ¡| _t | ¡| _t | ¡| _t  | ¡| _t! "| ¡| _!t# $| ¡| _#t% &| ¡| _%t' (| ¡| _'t) *| ¡| _)t+| ƒ| _,t-| ƒ| _.dS )	aD  Construct a new async AsyncOpenAI client instance.

        This automatically infers the following arguments from their corresponding environment variables if they are not provided:
        - `api_key` from `OPENAI_API_KEY`
        - `organization` from `OPENAI_ORG_ID`
        - `project` from `OPENAI_PROJECT_ID`
        NrL   rM   rN   rO   rP   rQ   rR   )/rT   rU   rV   r    r6   r8   r9   r;   rW   rX   r   r   rY   r   ZAsyncCompletionsr&   Z	AsyncChatr   ZAsyncEmbeddingsr   Z
AsyncFilesr   ZAsyncImagesr'   Z
AsyncAudior   ZAsyncModerationsr   ZAsyncModelsr+   ZAsyncFineTuningr,   ZAsyncVectorStoresr%   Z	AsyncBetar   ZAsyncBatchesr)   ZAsyncUploadsr*   ZAsyncResponsesr(   Z
AsyncEvalsr”   r2   r•   r4   r[   r]   r_   r`   rX   9  s\    !ÿø
zAsyncOpenAI.__init__r   ra   c                 C  s
   t dd�S rb   r
   rc   r_   r_   r`   rd   �  s    zAsyncOpenAI.qsre   c                 C  s   | j }dd|› �iS rf   rh   ri   r_   r_   r`   rj   •  s    zAsyncOpenAI.auth_headersrk   c                   sD   t ƒ jdtƒ › �| jd k	r | jntƒ | jd k	r4| jntƒ dœ| j–S )Nzasync:rm   )rW   r@   r   r8   r   r9   rn   rc   r]   r_   r`   r@   ›  s    
üûzAsyncOpenAI.default_headersro   rs   rt   ru   r   rv   c                C  sä   |	dk	r|
dk	rt dƒ‚|dk	r0|dk	r0t dƒ‚| j}|	dk	rH||	–}n|
dk	rT|
}| j}|dk	rl||–}n|dk	rx|}|p€| j}| jf |p�| j|p˜| j|p | j|p¨| j|p°| j	t
|tƒrÀ| jn||t|ƒrÐ|n| j||dœ
|—ŽS rw   rx   r{   r_   r_   r`   r~   ¦  s:    


öõzAsyncOpenAI.copyr   r€   r!   r�   c                C  sö   t |ƒr| d|¡n|}|jdkr2tj|||d�S |jdkrLtj|||d�S |jdkrftj|||d�S |jdkr€tj|||d�S |jdkrštj|||d�S |jdkr´tj	|||d�S |jd	krÎtj
|||d�S |jd
krètj|||d�S t|||d�S r…   r‡   rŠ   r_   r_   r`   rŒ   ß  s$    







zAsyncOpenAI._make_status_errorr�   r_   r_   r]   r`   r.     sv   
	è,Wñ,7c                   @  s   e Zd Zdddœdd„ZdS )r1   r-   rI   ©ÚclientrK   c                 C  sÖ   t  |j ¡| _ t |j¡| _t |j¡| _t |j¡| _t 	|j¡| _t
 |j
¡| _
t |j¡| _t |j¡| _t |j¡| _t |j¡| _t |j¡| _t |j¡| _t |j¡| _t |j¡| _t |j¡| _d S ©N)r   ZCompletionsWithRawResponser&   ZChatWithRawResponser   ZEmbeddingsWithRawResponser   ZFilesWithRawResponser   ZImagesWithRawResponser'   ZAudioWithRawResponser   ZModerationsWithRawResponser   ZModelsWithRawResponser+   ZFineTuningWithRawResponser,   ZVectorStoresWithRawResponser%   ZBetaWithRawResponser   ZBatchesWithRawResponser)   ZUploadsWithRawResponser*   ZResponsesWithRawResponser(   ZEvalsWithRawResponse©r\   r—   r_   r_   r`   rX     s    zOpenAIWithRawResponse.__init__N©rŽ   r�   r�   rX   r_   r_   r_   r`   r1     s   r1   c                   @  s   e Zd Zdddœdd„ZdS )r”   r.   rI   r–   c                 C  sÖ   t  |j ¡| _ t |j¡| _t |j¡| _t |j¡| _t 	|j¡| _t
 |j
¡| _
t |j¡| _t |j¡| _t |j¡| _t |j¡| _t |j¡| _t |j¡| _t |j¡| _t |j¡| _t |j¡| _d S r˜   )r   ZAsyncCompletionsWithRawResponser&   ZAsyncChatWithRawResponser   ZAsyncEmbeddingsWithRawResponser   ZAsyncFilesWithRawResponser   ZAsyncImagesWithRawResponser'   ZAsyncAudioWithRawResponser   ZAsyncModerationsWithRawResponser   ZAsyncModelsWithRawResponser+   ZAsyncFineTuningWithRawResponser,   Z AsyncVectorStoresWithRawResponser%   ZAsyncBetaWithRawResponser   ZAsyncBatchesWithRawResponser)   ZAsyncUploadsWithRawResponser*   ZAsyncResponsesWithRawResponser(   ZAsyncEvalsWithRawResponser™   r_   r_   r`   rX     s    z#AsyncOpenAIWithRawResponse.__init__Nrš   r_   r_   r_   r`   r”     s   r”   c                   @  s   e Zd Zdddœdd„ZdS )r3   r-   rI   r–   c                 C  sÖ   t  |j ¡| _ t |j¡| _t |j¡| _t |j¡| _t 	|j¡| _t
 |j
¡| _
t |j¡| _t |j¡| _t |j¡| _t |j¡| _t |j¡| _t |j¡| _t |j¡| _t |j¡| _t |j¡| _d S r˜   )r   Z CompletionsWithStreamingResponser&   ZChatWithStreamingResponser   ZEmbeddingsWithStreamingResponser   ZFilesWithStreamingResponser   ZImagesWithStreamingResponser'   ZAudioWithStreamingResponser   Z ModerationsWithStreamingResponser   ZModelsWithStreamingResponser+   ZFineTuningWithStreamingResponser,   Z!VectorStoresWithStreamingResponser%   ZBetaWithStreamingResponser   ZBatchesWithStreamingResponser)   ZUploadsWithStreamingResponser*   ZResponsesWithStreamingResponser(   ZEvalsWithStreamingResponser™   r_   r_   r`   rX   )  s    z#OpenAIWithStreamedResponse.__init__Nrš   r_   r_   r_   r`   r3   (  s   r3   c                   @  s   e Zd Zdddœdd„ZdS )r•   r.   rI   r–   c                 C  sÖ   t  |j ¡| _ t |j¡| _t |j¡| _t |j¡| _t 	|j¡| _t
 |j
¡| _
t |j¡| _t |j¡| _t |j¡| _t |j¡| _t |j¡| _t |j¡| _t |j¡| _t |j¡| _t |j¡| _d S r˜   )r   Z%AsyncCompletionsWithStreamingResponser&   ZAsyncChatWithStreamingResponser   Z$AsyncEmbeddingsWithStreamingResponser   ZAsyncFilesWithStreamingResponser   Z AsyncImagesWithStreamingResponser'   ZAsyncAudioWithStreamingResponser   Z%AsyncModerationsWithStreamingResponser   Z AsyncModelsWithStreamingResponser+   Z$AsyncFineTuningWithStreamingResponser,   Z&AsyncVectorStoresWithStreamingResponser%   ZAsyncBetaWithStreamingResponser   Z!AsyncBatchesWithStreamingResponser)   Z!AsyncUploadsWithStreamingResponser*   Z#AsyncResponsesWithStreamingResponser(   ZAsyncEvalsWithStreamingResponser™   r_   r_   r`   rX   <  s    z(AsyncOpenAIWithStreamedResponse.__init__Nrš   r_   r_   r_   r`   r•   ;  s   r•   )GÚ
__future__r   rT   Útypingr   r   r   Útyping_extensionsr   r   ZhttpxÚ r	   Z_qsr   Ú_typesr   r   r   r   r   r   r   Ú_utilsr   r   r   Ú_versionr   Ú	resourcesr   r   r   r   r   r   r   Z
_streamingr   r   r    r!   Z_base_clientr"   r#   r$   Zresources.betar%   Zresources.chatr&   Zresources.audior'   Zresources.evalsr(   Zresources.uploadsr)   Zresources.responsesr*   Zresources.fine_tuningr+   Zresources.vector_storesr,   Ú__all__r-   r.   r1   r”   r3   r•   r/   r0   r_   r_   r_   r`   Ú<module>   s@   $	$ j j