Ë
    Fü´jÏ”  ã                  ó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     €úN/root/workspace/ytshorts/venv/lib/python3.12/site-packages/openai/lib/azure.pyú	<genexpr>z_has_header.<locals>.<genexpr>4   s   øè ø€ Ò8¨ˆs�y‰y‹{˜fÕ$Ñ8ùs   ƒ )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ÒS´KÀÈÓ4SÐSr:   zopenai.azure_auth_originc                óŒ   — | j                   }|€dddœj                  | j                  «      }| j                  | j                  |fS )NéP   i»  )ÚhttpÚhttps)ÚportÚgetÚschemeÚhost)ÚurlrC   s     r5   Ú_originrH   >   s>   € Ø�8‰8€DØ€|Ø SÑ)×-Ñ-¨c¯j©jÓ9ˆØ�:‰:�s—x‘x Ð%Ð%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Ó7€FØÐ˜f¬°·±Ó(<Ò<Ø�‰×Ñ˜I tÕ,ð =Ð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 )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__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;ÐØ€˜>Ð1Ð6MÐ6UÜŸ™Ÿ™Ð(?Ó@ˆØÐ!Ü!Ÿz™zŸ~™~Ð.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   € ð €˜>Ð1Ð6MÐ6UØÒ2Ô"2°MÐCSÐSÐSô /¨w¸ÐH_Ó`Ñ€Cˆ�ØÒ"Ô" E¨8Ð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Ñ0´ZÀ×@QÑ@QÔ5RØ×%Ñ%×)Ñ)¨'Ó2ˆEØÐ  ^¼3¸t¿}¹}×?QÑ?QÓ;RÑ%RÜ+Ð,BÈ%ÔPÐSZ×S^ÑS^Ñ^�”ä‘'Ñ(¨ÀÐ(ÓNˆô 29¸¿¹Ó1Eˆ×ÑÔ-Ñ.Øˆr:   c                óh  •— | j                   r—| j                  r‹|t        vrƒt        j                  |«      }|j
                  r`| j                  j                  j                  d«      dz   |j                  j                  d«      z   }| j                  j                  |¬«      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)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×&:Ò&:¸sÔJ`Ñ?`ÜŸ
™
 3›ˆIØ×(Ò(à×(Ñ(×1Ñ1×8Ñ8¸Ó>ÀÑLÈy×OaÑOa×OhÑOhÐimÓOnÑ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 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©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ñ   G O¸Ð8NÐSjÐSrÜð Bóð ð ÐÜŸ*™*Ÿ.™.Ð)=Ó>ˆKàÐÜØqóð ð Ð Ø*¨KÐ8‰MàI˜}ÐI¨m¸[ÑIˆMàÐØÐ%Ü!#§¡§¡Ð0GÓ!H�àÐ%Ü ð Lóð ð  Ð+Ø,×3Ñ3°CÓ8Ð9Ð9MÐN^ÐM_Ð`‘à,×3Ñ3°CÓ8Ð9¸ÐA‘àÐ)Ü Ð!UÓVÐVàˆ?ä&ˆGä‰ÑØØ'Ø%ØØ)ØØØ#Ø+Ø'Ø#Ø1Ø(CØ!5ð 	ô 	
ð  (ˆÔØ-ˆÔØ(?ˆÔ%Ù5CÑ!1ÈˆÔÙ=KœvŸz™z¨.Ô9ÐQUˆÔà—‘×(Ñ(¨Ñ3ˆÜ+°5Ñ8Ø�L‰LÔ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œ|¥¬«      }|€"| 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°   ©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½   rx   rz   ©rW   rj   r›   r­   rt   rœ   r®   r�   rž   rš   rk   rl   r‚   rÅ   rŸ   r£   r    r¡   rÆ   r¢   rÇ   r¥   rÈ   ÚcopiedrX   s                           €r5   rÒ   zAzureOpenAI.copyn  s"  ø€ ð< Ð%ÜÐTÓUÐUÜ% h´Ô9‘4¸xˆÜ˜(¤HÔ-ÜÐfÓgÐgÜ$Ð%6Ô7ÜÐYÓZÐZä;KØØØ#Ø ×2Ñ2ÒB°d·l±lØ×.Ñ.Ø!×:Ñ:ô<
Ñ8ˆ�Ð!8ô ‘‘ØØ'Ø/Ø%ØØ)Ø1ØØØ#Ø#Ø+Ø 3Ø'Ø/Ø!5à*Ò?¨d×.?Ñ.?Ø"0Ø+Bñð  ð	ð# ó 
ˆð8 ÐØ%)×%9Ñ%9ˆFÔ"Ø'+×'=Ñ'=ˆFÔ$Øˆ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Ó*�Ü˜e¤SÔ)±Ü Ð!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   € à×ÑÐ+Ø# w¨t×/CÑ/CÐ.DÐ%EÐFÐFà�<Š<˜DŸL™LÔ,<Ò<Ø˜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Ð)<¨G¯O©OÑ)<Ð_aˆä˜WÓ%ˆØ!ˆŒà×1Ñ1Ó3ˆØÐ%Ü˜w¨Ô8Ø-4°^Ð4DÐ+E�˜Ñ(ð ˆð �\Š\˜dŸl™lÔ.>Ò>Ü˜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Ò9°Eò
ˆð
 �<Š<˜DŸL™LÐ,?Ò?Ø% t§|¡|Ð4‰Là×,Ñ,Ó.ˆEÙØ /°7¸5¸'Ð1BÐC�à×"Ñ"Ð.Ü*¨4×+BÑ+BÓCˆHØ%×.Ñ.×5Ñ5°dÓ;¸lÑJˆNØ#×-Ñ-°~Ð-ÓF‰Là×(Ñ(¨Ó5ˆHØ#×-Ñ-°UÐ-Ó;ˆLà×$Ñ$¨I¨u¨IÐ$Ó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>Ø.Ø48Ø59Ø,0Ø,1Ø%)ñ'ð ðð %ð	ð
  ðð 0ðð "ðð #ðð "=ðð !ðð #ðð 4ðð 3ðð ðð 2ðð  3ð!ð" *ð#ð$ &*ð%ð& #ð'ð( 
ò)ó ðð, ð (,Ø"&Ø26Ø$(Ø%)Ø?CØ#'Ø%)Ø6:Ø5>Ø.Ø48Ø59Ø,0Ø,1Ø%)ñ%ð %ðð  ð	ð
 0ðð "ðð #ðð "=ðð !ðð #ðð 4ðð 3ðð ðð 2ðð 3ðð  *ð!ð" &*ð#ð$ #ð%ð& 
ò'ó ðð* ð
 #'Ø26Ø$(Ø%)Ø?CØ#'Ø%)Ø6:Ø5>Ø.Ø48Ø59Ø,0Ø,1Ø%)ñ%ð ðð  ð	ð
 0ðð "ðð #ðð "=ðð !ðð #ðð 4ðð 3ðð ðð 2ðð 3ðð  *ð!ð" &*ð#ð$ #ð%ð& 
ò'ó ðð0 #'Ø%)Ø'+Ø26Ø$(àLPØ%)Ø?CØ#'Ø"Ø%)Ø6:Ø#Ø5>Ø.Ø48Ø59Ø,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Ø$(ØLPØ09Ø#'Ø"Ø%)Ø6:Ø"&Ø%)Ø?CØ7@Ø/3Ø5>Ø,0Ø&/Ø48Ø8<Ø59Ø9=Ø,0Ø+-ñ1Mð 0ðMð "ð	Mð
 JðMð .ðMð !ðMð ðMð #ðMð 4ðMð  ðMð #ðMð "=ðMð 5ðMð -ðMð  3ð!Mð" *ð#Mð$ $ð%Mð& 2ð'Mð( 6ð)Mð* 3ð+Mð, 7ð-Mð. *ð/Mð0 )ð1Mð2 
ô3Mó ðMð^ €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__F  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__]  sê  ø€ ôb %Ð%6Ô7ÜÐYÓZÐZä;NØ�^Ð%<ó<
Ñ8ˆ�Ð!8ñ   G O¸Ð8NÐSjÐSrÜð Bóð ð ÐÜŸ*™*Ÿ.™.Ð)=Ó>ˆKàÐÜØqóð ð Ð Ø*¨KÐ8‰MàI˜}ÐI¨m¸[ÑIˆMàÐØÐ%Ü!#§¡§¡Ð0GÓ!H�àÐ%Ü ð Lóð ð  Ð+Ø,×3Ñ3°CÓ8Ð9Ð9MÐN^ÐM_Ð`‘à,×3Ñ3°CÓ8Ð9¸ÐA‘àÐ)Ü Ð!UÓVÐVàˆ?ä&ˆGä‰ÑØØ'Ø%ØØ)ØØØ#Ø+Ø'Ø#Ø1Ø(CØ!5ð 	ô 	
ð  (ˆÔØ-ˆÔØ(?ˆÔ%Ù5CÑ!1ÈˆÔÙ=KœvŸz™z¨.Ô9ÐQUˆÔà—‘×(Ñ(¨Ñ3ˆÜ1¸Ñ>Ø�L‰LÔ?Õ@ð ?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œ|¥¬«      }|€"| j                  |_        | j                  |_        |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´Ô9‘4¸xˆÜ˜(¤HÔ-ÜÐpÓqÐqÜ$Ð%6Ô7ÜÐYÓZÐZä;KØØØ#Ø ×2Ñ2ÒB°d·l±lØ×.Ñ.Ø!×:Ñ:ô<
Ñ8ˆ�Ð!8ô ‘‘ØØ'Ø/Ø%ØØ)Ø1ØØØ#Ø#Ø+Ø 3Ø'Ø/Ø!5à*Ò?¨d×.?Ñ.?Ø"0Ø+Bñð  ð	ð# ó 
ˆð8 ÐØ%)×%9Ñ%9ˆFÔ"Ø'+×'=Ñ'=ˆFÔ$Øˆ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Ó*�Ü˜e¤SÔ)±Ü Ð!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_headersD  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_optionsM  sû   è ø€ à×!Ñ!Ð-Ø×'Ñ'Ó)×)Ð)ä@HÈÏÉÔ@YÐ)<¨G¯O©OÑ)<Ð_aˆä˜WÓ%ˆØ!ˆŒà#×7Ñ7Ó9×9ˆØÐ%Ü˜w¨Ô8Ø-4°^Ð4DÐ+E�˜Ñ(ð ˆð �\Š\˜dŸl™lÔ.>Ò>Ü˜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_realtimef  s  è ø€ Øˆð
Øð
à×,Ñ,Ø×0Ñ0Ò9°Eò
ˆð
 �<Š<˜DŸL™LÐ,?Ò?Ø% t§|¡|Ð4‰Là×2Ñ2Ó4×4ˆEÙØ /°7¸5¸'Ð1BÐC�à×"Ñ"Ð.Ü*¨4×+BÑ+BÓCˆHØ%×.Ñ.×5Ñ5°dÓ;¸lÑJˆNØ#×-Ñ-°~Ð-ÓF‰Là×(Ñ(¨Ó5ˆHØ#×-Ñ-°UÐ-Ó;ˆLà×$Ñ$¨I¨u¨IÐ$Ó6ˆØ�LÐ Ð ð 5ús   ‚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>Ø.Ø48Ø59Ø15Ø,1Ø%)ñ)ð ðð %ð	ð
  ðð ;ðð "ðð #ðð "Bðð !ðð ðð #ðð 4ðð 3ðð ðð  2ð!ð" 3ð#ð$ /ð%ð& &*ð'ð( #ð)ð* 
ò+ó ðð. ð (,Ø"&Ø=AØ$(Ø%)ØDHØ#'Ø"Ø%)Ø6:Ø5>Ø.Ø48Ø59Ø15Ø,1Ø%)ñ'ð %ðð  ð	ð
 ;ðð "ðð #ðð "Bðð !ðð ðð #ðð 4ðð 3ðð ðð 2ðð  3ð!ð" /ð#ð$ &*ð%ð& #ð'ð( 
ò)ó ðð, ð
 #'Ø=AØ$(Ø%)ØDHØ#'Ø"Ø%)Ø6:Ø5>Ø.Ø48Ø59Ø15Ø,1Ø%)ñ'ð ðð  ð	ð
 ;ðð "ðð #ðð "Bðð !ðð ðð #ðð 4ðð 3ðð ðð 2ðð  3ð!ð" /ð#ð$ &*ð%ð& #ð'ð( 
ò)ó ðð2 &*Ø'+Ø"&Ø=AØ$(àLPØ%)ØDHØ#'Ø"Ø%)Ø#Ø6:Ø5>Ø.Ø48Ø59Ø15Ø,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Ø$(ØLPØ09Ø#'Ø"Ø%)Ø6:Ø"&Ø%)ØDHØ7@Ø/3Ø5>Ø15Ø&/Ø48Ø8<Ø59Ø9=Ø,0Ø+-ñ1Mð ;ðMð "ð	Mð
 JðMð .ðMð !ðMð ðMð #ðMð 4ðMð  ðMð #ðMð "BðMð 5ðMð -ðMð  3ð!Mð" /ð#Mð$ $ð%Mð& 2ð'Mð( 6ð)Mð* 3ð+Mð, 7ð-Mð. *ð/Mð0 )ð1Mð2 
ô3Mó ðMð^ €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Ð)?Ð%?Ñ@Ð Ù˜¨u°V·]±]ÀF×DVÑDVÐ5VÑ/WÔX€ÙÐ+°5¸À¹ÀkÐRUÑFVÐ9VÑ3WÔX€ð —7‘7Ò8Ó9Ð ó9ó
Tð 0Ð ó&ó-ó.ô
 ô 
ñ ˜¨u°S¸(À3ÈÀ8Ñ:LÐ5LÑ/MÔN€ÙÐ5¸XÀcÈ3ÀhÑ=OÔPÐ ðEØ!ðEàðEð 9ðEð Pó	Eð:4Ø!ð4àð4ð 9ð4ð
 )ð4ð ð4ð 2ð4ð Ió4ô"&)�j °Ð!?Ñ@ô &)ôRb!�/ &§-¡-°¸±Ð"<Ñ=¸vô b!ôJg!� v×'9Ñ'9¸;ÀsÑ;KÐ'KÑLÈkõ g!r:   