
    =Ki&                       S SK Jr  S SKrS SKJrJr  S SKJr  S SK	J
r
Jr  S SKJr  SSKJr  S	S
KJr  \
(       a  S SKJq  S SKJq  S SKJq  S SKJr  OSqSqSqSS jr " S S\\\S-  4   5      r " S S\5      rSS/rg)    )annotationsN)IteratorMapping)cached_property)TYPE_CHECKINGAny)	FieldInfo   )SecretVersion   )EnvSettingsSourcedefaultCredentialsSecretManagerServiceClient)BaseSettingsc                      SSK Jq  SSKJq  [
        R                  " 5          [
        R                  " S[        S9  SSK	J
q
  S S S 5        g ! , (       d  f       g = f! [         a  n [        S5      U eS n A ff = f)Nr   r   r   ignore)categoryr   zjGCP Secret Manager dependencies are not installed, run `pip install pydantic-settings[gcp-secret-manager]`)google.authr   google_auth_defaultgoogle.auth.credentialsr   warningscatch_warningsfilterwarningsFutureWarninggoogle.cloud.secretmanagerr   ImportError)es    i/var/www/html/dynamic-report/venv/lib/python3.13/site-packages/pydantic_settings/sources/providers/gcp.pyimport_gcp_secret_managerr#      s\    

>7$$&##H}EM '&&  x
	s4   !A  AA 
AA A 
A8'A33A8c                      \ rS rSr% S\S'   S\S'   SS jr\SS j5       rSS jr\	SS	 j5       r
\SS
 j5       rSSS jjrSSS jjrSS jrSS jrSS jrSrg)GoogleSecretManagerMapping+   zdict[str, str | None]_loaded_secretsr   _secret_clientc                6    0 U l         Xl        X l        X0l        g N)r'   r(   _project_id_case_sensitive)selfsecret_client
project_idcase_sensitives       r"   __init__#GoogleSecretManagerMapping.__init__/   s    !+%-    c                L    U R                   R                  U R                  5      $ r*   )r(   common_project_pathr+   r-   s    r"   _gcp_project_path,GoogleSecretManagerMapping._gcp_project_path5   s    ""66t7G7GHHr3   c           	         [        U5      S:X  a  US   $ UR                  5         US   n[        R                  " SU SU SU S3[        SS	9  U$ )
Nr   r   z)Secret collision: Found multiple secrets z normalizing to 'z
'. Using 'z' for case-insensitive lookup.r
   )
stacklevel)lensortr   warnUserWarning)r-   
lower_name
candidateswinners       r"   _select_case_insensitive_secret:GoogleSecretManagerMapping._select_case_insensitive_secret9   si    z?aa=  	B7
|CTU_T` aX;=		
 r3   c                   0 n0 nU R                   R                  U R                  S9nU H{  nU R                   R                  UR                  5      R                  SS5      nXQU'   U R                  (       a  MO  UR                  5       nXb;  a  / X&'   X&   R                  U5        M}     U R                  (       d,  UR                  5        H  u  pgU R                  Xg5      X'   M     U$ )N)parentsecret )r(   list_secretsr7   parse_secret_pathnamegetr,   lowerappenditemsrC   )r-   mappingnormalized_groupssecretsrG   rK   r@   rA   s           r"   _secret_name_map+GoogleSecretManagerMapping._secret_name_mapH   s    "$24%%22$:P:P2QF&&88EII(TVWD DM'''!ZZ\
646%1!-44T:  ##*;*A*A*C&
&*&J&J:&b# +D r3   c                H    [        U R                  R                  5       5      $ r*   )listrS   keysr6   s    r"   _secret_names(GoogleSecretManagerMapping._secret_names_   s    D))..011r3   c                N    U R                   R                  U R                  X5      $ r*   )r(   secret_version_pathr+   )r-   keyversions      r"   _secret_version_path/GoogleSecretManagerMapping._secret_version_pathc   s!    ""66t7G7GVVr3   c                     U R                   R                  U R                  X5      S9R                  R                  R                  S5      $ ! [         a     g f = f)N)rK   zUTF-8)r(   access_secret_versionr^   payloaddatadecode	Exception)r-   gcp_secret_namer]   s      r"   _get_secret_value,GoogleSecretManagerMapping._get_secret_valuef   sX    	&&<<..H = gdd66'?+  		s   A
A 
AAc                n   XR                   ;   a  U R                   U   $ U R                  R                  U5      nUc:  U R                  (       d)  U R                  R                  UR	                  5       5      nU(       a  U R                  U5      U R                   U'   O[        U5      eU R                   U   $ r*   )r'   rS   rL   r,   rM   rg   KeyError)r-   r\   rf   s      r"   __getitem__&GoogleSecretManagerMapping.__getitem__n   s    &&&'',,//33C8"4+?+?"3377		DO(,(>(>(OD  %3-##C((r3   c                ,    [        U R                  5      $ r*   )r<   rX   r6   s    r"   __len__"GoogleSecretManagerMapping.__len__}   s    4%%&&r3   c                ,    [        U R                  5      $ r*   )iterrX   r6   s    r"   __iter__#GoogleSecretManagerMapping.__iter__   s    D&&''r3   )r,   r'   r+   r(   N)r.   r   r/   strr0   boolreturnNonerv   rt   )r@   rt   rA   	list[str]rv   rt   )rv   zdict[str, str])rv   ry   )latest)r\   rt   r]   rt   rv   rt   )rf   rt   r]   rt   rv   
str | None)r\   rt   rv   r{   )rv   int)rv   zIterator[str])__name__
__module____qualname____firstlineno____annotations__r1   propertyr7   rC   r   rS   rX   r^   rg   rk   rn   rr   __static_attributes__ r3   r"   r%   r%   +   sp    **... I I  , 2 2W)'(r3   r%   c                     ^  \ rS rSr% S\S'   S\S'   S\S'          S                 SU 4S jjjrSU 4S	 jjrSS
 jrSS jrSr	U =r
$ )!GoogleSecretManagerSettingsSource   r   _credentialsr   r(   rt   r+   c	           	     V  > [         b  [        b  [        c
  [        5         U(       a  U(       d  [        5       u  pUc  W	nUc#  [	        W
[
        5      (       a  U
nO[        S5      eX l        X0l        U(       a  Xpl	        O[        U R                  S9U l	        [        TU ]-  UUUSUUS9  g )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)r0   
env_prefixenv_ignore_emptyenv_parse_none_strenv_parse_enums)r   r   r   r#   
isinstancert   AttributeErrorr   r+   r(   superr1   )r-   settings_clsr   r/   r   r   r   r.   r0   _credsr+   	__class__s              r"   r1   *GoogleSecretManagerSettingsSource.__init__   s     &-1DH[Hc%' *"5"7F  K+s++(
$ T  *5 *"/"<IZIZ"[D)!"1+ 	 	
r3   c                  > [        S UR                   5       S5      nU(       Ga  [        U R                  [        5      (       a  U R                  X5       H  u  pEnU R                  R                  R                  U5      nUcD  U R                  (       d3  U R                  R                  R                  UR                  5       5      nU(       d  M{  U R                  R                  Xs5      nUc  M  U R                  R                  R                  S5      (       a  XU4s  $ XU4s  $    SUS4$ [        TU ]9  X5      u  pnU R                  R                  R                  S5      (       a  U	b  XU4$ XU4$ )a  Override get_field_value to get the secret value from GCP Secret Manager.
Look for a SecretVersion metadata field to specify a particular SecretVersion.

Args:
    field: The field to get the value for
    field_name: The declared name of the field

Returns:
    A tuple of (value, key, value_is_complex), where `key` is the identifier used
    to populate the model (either the field name or an alias, depending on
    configuration).
c              3  h   #    U  H(  n[        U[        5      (       d  M  UR                  v   M*     g 7fr*   )r   r   r]   ).0ms     r"   	<genexpr>DGoogleSecretManagerSettingsSource.get_field_value.<locals>.<genexpr>   s      a.QJqR_D`yqyy.s   22Npopulate_by_nameF)nextmetadatar   env_varsr%   _extract_field_inforS   rL   r0   rM   rg   r   model_configr   get_field_value)r-   field
field_namesecret_version	field_keyenv_namevalue_is_complexrf   env_valvalr\   
is_complexr   s               r"   r   1GoogleSecretManagerSettingsSource.get_field_value   sL    a%..acgh
 j8RSS9=9Q9QRW9d5	%5"&--"@"@"D"DX"N"*43F3F&*mm&D&D&H&HIY&ZO"?"mm==o^G*  ,,99==>PQQ#*8H#HH&3CCC :e  U**$w6uI* ))--.@AAcoJ..##r3   c                T    [        U R                  U R                  U R                  S9$ )N)r/   r0   )r%   r(   r+   r0   r6   s    r"   _load_env_vars0GoogleSecretManagerSettingsSource._load_env_vars   s(    )D,<,<TM`M`
 	
r3   c                l    U R                   R                   SU R                  < SU R                  < S3$ )Nz(project_id=z, env_nested_delimiter=))r   r}   r+   env_nested_delimiterr6   s    r"   __repr__*GoogleSecretManagerSettingsSource.__repr__   s=    ..))*,t7G7G6JJabfb{b{a~~  A  	Ar3   )r   r+   r(   )NNNNNNT)r   ztype[BaseSettings]r   zCredentials | Noner/   r{   r   r{   r   r{   r   bool | Noner.   z!SecretManagerServiceClient | Noner0   r   rv   rw   )r   r	   r   rt   rv   ztuple[Any, str, bool])rv   zMapping[str, str | None]rx   )r}   r~   r   r   r   r1   r   r   r   r   __classcell__)r   s   @r"   r   r      s    ..
 +/!%!%)-'+;?&*/
(/
 (/
 	/

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

A Ar3   r   )rv   rw   ) 
__future__r   _annotationsr   collections.abcr   r   	functoolsr   typingr   r   pydantic.fieldsr	   typesr   envr   r   r   r   r   r   r   r   pydantic_settings.mainr   r#   rt   r%   r   __all__r   r3   r"   <module>r      s}    2  - % % % ! ":3E3K!%$V(cDj!9 V(rjA(9 jAZ /0L
Mr3   