§
     �’j��  ã                  óú  — 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 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l/m0Z0 ddl1m2Z2m3Z3 ddl4m5Z5  e6g d¢¦  «        Z7e	g e8f         Z9e	g df         Z: edeej;        ej<        f         ¬¦  «        Z= edee+e         e,e         f         ¬¦  «        Z>d ?                    g d¢¦  «        Z@d*d „ZAd+d!„ZB G d"„ d#e0¦  «        ZC G d$„ d%e3e=e>f         ¦  «        ZD G d&„ d'eDej;        e+e         f         e¦  «        ZE G d(„ d)eDej<        e,e         f         e ¦  «        ZFdS ),é    )ÚannotationsN)ÚAnyÚUnionÚMappingÚTypeVarÚCallableÚ	AwaitableÚcastÚoverload)ÚSelfÚoverrideé   )ÚWorkloadIdentityÚX509WorkloadIdentity)Ú	NOT_GIVENÚOmitÚQueryÚHeadersÚTimeoutÚNotGiven)Úis_givenÚ
is_mapping)Ú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                ób   ‡— ‰                      ¦   «         Št          ˆfd„| D ¦   «         ¦  «        S )Nc              3  óH   •K  — | ]}|                      ¦   «         ‰k    V — Œd S ©N)Úlower)Ú.0Úkeyr.   s     €ú>C:\Projects\DSCons\.venv\Lib\site-packages\openai\lib\azure.pyú	<genexpr>z_has_header.<locals>.<genexpr>4   s0   øè è € Ð8Ð8¨ˆs�yŠy‰{Œ{˜fÒ$Ð8Ð8Ð8Ð8Ð8Ð8ó    )r5   Úany)r-   r.   s    `r8   Ú_has_headerr<   2   s3   ø€ Ø�\Š\‰^Œ^€FÝÐ8Ð8Ð8Ð8°Ð8Ñ8Ô8Ñ8Ô8Ð8r:   c                óB   — t          | d¦  «        pt          | d¦  «        S )NÚAuthorizationúapi-key)r<   )r-   s    r8   Ú_has_auth_headerr@   7   s!   € Ý�w Ñ0Ô0ÐSµKÀÈÑ4SÔ4SÐSr:   c                  ó    ‡ — e Zd Zdˆ fd„Zˆ xZS )ÚMutuallyExclusiveAuthErrorr0   ÚNonec                óJ   •— 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__s    €r8   rF   z#MutuallyExclusiveAuthError.__init__<   s/   ø€ Ý‰Œ×Òð Oñ	
ô 	
ð 	
ð 	
ð 	
r:   )r0   rC   )Ú__name__Ú
__module__Ú__qualname__rF   Ú__classcell__©rH   s   @r8   rB   rB   ;   s=   ø€ € € € € ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
r:   rB   c                  óh   ‡ — 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_takenÚoptionsr   rT   Úintr0   úhttpx2.Requestc               ó  •— |j         t          v r\t          |j        ¦  «        rH|j                             d¦  «        }|�,dt          | j        j        ¦  «        vrd|› |j         › �|_         t          ¦   «          	                    ||¬¦  «        S )NÚmodelz/deploymentsz/deployments/rS   )
ÚurlÚ_deployments_endpointsr   Ú	json_dataÚgetr/   Úbase_urlÚpathrE   Ú_build_request)rG   rU   rT   rY   rH   s       €r8   r`   zBaseAzureClient._build_requestF   s‰   ø€ ð Œ;Õ0Ð0Ð0µZÀÔ@QÑ5RÔ5RÐ0ØÔ%×)Ò)¨'Ñ2Ô2ˆEØÐ  ^½3¸t¼}Ô?QÑ;RÔ;RÐ%RÐ%RØB¨eÐB°W´[ÐBÐB�”å‰wŒw×%Ò% g¸]Ð%ÑKÔKÐKr:   rZ   r/   ú
httpx2.URLc                ó^  •— | j         r…| j        r~|t          vrut          j        |¦  «        }|j        rX| j        j                             d¦  «        dz   |j                             d¦  «        z   }| 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)rR   rP   r[   Úhttpx2ÚURLÚis_relative_urlre   ÚrstripÚlstripÚ	copy_withrE   Ú_prepare_url)rG   rZ   Ú	merge_urlÚmerge_raw_pathrH   s       €r8   rl   zBaseAzureClient._prepare_urlT   s°   ø€ ð Ô!ð 	 dÔ&:ð 	¸sÕJ`Ð?`Ð?`Ýœ
 3™œˆIØÔ(ð OàÔ(Ô1×8Ò8¸Ñ>Ô>ÀÑLÈyÔOa×OhÒOhÐimÑOnÔOnÑnð ð Ô+×5Ò5¸~Ð5ÑNÔNÐNàÐå‰wŒw×#Ò# CÑ(Ô(Ð(r:   )rU   r   rT   rV   r0   rW   )rZ   r/   r0   ra   )rI   rJ   rK   Ú__annotations__r   r`   rl   rL   rM   s   @r8   rO   rO   B   s¢   ø€ € € € € € Ø&Ð&Ð&Ñ&Ø!Ð!Ð!Ñ!àð
 ð	Lð Lð Lð Lð Lð Lð Lñ „XðLð ð)ð )ð )ð )ð )ñ „Xð)ð )ð )ð )ð )r:   rO   c                  ó¦  ‡ — e Zd ZedddddddddeeddddddœdLd#„¦   «         ZedddddddddeeddddddœdMd$„¦   «         Zeddddddddeedddddd%œdNd'„¦   «         Zdddddddddddddeedddddd(œdOˆ 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-œdPˆ fd:„¦   «         ZeZ	dQd;„Z
edRd?„¦   «         ZedSdC„¦   «         ZedTdF„¦   «         ZdUdK„Zˆ xZS )VÚAzureOpenAINFT)Úazure_deploymentÚapi_versionÚapi_keyÚadmin_api_keyÚazure_ad_tokenÚazure_ad_token_providerÚorganizationÚwebhook_secretÚwebsocket_base_urlÚtimeoutÚmax_retriesÚdefault_headersÚdefault_queryÚhttp_clientÚ_strict_response_validationÚ_enforce_credentialsÚazure_endpointr/   rr   rQ   rs   rt   ústr | Callable[[], str] | Noneru   rv   rw   úAzureADTokenProvider | Nonerx   ry   rz   ústr | httpx2.URL | Noner{   ú!float | Timeout | None | NotGivenr|   rV   r}   úMapping[str, str] | Noner~   úMapping[str, object] | Noner   úhttpx2.Client | Noner€   r1   r�   r0   rC   c               ó   — d S r4   © )rG   r‚   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   r   r€   r�   s                     r8   rF   zAzureOpenAI.__init__h   ó	   € ð* ˆsr:   c               ó   — d S r4   r‹   )rG   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   r   r€   r�   s                    r8   rF   zAzureOpenAI.__init__   ó	   € ð( ˆsr:   )rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   r   r€   r�   r^   c               ó   — d S r4   r‹   )rG   r^   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   r   r€   r�   s                    r8   rF   zAzureOpenAI.__init__•   rŽ   r:   )rs   r‚   rr   rt   ru   Úworkload_identityrv   rw   rx   Úprojectry   rz   r^   r{   r|   r}   r~   r   r€   r�   r�   ú.WorkloadIdentity | X509WorkloadIdentity | Noner‘   c               óX  •— t          |¦  «        rt          d¦  «        ‚|€t          j                             d¦  «        }|€t          j                             d¦  «        }|r|€|€|€t          d¦  «        ‚|€t          j                             d¦  «        }|€t          d¦  «        ‚|€d|i}ni |¥d|i¥}|€h|€t          j                             d	¦  «        }|€t          d
¦  «        ‚|�|                     d¦  «        › d|› �}n*|                     d¦  «        › d�}n|�t          d¦  «        ‚|€t          }t          ¦   «          	                    |||	|
||||||||||¬¦  «         || _
        || _        || _        |r|nd| _        |rt          j        |¦  «        nd| _        dS )aa  Construct a new synchronous azure openai client instance.

        This automatically infers the following arguments from their corresponding environment variables if they are not provided:
        - `api_key` from `AZURE_OPENAI_API_KEY`
        - `organization` from `OPENAI_ORG_ID`
        - `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.
        ú9X.509 workload identity is not supported by Azure clientsNÚAZURE_OPENAI_API_KEYÚAZURE_OPENAI_AD_TOKENú¯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©rt   ru   rx   r‘   ry   r^   r{   r|   r}   r~   r   rz   r€   r�   ©r"   r#   ÚosÚenvironr]   Ú
ValueErrorri   ÚAPI_KEY_SENTINELrE   rF   Ú_api_versionÚ_azure_ad_tokenÚ_azure_ad_token_providerrR   rf   rg   rP   )rG   rs   r‚   rr   rt   ru   r�   rv   rw   rx   r‘   ry   rz   r^   r{   r|   r}   r~   r   r€   r�   rH   s                        €r8   rF   zAzureOpenAI.__init__«   ó*  ø€ õZ %Ð%6Ñ7Ô7ð 	[ÝÐYÑZÔZÐZàˆ?Ý”j—n’nÐ%;Ñ<Ô<ˆGàÐ!ÝœZŸ^š^Ð,CÑDÔDˆNàð 	 G O¸Ð8NÐSjÐSrÝð Bñô ð ð ÐÝœ*Ÿ.š.Ð)=Ñ>Ô>ˆKàÐÝØqñô ð ð Ð Ø*¨KÐ8ˆMˆMàI˜}ÐI¨m¸[ÐIÐIˆMàÐØÐ%Ý!#¤§¢Ð0GÑ!HÔ!H�àÐ%Ý ð Lñô ð ð  Ð+Ø,×3Ò3°CÑ8Ô8Ð`Ð`ÐN^Ð`Ð`��à,×3Ò3°CÑ8Ô8ÐAÐAÐA��àÐ)Ý Ð!UÑVÔVÐVàˆ?å&ˆGå‰Œ×ÒØØ'Ø%ØØ)ØØØ#Ø+Ø'Ø#Ø1Ø(CØ!5ð 	ñ 	
ô 	
ð 	
ð  (ˆÔØ-ˆÔØ(?ˆÔ%Ø5CÐ!MÐ!1Ð!1ÈˆÔØ=KÐU�vœz¨.Ñ9Ô9Ð9ÐQUˆÔÐÐr:   ©rt   ru   r�   Úproviderrx   r‘   ry   rz   rs   rv   rw   r^   Údata_residencyr{   r   r|   r}   Úset_default_headersr~   Úset_default_queryr�   Ú_extra_kwargsr¬   ú_Provider | None | NotGivenú"str | httpx2.URL | None | NotGivenr­   úDataResidency | Noneúint | NotGivenr®   r¯   úbool | Noner°   úMapping[str, Any]r   c               óv  •— |�t          d¦  «        ‚t          |t          ¦  «        rdn|}t          |t          ¦  «        st          d¦  «        ‚t          |¦  «        rt          d¦  «        ‚t	          ¦   «                              |||||||||||||||||	p| j        |
p| j        |p| j        dœ|¥¬¦  «        S )ú~
        Create a new client instance re-using 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”   ©rs   rv   rw   ©rt   ru   r�   rx   r‘   ry   rz   r^   r{   r   r|   r}   r®   r~   r¯   r�   r°   ©	r#   Ú
isinstancer   r"   rE   Úcopyr§   r¨   r©   ©rG   rt   ru   r�   r¬   rx   r‘   ry   rz   rs   rv   rw   r^   r­   r{   r   r|   r}   r®   r~   r¯   r�   r°   rH   s                          €r8   r¾   zAzureOpenAI.copy  sù   ø€ ð< Ð%ÝÐTÑUÔUÐUÝ% hµÑ9Ô9ÐG�4�4¸xˆÝ˜(¥HÑ-Ô-ð 	hÝÐfÑgÔgÐgÝ$Ð%6Ñ7Ô7ð 	[ÝÐYÑZÔZÐZå‰wŒw�|Š|ØØ'Ø/Ø%ØØ)Ø1ØØØ#Ø#Ø+Ø 3Ø'Ø/Ø!5à*Ð?¨dÔ.?Ø"0Ð"H°DÔ4HØ+BÐ+cÀdÔFcðð ð  ð	ð# ñ 
ô 
ð 	
r:   c                óž   — | j         �| j         S | j        }|�5 |¦   «         }|rt          |t          ¦  «        st	          d|› �¦  «        ‚|S d S ©NzOExpected `azure_ad_token_provider` argument to return a string but it returned )r¨   r©   r½   r/   r¥   ©rG   r¬   Útokens      r8   Ú_get_azure_ad_tokenzAzureOpenAI._get_azure_ad_token_  sp   € ØÔÐ+ØÔ'Ð'àÔ0ˆØÐØ�H‘J”JˆEØð ¥
¨5µ#Ñ 6Ô 6ð Ý ØmÐfkÐmÐmñô ð ð ˆLàˆtr:   Úsecurityr   údict[str, str]c                ól   — | j         �dd| j         › �iS | j        r| j        t          k    r	d| j        iS i S ©Nr>   úBearer r?   ©r¨   rt   r¦   ©rG   rÅ   s     r8   Ú_auth_headerszAzureOpenAI._auth_headersn  óK   € àÔÐ+Ø#Ð%E¨tÔ/CÐ%EÐ%EÐFÐFàŒ<ð 	-˜DœLÕ,<Ò<Ð<Ø˜tœ|Ð,Ð,àˆ	r:   r-   r   Úcustom_headersc                ó`   — 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©rG   r-   rÎ   s      r8   Ú_validate_headerszAzureOpenAI._validate_headersx  ó?   € å˜GÑ$Ô$ð 	Õ(8¸Ñ(HÔ(Hð 	ØˆFåð cñ
ô 
ð 	
r:   rU   r   c                ó˜  — t          |j        ¦  «        r	i |j        ¥ni }t          |¦  «        }||_        |                      ¦   «         }|�t	          |d¦  «        sd|› �|d<   ne| j        r+| j        t          k    rt	          |d¦  «        s
| j        |d<   n3t          |¦  «        st          | j        ¦  «        rnt          d¦  «        ‚|S ©Nr>   rÉ   r?   zUnable to handle auth©
r   r-   r   rÄ   r<   rt   r¦   r@   r}   r¥   ©rG   rU   r-   rv   s       r8   Ú_prepare_optionszAzureOpenAI._prepare_options�  sç   € å@HÈÌÑ@YÔ@YÐ)aÐ)<¨G¬OÐ)<Ð)<Ð_aˆå˜WÑ%Ô%ˆØ!ˆŒà×1Ò1Ñ3Ô3ˆØÐ%Ý˜w¨Ñ8Ô8ð FØ+E°^Ð+EÐ+E�˜Ñ(øØŒ\ð 	6˜dœlÕ.>Ò>Ð>Ý˜w¨	Ñ2Ô2ð 2Ø%)¤\�˜	Ñ"øÝ˜gÑ&Ô&ð 	6Õ*:¸4Ô;OÑ*PÔ*Pð 	6Øõ Ð4Ñ5Ô5Ð5àˆr:   rY   Úextra_queryr   ú!tuple[httpx2.URL, dict[str, str]]c                óÎ  — i }i |¥| j         | j        p|dœ¥}| j        r| j        dk    r
d| j        i}n|                      ¦   «         }|rdd|› �i}| j        �Ht          | j        ¦  «        }|j                             d¦  «        dz   }|                     |¬¦  «        }n+|  	                    d	¦  «        }|                     d
¬¦  «        }|                     i |¥¬¦  «        }	|	|fS ©N)rš   Ú
deploymentz<missing API key>r?   r>   rÉ   rc   s	   /realtimerd   z	/realtimeÚwss)Úscheme)Úparams©
r§   rR   rt   rÄ   rz   r   re   ri   rk   rl   ©
rG   rY   rÛ   Úauth_headersÚqueryrÃ   r^   rn   Úrealtime_urlrZ   s
             r8   Ú_configure_realtimezAzureOpenAI._configure_realtime—  s%  € Øˆð
Øð
àÔ,ØÔ0Ð9°Eð
ð 
ð 
ˆð
 Œ<ð 	D˜DœLÐ,?Ò?Ð?Ø% t¤|Ð4ˆLˆLà×,Ò,Ñ.Ô.ˆEØð DØ /Ð1B¸5Ð1BÐ1BÐC�àÔ"Ð.Ý*¨4Ô+BÑCÔCˆHØ%Ô.×5Ò5°dÑ;Ô;¸lÑJˆNØ#×-Ò-°~Ð-ÑFÔFˆLˆLà×(Ò(¨Ñ5Ô5ˆHØ#×-Ò-°UÐ-Ñ;Ô;ˆLà×$Ò$¨I¨u¨IÐ$Ñ6Ô6ˆØ�LÐ Ð r:   )$r‚   r/   rr   rQ   rs   rQ   rt   rƒ   ru   rQ   rv   rQ   rw   r„   rx   rQ   ry   rQ   rz   r…   r{   r†   r|   rV   r}   r‡   r~   rˆ   r   r‰   r€   r1   r�   r1   r0   rC   )"rr   rQ   rs   rQ   rt   rƒ   ru   rQ   rv   rQ   rw   r„   rx   rQ   ry   rQ   rz   r…   r{   r†   r|   rV   r}   r‡   r~   rˆ   r   r‰   r€   r1   r�   r1   r0   rC   )"r^   r/   rs   rQ   rt   rƒ   ru   rQ   rv   rQ   rw   r„   rx   rQ   ry   rQ   rz   r…   r{   r†   r|   rV   r}   r‡   r~   rˆ   r   r‰   r€   r1   r�   r1   r0   rC   )*rs   rQ   r‚   rQ   rr   rQ   rt   rƒ   ru   rQ   r�   r’   rv   rQ   rw   r„   rx   rQ   r‘   rQ   ry   rQ   rz   r…   r^   rQ   r{   r†   r|   rV   r}   r‡   r~   rˆ   r   r‰   r€   r1   r�   r1   r0   rC   ).rt   rƒ   ru   rQ   r�   r’   r¬   r±   rx   rQ   r‘   rQ   ry   rQ   rz   r…   rs   rQ   rv   rQ   rw   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   rQ   ©rÅ   r   r0   rÆ   ©r-   r   rÎ   r   r0   rC   ©rU   r   r0   r   ©rY   r/   rÛ   r   r0   rÜ   ©rI   rJ   rK   r   r   r$   rF   r   r¾   Úwith_optionsrÄ   rÌ   rÔ   rÚ   rè   rL   rM   s   @r8   rq   rq   g   s­  ø€ € € € € Øð
 (,Ø"&Ø26Ø$(Ø%)Ø?CØ#'Ø%)Ø6:Ø5>Ø.Ø48Ø59Ø,0Ø,1Ø%)ð'ð ð ð ð ñ „Xðð, ð (,Ø"&Ø26Ø$(Ø%)Ø?CØ#'Ø%)Ø6:Ø5>Ø.Ø48Ø59Ø,0Ø,1Ø%)ð%ð ð ð ð ñ „Xðð* ð
 #'Ø26Ø$(Ø%)Ø?CØ#'Ø%)Ø6:Ø5>Ø.Ø48Ø59Ø,0Ø,1Ø%)ð%ð ð ð ð ñ „Xðð0 #'Ø%)Ø'+Ø26Ø$(àLPØ%)Ø?CØ#'Ø"Ø%)Ø6:Ø#Ø5>Ø.Ø48Ø59Ø,0Ø,1Ø%)ð/qVð qVð qVð qVð qVð qVð qVð qVðf ð 37Ø$(ØLPØ09Ø#'Ø"Ø%)Ø6:Ø"&Ø%)Ø?CØ7@Ø/3Ø5>Ø,0Ø&/Ø48Ø8<Ø59Ø9=Ø,0Ø+-ð1<
ð <
ð <
ð <
ð <
ð <
ð <
ñ „Xð<
ð| €Lðð ð ð ð ðð ð ñ „Xðð ð
ð 
ð 
ñ „Xð
ð ðð ð ñ „Xðð*!ð !ð !ð !ð !ð !ð !ð !r:   rq   c                  ó¬  ‡ — e Zd ZeddddddddddeeddddddœdLd$„¦   «         ZeddddddddddeeddddddœdMd%„¦   «         Zedddddddddeedddddd&œdNd(„¦   «         Zdddddddddddddeedddddd)œdOˆ 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-œdPˆ fd:„¦   «         ZeZ	dQd;„Z
edRd?„¦   «         ZedSdC„¦   «         ZedTdF„¦   «         ZdUdK„Zˆ xZS )VÚAsyncAzureOpenAINFT)rr   rs   rt   ru   rv   rw   rx   r‘   ry   rz   r{   r|   r}   r~   r   r€   r�   r‚   r/   rr   rQ   rs   rt   ú)str | Callable[[], Awaitable[str]] | Noneru   rv   rw   ú AsyncAzureADTokenProvider | Nonerx   r‘   ry   rz   r…   r{   r†   r|   rV   r}   r‡   r~   rˆ   r   úhttpx2.AsyncClient | Noner€   r1   r�   r0   rC   c               ó   — d S r4   r‹   )rG   r‚   rr   rs   rt   ru   rv   rw   rx   r‘   ry   rz   r{   r|   r}   r~   r   r€   r�   s                      r8   rF   zAsyncAzureOpenAI.__init__²  s	   € ð, ˆsr:   c               ó   — d S r4   r‹   )rG   rr   rs   rt   ru   rv   rw   rx   r‘   ry   rz   r{   r|   r}   r~   r   r€   r�   s                     r8   rF   zAsyncAzureOpenAI.__init__Ê  rŒ   r:   )rs   rt   ru   rv   rw   rx   r‘   ry   rz   r{   r|   r}   r~   r   r€   r�   r^   c               ó   — d S r4   r‹   )rG   r^   rs   rt   ru   rv   rw   rx   r‘   ry   rz   r{   r|   r}   r~   r   r€   r�   s                     r8   rF   zAsyncAzureOpenAI.__init__á  rŒ   r:   )r‚   rr   rs   rt   ru   r�   rv   rw   rx   r‘   ry   r^   rz   r{   r|   r}   r~   r   r€   r�   r�   r’   c               óX  •— t          |¦  «        rt          d¦  «        ‚|€t          j                             d¦  «        }|€t          j                             d¦  «        }|r|€|€|€t          d¦  «        ‚|€t          j                             d¦  «        }|€t          d¦  «        ‚|€d|i}ni |¥d|i¥}|€h|€t          j                             d	¦  «        }|€t          d
¦  «        ‚|�|                     d¦  «        › d|› �}n*|                     d¦  «        › d�}n|�t          d¦  «        ‚|€t          }t          ¦   «          	                    |||	|
||||||||||¬¦  «         || _
        || _        || _        |r|nd| _        |rt          j        |¦  «        nd| _        dS )ab  Construct a new asynchronous azure openai client instance.

        This automatically infers the following arguments from their corresponding environment variables if they are not provided:
        - `api_key` from `AZURE_OPENAI_API_KEY`
        - `organization` from `OPENAI_ORG_ID`
        - `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.
        r”   Nr•   r–   r—   r˜   r™   rš   r›   rœ   r�   rž   rŸ   r    r¡   r¢   )rG   r‚   rr   rs   rt   ru   r�   rv   rw   rx   r‘   ry   r^   rz   r{   r|   r}   r~   r   r€   r�   rH   s                        €r8   rF   zAsyncAzureOpenAI.__init__ø  rª   r:   r«   r¬   r±   r²   r­   r³   r´   r®   r¯   rµ   r°   r¶   r   c               óv  •— |�t          d¦  «        ‚t          |t          ¦  «        rdn|}t          |t          ¦  «        st          d¦  «        ‚t          |¦  «        rt          d¦  «        ‚t	          ¦   «                              |||||||||||||||||	p| j        |
p| j        |p| j        dœ|¥¬¦  «        S )r¸   Nr¹   zPConfigure `provider` on `AsyncOpenAI`, not on `AsyncAzureOpenAI.with_options()`.r”   rº   r»   r¼   r¿   s                          €r8   r¾   zAsyncAzureOpenAI.copyk  sù   ø€ ð< Ð%ÝÐTÑUÔUÐUÝ% hµÑ9Ô9ÐG�4�4¸xˆÝ˜(¥HÑ-Ô-ð 	rÝÐpÑqÔqÐqÝ$Ð%6Ñ7Ô7ð 	[ÝÐYÑZÔZÐZå‰wŒw�|Š|ØØ'Ø/Ø%ØØ)Ø1ØØØ#Ø#Ø+Ø 3Ø'Ø/Ø!5à*Ð?¨dÔ.?Ø"0Ð"H°DÔ4HØ+BÐ+cÀdÔFcðð ð  ð	ð# ñ 
ô 
ð 	
r:   c              ƒ  ó  K  — | j         �| j         S | j        }|�q |¦   «         }t          j        |¦  «        r|ƒ d {V —†}|r(t	          t          t          |¦  «        t          ¦  «        st          d|› �¦  «        ‚t          |¦  «        S d S rÁ   )	r¨   r©   ÚinspectÚisawaitabler½   r
   r   r/   r¥   rÂ   s      r8   rÄ   z$AsyncAzureOpenAI._get_azure_ad_token¬  s©   è è € ØÔÐ+ØÔ'Ð'àÔ0ˆØÐØ�H‘J”JˆEÝÔ" 5Ñ)Ô)ð $Ø#˜˜˜˜˜˜�Øð ¥
­4µ°UÑ+;Ô+;½SÑ AÔ Að Ý ØmÐfkÐmÐmñô ð õ �u‘:”:Ðàˆtr:   rÅ   r   rÆ   c                ól   — | j         �dd| j         › �iS | j        r| j        t          k    r	d| j        iS i S rÈ   rÊ   rË   s     r8   rÌ   zAsyncAzureOpenAI._auth_headers½  rÍ   r:   r-   r   rÎ   c                ó`   — t          |¦  «        st          |¦  «        rd S t          d¦  «        ‚rÐ   rÑ   rÓ   s      r8   rÔ   z"AsyncAzureOpenAI._validate_headersÇ  rÕ   r:   rU   r   c              ƒ  ó¨  K  — t          |j        ¦  «        r	i |j        ¥ni }t          |¦  «        }||_        |                      ¦   «         ƒ d {V —†}|�t	          |d¦  «        sd|› �|d<   ne| j        r+| j        t          k    rt	          |d¦  «        s
| j        |d<   n3t          |¦  «        st          | j        ¦  «        rnt          d¦  «        ‚|S r×   rØ   rÙ   s       r8   rÚ   z!AsyncAzureOpenAI._prepare_optionsÐ  sý   è è € å@HÈÌÑ@YÔ@YÐ)aÐ)<¨G¬OÐ)<Ð)<Ð_aˆå˜WÑ%Ô%ˆØ!ˆŒà#×7Ò7Ñ9Ô9Ð9Ð9Ð9Ð9Ð9Ð9ˆØÐ%Ý˜w¨Ñ8Ô8ð FØ+E°^Ð+EÐ+E�˜Ñ(øØŒ\ð 	6˜dœlÕ.>Ò>Ð>Ý˜w¨	Ñ2Ô2ð 2Ø%)¤\�˜	Ñ"øÝ˜gÑ&Ô&ð 	6Õ*:¸4Ô;OÑ*PÔ*Pð 	6Øõ Ð4Ñ5Ô5Ð5àˆr:   rY   rÛ   r   rÜ   c              ƒ  óÞ  K  — i }i |¥| j         | j        p|dœ¥}| j        r| j        dk    r
d| j        i}n#|                      ¦   «         ƒ d {V —†}|rdd|› �i}| j        �Ht          | j        ¦  «        }|j                             d¦  «        dz   }|                     |¬¦  «        }n+|  	                    d	¦  «        }|                     d
¬¦  «        }|                     i |¥¬¦  «        }	|	|fS rÞ   rã   rä   s
             r8   rè   z$AsyncAzureOpenAI._configure_realtimeæ  s;  è è € Øˆð
Øð
àÔ,ØÔ0Ð9°Eð
ð 
ð 
ˆð
 Œ<ð 	D˜DœLÐ,?Ò?Ð?Ø% t¤|Ð4ˆLˆLà×2Ò2Ñ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4ˆEØð DØ /Ð1B¸5Ð1BÐ1BÐC�àÔ"Ð.Ý*¨4Ô+BÑCÔCˆHØ%Ô.×5Ò5°dÑ;Ô;¸lÑJˆNØ#×-Ò-°~Ð-ÑFÔFˆLˆLà×(Ò(¨Ñ5Ô5ˆHØ#×-Ò-°UÐ-Ñ;Ô;ˆLà×$Ò$¨I¨u¨IÐ$Ñ6Ô6ˆØ�LÐ Ð r:   )&r‚   r/   rr   rQ   rs   rQ   rt   rò   ru   rQ   rv   rQ   rw   ró   rx   rQ   r‘   rQ   ry   rQ   rz   r…   r{   r†   r|   rV   r}   r‡   r~   rˆ   r   rô   r€   r1   r�   r1   r0   rC   )$rr   rQ   rs   rQ   rt   rò   ru   rQ   rv   rQ   rw   ró   rx   rQ   r‘   rQ   ry   rQ   rz   r…   r{   r†   r|   rV   r}   r‡   r~   rˆ   r   rô   r€   r1   r�   r1   r0   rC   )$r^   r/   rs   rQ   rt   rò   ru   rQ   rv   rQ   rw   ró   rx   rQ   r‘   rQ   ry   rQ   rz   r…   r{   r†   r|   rV   r}   r‡   r~   rˆ   r   rô   r€   r1   r�   r1   r0   rC   )*r‚   rQ   rr   rQ   rs   rQ   rt   rò   ru   rQ   r�   r’   rv   rQ   rw   ró   rx   rQ   r‘   rQ   ry   rQ   r^   rQ   rz   r…   r{   r†   r|   rV   r}   r‡   r~   rˆ   r   rô   r€   r1   r�   r1   r0   rC   ).rt   rò   ru   rQ   r�   r’   r¬   r±   rx   rQ   r‘   rQ   ry   rQ   rz   r…   rs   rQ   rv   rQ   rw   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î   rM   s   @r8   rñ   rñ   ±  s·  ø€ € € € € Øð
 (,Ø"&Ø=AØ$(Ø%)ØDHØ#'Ø"Ø%)Ø6:Ø5>Ø.Ø48Ø59Ø15Ø,1Ø%)ð)ð ð ð ð ñ „Xðð. ð (,Ø"&Ø=AØ$(Ø%)ØDHØ#'Ø"Ø%)Ø6:Ø5>Ø.Ø48Ø59Ø15Ø,1Ø%)ð'ð ð ð ð ñ „Xðð, ð
 #'Ø=AØ$(Ø%)ØDHØ#'Ø"Ø%)Ø6:Ø5>Ø.Ø48Ø59Ø15Ø,1Ø%)ð'ð ð ð ð ñ „Xðð2 &*Ø'+Ø"&Ø=AØ$(àLPØ%)ØDHØ#'Ø"Ø%)Ø#Ø6:Ø5>Ø.Ø48Ø59Ø15Ø,1Ø%)ð/qVð qVð qVð qVð qVð qVð qVð qVðf ð >BØ$(ØLPØ09Ø#'Ø"Ø%)Ø6:Ø"&Ø%)ØDHØ7@Ø/3Ø5>Ø15Ø&/Ø48Ø8<Ø59Ø9=Ø,0Ø+-ð1<
ð <
ð <
ð <
ð <
ð <
ð <
ñ „Xð<
ð| €Lðð ð ð ð" ðð ð ñ „Xðð ð
ð 
ð 
ñ „Xð
ð ðð ð ñ „Xðð*!ð !ð !ð !ð !ð !ð !ð !r:   rñ   )r-   r   r.   r/   r0   r1   )r-   r   r0   r1   )GÚ
__future__r   r£   rû   Útypingr   r   r   r   r   r	   r
   r   Útyping_extensionsr   r   rf   Úauthr   r   Ú_typesr   r   r   r   r   r   Ú_utilsr   r   Ú_clientr   r   Ú_compatr   Ú_httpx2r   Ú_modelsr   r   Ú	_providerr   Ú
_streamingr    r!   Ú
auth._x509r"   Ú_exceptionsr#   Ú_base_clientr$   r%   Ú_data_residencyr&   Úsetr[   r/   ÚAzureADTokenProviderÚAsyncAzureADTokenProviderÚClientÚAsyncClientr'   r)   Újoinr¦   r<   r@   rB   rO   rq   rñ   r‹   r:   r8   ú<module>r     s~  ðØ "Ð "Ð "Ð "Ð "Ð "à 	€	€	€	Ø €€€Ø TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TØ ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,à €€€à 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GØ )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ø )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ø  Ð  Ð  Ð  Ð  Ð  Ø )Ð )Ð )Ð )Ð )Ð )Ø :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ø !Ð !Ð !Ð !Ð !Ð !Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø %Ð %Ð %Ð %Ð %Ð %Ø :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ø +Ð +Ð +Ð +Ð +Ð +à˜ð	ð 	ð 	ñô Ð ð    C Ô(Ð Ø$ RÐ)?Ð%?Ô@Ð Ø�˜¨u°V´]ÀFÔDVÐ5VÔ/WÐXÑXÔX€Ø�'Ð+°5¸À¼ÀkÐRUÔFVÐ9VÔ3WÐXÑXÔX€ð —7’7Ð8Ð8Ð8Ñ9Ô9Ð ð9ð 9ð 9ð 9ð
Tð Tð Tð Tð
ð 
ð 
ð 
ð 
 ñ 
ô 
ð 
ð")ð ")ð ")ð ")ð ")�j °Ð!?Ô@ñ ")ô ")ð ")ðJG!ð G!ð G!ð G!ð G!�/ &¤-°¸´Ð"<Ô=¸vñ G!ô G!ð G!ðT
L!ð L!ð L!ð L!ð L!� vÔ'9¸;ÀsÔ;KÐ'KÔLÈkñ L!ô L!ð L!ð L!ð L!r:   