
    ,:jD                    <   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 d dlmZ d dlZddl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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jR                  ejT                  f         Z+ edeee   ee   f         Z,dj[                  g d      Z. G d de       Z/ G d de#e+e,f         Z0 G d de0ejR                  ee   f   e      Z1 G d de0ejT                  ee   f   e      Z2y)    )annotationsN)AnyUnionMappingTypeVarCallable	Awaitableoverload)override   )	NOT_GIVENOmitTimeoutNotGiven)is_given
is_mapping)OpenAIAsyncOpenAI)FinalRequestOptions)StreamAsyncStream)OpenAIError)DEFAULT_MAX_RETRIES
BaseClient)z/completionsz/chat/completionsz/embeddingsz/audio/transcriptionsz/audio/translationsz/images/generationszstr | Awaitable[str]_HttpxClientT)bound_DefaultStreamT )<zmissing API key>c                        e Zd Zd fdZ xZS )MutuallyExclusiveAuthErrorc                $    t         |   d       y )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    R/var/www/html/tokenscope/api/venv/lib/python3.12/site-packages/openai/lib/azure.pyr%   z#MutuallyExclusiveAuthError.__init__+   s     O	
    )returnNone)__name__
__module____qualname__r%   __classcell__r'   s   @r(   r"   r"   *   s    
 
r)   r"   c                  2     e Zd Ze	 	 	 	 d fd       Z xZS )BaseAzureClientc                   |j                   t        v r_t        |j                        rJ|j                  j	                  d      }|-dt        | j                        vrd| |j                    |_         t        | !  |      S )Nmodelz/deploymentsz/deployments/)	url_deployments_endpointsr   	json_datagetstrbase_urlr$   _build_request)r&   optionsr4   r'   s      r(   r;   zBaseAzureClient._build_request2   sq    
 ;;00Z@Q@Q5R%%))'2E 3t}};M)M -eWW[[MBw%g..r)   )r<   r   r*   zhttpx.Request)r,   r-   r.   r   r;   r/   r0   s   @r(   r2   r2   1   s'    	/$	/ 
	/ 	/r)   r2   c                      e Zd Zeddddddeeddddd	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd       Zeddddddeeddddd	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd       Zedddddeeddddd	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd       Zddddddddeeddddd	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d fd	Zdd
Zed fd       Z	 xZ
S )AzureOpenAINFazure_deploymentapi_versionapi_keyazure_ad_tokenazure_ad_token_providerorganizationtimeoutmax_retriesdefault_headersdefault_queryhttp_client_strict_response_validationc                    y N r&   azure_endpointr@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   s                 r(   r%   zAzureOpenAI.__init__@       $ 	r)   c                    y rM   rN   r&   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   s                r(   r%   zAzureOpenAI.__init__T       " 	r)   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   c                    y rM   rN   r&   r:   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   s                r(   r%   zAzureOpenAI.__init__g   rT   r)   )rA   rP   r@   rB   rC   rD   rE   r:   rF   rG   rH   rI   rJ   rK   c                  |t         j                  j                  d      }|t         j                  j                  d      }|||t        d      |t         j                  j                  d      }|t	        d      |d|i}nd|i|}|>|t         j                  j                  d      }|t	        d	      || d
| }n| d}n|t	        d      |t
        }t        |   ||||	|
||||	       || _        || _	        y)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`
        - `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.
        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	rB   rE   r:   rF   rG   rH   rI   rJ   rK   
osenvironr8   r   
ValueErrorAPI_KEY_SENTINELr$   r%   _azure_ad_token_azure_ad_token_provider)r&   rA   rP   r@   rB   rC   rD   rE   r:   rF   rG   rH   rI   rJ   rK   r'   s                  r(   r%   zAzureOpenAI.__init__z   h   J ?jjnn%;<G!ZZ^^,CDN?~5:Q:Y B  **..)=>Kq   *K8M*KI=IM%!#0G!H%  L   +,--ABRAST,-W5) !UVV?&G%#+'#(C 	 
	
  .(?%r)   c                    | j                   | j                   S | j                  }|) |       }|rt        |t              st	        d|       |S y NzOExpected `azure_ad_token_provider` argument to return a string but it returned )rj   rk   
isinstancer9   rh   r&   providertokens      r(   _get_azure_ad_tokenzAzureOpenAI._get_azure_ad_token   sa    +'''00JE
5# 6 efkelm  Lr)   c                N   t        |j                        ri |j                  ni }||_        | j                         }||j                  d      Gd| |d<   n>| j                  t
        ur!|j                  d      | j                  |d<   nt        d      t        | !  |      S NAuthorizationzBearer zapi-keyzUnable to handle auth	r   headersrs   r8   rB   ri   rh   r$   _prepare_optionsr&   r<   rx   rC   r'   s       r(   ry   zAzureOpenAI._prepare_options   s    @H@Y)<GOO)<_a!113%{{?+3-4^4D+E(\\!11{{9%-%)\\	" 455w'00r)   )rP   r9   r@   
str | NonerA   r{   rB   r{   rC   r{   rD   AzureADTokenProvider | NonerE   r{   rF   !float | Timeout | None | NotGivenrG   intrH   Mapping[str, str] | NonerI   Mapping[str, object] | NonerJ   httpx.Client | NonerK   boolr*   r+   )r@   r{   rA   r{   rB   r{   rC   r{   rD   r|   rE   r{   rF   r}   rG   r~   rH   r   rI   r   rJ   r   rK   r   r*   r+   )r:   r9   rA   r{   rB   r{   rC   r{   rD   r|   rE   r{   rF   r}   rG   r~   rH   r   rI   r   rJ   r   rK   r   r*   r+   )rA   r{   rP   r{   r@   r{   rB   r{   rC   r{   rD   r|   rE   r{   r:   r{   rF   r}   rG   r~   rH   r   rI   r   rJ   r   rK   r   r*   r+   r*   r{   r<   r   r*   r+   r,   r-   r.   r
   r   r   r%   rs   r   ry   r/   r0   s   @r(   r>   r>   ?   s=   
 (,"&"%)?C#'5>.4859+/,1  %	
    # "= ! 3  2 3 ) &*  
! &  (,"&"%)?C#'5>.4859+/,1 %  	
  # "= ! 3  2 3 ) &* 
 $ 
 #'"%)?C#'5>.4859+/,1   	
  # "= ! 3  2 3 ) &* 
 * #'%)'+"%)?C#'#5>.4859+/,1!^@  ^@ #	^@
 %^@ ^@ #^@ "=^@ !^@ ^@ 3^@ ^@ 2^@ 3^@ )^@  &*!^@" 
#^@@ 1 1r)   r>   c                      e Zd Zeddddddeeddddd	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd       Zeddddddeeddddd	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd       Zedddddeeddddd	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd       Zddddddddeeddddd	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d fd	Zdd
Zed fd       Z	 xZ
S )AsyncAzureOpenAINFr?   c                    y rM   rN   rO   s                 r(   r%   zAsyncAzureOpenAI.__init__   rQ   r)   c                    y rM   rN   rS   s                r(   r%   zAsyncAzureOpenAI.__init__  rT   r)   rU   c                    y rM   rN   rW   s                r(   r%   zAsyncAzureOpenAI.__init__$  rT   r)   )rP   r@   rA   rB   rC   rD   rE   r:   rF   rG   rH   rI   rJ   rK   c                  |t         j                  j                  d      }|t         j                  j                  d      }|||t        d      |t         j                  j                  d      }|t	        d      |d|i}nd|i|}|>|t         j                  j                  d      }|t	        d	      || d
| }n| d}n|t	        d      |t
        }t        |   ||||	|
||||	       || _        || _	        y)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`
        - `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.
        NrY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   )r&   rP   r@   rA   rB   rC   rD   rE   r:   rF   rG   rH   rI   rJ   rK   r'   s                  r(   r%   zAsyncAzureOpenAI.__init__7  rl   r)   c                   K   | j                   | j                   S | j                  }|H |       }t        j                  |      r
| d {   }|rt	        |t
              st        d|       |S y 7 'wrn   )rj   rk   inspectisawaitablero   r9   rh   rp   s      r(   rs   z$AsyncAzureOpenAI._get_azure_ad_token  s     +'''00JE""5)#
5# 6 efkelm  L $s   AA4
A2(A4c                ~  K   t        |j                        ri |j                  ni }||_        | j                          d {   }||j                  d      Gd| |d<   n>| j                  t
        ur!|j                  d      | j                  |d<   nt        d      t        | !  |       d {   S 7 u7 wru   rw   rz   s       r(   ry   z!AsyncAzureOpenAI._prepare_options  s     @H@Y)<GOO)<_a!#7799%{{?+3-4^4D+E(\\!11{{9%-%)\\	" 455W-g666 : 7s%   A B=B9A0B=4B;5B=;B=)rP   r9   r@   r{   rA   r{   rB   r{   rC   r{   rD    AsyncAzureADTokenProvider | NonerE   r{   rF   r}   rG   r~   rH   r   rI   r   rJ   httpx.AsyncClient | NonerK   r   r*   r+   )r@   r{   rA   r{   rB   r{   rC   r{   rD   r   rE   r{   rF   r}   rG   r~   rH   r   rI   r   rJ   r   rK   r   r*   r+   )r:   r9   rA   r{   rB   r{   rC   r{   rD   r   rE   r{   rF   r}   rG   r~   rH   r   rI   r   rJ   r   rK   r   r*   r+   )rP   r{   r@   r{   rA   r{   rB   r{   rC   r{   rD   r   rE   r{   r:   r{   rF   r}   rG   r~   rH   r   rI   r   rJ   r   rK   r   r*   r+   r   r   r   r0   s   @r(   r   r      sA   
 (,"&"%)DH#'5>.485904,1  %	
    # "B ! 3  2 3 . &*  
! &  (,"&"%)DH#'5>.485904,1 %  	
  # "B ! 3  2 3 . &* 
 $ 
 #'"%)DH#'5>.485904,1   	
  # "B ! 3  2 3 . &* 
 * &*'+"&"%)DH#'#5>.485904,1!^@ #^@ %	^@
  ^@ ^@ #^@ "B^@ !^@ ^@ 3^@ ^@ 2^@ 3^@ .^@  &*!^@" 
#^@@" 7 7r)   r   )3
__future__r   rf   r   typingr   r   r   r   r   r	   r
   typing_extensionsr   httpx_typesr   r   r   r   _utilsr   r   _clientr   r   _modelsr   
_streamingr   r   _exceptionsr   _base_clientr   r   setr6   r9   AzureADTokenProviderAsyncAzureADTokenProviderClientAsyncClientr   r   joinri   r"   r2   r>   r   rN   r)   r(   <module>r      s$   " 	  N N N &  7 7 ) ) ) , % :	   C( $R)?%?@ uU\\5CTCT5T/UV+5kRUFV9V3WX 7789 
 
/j!?@ /z1/%,,s";<f z1z|7u'8'8+c:J'JK[ |7r)   