
    hY%hd                    T   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je                  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      Z7y)    )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 )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    f/var/www/pru.catia.catastroantioquia-mas.com/valormas/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                  f     e Zd ZU ded<   ded<   edd	 	 	 	 	 d	 fd       Zed
 fd       Z xZS )BaseAzureClientzhttpx.URL | None_azure_endpoint
str | None_azure_deploymentr   retries_takenc                  |j                   t        v rit        |j                        rT|j                  j	                  d      }|7dt        | j                  j                        vrd| |j                    |_         t        | %  ||      S )Nmodelz/deploymentsz/deployments/r:   )
url_deployments_endpointsr   	json_datagetstrbase_urlpathr(   _build_request)r*   optionsr;   r=   r+   s       r,   rE   zBaseAzureClient._build_request7   s|     ;;00Z@Q@Q5R%%))'2E ^3t}}?Q?Q;R%R -eWW[[MBw%g]%KKr-   c                h   | j                   r| j                  r|t        vrt        j                  |      }|j
                  r`| j                  j                  j                  d      dz   |j                  j                  d      z   }| j                  j                  |      S |S t        | -  |      S )zAdjust the URL if the client was configured with an Azure endpoint + deployment
        and the API feature being called is **not** a deployments-based endpoint
        (i.e. requires /deployments/deployment-name in the URL path).
           /s   /openai/raw_path)r9   r7   r?   httpxURLis_relative_urlrJ   rstriplstrip	copy_withr(   _prepare_url)r*   r>   	merge_urlmerge_raw_pathr+   s       r,   rQ   zBaseAzureClient._prepare_urlE   s     !!d&:&:sJ`?`		#I((((1188>LyOaOaOhOhimOnn  ++55~5NNw#C((r-   )rF   r   r;   intr.   zhttpx.Request)r>   rB   r.   z	httpx.URL)r0   r1   r2   __annotations__r   rE   rQ   r3   r4   s   @r,   r6   r6   3   s[    %%!!
 	L$L 	L
 
L L ) )r-   r6   c                  \    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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d       Zdd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_validationc                    y N )r*   azure_endpointrX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   s                  r,   r)   zAzureOpenAI.__init__Y       $ r-   c                    y rf   rg   )r*   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   s                 r,   r)   zAzureOpenAI.__init__m       " r-   )rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   c                    y rf   rg   )r*   rC   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   s                 r,   r)   zAzureOpenAI.__init__   rk   r-   )rY   rh   rX   rZ   r[   r\   r]   projectr^   rC   r_   r`   ra   rb   rc   rd   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	      ||j                  d
       d| }
n"|j                  d
       d}
n|t	        d      |t        }t        | !  ||||
||||||	|       || _	        || _
        || _        |r|nd| _        |rt        j                  |      | _        yd| _        y)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`
        - `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 with `azure_endpoint`, sets the base client URL to include `/deployments/{azure_deployment}`.
                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rZ   r]   rm   rC   r_   r`   ra   rb   rc   r^   rd   osenvironrA   r   
ValueErrorrN   API_KEY_SENTINELr(   r)   _api_version_azure_ad_token_azure_ad_token_providerr9   rK   rL   r7   )r*   rY   rh   rX   rZ   r[   r\   r]   rm   r^   rC   r_   r`   ra   rb   rc   rd   r+   s                    r,   r)   zAzureOpenAI.__init__      P ?jjnn%;<G!ZZ^^,CDN?~5:Q:Y B  **..)=>Kq   *K8MI}Im[IM%!#0G!H%  L   +,33C899MN^M_`,33C89A) !UVV?&G%#+'#1(C 	 	
 (-(?%5C!1<Juyy8PTr-   rZ   r]   rm   r^   rY   r[   r\   rC   r_   rc   r`   ra   set_default_headersrb   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.
        )rY   r[   r\   )rZ   r]   rm   r^   rC   r_   rc   r`   ra   r   rb   r   r   r(   copyr   r   r   r*   rZ   r]   rm   r^   rY   r[   r\   rC   r_   rc   r`   ra   r   rb   r   r   r+   s                    r,   r   zAzureOpenAI.copy   x    0 w|%1##+ 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 )r   r   
isinstancerB   r   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AuthorizationBearer api-keyzUnable to handle authr   headersr   r   rA   rZ   r   r   r*   rF   r   r[   s       r,   _prepare_optionszAzureOpenAI._prepare_options9  s    @H@Y)<GOO)<_aW%!113%{{?+3-4^4D+E(  \\!11{{9%-%)\\	"
  455r-   c                   i }i || j                   | j                  xs |d}| j                  dk7  rd| j                  i}n| j                         }|rdd| i}| j                  Pt        j                  | j                        }|j                  j                  d      dz   }|j                  |      }n#| j                  d	      }|j                  d
      }|j                  i |      }	|	|fS N)rt   
deploymentz<missing API key>r   r   r   rH   s	   /realtimerI   z	/realtimewss)scheme)paramsr   r9   rZ   r   r^   rK   rL   rJ   rN   rP   rQ   
r*   r=   extra_queryauth_headersqueryr   rC   rS   realtime_urlr>   s
             r,   _configure_realtimezAzureOpenAI._configure_realtimeM  s   

,,009E

 <<..%t||4L,,.E /75'1BC"".yy!8!89H%..55d;lJN#--~-FL((5H#--U-;L$$IuI$6L  r-   )rh   rB   rX   r8   rY   r8   rZ   r8   r[   r8   r\   AzureADTokenProvider | Noner]   r8   r^   str | httpx.URL | Noner_   !float | Timeout | None | NotGivenr`   rT   ra   Mapping[str, str] | Nonerb   Mapping[str, object] | Nonerc   httpx.Client | Nonerd   boolr.   r/   )rX   r8   rY   r8   rZ   r8   r[   r8   r\   r   r]   r8   r^   r   r_   r   r`   rT   ra   r   rb   r   rc   r   rd   r   r.   r/   )rC   rB   rY   r8   rZ   r8   r[   r8   r\   r   r]   r8   r^   r   r_   r   r`   rT   ra   r   rb   r   rc   r   rd   r   r.   r/   )"rY   r8   rh   r8   rX   r8   rZ   r8   r[   r8   r\   r   r]   r8   rm   r8   r^   r   rC   r8   r_   r   r`   rT   ra   r   rb   r   rc   r   rd   r   r.   r/   )"rZ   r8   r]   r8   rm   r8   r^   r   rY   r8   r[   r8   r\   r   rC   r   r_   r   rc   r   r`   int | NotGivenra   r   r   r   rb   r   r   r   r   Mapping[str, Any]r.   r   r.   r8   rF   r   r.   r   r=   rB   r   r   r.   z tuple[httpx.URL, dict[str, str]]r0   r1   r2   r   r   r   r)   r   r   with_optionsr   r   r   r3   r4   s   @r,   rW   rW   X   s   
 (,"&"%)?C#'595>.4859+/,1!  %	
    # "= ! 3 3  2 3 )  &*!" 
# &  (,"&"%)?C#'595>.4859+/,1 %  	
  # "= ! 3 3  2 3 ) &*  
! $ 
 #'"%)?C#'595>.4859+/,1   	
  # "= ! 3 3  2 3 ) &*  
! * #'%)'+"%)?C#'"59#5>.4859+/,1%fU  fU #	fU
 %fU fU #fU "=fU !fU fU 3fU fU 3fU fU 2fU  3!fU" )#fU$ &*%fU& 
'fUP  ##'"59"&%)?C+/5>+/&/488<599=+-%*
 *
 !	*

 *
 3*
  *
 #*
 "=*
 )*
 3*
 )*
 $*
 2*
 6*
  3!*
" 7#*
$ )%*
& 
'*
 *
X L  &!r-   rW   c                  n    e Zd Zed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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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d       ZddZ xZS )AsyncAzureOpenAINF)rX   rY   rZ   r[   r\   r]   rm   r^   r_   r`   ra   rb   rc   rd   c                    y rf   rg   )r*   rh   rX   rY   rZ   r[   r\   r]   rm   r^   r_   r`   ra   rb   rc   rd   s                   r,   r)   zAsyncAzureOpenAI.__init__h  s    & r-   c                    y rf   rg   )r*   rX   rY   rZ   r[   r\   r]   rm   r^   r_   r`   ra   rb   rc   rd   s                  r,   r)   zAsyncAzureOpenAI.__init__}  ri   r-   )rY   rZ   r[   r\   r]   rm   r^   r_   r`   ra   rb   rc   rd   c                    y rf   rg   )r*   rC   rY   rZ   r[   r\   r]   rm   r^   r_   r`   ra   rb   rc   rd   s                  r,   r)   zAsyncAzureOpenAI.__init__  ri   r-   )rh   rX   rY   rZ   r[   r\   r]   rm   rC   r^   r_   r`   ra   rb   rc   rd   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	      ||j                  d
       d| }	n"|j                  d
       d}	n|t	        d      |t        }t        | !  ||||	||||||
|       || _	        || _
        || _        |r|nd| _        |rt        j                  |      | _        yd| _        y)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`
        - `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 with `azure_endpoint`, sets the base client URL to include `/deployments/{azure_deployment}`.
                Not supported with Assistants APIs.
        Nro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   )r*   rh   rX   rY   rZ   r[   r\   r]   rm   rC   r^   r_   r`   ra   rb   rc   rd   r+   s                    r,   r)   zAsyncAzureOpenAI.__init__  r   r-   r   c                   t         |   ||||||	|
||||||xs | j                  |xs | j                  |xs | j                  d|      S r   r   r   s                    r,   r   zAsyncAzureOpenAI.copy  r   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   )	r   r   inspectisawaitabler   r
   r   rB   r   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_optionsM  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c                   K   i }i || j                   | j                  xs |d}| j                  dk7  rd| j                  i}n!| j                          d {   }|rdd| i}| j                  Pt        j                  | j                        }|j                  j                  d      dz   }|j                  |      }n#| j                  d	      }|j                  d
      }|j                  i |      }	|	|fS 7 wr   r   r   s
             r,   r   z$AsyncAzureOpenAI._configure_realtimea  s    

,,009E

 <<..%t||4L2244E /75'1BC"".yy!8!89H%..55d;lJN#--~-FL((5H#--U-;L$$IuI$6L   5s   AC>C<B%C>) rh   rB   rX   r8   rY   r8   rZ   r8   r[   r8   r\    AsyncAzureADTokenProvider | Noner]   r8   rm   r8   r^   r   r_   r   r`   rT   ra   r   rb   r   rc   httpx.AsyncClient | Nonerd   r   r.   r/   )rX   r8   rY   r8   rZ   r8   r[   r8   r\   r   r]   r8   rm   r8   r^   r   r_   r   r`   rT   ra   r   rb   r   rc   r   rd   r   r.   r/   )rC   rB   rY   r8   rZ   r8   r[   r8   r\   r   r]   r8   rm   r8   r^   r   r_   r   r`   rT   ra   r   rb   r   rc   r   rd   r   r.   r/   )"rh   r8   rX   r8   rY   r8   rZ   r8   r[   r8   r\   r   r]   r8   rm   r8   rC   r8   r^   r   r_   r   r`   rT   ra   r   rb   r   rc   r   rd   r   r.   r/   )"rZ   r8   r]   r8   rm   r8   r^   r   rY   r8   r[   r8   r\   r   rC   r   r_   r   rc   r   r`   r   ra   r   r   r   rb   r   r   r   r   r   r.   r   r   r   r   r   r4   s   @r,   r   r   g  s   
 (,"&"%)DH#'"595>.485904,1#  %	
    # "B !  3 3  2 3  .!" &*#$ 
% (  (,"&"%)DH#'"595>.485904,1! %  	
  # "B !  3 3  2 3 .  &*!" 
# & 
 #'"%)DH#'"595>.485904,1!   	
  # "B !  3 3  2 3 .  &*!" 
# , &*'+"&"%)DH#'"#595>.485904,1%fU #fU %	fU
  fU fU #fU "BfU !fU fU fU 3fU 3fU fU 2fU  3!fU" .#fU$ &*%fU& 
'fUP  ##'"59"&%)DH+/5>04&/488<599=+-%*
 *
 !	*

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