
    jL+                     $   d dl Z d dlZd dlZd dlmZmZ d dlZd dlZd dlm	Z	 d dl
mZ d dlmZ d dlmZ d dlmZ  e       Zdee   d	ee   fd
Z	 ddedeeeef      d	ee   fdZ	 ddedee   d	ee   fdZ	 ddedeeeef      fdZd	efdZy)    N)OptionalUnion)verbose_logger)	DualCache)HTTPHandler)get_azure_ad_token_provider)get_secret_from_managervaluereturnc                 f    | ydh}dh}| j                         j                         }||v ry||v ryy)a  
    Converts a string to a boolean if it's a recognized boolean string.
    Returns None if the string is not a recognized boolean value.

    :param value: The string to be checked.
    :return: True or False if the string is a recognized boolean, otherwise None.
    NtruefalseTF)striplower)r
   true_valuesfalse_valuesvalue_lowers       u/Users/manta/Documents/Projects/TheRoad-I1/backend/.venv/lib/python3.12/site-packages/litellm/secret_managers/main.pystr_to_boolr      sG     }(K9L++-%%'Kk!		$    secret_namedefault_valuec                 F    t        | |      }|t        |t              sy|S )zi
    Guarantees response from 'get_secret' is either string or none. Used for fixing linting errors.
    )r   r   N)
get_secret
isinstancestr)r   r   r
   s      r   get_secret_strr   /   s'     ;mLEE3!7Lr   c                 Z    t        | |      }|yt        |t              r|S t        |      S )aP  
    Guarantees response from 'get_secret' is either boolean or none. Used for fixing linting errors.

    Args:
        secret_name: The name of the secret to get.
        default_value: The default value to return if the secret is not found.

    Returns:
        The secret value as a boolean or None if the secret is not found.
    N)r   r   boolr   )r   r   _secret_values      r   get_secret_boolr!   =   s4     {M:M	M4	(=))r   c           
         t         j                  }t         j                  }d }| j                  d      r| j	                  dd      } | j                  d      rQ| j	                  dd      }|j                  dd      \  }}dj                  |j                  d      dd        }|dk(  rt        j                  |       }||S t        t        j                  dd	
            }	|	j                  dd|iddi      }
|
j                  dk(  r&|
j                  }t        j                  | |d       |S t!        d      |dk(  r$t#        j$                  d      }|t!        d      |S |dk(  r$t#        j$                  d      }|t!        d      |S |dk(  rt#        j$                  d      }t#        j$                  d      }||t!        d      t        j                  |       }||S t        t        j                  dd	
            }	|	j                  |d|id| d d!      }
|
j                  dk(  r:|
j'                         j                  d"d       }t        j                  | |d#       |S t!        d$      |d%k(  rwt#        j$                  d&      }|8t)        j*                  d'       t-        |(      }	  |       }|t!        d)      |S t5        |d+      5 }|j7                         }|cd d d        S |d,k(  r(t5        |d+      5 }|j7                         }|cd d d        S |d-k(  r(t#        j$                  |      }|t!        d.| d/      |S |d0k(  rNt#        j$                  |      }|t!        d.| d/      t5        |d+      5 }|j7                         }|cd d d        S t!        d1      	 t9               rt         j:                  	 t         j:                  }d2}||j<                  }||j>                  | |j>                  vrd2}tA        ||| |3      }	 tG        |t0              r)tI        jJ                  |      }tG        |tL              r|S |S y t"        jN                  j                  |       }|tQ        |      nd }|tG        |tL              r|S |S # t.        $ r3}d*t1        |       }t)        j2                  |       t!        |      d }~ww xY w# 1 sw Y   1xY w# 1 sw Y   >xY w# 1 sw Y   KxY w# t.        $ rY}t)        j2                  d4|  d5t1        |       d6tC        jD                                 t#        j$                  |       }Y d }~Bd }~ww xY w# t.        $ r |cY S w xY w# t.        $ r}||cY d }~S |d }~ww xY w)7Nzos.environ/ zoidc//   google)keyg     @g      @)timeoutconnect)r(   z]http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/identityaudiencezMetadata-FlavorGoogle)paramsheaders   i  )r'   r
   ttlzGoogle OIDC provider failedcircleciCIRCLE_OIDC_TOKENz*CIRCLE_OIDC_TOKEN not found in environmentcircleci_v2CIRCLE_OIDC_TOKEN_V2z-CIRCLE_OIDC_TOKEN_V2 not found in environmentgithubACTIONS_ID_TOKEN_REQUEST_URLACTIONS_ID_TOKEN_REQUEST_TOKENzWACTIONS_ID_TOKEN_REQUEST_URL or ACTIONS_ID_TOKEN_REQUEST_TOKEN not found in environmentzBearer z!application/json; api-version=2.0)AuthorizationAcceptr
   i'  zGithub OIDC provider failedazureAZURE_FEDERATED_TOKEN_FILEzTAZURE_FEDERATED_TOKEN_FILE not found in environment will use Azure AD token provider)azure_scopez'Azure OIDC provider returned None tokenzAzure OIDC provider failed: rfileenvzEnvironment variable z
 not foundenv_pathzUnsupported OIDC providerlocal)clientkey_managerr   key_management_settingsz'Defaulting to os.environ value for key=z. An exception occurred - z.

))litellm_key_management_system_key_management_settings
startswithreplacesplitjoin
oidc_cache	get_cacher   httpxTimeoutgetstatus_codetext	set_cache
ValueErrorosgetenvjsonr   warningr   	Exceptionr   erroropenread'_should_read_secret_from_secret_managersecret_manager_clientr
   hosted_keysr	   	traceback
format_excr   astliteral_evalr   environr   )r   r   key_management_systemrC   secretsecret_name_splitoidc_provideroidc_aud
oidc_tokenoidc_clientresponse
env_secretactions_id_token_request_urlactions_id_token_request_tokenazure_federated_token_fileazure_token_providere	error_msgftoken_file_pathrA   rB   secret_value_as_bools                          r   r   r   T   s    $::%>>Fm,!))-< g&'//<"3"9"9#q"Ax88-33C8<=H$#--+->J%!!%emmESV.WXK"o"H-*H5 ' H
 ##s*%]]
$$JI$V!! !>??j(#67J! !MNNm+#9:J! !PQQh&+-995S+T(-/YY7W-X*+37U7] m  $--+->J%!!%emmESV.WXK","H-'./M.N%OA ' H ##s*%]]_00$?
$$JG$T!! !>??g%)+3O)P&)1&&j (Cx'X$0!5!7J!)()RSS%%
 0#6!VVX
! 76 f$h$VVX
! %$ e#8,J! #8
*!MNNj( ii1O& #8
*!MNNos+qVVX
! ,+ 899/249V9V9b0 66%(4"7"="=K*6/;;G'/F/R/RR&- 1! + +,C	fc*+.+;+;F+C(!"6=33% + ZZ^^K0F:@:L;v#6RV #/J?SUY4Z++O ! 0">s1vh GI"((3$Y//0 76
 %$ ,+8  0$$=k]Jdehijekdllqr{  sG  sG  sI  rJ  K ;/	0    $  G	s   3R SSS**U- AS7 6U 
U AU- U- 	S.SSSS'*S47	U AUU- UU- U*'U- )U**U- -	V6V9V?VVc                      t         j                  Kt         j                  ;t         j                  j                  dk(  st         j                  j                  dk(  ryy)a  
    Returns True if the secret manager should be used to read the secret, False otherwise

    - If the secret manager client is not set, return False
    - If the `_key_management_settings` access mode is "read_only" or "read_and_write", return True
    - Otherwise, return False
    	read_onlyread_and_writeTF)rD   r]   rF   access_mode r   r   r\   r\      sK     $$0++700<<K33??CSSr   )N)ra   rT   r_   typingr   r   rM   rD   litellm._loggingr   litellm.caching.cachingr   &litellm.llms.custom_httpx.http_handlerr   3litellm.secret_managers.get_azure_ad_token_providerr   .litellm.secret_managers.secret_manager_handlerr	   rK   r   r   r   r   r!   r   r\   rz   r   r   <module>r      s    
 	  "   + - > S[
x} $ 4 15E#t),- c]  %)**D>* d^*2 15ddE#t),-dN r   