
    Yj-                    N   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 ddlmZmZmZmZmZmZ ddlmZ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- ddl.m/Z/ ddl0m1Z1 ddl2m3Z3m4Z4 ddl5m6Z6  e7g d      Z8e	g e9f   Z:e	g df   Z; edeejx                  ejz                  f         Z> edee,e   e-e   f         Z?dj                  g d      ZAd-dZBd.dZCdZDd/dZEd0dZFd0dZG G d  d!e1      ZH ed"ee9e	d#ef   f         ZI ed$e	d#ef         ZJ	 	 	 	 	 	 	 	 d1d%ZK	 	 	 	 	 	 	 	 	 	 	 	 	 	 d2d&ZL G d' d(e4e>e?f         ZM G d) d*eMejx                  e,e   f   e       ZN G d+ d,eMejz                  e-e   f   e!      ZOy)3    )annotationsN)AnyUnionMappingTypeVarCallable	Awaitablecastoverload)Selfoverride   )WorkloadIdentityX509WorkloadIdentity)	NOT_GIVENOmitQueryHeadersTimeoutNotGiven)is_given
is_mappingpath_template)OpenAIAsyncOpenAI)
model_copy)normalize_httpx_url)SecurityOptionsFinalRequestOptions)	_Provider)StreamAsyncStream)is_x509_workload_identity)OpenAIError)DEFAULT_MAX_RETRIES
BaseClient)DataResidency)z/completionsz/chat/completionsz/embeddingsz/audio/transcriptionsz/audio/translationsz/audio/speechz/images/generationsz/images/editszstr | Awaitable[str]_HttpxClientT)bound_DefaultStreamT )<zmissing API key>c                L    j                         t        fd| D              S )Nc              3  D   K   | ]  }|j                         k(    y wN)lower).0keyheaders     O/var/www/html/vmm-quimica/venv/lib/python3.12/site-packages/openai/lib/azure.py	<genexpr>z_has_header.<locals>.<genexpr>4   s     8syy{f$8s    )r1   any)headersr4   s    `r5   _has_headerr9   2   s    \\^F8888    c                6    t        | d      xs t        | d      S )NAuthorizationapi-key)r9   )r8   s    r5   _has_auth_headerr>   7   s    w0SK4SSr:   zopenai.azure_auth_originc                    | j                   }|dddj                  | j                        }| j                  | j                  |fS )NP   i  )httphttps)portgetschemehost)urlrC   s     r5   _originrH   >   s>    88D|S)--cjj9::sxx%%r:   c                    | j                   j                  t              }|6|t        | j                        k7  r| j
                  j                  dd        y y y )Nr=   )
extensionsrD   _AZURE_AUTH_ORIGINrH   rG   r8   pop)requestorigins     r5    _strip_azure_api_key_on_redirectrO   E   sK    ##$67Ff(<<It, =r:   c                "   K   t        |        y wr0   )rO   )rM   s    r5   &_async_strip_azure_api_key_on_redirectrQ   K   s     $W-s   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    r5   rV   z#MutuallyExclusiveAuthError.__init__P   s     O	
r:   )returnNone)__name__
__module____qualname__rV   __classcell__rX   s   @r5   rS   rS   O   s    
 
r:   rS   _AzureApiKeyT._AzureTokenProviderTc                    t        | d uxr	 | t        k7  |d u|d uf      dkD  r
t               | }| D|B|@t        j                  j                  d      }|t        j                  j                  d      }|||fS )N   AZURE_OPENAI_AD_TOKENAZURE_OPENAI_API_KEY)sumAPI_KEY_SENTINELrS   osenvironrD   )api_keyazure_ad_tokenazure_ad_token_providerresolved_api_keys       r5   _resolve_azure_authrn   Z   s     	t#C3C(Cd*'t3	
 	 )** 4;>16M6U(?@!!zz~~.DE^-DDDr:   c               d    | |||xs t         ||fS t        | ||      \  }}}|xs t         ||fS r0   )rg   rn   )	rj   rk   rl   current_api_keycurrent_tokencurrent_providerr3   tokenproviders	            r5   _copy_azure_authru   w   sS     >16M6U2"2MCSSS /wH_`C""E833r:   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httpx2.URL | None_azure_endpoint
str | None_azure_deploymentr   retries_takenc               ~   |j                   t        v rrt        |j                        r]|j                  j	                  d      }|@dt        | j                  j                        vrt        d|      |j                   z   |_         t        | )  ||      }t        |j                         |j                  t        <   |S )Nmodelz/deploymentsz/deployments/{model})r~   r{   )rG   _deployments_endpointsr   	json_datarD   strbase_urlpathr   rU   _build_requestrH   rJ   rK   )rW   optionsr|   r~   rM   rX   s        r5   r   zBaseAzureClient._build_request   s     ;;00Z@Q@Q5R%%))'2E ^3t}}?Q?Q;R%R+,B%PSZS^S^^'((N 291E-.r:   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)rz   rx   r   httpx2URLis_relative_urlr   rstriplstrip	copy_withrU   _prepare_url)rW   rG   	merge_urlmerge_raw_pathrX   s       r5   r   zBaseAzureClient._prepare_url   s     !!d&:&:sJ`?`

3I((((1188>LyOaOaOhOhimOnn  ++55~5NNw#C((r:   )r   r   r|   intrY   httpx2.Request)rG   r   rY   
httpx2.URL)r[   r\   r]   __annotations__r   r   r   r^   r_   s   @r5   rw   rw      sV    &&!!
 	$ 	
 
 " ) )r:   rw   c                      e Zd Zedddddddddeedddddd	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd       Zedddddddddeed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d       Zdddddddddddddeedddddd		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d fd
Zedddedddddddedededddddi d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d fd       ZeZ	ddZ
edd       Zedd       Zedd       ZddZ xZS )AzureOpenAINFT)azure_deploymentapi_versionrj   admin_api_keyrk   rl   organizationwebhook_secretwebsocket_base_urltimeoutmax_retriesdefault_headersdefault_queryhttp_client_strict_response_validation_enforce_credentialsc                    y r0    )rW   azure_endpointr   r   rj   r   rk   rl   r   r   r   r   r   r   r   r   r   r   s                     r5   rV   zAzureOpenAI.__init__       * r:   c                    y r0   r   )rW   r   r   rj   r   rk   rl   r   r   r   r   r   r   r   r   r   r   s                    r5   rV   zAzureOpenAI.__init__       ( r:   )r   rj   r   rk   rl   r   r   r   r   r   r   r   r   r   r   c                    y r0   r   )rW   r   r   rj   r   rk   rl   r   r   r   r   r   r   r   r   r   r   s                    r5   rV   zAzureOpenAI.__init__   r   r:   )r   r   r   rj   r   workload_identityrk   rl   r   projectr   r   r   r   r   r   r   r   r   r   c                  t        |      rt        d      t        |||      \  }}}|r|||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                   |      nd| _        | j$                  j&                  d   }t(        |vr|j+                  t(               y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`

        Pass at most one of `api_key`, `azure_ad_token`, or `azure_ad_token_provider`.
        An explicit credential takes precedence over Azure credential environment variables.
        With no explicit credential, `AZURE_OPENAI_AD_TOKEN` takes precedence over `AZURE_OPENAI_API_KEY`.

        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.
        9X.509 workload identity is not supported by Azure clientsNMissing 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rj   r   r   r   r   r   r   r   r   r   r   r   r   r   rM   )r#   r$   rn   rh   ri   rD   
ValueErrorr   rg   rU   rV   _api_version_azure_ad_token_azure_ad_token_providerrz   r   r   rx   _clientevent_hooksrO   append)rW   r   r   r   rj   r   r   rk   rl   r   r   r   r   r   r   r   r   r   r   r   r   hooksrX   s                         r5   rV   zAzureOpenAI.__init__   s   b %%67YZZ;N^%<<
8!8  GO8NSjSr 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!5 	 	
  (-(?%5C!1=Kvzz.9QU((3+58LL9: 9r:   rj   r   r   rt   r   r   r   r   r   rk   rl   r   data_residencyr   r   r   r   set_default_headersr   set_default_queryr   _extra_kwargsc                  |t        d      t        |t              rdn|}t        |t              st        d      t        |      rt        d      t	        ||
|| j
                  xs | j                  | j                  | j                        \  }}
}t        | )  |||||||||||||||||	xs | j                  |
|d|      S )~
        Create a new client instance re-using the same options given to the current client with optional overriding.
        N4`data_residency` is only supported by OpenAI clientszFConfigure `provider` on `OpenAI`, not on `AzureOpenAI.with_options()`.r   rp   rq   rr   r   rk   rl   rj   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r$   
isinstancer   r#   ru   _api_key_providerrj   r   r   rU   copyr   rW   rj   r   r   rt   r   r   r   r   r   rk   rl   r   r   r   r   r   r   r   r   r   r   r   rX   s                          r5   r   zAzureOpenAI.copyn  s    < %TUU%h94x(H-fgg$%67YZZ;K# 22Bdll..!::<
8!8 w|'/%)1##+ 3'/!5*?d.?.?"0+B  	#  
 	
r:   c                   | j                   | j                   S | j                  }|Yt        t         |             }t	        |t
              rt
        j                  |      }t	        |t
              r|st        d      |S y NzIExpected `azure_ad_token_provider` argument to return a non-empty string.)r   r   r
   objectr   r   __str__r   rW   rt   rs   s      r5   _get_azure_ad_tokenzAzureOpenAI._get_azure_ad_token  sq    +'''00,E%%E*eS) !lmmLr:   c                    | j                   dd| j                    iS | j                  r!| j                  t        k7  rd| j                  iS i S Nr<   Bearer r=   r   rj   rg   rW   securitys     r5   _auth_headerszAzureOpenAI._auth_headers  N    +#wt/C/C.D%EFF<<DLL,<<t||,,	r:   c                F    t        |      st        |      ry t        d      Nz"Could not resolve authentication method. Expected either api_key, azure_ad_token or azure_ad_token_provider to be set. Or for one of the `Authorization` or `api-key` headers to be explicitly supplied or omitted"r>   	TypeErrorrW   r8   custom_headerss      r5   _validate_headerszAzureOpenAI._validate_headers  (    G$(8(H c
 	
r:   c                   | j                   | j                          t        |j                        ri |j                  ni }t	        |      }||_        | j                         }|t        |d      sd| |d<   |S | j                  r0| j                  t        k7  rt        |d      s| j                  |d<   |S t        |      st        | j                        r	 |S t        d      Nr<   r   r=   zUnable to handle authr   _refresh_api_keyr   r8   r   r   r9   rj   rg   r>   r   r   rW   r   r8   rk   s       r5   _prepare_optionszAzureOpenAI._prepare_options  s    !!-!!#@H@Y)<GOO)<_aW%!113%w8-4^4D+E(  \\dll.>>w	2%)\\	"  g&*:4;O;O*P
  455r:   c                   i }i || j                   | j                  xs |d}| j                  r| j                  dk7  rd| j                  i}n| j                         }|rdd| i}| j                  Ft        | j                        }|j                  j                  d      dz   }|j                  |      }n#| j                  d	      }|j                  d
      }|j                  i |      }	|	|fS N)r   
deploymentz<missing API key>r=   r<   r   r   s	   /realtimer   z	/realtimewss)rE   )params
r   rz   rj   r   r   r   r   r   r   r   
rW   r~   extra_queryauth_headersqueryrs   r   r   realtime_urlrG   s
             r5   _configure_realtimezAzureOpenAI._configure_realtime  s   

,,009E

 <<DLL,??%t||4L,,.E /75'1BC"".*4+B+BCH%..55d;lJN#--~-FL((5H#--U-;L$$IuI$6L  r:   )$r   r   r   ry   r   ry   rj   str | Callable[[], str] | Noner   ry   rk   ry   rl   AzureADTokenProvider | Noner   ry   r   ry   r   str | httpx2.URL | Noner   !float | Timeout | None | NotGivenr   r   r   Mapping[str, str] | Noner   Mapping[str, object] | Noner   httpx2.Client | Noner   boolr   r  rY   rZ   )"r   ry   r   ry   rj   r   r   ry   rk   ry   rl   r   r   ry   r   ry   r   r   r   r   r   r   r   r   r   r  r   r  r   r  r   r  rY   rZ   )"r   r   r   ry   rj   r   r   ry   rk   ry   rl   r   r   ry   r   ry   r   r   r   r   r   r   r   r   r   r  r   r  r   r  r   r  rY   rZ   )*r   ry   r   ry   r   ry   rj   r   r   ry   r   .WorkloadIdentity | X509WorkloadIdentity | Nonerk   ry   rl   r   r   ry   r   ry   r   ry   r   r   r   ry   r   r   r   r   r   r   r   r  r   r  r   r  r   r  rY   rZ   ).rj   r   r   ry   r   r  rt   _Provider | None | NotGivenr   ry   r   ry   r   ry   r   r   r   ry   rk   ry   rl   r   r   "str | httpx2.URL | None | NotGivenr   DataResidency | Noner   r   r   r  r   int | NotGivenr   r   r   r   r   r  r   r  r   bool | Noner   Mapping[str, Any]rY   r   rY   ry   r   r   rY   zdict[str, str]r8   r   r   r   rY   rZ   r   r   rY   r   r~   r   r   r   rY   z!tuple[httpx2.URL, dict[str, str]]r[   r\   r]   r   r   r%   rV   r   r   with_optionsr   r   r   r   r   r^   r_   s   @r5   r   r      s   
 (,"&26$(%)?C#'%)6:5>.4859,0,1%)'  %	
   0 " # "= ! # 4 3  2  3!" *#$ &*%& #'( 
) ,  (,"&26$(%)?C#'%)6:5>.4859,0,1%)% %  	
 0 " # "= ! # 4 3  2 3  *!" &*#$ #%& 
' * 
 #'26$(%)?C#'%)6:5>.4859,0,1%)%   	
 0 " # "= ! # 4 3  2 3  *!" &*#$ #%& 
' 0 #'%)'+26$(LP%)?C#'"%)6:#5>.4859,0,1%)/w;  w; #	w;
 %w; 0w; "w; Jw; #w; "=w; !w; w; #w; 4w;  !w;" 3#w;$ %w;& 2'w;( 3)w;* *+w;, &*-w;. #/w;0 
1w;r  37$(LP09#'"%)6:"&%)?C7@/35>,0&/488<599=,0+-1E
 0E
 "	E

 JE
 .E
 !E
 E
 #E
 4E
  E
 #E
 "=E
 5E
 -E
  3!E
" *#E
$ $%E
& 2'E
( 6)E
* 3+E
, 7-E
. */E
0 )1E
2 
3E
 E
N L    
 
  0!r:   r   c                      e Zd Zeddddddddddeedddddd	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd       Zeddddddddddeedddddd	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd       Zedddddddddeedddddd	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd       Zdddddddddddddeedddddd		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d fd
Zedddedddddddedededddddi d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d fd       ZeZ	ddZ
edd       Zedd       Zedd       ZddZ xZS )AsyncAzureOpenAINFT)r   r   rj   r   rk   rl   r   r   r   r   r   r   r   r   r   r   r   c                    y r0   r   )rW   r   r   r   rj   r   rk   rl   r   r   r   r   r   r   r   r   r   r   r   s                      r5   rV   zAsyncAzureOpenAI.__init__  s    , r:   c                    y r0   r   )rW   r   r   rj   r   rk   rl   r   r   r   r   r   r   r   r   r   r   r   s                     r5   rV   zAsyncAzureOpenAI.__init__'  r   r:   )r   rj   r   rk   rl   r   r   r   r   r   r   r   r   r   r   r   c                    y r0   r   )rW   r   r   rj   r   rk   rl   r   r   r   r   r   r   r   r   r   r   r   s                     r5   rV   zAsyncAzureOpenAI.__init__>  r   r:   )r   r   r   rj   r   r   rk   rl   r   r   r   r   r   r   r   r   r   r   r   r   c                  t        |      rt        d      t        |||      \  }}}|r|||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                   |      nd| _        | j$                  j&                  d   }t(        |vr|j+                  t(               y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`

        Pass at most one of `api_key`, `azure_ad_token`, or `azure_ad_token_provider`.
        An explicit credential takes precedence over Azure credential environment variables.
        With no explicit credential, `AZURE_OPENAI_AD_TOKEN` takes precedence over `AZURE_OPENAI_API_KEY`.

        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.
        r   Nr   r   r   r   r   r   r   r   r   r   r   rM   )r#   r$   rn   rh   ri   rD   r   r   rg   rU   rV   r   r   r   rz   r   r   rx   r   r   rQ   r   )rW   r   r   r   rj   r   r   rk   rl   r   r   r   r   r   r   r   r   r   r   r   r   r   rX   s                         r5   rV   zAsyncAzureOpenAI.__init__U  s   b %%67YZZ;N^%<<
8!8  GO8NSjSr 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!5 	 	
  (-(?%5C!1=Kvzz.9QU((31>LL?@ ?r:   r   c                  |t        d      t        |t              rdn|}t        |t              st        d      t        |      rt        d      t	        ||
|| j
                  xs | j                  | j                  | j                        \  }}
}t        | )  |||||||||||||||||	xs | j                  |
|d|      S )r   Nr   zPConfigure `provider` on `AsyncOpenAI`, not on `AsyncAzureOpenAI.with_options()`.r   r   r   r   r   r   s                          r5   r   zAsyncAzureOpenAI.copy  s    < %TUU%h94x(H-pqq$%67YZZ;K# 22Bdll..!::<
8!8 w|'/%)1##+ 3'/!5*?d.?.?"0+B  	#  
 	
r:   c                L  K   | j                   | j                   S | j                  }|xt        t         |             }t	        j
                  |      r
| d {   }t        |t              rt        j                  |      }t        |t              r|st        d      |S y 7 Iwr   )
r   r   r
   r   inspectisawaitabler   r   r   r   r   s      r5   r   z$AsyncAzureOpenAI._get_azure_ad_token  s     +'''00,E""5)#%%E*eS) !lmmL $s   AB$B"A
B$c                    | j                   dd| j                    iS | j                  r!| j                  t        k7  rd| j                  iS i S r   r   r   s     r5   r   zAsyncAzureOpenAI._auth_headers*  r   r:   c                F    t        |      st        |      ry t        d      r   r   r   s      r5   r   z"AsyncAzureOpenAI._validate_headers4  r   r:   c                  K   | j                   | j                          d {    t        |j                        ri |j                  ni }t	        |      }||_        | j                          d {   }|t        |d      sd| |d<   |S | j                  r0| j                  t        k7  rt        |d      s| j                  |d<   |S t        |      st        | j                        r	 |S t        d      7 7 wr   r   r   s       r5   r   z!AsyncAzureOpenAI._prepare_options=  s     !!-'')))@H@Y)<GOO)<_aW%!#7799%w8-4^4D+E(  \\dll.>>w	2%)\\	"  g&*:4;O;O*P
  455% * :s#    C<C8AC<1C:2BC<:C<c                  K   i }i || j                   | j                  xs |d}| j                  r| j                  dk7  rd| j                  i}n!| j                          d {   }|rdd| i}| j                  Ft        | j                        }|j                  j                  d      dz   }|j                  |      }n#| j                  d	      }|j                  d
      }|j                  i |      }	|	|fS 7 wr   r   r   s
             r5   r   z$AsyncAzureOpenAI._configure_realtimeV  s    

,,009E

 <<DLL,??%t||4L2244E /75'1BC"".*4+B+BCH%..55d;lJN#--~-FL((5H#--U-;L$$IuI$6L   5s   A!D #C>$BD )&r   r   r   ry   r   ry   rj   )str | Callable[[], Awaitable[str]] | Noner   ry   rk   ry   rl    AsyncAzureADTokenProvider | Noner   ry   r   ry   r   ry   r   r   r   r   r   r   r   r   r   r  r   httpx2.AsyncClient | Noner   r  r   r  rY   rZ   )$r   ry   r   ry   rj   r   r   ry   rk   ry   rl   r!  r   ry   r   ry   r   ry   r   r   r   r   r   r   r   r   r   r  r   r"  r   r  r   r  rY   rZ   )$r   r   r   ry   rj   r   r   ry   rk   ry   rl   r!  r   ry   r   ry   r   ry   r   r   r   r   r   r   r   r   r   r  r   r"  r   r  r   r  rY   rZ   )*r   ry   r   ry   r   ry   rj   r   r   ry   r   r  rk   ry   rl   r!  r   ry   r   ry   r   ry   r   ry   r   r   r   r   r   r   r   r   r   r  r   r"  r   r  r   r  rY   rZ   ).rj   r   r   ry   r   r  rt   r  r   ry   r   ry   r   ry   r   r   r   ry   rk   ry   rl   r!  r   r  r   r  r   r   r   r"  r   r  r   r   r   r   r   r  r   r  r   r	  r   r
  rY   r   r  r  r  r  r  r  r_   s   @r5   r  r    s   
 (,"&=A$(%)DH#'"%)6:5>.485915,1%))  %	
   ; " # "B !  # 4 3   2!" 3#$ /%& &*'( #)* 
+ .  (,"&=A$(%)DH#'"%)6:5>.485915,1%)' %  	
 ; " # "B !  # 4 3  2  3!" /#$ &*%& #'( 
) , 
 #'=A$(%)DH#'"%)6:5>.485915,1%)'   	
 ; " # "B !  # 4 3  2  3!" /#$ &*%& #'( 
) 2 &*'+"&=A$(LP%)DH#'"%)#6:5>.485915,1%)/wA #wA %	wA
  wA ;wA "wA JwA #wA "BwA !wA wA #wA wA  4!wA" 3#wA$ %wA& 2'wA( 3)wA* /+wA, &*-wA. #/wA0 
1wAr  >B$(LP09#'"%)6:"&%)DH7@/35>15&/488<599=,0+-1E
 ;E
 "	E

 JE
 .E
 !E
 E
 #E
 4E
  E
 #E
 "BE
 5E
 -E
  3!E
" /#E
$ $%E
& 2'E
( 6)E
* 3+E
, 7-E
. */E
0 )1E
2 
3E
 E
N L$   
 
  0!r:   r  )r8   r   r4   r   rY   r  )r8   r   rY   r  )rG   r   rY   ztuple[str, str, int | None])rM   r   rY   rZ   )rj   _AzureApiKeyT | Nonerk   ry   rl   _AzureTokenProviderT | NonerY   zJtuple[_AzureApiKeyT | str | None, str | None, _AzureTokenProviderT | None])rj   r#  rk   ry   rl   r$  rp   z_AzureApiKeyT | strrq   ry   rr   r$  rY   zCtuple[_AzureApiKeyT | str, str | None, _AzureTokenProviderT | None])P
__future__r   rh   r  typingr   r   r   r   r   r	   r
   r   typing_extensionsr   r   r   authr   r   _typesr   r   r   r   r   r   _utilsr   r   r   r   r   r   _compatr   _httpx2r   _modelsr   r   	_providerr    
_streamingr!   r"   
auth._x509r#   _exceptionsr$   _base_clientr%   r&   _data_residencyr'   setr   r   AzureADTokenProviderAsyncAzureADTokenProviderClientAsyncClientr(   r*   joinrg   r9   r>   rK   rH   rO   rQ   rS   r`   ra   rn   ru   rw   r   r  r   r:   r5   <module>r:     s   " 	  T T T ,  9 G G 8 8 )   ) : ! , 2 % : +	   C( $R)?%?@ uV]]FDVDV5V/WX+5kRUFV9V3WX 7789 9
T 0 &-.
 
 uS(38:L5L/MN5Xc3h=OP E!EE 9E P	E:4!44 94
 )4 4 24 I4"&)j!?@ &)RZ!/&--"<=v Z!z
_!v'9'9;s;K'KLk _!r:   