
    &MghT                    P   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 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jZ                  ej\                  f         Z/ edee!e   e"e   f         Z0djc                  g d      Z2 G d de$      Z3 G d de'e/e0f         Z4 G d de4ejZ                  e!e   f   e      Z5 G d de4ej\                  e"e   f   e      Z6y)    )annotationsN)AnyUnionMappingTypeVarCallable	Awaitablecastoverload)Selfoverride   )	NOT_GIVENOmit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 )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    ^E:\wamp.anq\www\apps\calme\nutritwin\resources\nutritwin\Lib\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                  :     e Zd Zedd	 	 	 	 	 d fd       Z xZS )BaseAzureClientr   retries_takenc                  |j                   t        v r_t        |j                        rJ|j                  j	                  d      }|-dt        | j                        vrd| |j                    |_         t        | !  ||      S )Nmodelz/deploymentsz/deployments/r6   )	url_deployments_endpointsr   	json_datagetstrbase_urlr'   _build_request)r)   optionsr7   r9   r*   s       r+   r@   zBaseAzureClient._build_request4   sv     ;;00Z@Q@Q5R%%))'2E 3t}};M)M -eWW[[MBw%g]%KKr,   )rA   r   r7   intr-   zhttpx.Request)r/   r0   r1   r   r@   r2   r3   s   @r+   r5   r5   3   s;    
 	L$L 	L
 
L Lr,   r5   c                  6    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deeddddd	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d fd	Ze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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_endpointrE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   s                 r+   r(   zAzureOpenAI.__init__D       " r,   c                    y rR   rS   )r)   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   s                r+   r(   zAzureOpenAI.__init__W         r,   )rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   c                    y rR   rS   )r)   r?   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   s                r+   r(   zAzureOpenAI.__init__i   rW   r,   )rF   rT   rE   rG   rH   rI   rJ   projectr?   rK   rL   rM   rN   rO   rP   c               ,   |t         j                  j                  d      }|t         j                  j                  d      }|||t        d      |t         j                  j                  d      }|t	        d      |d|i}ni |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`
        - `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
rG   rJ   rY   r?   rK   rL   rM   rN   rO   rP   osenvironr=   r   
ValueErrorAPI_KEY_SENTINELr'   r(   _api_version_azure_ad_token_azure_ad_token_provider)r)   rF   rT   rE   rG   rH   rI   rJ   rY   r?   rK   rL   rM   rN   rO   rP   r*   s                   r+   r(   zAzureOpenAI.__init__{   u   N ?jjnn%;<G!ZZ^^,CDN?~5:Q:Y B  **..)=>Kq   *K8MI}Im[IM%!#0G!H%  L   +,--ABRAST,-W5) !UVV?&G%#+'#(C 	 	
 (-(?%r,   rG   rJ   rY   rF   rH   rI   r?   rK   rO   rL   rM   set_default_headersrN   set_default_query_extra_kwargsc                   t         |   ||||||	|
|||||xs | j                  |xs | j                  |xs | j                  d|      S z~
        Create a new client instance re-using the same options given to the current client with optional overriding.
        )rF   rH   rI   )rG   rJ   rY   r?   rK   rO   rL   rM   rq   rN   rr   rs   r'   copyrl   rm   rn   r)   rG   rJ   rY   rF   rH   rI   r?   rK   rO   rL   rM   rq   rN   rr   rs   r*   s                   r+   rw   zAzureOpenAI.copy   u    . w|%##+ 3'/*?d.?.?"0"HD4H4H+B+cdFcFc  	  
 	
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 )rm   rn   
isinstancer>   rj   r)   providertokens      r+   _get_azure_ad_tokenzAzureOpenAI._get_azure_ad_token  sa    +'''00JE
5# 6 efkelm  Lr,   c                H   t        |j                        ri |j                  ni }t        |      }||_        | j                         }||j	                  d      d| |d<   |S | j
                  t        ur"|j	                  d      | j
                  |d<   |S t        d      NAuthorizationzBearer zapi-keyzUnable to handle authr   headersr   r   r=   rG   rk   rj   r)   rA   r   rH   s       r+   _prepare_optionszAzureOpenAI._prepare_options  s    @H@Y)<GOO)<_aW%!113%{{?+3-4^4D+E(  \\!11{{9%-%)\\	"
  455r,   )rT   r>   rE   
str | NonerF   r   rG   r   rH   r   rI   AzureADTokenProvider | NonerJ   r   rK   !float | Timeout | None | NotGivenrL   rB   rM   Mapping[str, str] | NonerN   Mapping[str, object] | NonerO   httpx.Client | NonerP   boolr-   r.   )rE   r   rF   r   rG   r   rH   r   rI   r   rJ   r   rK   r   rL   rB   rM   r   rN   r   rO   r   rP   r   r-   r.   )r?   r>   rF   r   rG   r   rH   r   rI   r   rJ   r   rK   r   rL   rB   rM   r   rN   r   rO   r   rP   r   r-   r.   ) rF   r   rT   r   rE   r   rG   r   rH   r   rI   r   rJ   r   rY   r   r?   r   rK   r   rL   rB   rM   r   rN   r   rO   r   rP   r   r-   r.   ) rG   r   rJ   r   rY   r   rF   r   rH   r   rI   r   r?   str | httpx.URL | NonerK   r   rO   r   rL   int | NotGivenrM   r   rq   r   rN   r   rr   r   rs   Mapping[str, Any]r-   r   r-   r   rA   r   r-   r   r/   r0   r1   r   r   r   r(   r   rw   with_optionsr   r   r2   r3   s   @r+   rD   rD   C   s7   
 (,"&"%)?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#b@  b@ #	b@
 %b@ b@ #b@ "=b@ !b@ b@ b@ 3b@ b@ 2b@ 3b@  )!b@" &*#b@$ 
%b@H  ##'""&%)?C+/5>+/&/488<599=+-#(
 (
 !	(

 (
  (
 #(
 "=(
 )(
 3(
 )(
 $(
 2(
 6(
 3(
  7!(
" )#(
$ 
%(
 (
T L  r,   rD   c                  H    e Zd Zedddddddeeddddd	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd       Zed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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ededdddi d
	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d fd       ZeZ	ddZ
edd       Z xZS )AsyncAzureOpenAINF)rE   rF   rG   rH   rI   rJ   rY   rK   rL   rM   rN   rO   rP   c                    y rR   rS   )r)   rT   rE   rF   rG   rH   rI   rJ   rY   rK   rL   rM   rN   rO   rP   s                  r+   r(   zAsyncAzureOpenAI.__init__1  s    $ r,   c                    y rR   rS   )r)   rE   rF   rG   rH   rI   rJ   rY   rK   rL   rM   rN   rO   rP   s                 r+   r(   zAsyncAzureOpenAI.__init__E  rU   r,   )rF   rG   rH   rI   rJ   rY   rK   rL   rM   rN   rO   rP   c                    y rR   rS   )r)   r?   rF   rG   rH   rI   rJ   rY   rK   rL   rM   rN   rO   rP   s                 r+   r(   zAsyncAzureOpenAI.__init__X  rU   r,   )rT   rE   rF   rG   rH   rI   rJ   rY   r?   rK   rL   rM   rN   rO   rP   c               ,   |t         j                  j                  d      }|t         j                  j                  d      }|||t        d      |t         j                  j                  d      }|t	        d      |d|i}ni |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`
        - `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.
        Nr[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   )r)   rT   rE   rF   rG   rH   rI   rJ   rY   r?   rK   rL   rM   rN   rO   rP   r*   s                   r+   r(   zAsyncAzureOpenAI.__init__k  ro   r,   rp   c                   t         |   ||||||	|
|||||xs | j                  |xs | j                  |xs | j                  d|      S ru   rv   rx   s                   r+   rw   zAsyncAzureOpenAI.copy  ry   r,   c                  K   | j                   | j                   S | j                  }|_ |       }t        j                  |      r
| d {   }|rt	        t        t        |      t              st        d|       t        |      S y 7 >wr{   )	rm   rn   inspectisawaitabler|   r
   r   r>   rj   r}   s      r+   r   z$AsyncAzureOpenAI._get_azure_ad_token  s     +'''00JE""5)#
4U+;S A efkelm  u: $s   AB
B	?Bc                d  K   t        |j                        ri |j                  ni }t        |      }||_        | j                          d {   }||j	                  d      d| |d<   |S | j
                  t        ur"|j	                  d      | j
                  |d<   |S t        d      7 `wr   r   r   s       r+   r   z!AsyncAzureOpenAI._prepare_options  s     @H@Y)<GOO)<_aW%!#7799%{{?+3-4^4D+E(  \\!11{{9%-%)\\	"
  455 :s   AB0B.A!B0)rT   r>   rE   r   rF   r   rG   r   rH   r   rI    AsyncAzureADTokenProvider | NonerJ   r   rY   r   rK   r   rL   rB   rM   r   rN   r   rO   httpx.AsyncClient | NonerP   r   r-   r.   )rE   r   rF   r   rG   r   rH   r   rI   r   rJ   r   rY   r   rK   r   rL   rB   rM   r   rN   r   rO   r   rP   r   r-   r.   )r?   r>   rF   r   rG   r   rH   r   rI   r   rJ   r   rY   r   rK   r   rL   rB   rM   r   rN   r   rO   r   rP   r   r-   r.   ) rT   r   rE   r   rF   r   rG   r   rH   r   rI   r   rJ   r   rY   r   r?   r   rK   r   rL   rB   rM   r   rN   r   rO   r   rP   r   r-   r.   ) rG   r   rJ   r   rY   r   rF   r   rH   r   rI   r   r?   r   rK   r   rO   r   rL   r   rM   r   rq   r   rN   r   rr   r   rs   r   r-   r   r   r   r   r3   s   @r+   r   r   0  sc   
 (,"&"%)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@ #b@ %	b@
  b@ b@ #b@ "Bb@ !b@ b@ b@ 3b@ b@ 2b@ 3b@  .!b@" &*#b@$ 
%b@H  ##'""&%)DH+/5>04&/488<599=+-#(
 (
 !	(

 (
  (
 #(
 "B(
 )(
 3(
 .(
 $(
 2(
 6(
 3(
  7!(
" )#(
$ 
%(
 (
T L"  r,   r   )7
__future__r   rh   r   typingr   r   r   r   r   r	   r
   r   typing_extensionsr   r   httpx_typesr   r   r   r   _utilsr   r   _clientr   r   _compatr   _modelsr   
_streamingr   r   _exceptionsr   _base_clientr   r   setr;   r>   AzureADTokenProviderAsyncAzureADTokenProviderClientAsyncClientr   r    joinrk   r%   r5   rD   r   rS   r,   r+   <module>r      s)   " 	  T T T ,  7 7 ) )   ) , % :
   C( $R)?%?@ uU\\5CTCT5T/UV+5kRUFV9V3WX 7789 
 
Lj!?@ L j/%,,s";<f jZou'8'8+c:J'JK[ or,   