
    g;                     6   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  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)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    Q/var/www/openai/venv/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'   5   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+   C   s4     {M:M	M4	(=))r    c           
      ~   t         j                  }t         j                  }d }| j                  d      r| j	                  dd      } | j                  d      r| j	                  dd      }|j                  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(  rJt!        j"                  d&      }|t        d'      t'        |d(      5 }|j)                         }|cd d d        S |d)k(  r(t'        |d(      5 }|j)                         }|cd d d        S |d*k(  r(t!        j"                  |      }|t        d+| d,      |S |d-k(  rNt!        j"                  |      }|t        d+| d,      t'        |d(      5 }|j)                         }|cd d d        S t        d.      	 t+               rt         j,                  x	 t         j,                  }d/}||j.                  }||j0                  | |j0                  vrd/}|t2        j4                  j.                  k(  s1t7        |      j8                  d0z   t7        |      j:                  z   d1k(  r|j=                  |       j.                  }n|t2        j>                  j.                  k(  s|j@                  j:                  d2k(  rt!        j"                  |       }|t        d3      tC        |      }|d4u rtE        jF                  |      }|}nt        d5      |jI                  t         jJ                  |d67      }
|
jL                  jO                  d8      }n|t2        jP                  j.                  k(  r	 t!        j"                  | d       }|tS        d9jU                  |             tE        jF                  |      }d:|i} |jH                  dGi |}
|
d;   }|jO                  d8      }tW        |tX              r'|j[                         }n|t2        j\                  j.                  k(  r3d<d=l/m0} tW        ||      r|jc                  | >      }te        d?|        n|t2        jf                  j.                  k(  r1	 |ji                  |       }te        d@|        |t        dA|        nw|t2        jj                  j.                  k(  r$	 |jc                  | >      }|t        dC|        n6|d/k(  rt!        j"                  |       }n|j=                  |       jl                  }	 tW        |tX              r)tw        jx                  |      }tW        |tz              r|S |S y t         j|                  j                  |       }|t        |      nd }|tW        |tz              r|S |S # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# tR        $ r}te        dBtY        |              |d }~ww xY w# tR        $ r}te        dBtY        |              |d }~ww xY w# tR        $ rY}to        jp                  dD|  dEtY        |       dFts        jt                                 t!        j"                  |       }Y d }~Wd }~ww xY w# tR        $ r |cY S w xY w# tR        $ r}||cY d }~S |d }~ww xY w)HNz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 - z0No secret found in Hashicorp Secret Manager for 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HASHICORP_VAULT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x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*,419 m  $--+->J%!!%emmESV.WXK","H-'./M.N%OA ' H ##s*%]]_00$?
$$JG$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H35--9l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$'/(`   **:;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-v~~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[} ]#  * !$7$G$G$M$MM !'!8!8[!8!Q!>","RS^R_ `#  * !G+YY{3F#..{;HHFfc*+.+;+;F+C(!"6=33% + ZZ^^K0F:@:L;v#6RV #/J$d5 ,+y 76
 %$ ,+D %  %(<SVH&EF  %  %(<SVH&EF   0$$=k]Jdehijekdllqr{  sG  sG  sI  rJ  K ;/	0    $  G	s   \22\?2]`# 7J^- /] ;^- "^ <7^- 46` +` .A`# 0`# 2\<?]	]	^ "];;^  ^- 	^*^%%^**^- -	`6A`
`# 
``# ` `# `  `# #	`<,`7/`<5`77`<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)rS   rh   rU   access_moderR   r    r   rg   rg   P  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ssE#t),-sl r    