
    f jR                       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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j*        ej+        f                   Z, edeee         ee         f                   Z-d.                    g d          Z/ G d de!          Z0 G d de$e,e-f                   Z1 G d de1ej*        ee         f         e          Z2 G d de1ej+        ee         f         e          Z3dS )    )annotationsN)AnyUnionMappingTypeVarCallable	Awaitableoverload)Self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/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    dC:\Users\Terasoftware\OneDrive\Desktop\faahhh\fyndo\fyndo\venv\Lib\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                  0     e Zd Zed fd            Z xZS )BaseAzureClientoptionsr   r$   httpx.Requestc                   |j         t          v rWt          |j                  rC|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)   r4   r7   r*   s      r+   r>   zBaseAzureClient._build_request3   s    
 ;00 	CZ@Q5R5R 	C%))'22E C3t};M;M)M CBeBW[BBww%%g...r,   )r4   r   r$   r5   )r-   r.   r/   r   r>   r0   r1   s   @r+   r3   r3   2   sG        	/ 	/ 	/ 	/ 	/ X	/ 	/ 	/ 	/ 	/r,   r3   c                  >    e Zd Zeddddddeedddddd0d            Zeddddddeedddddd1d            Zedddddeedddddd2d             Zddddddddeeddddd!d3 fd"Zeddddddededdddi d#d4 fd+            ZeZ	d5d,Z
ed6 fd/            Z xZS )7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_validationazure_endpointr<   rB   
str | NonerC   rD   rE   rF   AzureADTokenProvider | NonerG   rH   !float | Timeout | None | NotGivenrI   intrJ   Mapping[str, str] | NonerK   Mapping[str, object] | NonerL   httpx.Client | NonerM   boolr$   r%   c                   d S N r)   rN   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   s                 r+   r(   zAzureOpenAI.__init__A   	    $ 	r,   c                   d S rX   rY   r)   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   s                r+   r(   zAzureOpenAI.__init__U   	    " 	r,   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   r=   c                   d S rX   rY   r)   r=   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   s                r+   r(   zAzureOpenAI.__init__h   r^   r,   )rC   rN   rB   rD   rE   rF   rG   r=   rH   rI   rJ   rK   rL   rM   c               r   |t           j                            d          }|t           j                            d          }|||t          d          |t           j                            d          }|t	          d          |d|i}ni |d|i}|B|t           j                            d          }|t	          d	          || d
| }n| d}n|t	          d          |t
          }t                                          ||||	|
||||	  	         || _        || _	        || _
        dS )aa  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. 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	rD   rG   r=   rH   rI   rJ   rK   rL   rM   osenvironr;   r   
ValueErrorAPI_KEY_SENTINELr'   r(   _api_version_azure_ad_token_azure_ad_token_provider)r)   rC   rN   rB   rD   rE   rF   rG   r=   rH   rI   rJ   rK   rL   rM   r*   s                  r+   r(   zAzureOpenAI.__init__{      J  	=jnn%;<<G 	EZ^^,CDDN 	~ 	:Q 	 B    	?*..)=>>K 	q    	J*K8MMI}Im[IIM 	W I!#0G!H!H   L     6,TTBRTT,555 W !UVVV 	'&G%#+'#(C 	 
	
 
	
 
	
 (-(?%%%r,   rD   rG   rC   rE   rF   r=   rH   rL   rI   rJ   set_default_headersrK   set_default_query_extra_kwargsstr | httpx.URL | Noneint | NotGivenry   rz   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.
        )rC   rE   rF   )rD   rG   r=   rH   rL   rI   rJ   ry   rK   rz   r{   r'   copyrt   ru   rv   r)   rD   rG   rC   rE   rF   r=   rH   rL   rI   rJ   ry   rK   rz   r{   r*   s                  r+   r   zAzureOpenAI.copy   w    , ww||%##+ 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 )ru   rv   
isinstancer<   rr   r)   providertokens      r+   _get_azure_ad_tokenzAzureOpenAI._get_azure_ad_token  st     	(''0 	HJJE 
5# 6 6  mfkmm   Ltr,   r4   r   c                t   t          |j                  r	i |j        ni }||_        |                                 }||                    d          d| |d<   n=| j        t
          ur |                    d          
| j        |d<   nt          d          t                                          |          S NAuthorizationzBearer zapi-keyzUnable to handle auth	r   headersr   r;   rD   rs   rr   r'   _prepare_optionsr)   r4   r   rE   r*   s       r+   r   zAzureOpenAI._prepare_options  s    @H@Y@Y)a)<GO)<)<_a!1133 	6{{?++ F+E^+E+E(\!11 	6{{9%% 2%)\	" 4555ww''000r,   )rN   r<   rB   rO   rC   rO   rD   rO   rE   rO   rF   rP   rG   rO   rH   rQ   rI   rR   rJ   rS   rK   rT   rL   rU   rM   rV   r$   r%   )rB   rO   rC   rO   rD   rO   rE   rO   rF   rP   rG   rO   rH   rQ   rI   rR   rJ   rS   rK   rT   rL   rU   rM   rV   r$   r%   )r=   r<   rC   rO   rD   rO   rE   rO   rF   rP   rG   rO   rH   rQ   rI   rR   rJ   rS   rK   rT   rL   rU   rM   rV   r$   r%   )rC   rO   rN   rO   rB   rO   rD   rO   rE   rO   rF   rP   rG   rO   r=   rO   rH   rQ   rI   rR   rJ   rS   rK   rT   rL   rU   rM   rV   r$   r%   )rD   rO   rG   rO   rC   rO   rE   rO   rF   rP   r=   r|   rH   rQ   rL   rU   rI   r}   rJ   rS   ry   rS   rK   rT   rz   rT   r{   r~   r$   r   r$   rO   r4   r   r$   r%   r-   r.   r/   r
   r   r   r(   r   r   with_optionsr   r   r0   r1   s   @r+   r@   r@   @   s       
 (,"&"%)?C#'5>.4859+/,1     X&  (,"&"%)?C#'5>.4859+/,1     X$ 
 #'"%)?C#'5>.4859+/,1     X* #'%)'+"%)?C#'#5>.4859+/,1!_@ _@ _@ _@ _@ _@ _@ _@B  ##'"&%)?C+/5>+/&/488<599=+-!&
 &
 &
 &
 &
 &
 &
 X&
P L    1 1 1 1 1 X1 1 1 1 1r,   r@   c                  >    e Zd Zeddddddeedddddd0d            Zeddddddeedddddd1d            Zedddddeedddddd2d             Zddddddddeeddddd!d3 fd"Zeddddddededdddi d#d4 fd+            ZeZ	d5d,Z
ed6 fd/            Z xZS )7AsyncAzureOpenAINFrA   rN   r<   rB   rO   rC   rD   rE   rF    AsyncAzureADTokenProvider | NonerG   rH   rQ   rI   rR   rJ   rS   rK   rT   rL   httpx.AsyncClient | NonerM   rV   r$   r%   c                   d S rX   rY   rZ   s                 r+   r(   zAsyncAzureOpenAI.__init__*  r[   r,   c                   d S rX   rY   r]   s                r+   r(   zAsyncAzureOpenAI.__init__>  r^   r,   r_   r=   c                   d S rX   rY   ra   s                r+   r(   zAsyncAzureOpenAI.__init__Q  r^   r,   )rN   rB   rC   rD   rE   rF   rG   r=   rH   rI   rJ   rK   rL   rM   c               r   |t           j                            d          }|t           j                            d          }|||t          d          |t           j                            d          }|t	          d          |d|i}ni |d|i}|B|t           j                            d          }|t	          d	          || d
| }n| d}n|t	          d          |t
          }t                                          ||||	|
||||	  	         || _        || _	        || _
        dS )ab  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. Not supported with Assistants APIs.
        Nrc   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   )r)   rN   rB   rC   rD   rE   rF   rG   r=   rH   rI   rJ   rK   rL   rM   r*   s                  r+   r(   zAsyncAzureOpenAI.__init__d  rw   r,   rx   r|   r}   ry   rz   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
                    st          d|           |S d S r   )ru   rv   inspectisawaitabler   r<   rr   r   s      r+   r   z$AsyncAzureOpenAI._get_azure_ad_token  s       	(''0 	HJJE"5)) $# 
5# 6 6  mfkmm   Ltr,   r4   r   c                  K   t          |j                  r	i |j        ni }||_        |                                  d {V }||                    d          d| |d<   n=| j        t
          ur |                    d          
| j        |d<   nt          d          t                                          |           d {V S r   r   r   s       r+   r   z!AsyncAzureOpenAI._prepare_options  s      @H@Y@Y)a)<GO)<)<_a!#7799999999 	6{{?++ F+E^+E+E(\!11 	6{{9%% 2%)\	" 4555WW--g666666666r,   )rN   r<   rB   rO   rC   rO   rD   rO   rE   rO   rF   r   rG   rO   rH   rQ   rI   rR   rJ   rS   rK   rT   rL   r   rM   rV   r$   r%   )rB   rO   rC   rO   rD   rO   rE   rO   rF   r   rG   rO   rH   rQ   rI   rR   rJ   rS   rK   rT   rL   r   rM   rV   r$   r%   )r=   r<   rC   rO   rD   rO   rE   rO   rF   r   rG   rO   rH   rQ   rI   rR   rJ   rS   rK   rT   rL   r   rM   rV   r$   r%   )rN   rO   rB   rO   rC   rO   rD   rO   rE   rO   rF   r   rG   rO   r=   rO   rH   rQ   rI   rR   rJ   rS   rK   rT   rL   r   rM   rV   r$   r%   )rD   rO   rG   rO   rC   rO   rE   rO   rF   r   r=   r|   rH   rQ   rL   r   rI   r}   rJ   rS   ry   rS   rK   rT   rz   rT   r{   r~   r$   r   r   r   r   r1   s   @r+   r   r   )  s       
 (,"&"%)DH#'5>.485904,1     X&  (,"&"%)DH#'5>.485904,1     X$ 
 #'"%)DH#'5>.485904,1     X* &*'+"&"%)DH#'#5>.485904,1!_@ _@ _@ _@ _@ _@ _@ _@B  ##'"&%)DH+/5>04&/488<599=+-!&
 &
 &
 &
 &
 &
 &
 X&
P L   " 7 7 7 7 7 X7 7 7 7 7r,   r   )4
__future__r   rp   r   typingr   r   r   r   r   r	   r
   typing_extensionsr   r   httpx_typesr   r   r   r   _utilsr   r   _clientr   r   _modelsr   
_streamingr   r   _exceptionsr   _base_clientr   r   setr9   r<   AzureADTokenProviderAsyncAzureADTokenProviderClientAsyncClientr   r   joinrs   r#   r3   r@   r   rY   r,   r+   <module>r      s   " " " " " " 				  N N N N N N N N N N N N N N N N N N , , , , , , , ,  7 7 7 7 7 7 7 7 7 7 7 7 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) , , , , , , , , % % % % % % : : : : : : : :  
 
   C( $R)?%?@ uU\5CT5T/UVVV'+5kRUFV9V3WXXX 7788899 
 
 
 
 
 
 
 
/ / / / /j!?@ / / /f1 f1 f1 f1 f1/%,s";<f f1 f1 f1Rh7 h7 h7 h7 h7u'8+c:J'JK[ h7 h7 h7 h7 h7r,   