
    kh                        d dl mZ d dlmZmZ d dlmZ d dlm	Z	m
Z
 ddlmZ e	rd dlma d dlma d d	lma d d
lmZ ndadadaddZ G d deee
e   f         Z G d de      ZddgZy)    )annotations)IteratorMapping)cached_property)TYPE_CHECKINGOptional   )EnvSettingsSourcedefaultCredentialsSecretManagerServiceClient)BaseSettingsNc                 d    	 ddl ma ddlma ddlma y # t        $ r} t        d      | d } ~ ww xY w)Nr   r   r   r   zjGCP Secret Manager dependencies are not installed, run `pip install pydantic-settings[gcp-secret-manager]`)google.authr   google_auth_defaultgoogle.auth.credentialsr   google.cloud.secretmanagerr   ImportError)es    c/opt/mcp/mcp-sentiment/venv/lib/python3.12/site-packages/pydantic_settings/sources/providers/gcp.pyimport_gcp_secret_managerr      s3    
>7I x
	s    	/*/c                  p    e Zd ZU ded<   ded<   ddZedd       Zedd       ZdddZ	dd	Z
dd
ZddZy)GoogleSecretManagerMappingzdict[str, str | None]_loaded_secretsr   _secret_clientc                <    i | _         || _        || _        || _        y N)r   r   _project_id_case_sensitive)selfsecret_client
project_idcase_sensitives       r   __init__z#GoogleSecretManagerMapping.__init__(   s"    !+%-    c                L    | j                   j                  | j                        S r    )r   common_project_pathr!   r#   s    r   _gcp_project_pathz,GoogleSecretManagerMapping._gcp_project_path.   s    ""66t7G7GHHr(   c                (   g }| j                   j                  | j                        }|D ]d  }| j                   j                  |j                        j                  dd      }| j                  s|j                         }|j                  |       f |S )N)parentsecret )	r   list_secretsr,   parse_secret_pathnamegetr"   lowerappend)r#   rvsecretsr/   r3   s        r   _secret_namesz(GoogleSecretManagerMapping._secret_names2   s    %%22$:P:P2Q 	F&&88EII(TVWD''zz|IIdO		
 	r(   c                P    | j                   j                  | j                  ||      S r    )r   secret_version_pathr!   )r#   keyversions      r   _secret_version_pathz/GoogleSecretManagerMapping._secret_version_path>   s#    ""66t7G7GgVVr(   c                   | j                   s|j                         }|| j                  vru|| j                  vrt	        |      	 | j
                  j                  | j                  |            j                  j                  j                  d      | j                  |<   | j                  |   S # t        $ r t	        |      w xY w)N)r3   zUTF-8)r"   r5   r   r9   KeyErrorr   access_secret_versionr>   payloaddatadecode	Exception)r#   r<   s     r   __getitem__z&GoogleSecretManagerMapping.__getitem__A   s    ##))+Cd***$,,,sm#$,0,?,?,U,U2237 -V -'$$vvg $$S) ##C((  $sm#$s   AB/ /Cc                ,    t        | j                        S r    )lenr9   r+   s    r   __len__z"GoogleSecretManagerMapping.__len__R   s    4%%&&r(   c                ,    t        | j                        S r    )iterr9   r+   s    r   __iter__z#GoogleSecretManagerMapping.__iter__U   s    D&&''r(   N)r$   r   r%   strr&   boolreturnNonerO   rM   )rO   z	list[str])latest)r<   rM   r=   rM   rO   rM   )r<   rM   rO   
str | None)rO   int)rO   zIterator[str])__name__
__module____qualname____annotations__r'   propertyr,   r   r9   r>   rF   rI   rL    r(   r   r   r   $   sR    **... I I 	 	W)"'(r(   r   c                       e Zd ZU ded<   ded<   ded<   	 	 	 	 	 	 	 d
	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d fdZddZdd	Z xZS )!GoogleSecretManagerSettingsSourcer   _credentialsr   r   rM   r!   c	                8   t         t        t        
t                |r|st               \  }	}
|	}|t	        
t
              r|
}nt        d      || _        || _        |r|| _	        nt        | j                        | _	        t        | -  |||d||       y )Nzproject_id is required to be specified either as an argument or from the google.auth.default. See https://google-auth.readthedocs.io/en/master/reference/google.auth.html#google.auth.default)credentialsF)r&   
env_prefixenv_ignore_emptyenv_parse_none_strenv_parse_enums)r   r   r   r   
isinstancerM   AttributeErrorr]   r!   r   superr'   )r#   settings_clsr_   r%   r`   rb   rc   r$   r&   _credsr!   	__class__s              r   r'   z*GoogleSecretManagerSettingsSource.__init__^   s     &-1DH[Hc%' *"5"7FK  K+s+(
$ T  *5 *"/D"<IZIZ"[D)!"1+ 	 	
r(   c                Z    t        | j                  | j                  | j                        S )N)r%   r&   )r   r   r!   r&   r+   s    r   _load_env_varsz0GoogleSecretManagerSettingsSource._load_env_vars   s(    )D,<,<TM`M`
 	
r(   c                h    | j                   j                   d| j                  d| j                  dS )Nz(project_id=z, env_nested_delimiter=))ri   rU   r!   env_nested_delimiterr+   s    r   __repr__z*GoogleSecretManagerSettingsSource.__repr__   s=    ..))*,t7G7G6JJabfb{b{a~~  A  	Ar(   )NNNNNNT)rg   ztype[BaseSettings]r_   zCredentials | Noner%   rS   r`   rS   rb   rS   rc   bool | Noner$   z!SecretManagerServiceClient | Noner&   rp   rO   rP   )rO   zMapping[str, Optional[str]]rQ   )rU   rV   rW   rX   r'   rk   ro   __classcell__)ri   s   @r   r\   r\   Y   s    ..
 +/!%!%)-'+;?&*/
(/
 (/
 	/

 /
 '/
 %/
 9/
 $/
 
/
b

Ar(   r\   )rO   rP   )
__future__r   _annotationscollections.abcr   r   	functoolsr   typingr   r   envr
   r   r   r   r   r   r   r   pydantic_settings.mainr   r   rM   r   r\   __all__rZ   r(   r   <module>rz      sq    2 - % * ":3E3K!%2(hsm);!< 2(j<A(9 <A~ /0L
Mr(   