o
    jN                     @  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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  ddlm!Z!m"Z" ddl#m$Z$m%Z%m&Z& g d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-e(Z.e)Z/dS )    )annotationsN)AnyUnionMapping)Selfoverride   )	resources_exceptionsQuerystring)	NOT_GIVENOmitTimeoutNotGiven	TransportProxiesTypesRequestOptions)is_given
is_mappingget_async_library)__version__)StreamAsyncStream)OpenAIErrorAPIStatusError)DEFAULT_MAX_RETRIESSyncAPIClientAsyncAPIClient)	r   r   r   r   r	   OpenAIAsyncOpenAIClientAsyncClientc                        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ddeeddddd	dM fd0d1ZeedNd3d4Z	eedOd6d7Z
eedP fd9d:Zdddededdddi d;dQdCdDZeZedRdKdLZ  ZS )Sr   zresources.Completionscompletionszresources.Chatchatzresources.Embeddings
embeddingszresources.Filesfileszresources.Imagesimageszresources.Audioaudiozresources.Moderationsmoderationszresources.Modelsmodelszresources.FineTuningfine_tuningzresources.BetabetaOpenAIWithRawResponsewith_raw_responseOpenAIWithStreamedResponsewith_streaming_responsestrapi_key
str | NoneorganizationNF	r3   r5   base_urltimeoutmax_retriesdefault_headersdefault_queryhttp_client_strict_response_validationr7   str | httpx.URL | Noner8   %Union[float, Timeout, None, NotGiven]r9   intr:   Mapping[str, str] | Noner;   Mapping[str, object] | Noner<   httpx.Client | Noner=   boolreturnNonec       	   
   
       |du r
t jd}|du rtd|| _|du rt jd}|| _|du r,t jd}|du r2d}t jt|||||||	d t	| _
t| | _t| | _t| | _t| | _t| | _t| | _t| | _t| | _t| | _t| | _t | | _!t"| | _#dS )a  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`
        NOPENAI_API_KEYThe 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_BASE_URLhttps://api.openai.com/v1versionr7   r9   r8   r<   custom_headerscustom_queryr=   )$osenvirongetr   r3   r5   super__init__r   r   _default_stream_clsr	   Completionsr$   Chatr%   
Embeddingsr&   Filesr'   Imagesr(   Audior)   Moderationsr*   Modelsr+   
FineTuningr,   Betar-   r.   r/   r0   r1   
selfr3   r5   r7   r8   r9   r:   r;   r<   r=   	__class__ T/var/www/html/fyndo/pharma/fyndo/venv/lib/python3.10/site-packages/openai/_client.pyrU   C   J   
zOpenAI.__init__r   c                 C  
   t ddS Ncomma)array_formatr   rb   re   re   rf   qs      
z	OpenAI.qsdict[str, str]c                 C     | j }dd| iS NAuthorizationzBearer r3   rb   r3   re   re   rf   auth_headers      zOpenAI.auth_headersdict[str, str | Omit]c                   s.   i t  jd| jd ur| jnt d| jS )NfalsezX-Stainless-AsynczOpenAI-Organization)rT   r:   r5   r   _custom_headersrl   rc   re   rf   r:      s   zOpenAI.default_headersr3   r5   r7   r8   r<   r9   r:   set_default_headersr;   set_default_query_extra_kwargs!float | Timeout | None | NotGivenint | NotGivenr|   r}   r~   Mapping[str, Any]r   c                C     |dur|durt d|	dur|
durt d| j}|dur&i ||}n|dur,|}| j}|	dur:i ||	}n|
dur@|
}|pD| j}| jd|pL| j|pP| j|pT| jt|t	r\| j
n||t|rd|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)r3   r5   r7   r8   r<   r9   r:   r;   re   
ValueErrorrz   _custom_query_clientrd   r3   r5   r7   
isinstancer   r8   r   r9   rb   r3   r5   r7   r8   r<   r9   r:   r|   r;   r}   r~   headersparamsre   re   rf   copy   6   
	zOpenAI.copyerr_msgbodyobjectresponsehttpx.Responser   c                C     t |r
|d|n|}|jdkrtj|||dS |jdkr&tj|||dS |jdkr3tj|||dS |jdkr@tj|||dS |jdkrMtj|||dS |jdkrZtj	|||dS |jd	krgtj
|||dS |jd
krttj|||dS t|||dS Nerrori  )r   r   i  i  i  i  i  i  i  r   rS   status_coder
   BadRequestErrorAuthenticationErrorPermissionDeniedErrorNotFoundErrorConflictErrorUnprocessableEntityErrorRateLimitErrorInternalServerErrorr   rb   r   r   r   datare   re   rf   _make_status_error   $   







zOpenAI._make_status_error)r3   r4   r5   r4   r7   r>   r8   r?   r9   r@   r:   rA   r;   rB   r<   rC   r=   rD   rE   rF   rE   r   rE   ro   rE   rw   )r3   r4   r5   r4   r7   r>   r8   r   r<   rC   r9   r   r:   rA   r|   rA   r;   rB   r}   rB   r~   r   rE   r   r   r2   r   r   r   r   rE   r   __name__
__module____qualname____annotations__r   r   rU   propertyr   rm   ru   r:   r   with_optionsr   __classcell__re   re   rc   rf   r   1   b   
 	G3r   c                      r#   )Sr    zresources.AsyncCompletionsr$   zresources.AsyncChatr%   zresources.AsyncEmbeddingsr&   zresources.AsyncFilesr'   zresources.AsyncImagesr(   zresources.AsyncAudior)   zresources.AsyncModerationsr*   zresources.AsyncModelsr+   zresources.AsyncFineTuningr,   zresources.AsyncBetar-   AsyncOpenAIWithRawResponser/   AsyncOpenAIWithStreamedResponser1   r2   r3   r4   r5   NFr6   r7   r>   r8   r?   r9   r@   r:   rA   r;   rB   r<   httpx.AsyncClient | Noner=   rD   rE   rF   c       	   
   
     rG   )a  Construct a new async 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`
        NrH   rI   rJ   rK   rL   rM   )$rQ   rR   rS   r   r3   r5   rT   rU   r   r   rV   r	   AsyncCompletionsr$   	AsyncChatr%   AsyncEmbeddingsr&   
AsyncFilesr'   AsyncImagesr(   
AsyncAudior)   AsyncModerationsr*   AsyncModelsr+   AsyncFineTuningr,   	AsyncBetar-   r   r/   r   r1   ra   rc   re   rf   rU   	  rg   zAsyncOpenAI.__init__r   c                 C  rh   ri   r   rl   re   re   rf   rm   P  rn   zAsyncOpenAI.qsro   c                 C  rp   rq   rs   rt   re   re   rf   ru   U  rv   zAsyncOpenAI.auth_headersrw   c                   s6   i t  jdt  | jd ur| jnt d| jS )Nzasync:ry   )rT   r:   r   r5   r   rz   rl   rc   re   rf   r:   [  s   
zAsyncOpenAI.default_headersr{   r   r   r|   r}   r~   r   r   c                C  r   r   r   r   re   re   rf   r   e  r   zAsyncOpenAI.copyr   r   r   r   r   r   c                C  r   r   r   r   re   re   rf   r     r   zAsyncOpenAI._make_status_error)r3   r4   r5   r4   r7   r>   r8   r?   r9   r@   r:   rA   r;   rB   r<   r   r=   rD   rE   rF   r   r   r   )r3   r4   r5   r4   r7   r>   r8   r   r<   r   r9   r   r:   rA   r|   rA   r;   rB   r}   rB   r~   r   rE   r   r   r   re   re   rc   rf   r       r   r    c                   @     e Zd ZdddZdS )	r.   clientr   rE   rF   c                 C     t |j| _t |j| _t |j| _t |j| _t 	|j
| _
t |j| _t |j| _t |j| _t |j| _t |j| _d S N)r	   CompletionsWithRawResponser$   ChatWithRawResponser%   EmbeddingsWithRawResponser&   FilesWithRawResponser'   ImagesWithRawResponser(   AudioWithRawResponser)   ModerationsWithRawResponser*   ModelsWithRawResponser+   FineTuningWithRawResponser,   BetaWithRawResponser-   rb   r   re   re   rf   rU        zOpenAIWithRawResponse.__init__Nr   r   rE   rF   r   r   r   rU   re   re   re   rf   r.         r.   c                   @  r   )	r   r   r    rE   rF   c                 C  r   r   )r	   AsyncCompletionsWithRawResponser$   AsyncChatWithRawResponser%   AsyncEmbeddingsWithRawResponser&   AsyncFilesWithRawResponser'   AsyncImagesWithRawResponser(   AsyncAudioWithRawResponser)   AsyncModerationsWithRawResponser*   AsyncModelsWithRawResponser+   AsyncFineTuningWithRawResponser,   AsyncBetaWithRawResponser-   r   re   re   rf   rU     r   z#AsyncOpenAIWithRawResponse.__init__Nr   r    rE   rF   r   re   re   re   rf   r     r   r   c                   @  r   )	r0   r   r   rE   rF   c                 C  r   r   )r	    CompletionsWithStreamingResponser$   ChatWithStreamingResponser%   EmbeddingsWithStreamingResponser&   FilesWithStreamingResponser'   ImagesWithStreamingResponser(   AudioWithStreamingResponser)    ModerationsWithStreamingResponser*   ModelsWithStreamingResponser+   FineTuningWithStreamingResponser,   BetaWithStreamingResponser-   r   re   re   rf   rU     r   z#OpenAIWithStreamedResponse.__init__Nr   r   re   re   re   rf   r0     r   r0   c                   @  r   )	r   r   r    rE   rF   c                 C  r   r   )r	   %AsyncCompletionsWithStreamingResponser$   AsyncChatWithStreamingResponser%   $AsyncEmbeddingsWithStreamingResponser&   AsyncFilesWithStreamingResponser'    AsyncImagesWithStreamingResponser(   AsyncAudioWithStreamingResponser)   %AsyncModerationsWithStreamingResponser*    AsyncModelsWithStreamingResponser+   $AsyncFineTuningWithStreamingResponser,   AsyncBetaWithStreamingResponser-   r   re   re   rf   rU     r   z(AsyncOpenAIWithStreamedResponse.__init__Nr   r   re   re   re   rf   r     r   r   )0
__future__r   rQ   typingr   r   r   typing_extensionsr   r   httpx r	   r
   _qsr   _typesr   r   r   r   r   r   r   _utilsr   r   r   _versionr   
_streamingr   r   r   r   _base_clientr   r   r   __all__r   r    r.   r   r0   r   r!   r"   re   re   re   rf   <module>   s0   $	 G G