
    g\                       d dl mZ d dlZd dlZd dlmZmZmZmZm	Z	m
Z
mZmZ d dlmZmZ d dl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mZ dd	lmZ dd
lm Z  ddl!m"Z"m#Z# ddl$m%Z% ddl&m'Z'm(Z(  e)g d          Z*e	g e+f         Z,e	g df         Z- edeej.        ej/        f                   Z0 edee"e         e#e         f                   Z1d2                    g d          Z3 G d de%          Z4 G d de(e0e1f                   Z5 G d de5ej.        e"e         f         e          Z6 G d de5ej/        e#e         f         e          Z7dS )    )annotationsN)AnyUnionMappingTypeVarCallable	Awaitablecastoverload)Selfoverride   )	NOT_GIVENOmitQueryTimeoutNotGiven)is_given
is_mapping)OpenAIAsyncOpenAI)
model_copy)FinalRequestOptions)StreamAsyncStream)OpenAIError)DEFAULT_MAX_RETRIES
BaseClient)z/completionsz/chat/completionsz/embeddingsz/audio/transcriptionsz/audio/translationsz/audio/speechz/images/generationszstr | Awaitable[str]_HttpxClientT)bound_DefaultStreamT )<zmissing API key>c                        e Zd Zd fdZ xZS )MutuallyExclusiveAuthErrorreturnNonec                J    t                                          d           d S )NzThe `api_key`, `azure_ad_token` and `azure_ad_token_provider` arguments are mutually exclusive; Only one can be passed at a time)super__init__)self	__class__s    N/var/www/html/mpstechhub/venv/lib/python3.11/site-packages/openai/lib/azure.pyr+   z#MutuallyExclusiveAuthError.__init__-   s/     O	
 	
 	
 	
 	
    )r'   r(   )__name__
__module____qualname__r+   __classcell__r-   s   @r.   r&   r&   ,   s=        
 
 
 
 
 
 
 
 
 
r/   r&   c                  6     e Zd Zeddd
 fd	            Z xZS )BaseAzureClientr   retries_takenoptionsr   r8   intr'   httpx.Requestc                  |j         t          v rWt          |j                  rC|j                            d          }|'dt          | j                  vrd| |j          |_         t                                          ||          S )Nmodelz/deploymentsz/deployments/r7   )	url_deployments_endpointsr   	json_datagetstrbase_urlr*   _build_request)r,   r9   r8   r=   r-   s       r.   rD   zBaseAzureClient._build_request4   s     ;000Z@Q5R5R0%))'22E 3t};M;M)M)MBeBW[BBww%%g]%KKKr/   )r9   r   r8   r:   r'   r;   )r0   r1   r2   r   rD   r3   r4   s   @r.   r6   r6   3   sb        
 	L L L L L L L XL L L L Lr/   r6   c                  P    e Zd Zedddddddeedddddd7d            Zedddddddeedddddd8d            Zeddddddeeddddd d9d"            Zddddddddddeeddddd#d: fd%Zeddddddddededdddi d&d; fd-            ZeZ	d<d.Z
ed=d1            Zd>d6Z xZS )?AzureOpenAINF)azure_deploymentapi_versionapi_keyazure_ad_tokenazure_ad_token_providerorganizationwebsocket_base_urltimeoutmax_retriesdefault_headersdefault_queryhttp_client_strict_response_validationazure_endpointrB   rG   
str | NonerH   rI   rJ   rK   AzureADTokenProvider | NonerL   rM   str | httpx.URL | NonerN   !float | Timeout | None | NotGivenrO   r:   rP   Mapping[str, str] | NonerQ   Mapping[str, object] | NonerR   httpx.Client | NonerS   boolr'   r(   c                   d S N )r,   rT   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   s                  r.   r+   zAzureOpenAI.__init__D   	    $ sr/   c                   d S r^   r_   )r,   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   s                 r.   r+   zAzureOpenAI.__init__X   	    " sr/   )rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rC   c                   d S r^   r_   )r,   rC   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   s                 r.   r+   zAzureOpenAI.__init__k   rb   r/   )rH   rT   rG   rI   rJ   rK   rL   projectrM   rC   rN   rO   rP   rQ   rR   rS   rd   c                  |t           j                            d          }|t           j                            d          }|||t          d          |t           j                            d          }|t	          d          |d|i}ni |d|i}|
h|t           j                            d          }|t	          d	          ||                    d
           d| }
n*|                    d
           d}
n|t	          d          |t          }t                                          ||||
||||||	|           || _	        || _
        || _        dS )a  Construct a new synchronous azure openai client instance.

        This automatically infers the following arguments from their corresponding environment variables if they are not provided:
        - `api_key` from `AZURE_OPENAI_API_KEY`
        - `organization` from `OPENAI_ORG_ID`
        - `project` from `OPENAI_PROJECT_ID`
        - `azure_ad_token` from `AZURE_OPENAI_AD_TOKEN`
        - `api_version` from `OPENAI_API_VERSION`
        - `azure_endpoint` from `AZURE_OPENAI_ENDPOINT`

        Args:
            azure_endpoint: Your Azure endpoint, including the resource, e.g. `https://example-resource.azure.openai.com/`

            azure_ad_token: Your Azure Active Directory token, https://www.microsoft.com/en-us/security/business/identity-access/microsoft-entra-id

            azure_ad_token_provider: A function that returns an Azure Active Directory token, will be invoked on every request.

            azure_deployment: A model deployment, if given sets the base client URL to include `/deployments/{azure_deployment}`.
                Note: this means you won't be able to use non-deployment endpoints. Not supported with Assistants APIs.
        NAZURE_OPENAI_API_KEYAZURE_OPENAI_AD_TOKENMissing credentials. Please pass one of `api_key`, `azure_ad_token`, `azure_ad_token_provider`, or the `AZURE_OPENAI_API_KEY` or `AZURE_OPENAI_AD_TOKEN` environment variables.OPENAI_API_VERSION_Must provide either the `api_version` argument or the `OPENAI_API_VERSION` environment variableapi-versionAZURE_OPENAI_ENDPOINTuMust provide one of the `base_url` or `azure_endpoint` arguments, or the `AZURE_OPENAI_ENDPOINT` environment variable//openai/deployments//openai2base_url and azure_endpoint are mutually exclusiverI   rL   rd   rC   rN   rO   rP   rQ   rR   rM   rS   osenvironrA   r   
ValueErrorrstripAPI_KEY_SENTINELr*   r+   _api_version_azure_ad_token_azure_ad_token_provider)r,   rH   rT   rG   rI   rJ   rK   rL   rd   rM   rC   rN   rO   rP   rQ   rR   rS   r-   s                    r.   r+   zAzureOpenAI.__init__~      P ?jnn%;<<G!Z^^,CDDN?~5:Q:Y B   *..)=>>Kq    *K8MMI}Im[IIM%!#0G!H!H%  L    +,33C88``N^``,33C88AAA) !UVVV?&G%#+'#1(C 	 	
 	
 	
 (-(?%%%r/   rI   rL   rd   rM   rH   rJ   rK   rC   rN   rR   rO   rP   set_default_headersrQ   set_default_query_extra_kwargsint | NotGivenr~   r   r   Mapping[str, Any]r   c                   t                                          ||||||	|
||||||p| j        |p| j        |p| j        d|          S z~
        Create a new client instance re-using the same options given to the current client with optional overriding.
        )rH   rJ   rK   )rI   rL   rd   rM   rC   rN   rR   rO   rP   r~   rQ   r   r   r*   copyry   rz   r{   r,   rI   rL   rd   rM   rH   rJ   rK   rC   rN   rR   rO   rP   r~   rQ   r   r   r-   s                    r.   r   zAzureOpenAI.copy   }    0 ww||%1##+ 3'/*?d.?"0"HD4H+B+cdFc   	  
 
 	
r/   c                    | j         | j         S | j        }|5 |            }|rt          |t                    st	          d|           |S d S NzOExpected `azure_ad_token_provider` argument to return a string but it returned )rz   r{   
isinstancerB   rv   r,   providertokens      r.   _get_azure_ad_tokenzAzureOpenAI._get_azure_ad_token  sp    +''0HJJE 
5# 6 6  mfkmm   Ltr/   r9   r   c                R   t          |j                  r	i |j        ni }t          |          }||_        |                                 }||                    d          d| |d<   n=| j        t          ur |                    d          
| j        |d<   nt          d          |S NAuthorizationBearer api-keyzUnable to handle authr   headersr   r   rA   rI   rx   rv   r,   r9   r   rJ   s       r.   _prepare_optionszAzureOpenAI._prepare_options"  s    @H@Y@Y)a)<GO)<)<_aW%%!1133%{{?++3+E^+E+E(\!111{{9%%-%)\	" 4555r/   r=   extra_queryr   tuple[Query, dict[str, str]]c                    i }i || j         |d}| j        dk    r
d| j        i}n|                                 }|rdd| i}||fS N)rk   
deploymentz<missing API key>r   r   r   ry   rI   r   r,   r=   r   auth_headersqueryr   s         r.   _configure_realtimezAzureOpenAI._configure_realtime6  s    

,
 
 

 <...%t|4LL,,..E D /1B51B1BCl""r/   )rT   rB   rG   rU   rH   rU   rI   rU   rJ   rU   rK   rV   rL   rU   rM   rW   rN   rX   rO   r:   rP   rY   rQ   rZ   rR   r[   rS   r\   r'   r(   )rG   rU   rH   rU   rI   rU   rJ   rU   rK   rV   rL   rU   rM   rW   rN   rX   rO   r:   rP   rY   rQ   rZ   rR   r[   rS   r\   r'   r(   )rC   rB   rH   rU   rI   rU   rJ   rU   rK   rV   rL   rU   rM   rW   rN   rX   rO   r:   rP   rY   rQ   rZ   rR   r[   rS   r\   r'   r(   )"rH   rU   rT   rU   rG   rU   rI   rU   rJ   rU   rK   rV   rL   rU   rd   rU   rM   rW   rC   rU   rN   rX   rO   r:   rP   rY   rQ   rZ   rR   r[   rS   r\   r'   r(   )"rI   rU   rL   rU   rd   rU   rM   rW   rH   rU   rJ   rU   rK   rV   rC   rW   rN   rX   rR   r[   rO   r   rP   rY   r~   rY   rQ   rZ   r   rZ   r   r   r'   r   r'   rU   r9   r   r'   r   r=   rB   r   r   r'   r   r0   r1   r2   r   r   r   r+   r   r   with_optionsr   r   r   r3   r4   s   @r.   rF   rF   C   s4       
 (,"&"%)?C#'595>.4859+/,1!     X&  (,"&"%)?C#'595>.4859+/,1     X$ 
 #'"%)?C#'595>.4859+/,1     X* #'%)'+"%)?C#'"59#5>.4859+/,1%d@ d@ d@ d@ d@ d@ d@ d@L  ##'"59"&%)?C+/5>+/&/488<599=+-%*
 *
 *
 *
 *
 *
 *
 X*
X L       X&# # # # # # # #r/   rF   c                  V    e Zd Zeddddddddeedddddd7d            Zeddddddddeedddddd8d             Zedddddddeeddddd!d9d#            Zddddddddddeeddddd$d: fd%Zeddddddddededdddi d&d; fd-            ZeZ	d<d.Z
ed=d1            Zd>d6Z xZS )?AsyncAzureOpenAINF)rG   rH   rI   rJ   rK   rL   rd   rM   rN   rO   rP   rQ   rR   rS   rT   rB   rG   rU   rH   rI   rJ   rK    AsyncAzureADTokenProvider | NonerL   rd   rM   rW   rN   rX   rO   r:   rP   rY   rQ   rZ   rR   httpx.AsyncClient | NonerS   r\   r'   r(   c                   d S r^   r_   )r,   rT   rG   rH   rI   rJ   rK   rL   rd   rM   rN   rO   rP   rQ   rR   rS   s                   r.   r+   zAsyncAzureOpenAI.__init__G  s	    & sr/   c                   d S r^   r_   )r,   rG   rH   rI   rJ   rK   rL   rd   rM   rN   rO   rP   rQ   rR   rS   s                  r.   r+   zAsyncAzureOpenAI.__init__\  r`   r/   )rH   rI   rJ   rK   rL   rd   rM   rN   rO   rP   rQ   rR   rS   rC   c                   d S r^   r_   )r,   rC   rH   rI   rJ   rK   rL   rd   rM   rN   rO   rP   rQ   rR   rS   s                  r.   r+   zAsyncAzureOpenAI.__init__p  r`   r/   )rT   rG   rH   rI   rJ   rK   rL   rd   rC   rM   rN   rO   rP   rQ   rR   rS   c                  |t           j                            d          }|t           j                            d          }|||t          d          |t           j                            d          }|t	          d          |d|i}ni |d|i}|	h|t           j                            d          }|t	          d	          ||                    d
           d| }	n*|                    d
           d}	n|t	          d          |t          }t                                          ||||	||||||
|           || _	        || _
        || _        dS )a  Construct a new asynchronous azure openai client instance.

        This automatically infers the following arguments from their corresponding environment variables if they are not provided:
        - `api_key` from `AZURE_OPENAI_API_KEY`
        - `organization` from `OPENAI_ORG_ID`
        - `project` from `OPENAI_PROJECT_ID`
        - `azure_ad_token` from `AZURE_OPENAI_AD_TOKEN`
        - `api_version` from `OPENAI_API_VERSION`
        - `azure_endpoint` from `AZURE_OPENAI_ENDPOINT`

        Args:
            azure_endpoint: Your Azure endpoint, including the resource, e.g. `https://example-resource.azure.openai.com/`

            azure_ad_token: Your Azure Active Directory token, https://www.microsoft.com/en-us/security/business/identity-access/microsoft-entra-id

            azure_ad_token_provider: A function that returns an Azure Active Directory token, will be invoked on every request.

            azure_deployment: A model deployment, if given sets the base client URL to include `/deployments/{azure_deployment}`.
                Note: this means you won't be able to use non-deployment endpoints. Not supported with Assistants APIs.
        Nrf   rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   )r,   rT   rG   rH   rI   rJ   rK   rL   rd   rC   rM   rN   rO   rP   rQ   rR   rS   r-   s                    r.   r+   zAsyncAzureOpenAI.__init__  r|   r/   r}   r   r~   r   r   r   r   c                   t                                          ||||||	|
||||||p| j        |p| j        |p| j        d|          S r   r   r   s                    r.   r   zAsyncAzureOpenAI.copy  r   r/   c                  K   | j         | j         S | j        }|q |            }t          j        |          r| d {V }|r(t	          t          t          |          t                    st          d|           t          |          S d S r   )	rz   r{   inspectisawaitabler   r
   r   rB   rv   r   s      r.   r   z$AsyncAzureOpenAI._get_azure_ad_token  s      +''0HJJE"5)) $# 
4U+;+;S A A  mfkmm   u::tr/   r9   r   c                b  K   t          |j                  r	i |j        ni }t          |          }||_        |                                  d {V }||                    d          d| |d<   n=| j        t          ur |                    d          
| j        |d<   nt          d          |S r   r   r   s       r.   r   z!AsyncAzureOpenAI._prepare_options*  s      @H@Y@Y)a)<GO)<)<_aW%%!#7799999999%{{?++3+E^+E+E(\!111{{9%%-%)\	" 4555r/   r=   r   r   r   c                   K   i }i || j         |d}| j        dk    r
d| j        i}n#|                                  d {V }|rdd| i}||fS r   r   r   s         r.   r   z$AsyncAzureOpenAI._configure_realtime>  s      

,
 
 

 <...%t|4LL2244444444E D /1B51B1BCl""r/   ) rT   rB   rG   rU   rH   rU   rI   rU   rJ   rU   rK   r   rL   rU   rd   rU   rM   rW   rN   rX   rO   r:   rP   rY   rQ   rZ   rR   r   rS   r\   r'   r(   )rG   rU   rH   rU   rI   rU   rJ   rU   rK   r   rL   rU   rd   rU   rM   rW   rN   rX   rO   r:   rP   rY   rQ   rZ   rR   r   rS   r\   r'   r(   )rC   rB   rH   rU   rI   rU   rJ   rU   rK   r   rL   rU   rd   rU   rM   rW   rN   rX   rO   r:   rP   rY   rQ   rZ   rR   r   rS   r\   r'   r(   )"rT   rU   rG   rU   rH   rU   rI   rU   rJ   rU   rK   r   rL   rU   rd   rU   rC   rU   rM   rW   rN   rX   rO   r:   rP   rY   rQ   rZ   rR   r   rS   r\   r'   r(   )"rI   rU   rL   rU   rd   rU   rM   rW   rH   rU   rJ   rU   rK   r   rC   rW   rN   rX   rR   r   rO   r   rP   rY   r~   rY   rQ   rZ   r   rZ   r   r   r'   r   r   r   r   r   r4   s   @r.   r   r   F  s=       
 (,"&"%)DH#'"595>.485904,1#     X(  (,"&"%)DH#'"595>.485904,1!     X& 
 #'"%)DH#'"595>.485904,1!     X, &*'+"&"%)DH#'"#595>.485904,1%d@ d@ d@ d@ d@ d@ d@ d@L  ##'"59"&%)DH+/5>04&/488<599=+-%*
 *
 *
 *
 *
 *
 *
 X*
X L   "    X&# # # # # # # #r/   r   )8
__future__r   rt   r   typingr   r   r   r   r   r	   r
   r   typing_extensionsr   r   httpx_typesr   r   r   r   r   _utilsr   r   _clientr   r   _compatr   _modelsr   
_streamingr   r   _exceptionsr   _base_clientr   r   setr?   rB   AzureADTokenProviderAsyncAzureADTokenProviderClientAsyncClientr   r!   joinrx   r&   r6   rF   r   r_   r/   r.   <module>r      s   " " " " " " 				  T T T T T T T T T T T T T T T T T T T T , , , , , , , ,  > > > > > > > > > > > > > > ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )             ) ) ) ) ) ) , , , , , , , , % % % % % % : : : : : : : :  
 
   C( $R)?%?@ uU\5CT5T/UVVV'+5kRUFV9V3WXXX 7788899 
 
 
 
 
 
 
 
L L L L Lj!?@ L L L @# @# @# @# @#/%,s";<f @# @# @#FE# E# E# E# E#u'8+c:J'JK[ E# E# E# E# E#r/   