
    ^h                     ~    S SK r S SKrS SKJr  S SKrS SKJr  S SKJr  S SK	J
r
  S SKJr  S SKJrJr   " S S	\
5      rg)
    N)Optional)verbose_logger)InMemoryCache)GCSBucketBase)_get_httpx_client)CommonProxyErrorsKeyManagementSystemc                   d   ^  \ rS rSr  S
S\\   S\\   SS4U 4S jjjrS\S\\   4S jr	S	r
U =r$ )GoogleSecretManager   refresh_intervalalways_read_secret_managerreturnNc                   > SSK Jn  USLa&  [        S[        R                  R
                   35      e[        TU ]  5         [        R                  R                  SS5      U l        U R                  c  [        S5      e[        5       U l        U [        l        [         R"                  [        l        [        R                  R                  SU5      nU(       a  ['        U5      OUn[)        US	9U l        [        R                  R                  S
5      nU(       a  UR-                  5       S:X  a  SU l        gU=(       d    SU l        g)a  
Args:
    refresh_interval (int, optional): The refresh interval in seconds. Defaults to 86400. (24 hours)
    always_read_secret_manager (bool, optional): Whether to always read from the secret manager. Defaults to False. Since we do want to cache values
r   )premium_userTz5Google Secret Manager requires an Enterprise License  GOOGLE_SECRET_MANAGER_PROJECT_IDNzgGoogle Secret Manager requires a project ID, please set 'GOOGLE_SECRET_MANAGER_PROJECT_ID' in your .env&GOOGLE_SECRET_MANAGER_REFRESH_INTERVAL)default_ttl0GOOGLE_SECRET_MANAGER_ALWAYS_READ_SECRET_MANAGERtrueF)litellm.proxy.proxy_serverr   
ValueErrorr   not_premium_uservaluesuper__init__osenvironget
PROJECT_IDr   sync_httpx_clientlitellmsecret_manager_clientr	   GOOGLE_SECRET_MANAGER_key_management_systemintr   cachelowerr   )selfr   r   r   _refresh_interval_always_read_secret_manager	__class__s         g/home/james-whalen/.local/lib/python3.13/site-packages/litellm/secret_managers/google_secret_manager.pyr   GoogleSecretManager.__init__   s    	<t#GHYHjHjHpHpGqr  	**..)KTR??"y  "3!4(,%)<)R)R&JJNN46F
 '8C!"=M 	 #)

 ')jjnn>'
# (+113v=.2D+ /I.QED+    secret_namec                    U R                   SLa;  U R                  R                  U5      nUb  U$ XR                  R                  ;   a  U$ SU R                   SU S3nU R                  5       nSU S3nU R                  R                  XTS9nUR                  S	:w  aa  [        R                  " S
[        UR                  5      5        U R                  R                  US5        [        SU SUR                   35      e[        R                  " SUR                  5        UR!                  5       nUR                  S0 5      R                  S5      nUbB  ["        R$                  " U5      R'                  S5      n	U R                  R                  X5        U	$ U R                  R                  US5        [        SU S35      e)z
Retrieve a secret from Google Secret Manager or cache.

Args:
    secret_name (str): The name of the secret.

Returns:
    str: The secret value if successful, None otherwise.
TNz	projects/z	/secrets/z/versions/latestz(https://secretmanager.googleapis.com/v1/z:access)urlheaders   z)Google Secret Manager retrieval error: %szsecret z, not found in Google Secret Manager. Error: z8Google Secret Manager retrieval response status code: %spayloaddatazutf-8z# not found in Google Secret Manager)r   r'   	get_cache
cache_dictr    sync_construct_request_headersr!   r   status_coder   errorstrtext	set_cacher   debugjsonbase64	b64decodedecode)
r)   r0   cached_secret_secret_namer3   r2   responsesecret_data_base64_encoded_value_decoded_values
             r-   %get_secret_from_google_secret_manager9GoogleSecretManager.get_secret_from_google_secret_manager=   s    **$6 JJ00=M($$jj333$$ (	+>NO 	 5578gN ))--#-G3&  ;S=O JJ  T +&RS[S`S`Rab  	F  	
 mmo +	2 > B B6 J !,#--.CDKKGTNJJ   "!

[$/7;-/RSTTr/   )r    r   r'   r!   )iQ F)__name__
__module____qualname____firstlineno__r   r&   boolr   r<   rJ   __static_attributes____classcell__)r,   s   @r-   r   r      s`     +05:-R"3--R %-TN-R 
	-R -R^7U 7URU 7U 7Ur/   r   )rA   r   typingr   r"   litellm._loggingr   litellm.caching.cachingr   /litellm.integrations.gcs_bucket.gcs_bucket_baser   &litellm.llms.custom_httpx.http_handlerr   litellm.proxy._typesr   r	   r    r/   r-   <module>rZ      s0     	   + 1 I D GgU- gUr/   