
    hW=                     B   d dl Z d dlZd dlZd dlZd dlZd dlmZmZmZ d dl	Z	d dl
Z
d dlmZ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 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)AnyOptionalUnion)print_verboseverbose_logger)	DualCache)HTTPHandler)get_azure_ad_token_provider)KeyManagementSystemc                     	 t        j                  t        j                  |             j                         | k(  S # t        j
                  $ r Y yw xY w)NF)base64	b64encode	b64decodedecodebinasciiError)ss    X/var/www/Befach/backend/env/lib/python3.12/site-packages/litellm/secret_managers/main.py
_is_base64r      sG     0 0 34;;=BB>> s   8; AA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       r   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(   8   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,   F   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}|t@        jB                  j<                  k(  s1tE        |      jF                  d3z   tE        |      jH                  z   d4k(  r|jK                  |       j<                  }n|t@        jL                  j<                  k(  s|jN                  jH                  d5k(  rt#        j$                  |       }|t!        d6      tQ        |      }|d7u rtS        jT                  |      }|}nt!        d8      |jW                  t         jX                  |d9:      }
|
jZ                  j]                  d;      }n|t@        j^                  j<                  k(  r	 t#        j$                  | d       }|t/        d<ja                  |             tS        jT                  |      }d=|i} |jV                  dKi |}
|
d>   }|j]                  d;      }tc        |t0              r2|je                         }n |t@        jf                  j<                  k(  r>d?d@l4m5} tc        ||      r|jm                  | |jn                  A      }tq        dB|        n|t@        jr                  j<                  k(  r1	 |ju                  |       }tq        dC|        |t!        dD|        nw|t@        jv                  j<                  k(  r$	 |jm                  | F      }|t!        dG|        n6|d2k(  rt#        j$                  |       }n|jK                  |       jx                  }	 tc        |t0              r)t        j                  |      }tc        |t              r|S |S y t"        j                  j                  |       }|t        |      nd }|tc        |t              r|S |S # t.        $ r3}d*t1        |       }t)        j2                  |       t!        |      d }~ww xY w# 1 sw Y   -xY w# 1 sw Y   :xY w# 1 sw Y   GxY w# t.        $ r}tq        dEt1        |              |d }~ww xY w# t.        $ r}tq        dEt1        |              |d }~ww xY w# t.        $ rY}t)        j2                  dH|  dIt1        |       dJt{        j|                                 t#        j$                  |       }Y d }~d }~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)LNzos.environ/ zoidc//   google)keyg     @g      @)timeoutconnect)r3   z]http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/identityaudiencezMetadata-FlavorGoogle)paramsheaders   i  )r2   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.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"   primary_secret_namezget_secret_value_response: z$secret from google secret manager:  z-No secret found in Google Secret Manager for zAn error occurred - )r"   z0No secret found in Hashicorp Secret Manager for z'Defaulting to os.environ value for key=z. An exception occurred - z.

 )D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   AZURE_KEY_VAULTtype
__module____name__r%   
GOOGLE_KMS	__class__r   r   r   decrypt_google_kms_resource_name	plaintextr   AWS_KMSformatr&   r   AWS_SECRET_MANAGER-litellm.secret_managers.aws_secret_manager_v2rS   sync_read_secretrT   r   GOOGLE_SECRET_MANAGER%get_secret_from_google_secret_managerHASHICORP_VAULTsecret_value	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azure_token_providere	error_msgftoken_file_pathclientkey_managerencrypted_secretb64_flagrO   encrypted_valueciphertext_blobr7   ry   rS   secret_value_as_bools                                  r   r%   r%   ]   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
!" " f$h$ "VVX
!" " e#8,J! #8
*!MNNj( ii1O& #8
*!MNNos+ "qVVX
!" " 899x249V9V9ba0 66%(4"7"="=K*6/;;G'/F/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$'/()mnn)*:;H4'+1+;+;<L+M(%5
(^   &~~$+$E$E*4!  .  H &//66w?F $7$?$?$E$EE ')iiT&BO&.'(U(\(\]h(ijj&,&6&6&GO /@F-v~~77H !) 5I&--g6F!&#.!' $7$J$J$P$PP "&*=>!'!8!8(30G0[0[ "9 " &(CF8&LM $7$M$M$S$SS !'!M!Mk!Z%(LVH&UV!>",/\]h\i-j"kk *
 !$7$G$G$M$MM !'!8!8[!8!Q!>",/_`k_l-m"nn *
 !G+YY{3F#..{;HHFfc*+.+;+;F+C(!"6=33% + ZZ^^K0F:@:L;v#6RV #/J?SUY4Z++a ! 0">s1vh GI"((3$Y//0" "
" "" "l %  %(<SVH&EF  %  %(<SVH&EF   0$$=k]Jdehijekdllqr{  sG  sG  sI  rJ  K ;/	0    $  G	s   3^ ___&*b= Ja '/_3 a 5"` 7a 6b, b, 	Ab= b= 	_	.__	__#&_03	`<``a 	a&`??aa 	b)Ab$b= $b))b= ,b:7b= 9b::b= =	cc	ccc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)rV   ro   rX   access_moderU   r!   r   rn   rn   M  sK     $$0++700<<K33??CSSr!   )N)r   r   r   rf   r   typingr   r   r   r_   rV   litellm._loggingr   r   litellm.caching.cachingr   &litellm.llms.custom_httpx.http_handlerr	   3litellm.secret_managers.get_azure_ad_token_providerr
   "litellm.types.secret_managers.mainr   r]   r   r'   r*   r    r(   r,   r%   rn   rU   r!   r   <module>r      s    
   	  ' '   : - > C[
x} $ 4 15E#t),- c]  %)**D>* d^*2 15mmE#t),-m` r!   