o
    ùT·jÏ”  ã                   @  st  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j<ej=f d�Z>edee,e e-e f d�Z?d @g d¢¡ZAdLd d!„ZBdMd"d#„ZCd$ZDdNd(d)„ZEdOd-d.„ZFdOd/d0„ZGG d1d2„ d2e1ƒZHed3ee9e	d4ef f d�ZIed5e	d4ef d�ZJdPd=d>„ZKdQdDdE„ZLG dFdG„ dGe4e>e?f ƒZMG dHdI„ dIeMej<e,e f e ƒZNG dJdK„ dKeMej=e-e f e!ƒZOdS )Ré    )Ú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ú>Úheadersr   ÚheaderÚstrÚreturnÚboolc                   s   ˆ   ¡ ‰ t‡ fdd„| D ƒƒS )Nc                 3  s   � | ]	}|  ¡ ˆ kV  qd S ©N)Úlower)Ú.0Úkey©r.   © úS/home/dinkstrade/pdmp-scanner/venv/lib/python3.10/site-packages/openai/lib/azure.pyÚ	<genexpr>4   s   € z_has_header.<locals>.<genexpr>)r3   Úany)r-   r.   r7   r6   r8   Ú_has_header2   s   r;   c                 C  s   t | dƒp	t | dƒS )NÚAuthorizationúapi-key)r;   )r-   r7   r7   r8   Ú_has_auth_header7   s   r>   zopenai.azure_auth_originÚurlú
httpx2.URLútuple[str, str, int | None]c                 C  s.   | j }|d u rdddœ | j¡}| j| j|fS )NéP   i»  )ÚhttpÚhttps)ÚportÚgetÚschemeÚhost)r?   rE   r7   r7   r8   Ú_origin>   s   rI   Úrequestúhttpx2.RequestÚNonec                 C  s<   | j  t¡}|d ur|t| jƒkr| j dd ¡ d S d S d S )Nr=   )Ú
extensionsrF   Ú_AZURE_AUTH_ORIGINrI   r?   r-   Úpop)rJ   Úoriginr7   r7   r8   Ú _strip_azure_api_key_on_redirectE   s   ÿrQ   c                 Ã  s   �t | ƒ d S r2   )rQ   )rJ   r7   r7   r8   Ú&_async_strip_azure_api_key_on_redirectK   s   €rR   c                      s   e Zd Zd‡ fdd„Z‡  ZS )ÚMutuallyExclusiveAuthErrorr0   rL   c                   s   t ƒ  d¡ d S )Nz€The `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__r7   r8   rU   P   s   ÿz#MutuallyExclusiveAuthError.__init__)r0   rL   )Ú__name__Ú
__module__Ú__qualname__rU   Ú__classcell__r7   r7   rW   r8   rS   O   s    rS   Ú_AzureApiKeyT.Ú_AzureTokenProviderTÚapi_keyú_AzureApiKeyT | NoneÚazure_ad_tokenú
str | NoneÚazure_ad_token_providerú_AzureTokenProviderT | NoneúJtuple[_AzureApiKeyT | str | None, str | None, _AzureTokenProviderT | None]c                 C  sr   t | d uo| tk|d u|d ufƒdkrtƒ ‚| }| d u r4|d u r4|d u r4tj d¡}|d u r4tj d¡}|||fS )Né   ÚAZURE_OPENAI_AD_TOKENÚAZURE_OPENAI_API_KEY)ÚsumÚAPI_KEY_SENTINELrS   ÚosÚenvironrF   )r_   ra   rc   Úresolved_api_keyr7   r7   r8   Ú_resolve_azure_authZ   s   ýÿù	
rn   Úcurrent_api_keyú_AzureApiKeyT | strÚcurrent_tokenÚcurrent_providerúCtuple[_AzureApiKeyT | str, str | None, _AzureTokenProviderT | None]c          	      C  sF   | d u r|d u r|d u r|pt ||fS t| ||ƒ\}}}|pt ||fS r2   )rj   rn   )	r_   ra   rc   ro   rq   rr   r5   ÚtokenÚproviderr7   r7   r8   Ú_copy_azure_authw   s   	rv   c                      sL   e Zd ZU ded< ded< eddœd‡ fdd„ƒZed‡ fdd„ƒZ‡  ZS )ÚBaseAzureClientzhttpx2.URL | NoneÚ_azure_endpointrb   Ú_azure_deploymentr   ©Úretries_takenÚoptionsr   r{   Úintr0   rK   c                  sp   |j tv r&t|jƒr&|j d¡}|d ur&dt| jjƒvr&td|d�|j  |_ t	ƒ j
||d�}t|j ƒ|jt< |S )NÚmodelz/deploymentsz/deployments/{model})r~   rz   )r?   Ú_deployments_endpointsr   Ú	json_datarF   r/   Úbase_urlÚpathr   rT   Ú_build_requestrI   rM   rN   )rV   r|   r{   r~   rJ   rW   r7   r8   rƒ   Œ   s   zBaseAzureClient._build_requestr?   r/   r@   c                   s`   | j r*| jr*|tvr*t |¡}|jr(| jj d¡d |j d¡ }| jj	|d�S |S t
ƒ  |¡S )zïAdjust 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)ry   rx   r   Úhttpx2ÚURLÚis_relative_urlr†   ÚrstripÚlstripÚ	copy_withrT   Ú_prepare_url)rV   r?   Ú	merge_urlÚmerge_raw_pathrW   r7   r8   r�   ž   s   
ÿzBaseAzureClient._prepare_url)r|   r   r{   r}   r0   rK   )r?   r/   r0   r@   )rY   rZ   r[   Ú__annotations__r   rƒ   r�   r\   r7   r7   rW   r8   rw   ˆ   s   
 ürw   c                      sb  e Zd ZedddddddddeeddddddœdSd#d$„ƒZedddddddddeeddddddœdTd%d$„ƒZeddddddddeedddddd&œdUd(d$„ƒZdddddddddddddeedddddd)œdV‡ fd-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.œdW‡ fd;d<„ƒZeZ	dXd=d>„Z
edYdBdC„ƒZedZdGdH„ƒZed[dKdL„ƒZd\dQdR„Z‡  ZS )]ÚAzureOpenAINFT)Úazure_deploymentÚapi_versionr_   Úadmin_api_keyra   rc   ÚorganizationÚwebhook_secretÚwebsocket_base_urlÚtimeoutÚmax_retriesÚdefault_headersÚdefault_queryÚhttp_clientÚ_strict_response_validationÚ_enforce_credentialsÚazure_endpointr/   r’   rb   r“   r_   ústr | Callable[[], str] | Noner”   ra   rc   úAzureADTokenProvider | Noner•   r–   r—   ústr | httpx2.URL | Noner˜   ú!float | Timeout | None | NotGivenr™   r}   rš   úMapping[str, str] | Noner›   úMapping[str, object] | Nonerœ   úhttpx2.Client | Noner�   r1   rž   r0   rL   c                C  ó   d S r2   r7   )rV   rŸ   r’   r“   r_   r”   ra   rc   r•   r–   r—   r˜   r™   rš   r›   rœ   r�   rž   r7   r7   r8   rU   ²   ó   zAzureOpenAI.__init__c                C  r§   r2   r7   )rV   r’   r“   r_   r”   ra   rc   r•   r–   r—   r˜   r™   rš   r›   rœ   r�   rž   r7   r7   r8   rU   É   ó   )r“   r_   r”   ra   rc   r•   r–   r—   r˜   r™   rš   r›   rœ   r�   rž   r�   c                C  r§   r2   r7   )rV   r�   r“   r_   r”   ra   rc   r•   r–   r—   r˜   r™   rš   r›   rœ   r�   rž   r7   r7   r8   rU   ß   r©   )r“   rŸ   r’   r_   r”   Úworkload_identityra   rc   r•   Úprojectr–   r—   r�   r˜   r™   rš   r›   rœ   r�   rž   rª   ú.WorkloadIdentity | X509WorkloadIdentity | Noner«   c                  s†  t |ƒrtdƒ‚t|||ƒ\}}}|r#|du r#|du r#|du r#tdƒ‚|du r-tj d¡}|du r5tdƒ‚|du r>d|i}ni |¥d|i¥}|du rt|du rTtj d¡}|du r\tdƒ‚|durk| d	¡› d
|› �}n| d	¡› d�}n|dur|tdƒ‚|du r‚t}t	ƒ j
|||	|
||||||||||d� || _|| _|| _|r£|nd| _|r­t |¡nd| _| jjd }t|vrÁ| t¡ dS dS )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 clientsNú¯Missing 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_ENDPOINTúuMust provide one of the `base_url` or `azure_endpoint` arguments, or the `AZURE_OPENAI_ENDPOINT` environment variableú/ú/openai/deployments/ú/openaiú2base_url and azure_endpoint are mutually exclusive©r_   r”   r•   r«   r–   r�   r˜   r™   rš   r›   rœ   r—   r�   rž   rJ   )r"   r#   rn   rk   rl   rF   Ú
ValueErrorrŠ   rj   rT   rU   Ú_api_versionÚ_azure_ad_tokenÚ_azure_ad_token_providerry   r‡   rˆ   rx   Ú_clientÚevent_hooksrQ   Úappend)rV   r“   rŸ   r’   r_   r”   rª   ra   rc   r•   r«   r–   r—   r�   r˜   r™   rš   r›   rœ   r�   rž   ÚhooksrW   r7   r8   rU   õ   ór   1
ÿÿÿ
ÿòÿ©r_   r”   rª   ru   r•   r«   r–   r—   r“   ra   rc   r�   Údata_residencyr˜   rœ   r™   rš   Úset_default_headersr›   Úset_default_queryrž   Ú_extra_kwargsru   ú_Provider | None | NotGivenú"str | httpx2.URL | None | NotGivenrÃ   úDataResidency | Noneúint | NotGivenrÄ   rÅ   úbool | NonerÆ   úMapping[str, Any]r   c                  ó  |durt dƒ‚t|tƒrdn|}t|tƒst dƒ‚t|ƒr"t dƒ‚t||
|| jp+| j| j| jd�\}}
}t	ƒ j
di d|“d|“d|“d	|“d
|“d|“d|“d|“d|“d|“d|“d|“d|“d|“d|“d|“d|	po| j|
|dœ|¥“Ž}|du r„| j|_| j|_|S )ú}
        Create a new client instance reusing the same options given to the current client with optional overriding.
        Nú4`data_residency` is only supported by OpenAI clientszFConfigure `provider` on `OpenAI`, not on `AzureOpenAI.with_options()`.r­   ©ro   rq   rr   r_   r”   rª   r•   r«   r–   r—   r�   r˜   rœ   r™   rš   rÄ   r›   rÅ   rž   rÆ   ©r“   ra   rc   r7   ©r#   Ú
isinstancer   r"   rv   Ú_api_key_providerr_   r»   r¼   rT   Úcopyrº   rx   ry   ©rV   r_   r”   rª   ru   r•   r«   r–   r—   r“   ra   rc   r�   rÃ   r˜   rœ   r™   rš   rÄ   r›   rÅ   rž   rÆ   ÚcopiedrW   r7   r8   rÕ   n  óv   

ú	ÿþýüûúùø	÷
öõôóòñðýüïzAzureOpenAI.copyc                 C  s\   | j d ur| j S | j}|d ur,tt|ƒ ƒ}t|tƒrt |¡}t|tƒr&|s*tdƒ‚|S d S ©NzIExpected `azure_ad_token_provider` argument to return a non-empty string.)r»   r¼   r	   ÚobjectrÓ   r/   Ú__str__r¹   ©rV   ru   rt   r7   r7   r8   Ú_get_azure_ad_tokenÀ  s   


zAzureOpenAI._get_azure_ad_tokenÚsecurityr   údict[str, str]c                 C  ó8   | j d urdd| j › �iS | jr| jtkrd| jiS i S ©Nr<   úBearer r=   ©r»   r_   rj   ©rV   rÞ   r7   r7   r8   Ú_auth_headersÐ  ó
   

zAzureOpenAI._auth_headersr-   r   Úcustom_headersc                 C  ó   t |ƒst |ƒr
d S 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©rV   r-   rç   r7   r7   r8   Ú_validate_headersÚ  ó
   ÿzAzureOpenAI._validate_headersr|   r   c                 C  s¬   | j d ur	|  ¡  t|jƒri |j¥ni }t|ƒ}||_|  ¡ }|d ur2t|dƒs0d|› �|d< |S | jrF| jtkrFt|dƒsD| j|d< |S t	|ƒsOt	| j
ƒrR	 |S tdƒ‚©Nr<   râ   r=   zUnable to handle auth©rÔ   Ú_refresh_api_keyr   r-   r   rÝ   r;   r_   rj   r>   rš   r¹   ©rV   r|   r-   ra   r7   r7   r8   Ú_prepare_optionsã  s$   


÷

úþzAzureOpenAI._prepare_optionsr~   Úextra_queryr   ú!tuple[httpx2.URL, dict[str, str]]c           
      C  s´   i }i |¥| j | jp|dœ¥}| jr| jdkrd| ji}n|  ¡ }|r*dd|› �i}| jd urCt| jƒ}|j d¡d }|j|d�}n|  	d	¡}|jd
d�}|ji |¥d�}	|	|fS ©N)r±   Ú
deploymentz<missing API key>r=   r<   râ   r„   s	   /realtimer…   z	/realtimeÚwss)rG   )Úparams©
rº   ry   r_   rÝ   r—   r   r†   rŠ   rŒ   r�   ©
rV   r~   rô   Úauth_headersÚqueryrt   r�   r�   Úrealtime_urlr?   r7   r7   r8   Ú_configure_realtimeü  s(   ÿý


zAzureOpenAI._configure_realtime)$rŸ   r/   r’   rb   r“   rb   r_   r    r”   rb   ra   rb   rc   r¡   r•   rb   r–   rb   r—   r¢   r˜   r£   r™   r}   rš   r¤   r›   r¥   rœ   r¦   r�   r1   rž   r1   r0   rL   )"r’   rb   r“   rb   r_   r    r”   rb   ra   rb   rc   r¡   r•   rb   r–   rb   r—   r¢   r˜   r£   r™   r}   rš   r¤   r›   r¥   rœ   r¦   r�   r1   rž   r1   r0   rL   )"r�   r/   r“   rb   r_   r    r”   rb   ra   rb   rc   r¡   r•   rb   r–   rb   r—   r¢   r˜   r£   r™   r}   rš   r¤   r›   r¥   rœ   r¦   r�   r1   rž   r1   r0   rL   )*r“   rb   rŸ   rb   r’   rb   r_   r    r”   rb   rª   r¬   ra   rb   rc   r¡   r•   rb   r«   rb   r–   rb   r—   r¢   r�   rb   r˜   r£   r™   r}   rš   r¤   r›   r¥   rœ   r¦   r�   r1   rž   r1   r0   rL   ).r_   r    r”   rb   rª   r¬   ru   rÇ   r•   rb   r«   rb   r–   rb   r—   r¢   r“   rb   ra   rb   rc   r¡   r�   rÈ   rÃ   rÉ   r˜   r£   rœ   r¦   r™   rÊ   rš   r¤   rÄ   r¤   r›   r¥   rÅ   r¥   rž   rË   rÆ   rÌ   r0   r   ©r0   rb   ©rÞ   r   r0   rß   ©r-   r   rç   r   r0   rL   ©r|   r   r0   r   ©r~   r/   rô   r   r0   rõ   ©rY   rZ   r[   r
   r   r$   rU   r   rÕ   Úwith_optionsrÝ   rå   rí   ró   rÿ   r\   r7   r7   rW   r8   r‘   ±   sØ    íîîéyèO
	r‘   c                      sh  e Zd ZeddddddddddeeddddddœdSd$d%„ƒZeddddddddddeeddddddœdTd&d%„ƒZedddddddddeedddddd'œdUd)d%„ƒZdddddddddddddeedddddd*œdV‡ fd-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.œdW‡ fd;d<„ƒZeZ	dXd=d>„Z
edYdBdC„ƒZedZdGdH„ƒZed[dKdL„ƒZd\dQdR„Z‡  ZS )]ÚAsyncAzureOpenAINFT)r’   r“   r_   r”   ra   rc   r•   r«   r–   r—   r˜   r™   rš   r›   rœ   r�   rž   rŸ   r/   r’   rb   r“   r_   ú)str | Callable[[], Awaitable[str]] | Noner”   ra   rc   ú AsyncAzureADTokenProvider | Noner•   r«   r–   r—   r¢   r˜   r£   r™   r}   rš   r¤   r›   r¥   rœ   úhttpx2.AsyncClient | Noner�   r1   rž   r0   rL   c                C  r§   r2   r7   )rV   rŸ   r’   r“   r_   r”   ra   rc   r•   r«   r–   r—   r˜   r™   rš   r›   rœ   r�   rž   r7   r7   r8   rU     s   zAsyncAzureOpenAI.__init__c                C  r§   r2   r7   )rV   r’   r“   r_   r”   ra   rc   r•   r«   r–   r—   r˜   r™   rš   r›   rœ   r�   rž   r7   r7   r8   rU   /  r¨   )r“   r_   r”   ra   rc   r•   r«   r–   r—   r˜   r™   rš   r›   rœ   r�   rž   r�   c                C  r§   r2   r7   )rV   r�   r“   r_   r”   ra   rc   r•   r«   r–   r—   r˜   r™   rš   r›   rœ   r�   rž   r7   r7   r8   rU   F  r¨   )rŸ   r’   r“   r_   r”   rª   ra   rc   r•   r«   r–   r�   r—   r˜   r™   rš   r›   rœ   r�   rž   rª   r¬   c                  s†  t |ƒrtdƒ‚t|||ƒ\}}}|r#|du r#|du r#|du r#tdƒ‚|du r-tj d¡}|du r5tdƒ‚|du r>d|i}ni |¥d|i¥}|du rt|du rTtj d¡}|du r\tdƒ‚|durk| d	¡› d
|› �}n| d	¡› d�}n|dur|tdƒ‚|du r‚t}t	ƒ j
|||	|
||||||||||d� || _|| _|| _|r£|nd| _|r­t |¡nd| _| jjd }t|vrÁ| t¡ dS dS )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¸   rJ   )r"   r#   rn   rk   rl   rF   r¹   rŠ   rj   rT   rU   rº   r»   r¼   ry   r‡   rˆ   rx   r½   r¾   rR   r¿   )rV   rŸ   r’   r“   r_   r”   rª   ra   rc   r•   r«   r–   r�   r—   r˜   r™   rš   r›   rœ   r�   rž   rÀ   rW   r7   r8   rU   ]  rÁ   rÂ   ru   rÇ   rÈ   rÃ   rÉ   rÊ   rÄ   rÅ   rË   rÆ   rÌ   r   c                  rÍ   )rÎ   NrÏ   zPConfigure `provider` on `AsyncOpenAI`, not on `AsyncAzureOpenAI.with_options()`.r­   rÐ   r_   r”   rª   r•   r«   r–   r—   r�   r˜   rœ   r™   rš   rÄ   r›   rÅ   rž   rÆ   rÑ   r7   rÒ   rÖ   rW   r7   r8   rÕ   Ö  rØ   zAsyncAzureOpenAI.copyc                 Ã  sr   �| j d ur	| j S | j}|d ur7tt|ƒ ƒ}t |¡r |I d H }t|tƒr*t |¡}t|tƒr1|s5t	dƒ‚|S d S rÙ   )
r»   r¼   r	   rÚ   ÚinspectÚisawaitablerÓ   r/   rÛ   r¹   rÜ   r7   r7   r8   rÝ   (  s   €




z$AsyncAzureOpenAI._get_azure_ad_tokenrÞ   r   rß   c                 C  rà   rá   rã   rä   r7   r7   r8   rå   :  ræ   zAsyncAzureOpenAI._auth_headersr-   r   rç   c                 C  rè   ré   rê   rì   r7   r7   r8   rí   D  rî   z"AsyncAzureOpenAI._validate_headersr|   r   c                 Ã  sº   �| j d ur|  ¡ I d H  t|jƒri |j¥ni }t|ƒ}||_|  ¡ I d H }|d ur9t|dƒs7d|› �|d< |S | jrM| jtkrMt|dƒsK| j|d< |S t	|ƒsVt	| j
ƒrY	 |S tdƒ‚rï   rð   rò   r7   r7   r8   ró   M  s&   €


÷

úþz!AsyncAzureOpenAI._prepare_optionsr~   rô   r   rõ   c           
      Ã  s¼   �i }i |¥| j | jp|dœ¥}| jr| jdkrd| ji}n|  ¡ I d H }|r.dd|› �i}| jd urGt| jƒ}|j d¡d }|j|d�}n|  	d	¡}|jd
d�}|ji |¥d�}	|	|fS rö   rú   rû   r7   r7   r8   rÿ   f  s*   €ÿý


z$AsyncAzureOpenAI._configure_realtime)&rŸ   r/   r’   rb   r“   rb   r_   r  r”   rb   ra   rb   rc   r	  r•   rb   r«   rb   r–   rb   r—   r¢   r˜   r£   r™   r}   rš   r¤   r›   r¥   rœ   r
  r�   r1   rž   r1   r0   rL   )$r’   rb   r“   rb   r_   r  r”   rb   ra   rb   rc   r	  r•   rb   r«   rb   r–   rb   r—   r¢   r˜   r£   r™   r}   rš   r¤   r›   r¥   rœ   r
  r�   r1   rž   r1   r0   rL   )$r�   r/   r“   rb   r_   r  r”   rb   ra   rb   rc   r	  r•   rb   r«   rb   r–   rb   r—   r¢   r˜   r£   r™   r}   rš   r¤   r›   r¥   rœ   r
  r�   r1   rž   r1   r0   rL   )*rŸ   rb   r’   rb   r“   rb   r_   r  r”   rb   rª   r¬   ra   rb   rc   r	  r•   rb   r«   rb   r–   rb   r�   rb   r—   r¢   r˜   r£   r™   r}   rš   r¤   r›   r¥   rœ   r
  r�   r1   rž   r1   r0   rL   ).r_   r  r”   rb   rª   r¬   ru   rÇ   r•   rb   r«   rb   r–   rb   r—   r¢   r“   rb   ra   rb   rc   r	  r�   rÈ   rÃ   rÉ   r˜   r£   rœ   r
  r™   rÊ   rš   r¤   rÄ   r¤   r›   r¥   rÅ   r¥   rž   rË   rÆ   rÌ   r0   r   r   r  r  r  r  r  r7   r7   rW   r8   r    sÞ    ìííéyèO
	r  )r-   r   r.   r/   r0   r1   )r-   r   r0   r1   )r?   r@   r0   rA   )rJ   rK   r0   rL   )r_   r`   ra   rb   rc   rd   r0   re   )r_   r`   ra   rb   rc   rd   ro   rp   rq   rb   rr   rd   r0   rs   )PÚ
__future__r   rk   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)   Újoinrj   r;   r>   rN   rI   rQ   rR   rS   r]   r^   rn   rv   rw   r‘   r  r7   r7   r7   r8   Ú<module>   sV    ( ÿ






 )  $g