
    ^h9                     F   S SK r S SKrS SKrS SKrS SKrS SKJrJrJr  S SK	r	S SK
r
S SKJrJr  S SKJr  S SKJr  S SKJr  \" 5       rS rS\\   S	\\   4S
 jr SS\S\\\\4      S	\\   4S jjr SS\S\\   S	\\   4S jjr SS\S\\\\4      4S jjrS	\4S jrg)    N)AnyOptionalUnion)print_verboseverbose_logger)	DualCache)HTTPHandler)KeyManagementSystemc                      [         R                  " [         R                  " U 5      5      R                  5       U :H  $ ! [        R
                   a     gf = f)NF)base64	b64encode	b64decodedecodebinasciiError)ss    V/home/james-whalen/.local/lib/python3.13/site-packages/litellm/secret_managers/main.py
_is_base64r      sG     0 0 34;;=BB>> s   := AAvaluereturnc                 l    U c  gS1nS1nU R                  5       R                  5       nX1;   a  gX2;   a  gg)z
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       r   str_to_boolr      sC     }(K9L++-%%'K!		$    secret_namedefault_valuec                 J    [        XS9nUb  [        U[        5      (       d  gU$ )za
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'   5   s(     ;LEE3!7!7Lr    c                 d    [        X5      nUc  g[        U[        5      (       a  U$ [        U5      $ )a4  
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+   C   s5     {:M	M4	(	(=))r    c           
      @   [         R                  n[         R                  nS nU R                  S5      (       a  U R	                  SS5      n U R                  S5      (       Ga  U R	                  SS5      nUR                  SS5      u  pgUS:X  a  [        R                  U S9nUb  U$ [        [        R                  " SS	S
9S9n	U	R                  SSU0SS0S9n
U
R                  S:X  a"  U
R                  n[        R                  XSS9  U$ [        S5      eUS:X  a&  [         R"                  " S5      nUc  [        S5      eU$ US:X  a&  [         R"                  " S5      nUc  [        S5      eU$ US:X  a  [         R"                  " S5      n[         R"                  " S5      nUb  Uc  [        S5      e[        R                  U S9nUb  U$ [        [        R                  " SS	S
9S9n	U	R                  USU0SU 3S S!.S9n
U
R                  S:X  a6  U
R%                  5       R                  S"S 5      n[        R                  XS#S9  U$ [        S$5      eUS%:X  aL  [         R"                  " S&5      nUc  [        S'5      e['        US(5       nUR)                  5       nUsS S S 5        $ US):X  a(  ['        US(5       nUR)                  5       nUsS S S 5        $ US*:X  a*  [         R"                  " U5      nUc  [        S+U S,35      eU$ US-:X  aP  [         R"                  " U5      nUc  [        S+U S,35      e['        US(5       nUR)                  5       nUsS S S 5        $ [        S.5      e [+        5       (       Gal  [         R,                  GbZ   [         R,                  nS/nUb  UR.                  nUb  UR0                  b  XR0                  ;  a  S/nU[2        R4                  R.                  :X  d2  [7        U5      R8                  S0-   [7        U5      R:                  -   S1:X  a  UR=                  U 5      R.                  nGOdU[2        R>                  R.                  :X  d  UR@                  R:                  S2:X  a  [         R"                  " U 5      nUc  [        S35      e[C        U5      nUS4L a  [D        RF                  " U5      nUnO[        S55      eURI                  [         RJ                  US6.S79n
U
RL                  RO                  S85      nGOU[2        RP                  R.                  :X  a   [         R"                  " U S 5      nUc  [S        S9RU                  U 5      5      e[D        RF                  " U5      nS:U0nURH                  " SF0 UD6n
U
S;   nURO                  S85      n[W        U[X        5      (       a  UR[                  5       nOU[2        R\                  R.                  :X  a5  S<S=K/J0n  [W        UU5      (       a  URc                  U S>9n[e        S?U 35        OU[2        Rf                  R.                  :X  a2   URi                  U 5      n[e        S@U 35        Uc  [        SAU  35      eO9US/:X  a  [         R"                  " U 5      nOUR=                  U 5      Rj                  n  [W        U[X        5      (       a/  [t        Rv                  " U5      n[W        U[x        5      (       a  U$ U$ g [         Rz                  R                  U 5      nUb  [}        U5      OS nUb  [W        U[x        5      (       a  U$ U$ ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! [R         a  n[e        SB[Y        U5       35        UeS nAff = f! [R         a\  n[l        Rn                  " SCU  SD[Y        U5       SE[p        Rr                  " 5        35        [         R"                  " U 5      n S nAGNSS nAff = f! [R         a    Us $ f = f! [R         a  nUb  Us S nA$ UeS nAff = f)GNzos.environ/ zoidc//   google)keyg     @g      @)timeoutconnect)r2   z]http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/identityaudiencezMetadata-FlavorGoogle)paramsheaders   i  )r1   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_FILEz3AZURE_FEDERATED_TOKEN_FILE not found in environmentrfileenvzEnvironment variable z
 not foundenv_pathzUnsupported OIDC providerlocal.z+azure.keyvault.secrets._client.SecretClientKeyManagementServiceClientzBGoogle KMS requires the encrypted secret to be in the environment!Tz@Google KMS requires the encrypted secret to be encoded in base64)name
ciphertext)requestzutf-8z+AWS KMS - Encrypted Value of Key={} is NoneCiphertextBlob	Plaintextr   )AWSSecretsManagerV2)r!   zget_secret_value_response: z$secret from google secret manager:  z-No secret found in Google Secret Manager for zAn error occurred - z'Defaulting to os.environ value for key=z. An exception occurred - z.

 )?litellm_key_management_system_key_management_settings
startswithreplacesplit
oidc_cache	get_cacher	   httpxTimeoutgetstatus_codetext	set_cache
ValueErrorosgetenvjsonopenread'_should_read_secret_from_secret_managersecret_manager_clientr   hosted_keysr
   AZURE_KEY_VAULTtype
__module____name__r$   
GOOGLE_KMS	__class__r   r   r   decrypt_google_kms_resource_name	plaintextr   AWS_KMS	Exceptionformatr%   r&   r   AWS_SECRET_MANAGER-litellm.secret_managers.aws_secret_manager_v2rQ   sync_read_secretr   GOOGLE_SECRET_MANAGER%get_secret_from_google_secret_managersecret_valuer   error	traceback
format_excastliteral_evalr)   environr   )r!   r"   key_management_systemkey_management_settings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ftoken_file_pathclientkey_managerencrypted_secretb64_flagrM   encrypted_valueciphertext_blobr6   rr   rQ   esecret_value_as_bools                                r   r$   r$   Z   s    $::%>>Fm,,!))-< g&&'//<"3"9"9#q"AH$#--+->J%!!%emmESV.WXK"o"H-*H5 ' H
 ##s*%]]
$$I$V!! !>??j(#67J! !MNNm+#9:J! !PQQh&+-995S+T(-/YY7W-X*,419 m  $--+->J%!!%emmESV.WXK","H-'./M.N%OA ' H ##s*%]]_00$?
$$G$T!! !>??g%)+3O)P&)1 !VWW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~355--9b0 66%(4"7"="=K*6/;;G'/R/RR&-  #6#F#F#L#LLF|..4tF|7L7LLDE $..{;AAF#6#A#A#G#GG''004PP,.IIk,B$'/(`   **:;H4'+1+;+;<L+M(%5
(^   &~~$+$E$E*4!  .  H &//66F !$7$?$?$E$EE ')iiT&BO&.'IPP +  '-&6&6&GO /@F%~~77H !) 5I&--g6F!&#..!' $7$J$J$P$PP "&*=>>!'!8!8[!8!Q%(CF8&LM $7$M$M$S$SS !'!M!M'" &(LVH&UV!>","OP[} ]#  * !G+YY{3F#..{;HHFfc**+.+;+;F+C(!"6==33% + ZZ^^K0F:@:L;v#6RV #/J$d5 5 ,+e 76
 %$ ,+D %  %(<SVH&EF   0$$=k]Jdehijekdllqr{  sG  sG  sI  rJ  K ;/	0    $  G	s  \&1\87]
"` B-^ /` 1C^ <` >B:^ 8` 9A^ ` ^ +0] ` ^ 8` 9^ ` A_0 _0 A` $` &
\58
]

]
^&]??^^ 
_-A_("` (_--` 0_?<` >_??` 
`````c                      [         R                  bN  [         R                  b=  [         R                  R                  S:X  d  [         R                  R                  S:X  a  gg)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)rS   rh   rU   access_moderR   r    r   rg   rg   F  sK     $$0++700<<K33??CSSr    )N)r   r   r   rb   r}   typingr   r   r   r[   rS   litellm._loggingr   r   litellm.caching.cachingr   &litellm.llms.custom_httpx.http_handlerr	   litellm.proxy._typesr
   rY   r   r&   r)   r   r'   r+   r$   rg   rR   r    r   <module>r      s    
   	  ' '   : - > 4[
x} $ 4 15E#t),- c]  %)**D>* d^*2 15iiE#t),-iX r    