
    ^h                         S SK JrJrJr  S SKrS SKJr  S SKJr  S SK	J
r
   " S S\5      rS\\R                  \4   S	\4S
 jr SS\S\S\S\S	\/ \4   4
S jjrg)    )CallableOptionalUnionN)verbose_logger)BaseLLMException)get_secret_strc            
          ^  \ rS rSr   SS\\R                     S\\R                     S\\\R                  \
4      4U 4S jjjrSrU =r$ )AzureOpenAIError
   requestresponseheadersc                 (   > [         TU ]  UUUUUS9  g )N)status_codemessager   r   r   )super__init__)selfr   r   r   r   r   	__class__s         Y/home/james-whalen/.local/lib/python3.13/site-packages/litellm/llms/azure/common_utils.pyr   AzureOpenAIError.__init__   s&     	# 	 	
     )NNN)__name__
__module____qualname____firstlineno__r   httpxRequestResponser   Headersdictr   __static_attributes____classcell__)r   s   @r   r
   r
   
   s[    
 ,0-18<
 %--(	

 5>>*
 %t 345
 
r   r
   r   returnc                     0 nSU ;   a  U S   US'   SU ;   a  U S   US'   SU ;   a  U S   US'   SU ;   a  U S   US'   U R                  5        VVs0 s H  u  p#SR                  SU5      U_M     nnn0 UEUE$ s  snnf )Nzx-ratelimit-limit-requestszx-ratelimit-remaining-requestszx-ratelimit-limit-tokenszx-ratelimit-remaining-tokensz{}-{}llm_provider)itemsformat)r   openai_headerskvllm_response_headerss        r   process_azure_headersr.      s    N#w.7>(8
34 (72;B,<
78 "W,5<=W5X12%09@*:
56 :A9H~q)1,   6"5n55	s   A6	tenant_id	client_idclient_secretscopec                    SSK JnJn  [        R                  " S5        U R                  S5      (       a  [        U 5      nOU nUR                  S5      (       a  [        U5      nOUnUR                  S5      (       a  [        U5      nOUn[        R                  " SUUU5        Ub  Ub  Uc  [        S5      eU" XgU5      n	[        R                  " SU	5        U" X5      n
[        R                  " SU
5        U
$ )	z
Get Azure AD token provider from `client_id`, `client_secret`, and `tenant_id`

Args:
    tenant_id: str
    client_id: str
    client_secret: str
    scope: str

Returns:
    callable that returns a bearer token.
r   )ClientSecretCredentialget_bearer_token_providerz&Getting Azure AD Token from Entrata IDzos.environ/z,tenant_id %s, client_id %s, client_secret %sz8tenant_id, client_id, and client_secret must be providedzcredential %sztoken_provider %s)azure.identityr4   r5   r   debug
startswithr   
ValueError)r/   r0   r1   r2   r4   r5   
_tenant_id
_client_id_client_secret
credentialtoken_providers              r   "get_azure_ad_token_from_entrata_idr?   3   s    $ QABM**#I.

M**#I.

..'6&6	 Z/>3ISTT'
OJ*5.zAN,n=r   )z,https://cognitiveservices.azure.com/.default)typingr   r   r   r   litellm._loggingr   )litellm.llms.base_llm.chat.transformationr   litellm.secret_managers.mainr   r
   r!   r"   r.   strr?   r   r   r   <module>rE      s    , ,  + F 7
' 
$65)<#= 6$ 66 @	555 5 	5
 b#g5r   