§
    \ˆtjê&  ã                  ó
  — d dl mZ d dl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 ddl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dz  f         ¦  «        Z G d„ de¦  «        ZddgZdS )é    )ÚannotationsN)ÚIteratorÚMapping)Úcached_property)ÚTYPE_CHECKINGÚAny)Ú	FieldInfoé   )ÚSecretVersioné   )ÚEnvSettingsSource©Údefault©ÚCredentials©ÚSecretManagerServiceClient)ÚBaseSettingsÚreturnÚNonec                 óþ   — 	 ddl ma ddlma t          j        ¦   «         5  t          j        dt          ¬¦  «         ddl	m
a
 d d d ¦  «         d S # 1 swxY w Y   d S # t          $ r} t          d¦  «        | ‚d } ~ ww xY w)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    úe/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/pydantic_settings/sources/providers/gcp.pyÚimport_gcp_secret_managerr%      s  € ð

Ø>Ð>Ð>Ð>Ð>Ð>Ø7Ð7Ð7Ð7Ð7Ð7åÔ$Ñ&Ô&ð 	Nð 	NÝÔ# Hµ}ÐEÑEÔEÐEØMÐMÐMÐMÐMÐMð	Nð 	Nð 	Nñ 	Nô 	Nð 	Nð 	Nð 	Nð 	Nð 	Nð 	Nð 	Nøøøð 	Nð 	Nð 	Nð 	Nð 	Nð 	Nøõ ð ð ð ÝØxñ
ô 
àð	øøøøðøøøs:   ‚A ¡"AÁA ÁAÁA ÁAÁA Á
A<Á'A7Á7A<c                  ó¨   — e Zd ZU ded<   ded<   d"d„Zed#d„¦   «         Zd$d„Zed%d„¦   «         Z	ed&d„¦   «         Z
d'd(d„Zd'd)d„Zd*d„Zd+d„Zd,d „Zd!S )-ÚGoogleSecretManagerMappingzdict[str, str | None]Ú_loaded_secretsr   Ú_secret_clientÚsecret_clientÚ
project_idÚstrÚcase_sensitiveÚboolr   r   c                ó>   — i | _         || _        || _        || _        d S ©N)r(   r)   Ú_project_idÚ_case_sensitive)Úselfr*   r+   r-   s       r$   Ú__init__z#GoogleSecretManagerMapping.__init__/   s(   € Ø!ˆÔØ+ˆÔØ%ˆÔØ-ˆÔÐÐó    c                ó@   — | j                              | j        ¦  «        S r0   )r)   Úcommon_project_pathr1   ©r3   s    r$   Ú_gcp_project_pathz,GoogleSecretManagerMapping._gcp_project_path5   s   € àÔ"×6Ò6°tÔ7GÑHÔHÐHr5   Ú
lower_nameÚ
candidatesú	list[str]c           	     óÀ   — t          |¦  «        dk    r|d         S |                     ¦   «          |d         }t          j        d|› d|› d|› d�t          d¬	¦  «         |S )
Nr   r   éÿÿÿÿz)Secret collision: Found multiple secrets z normalizing to 'z
'. Using 'z' for case-insensitive lookup.r
   )Ú
stacklevel)ÚlenÚsortr   ÚwarnÚUserWarning)r3   r:   r;   Úwinners       r$   Ú_select_case_insensitive_secretz:GoogleSecretManagerMapping._select_case_insensitive_secret9   sŽ   € Ýˆz‰?Œ?˜aÒÐØ˜a”=Ð ð 	�ŠÑÔÐØ˜B”ˆÝŒð=¸
ð =ð =ÐU_ð =ð =Øð=ð =ð =åØð		
ñ 	
ô 	
ð 	
ð ˆr5   údict[str, str]c                óº  — i }i }| j                              | j        ¬¦  «        }|D ]y}| j                              |j        ¦  «                             dd¦  «        }|||<   | j        s8|                     ¦   «         }||vrg ||<   ||                              |¦  «         Œz| j        s3| 	                    ¦   «         D ]\  }}|  
                    ||¦  «        ||<   Œ|S )N)ÚparentÚsecretÚ )r)   Úlist_secretsr9   Úparse_secret_pathÚnameÚgetr2   ÚlowerÚappendÚitemsrE   )r3   ÚmappingÚnormalized_groupsÚsecretsrI   rM   r:   r;   s           r$   Ú_secret_name_mapz+GoogleSecretManagerMapping._secret_name_mapH   s  € à"$ˆà24ÐàÔ%×2Ò2¸$Ô:PÐ2ÑQÔQˆØð 	;ð 	;ˆFØÔ&×8Ò8¸¼ÑEÔE×IÒIÈ(ÐTVÑWÔWˆDØ ˆG�D‰MàÔ'ð ;Ø!ŸZšZ™\œ\�
ØÐ%6Ð6Ð6Ø46Ð% jÑ1Ø! *Ô-×4Ò4°TÑ:Ô:Ð:øàÔ#ð 	cØ*;×*AÒ*AÑ*CÔ*Cð cð cÑ&�
˜JØ&*×&JÒ&JÈ:ÐWaÑ&bÔ&b�˜
Ñ#Ð#àˆr5   c                óN   — t          | j                             ¦   «         ¦  «        S r0   )ÚlistrU   Úkeysr8   s    r$   Ú_secret_namesz(GoogleSecretManagerMapping._secret_names_   s   € å�DÔ)×.Ò.Ñ0Ô0Ñ1Ô1Ð1r5   ÚlatestÚkeyÚversionc                óD   — | j                              | j        ||¦  «        S r0   )r)   Úsecret_version_pathr1   )r3   r[   r\   s      r$   Ú_secret_version_pathz/GoogleSecretManagerMapping._secret_version_pathc   s    € ØÔ"×6Ò6°tÔ7GÈÈgÑVÔVÐVr5   Úgcp_secret_nameú
str | Nonec                ó¾   — 	 | j                              |                      ||¦  «        ¬¦  «        j        j                             d¦  «        S # t          $ r Y d S w xY w)N)rM   zUTF-8)r)   Úaccess_secret_versionr_   ÚpayloadÚdataÚdecodeÚ	Exception)r3   r`   r\   s      r$   Ú_get_secret_valuez,GoogleSecretManagerMapping._get_secret_valuef   sm   € ð	ØÔ&×<Ò<Ø×.Ò.¨ÀÑHÔHð =ñ ô ä”dŸ6š6 '™?œ?ð+øõ ð 	ð 	ð 	Ø�4�4ð	øøøs   ‚AA Á
AÁAc                óD  — || j         v r| j         |         S | j                             |¦  «        }|€3| j        s,| j                             |                     ¦   «         ¦  «        }|r|                      |¦  «        | j         |<   nt          |¦  «        ‚| j         |         S r0   )r(   rU   rN   r2   rO   rh   ÚKeyError)r3   r[   r`   s      r$   Ú__getitem__z&GoogleSecretManagerMapping.__getitem__n   s    € Ø�$Ô&Ð&Ð&ØÔ'¨Ô,Ð,àÔ/×3Ò3°CÑ8Ô8ˆØÐ"¨4Ô+?Ð"Ø"Ô3×7Ò7¸¿	º	¹¼ÑDÔDˆOàð 	 Ø(,×(>Ò(>¸Ñ(OÔ(OˆDÔ  Ñ%Ð%å˜3‘-”-ÐàÔ# CÔ(Ð(r5   Úintc                ó*   — t          | j        ¦  «        S r0   )r@   rY   r8   s    r$   Ú__len__z"GoogleSecretManagerMapping.__len__}   s   € Ý�4Ô%Ñ&Ô&Ð&r5   úIterator[str]c                ó*   — t          | j        ¦  «        S r0   )ÚiterrY   r8   s    r$   Ú__iter__z#GoogleSecretManagerMapping.__iter__€   s   € Ý�DÔ&Ñ'Ô'Ð'r5   N)r*   r   r+   r,   r-   r.   r   r   ©r   r,   )r:   r,   r;   r<   r   r,   )r   rF   )r   r<   )rZ   )r[   r,   r\   r,   r   r,   )r`   r,   r\   r,   r   ra   )r[   r,   r   ra   )r   rl   )r   ro   )Ú__name__Ú
__module__Ú__qualname__Ú__annotations__r4   Úpropertyr9   rE   r   rU   rY   r_   rh   rk   rn   rr   © r5   r$   r'   r'   +   s-  € € € € € € Ø*Ð*Ð*Ñ*Ø.Ð.Ð.Ñ.ð.ð .ð .ð .ð ðIð Ið Iñ „XðIðð ð ð ð ðð ð ñ „_ðð, ð2ð 2ð 2ñ „Xð2ðWð Wð Wð Wð Wðð ð ð ð ð)ð )ð )ð )ð'ð 'ð 'ð 'ð(ð (ð (ð (ð (ð (r5   r'   c                  ól   ‡ — e Zd ZU ded<   ded<   ded<   	 	 	 	 	 	 	 d!d"ˆ fd„Zd#ˆ fd„Zd$d„Zd%d „Zˆ xZS )&Ú!GoogleSecretManagerSettingsSourcer   Ú_credentialsr   r)   r,   r1   NTÚsettings_clsútype[BaseSettings]ÚcredentialsúCredentials | Noner+   ra   Ú
env_prefixÚenv_parse_none_strÚenv_parse_enumsúbool | Noner*   ú!SecretManagerServiceClient | Noner-   r   r   c	                ó„  •— t           �t          �t          €t          ¦   «          |r|st          ¦   «         \  }	}
|€|	}|€'t	          |
t
          ¦  «        r|
}nt          d¦  «        ‚|| _        || _        |r|| _	        nt          | j        ¬¦  «        | _	        t          ¦   «                              |||d||¬¦  «         d S )Nz½project_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)r   F)r-   r�   Úenv_ignore_emptyr‚   rƒ   )r   r   r   r%   Ú
isinstancer,   ÚAttributeErrorr|   r1   r)   Úsuperr4   )r3   r}   r   r+   r�   r‚   rƒ   r*   r-   Ú_credsr1   Ú	__class__s              €r$   r4   z*GoogleSecretManagerSettingsSource.__init__‰   s   ø€ õ &Ð-µÐ1DÕH[ÐHcÝ%Ñ'Ô'Ð'ð ð 	8 *ð 	8Ý"5Ñ"7Ô"7ÑˆF�Kð ÐØ ˆKàÐÝ˜+¥sÑ+Ô+ð Ø(�
�
å$ð Tñô ð ð *5ˆÔØ *ˆÔàð 	\Ø"/ˆDÔÐå"<ÈÔIZÐ"[Ñ"[Ô"[ˆDÔå‰Œ×ÒØØ)Ø!Ø"Ø1Ø+ð 	ñ 	
ô 	
ð 	
ð 	
ð 	
r5   Úfieldr	   Ú
field_nameútuple[Any, str, bool]c                óª  •— t          d„ |j        D ¦   «         d¦  «        }|rát          | j        t          ¦  «        rÇ|                      ||¦  «        D ]«\  }}}| j        j                             |¦  «        }|€8| j        s1| j        j                             | 	                    ¦   «         ¦  «        }|rJ| j         
                    ||¦  «        }|�-| j        j                             d¦  «        r|||fc S |||fc S Œ¬d|dfS t          ¦   «                              ||¦  «        \  }	}
}| j        j                             d¦  «        r|	�|	||fS |	|
|fS )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  óN   K  — | ] }t          |t          ¦  «        ¯|j        V — Œ!d S r0   )rˆ   r   r\   )Ú.0Úms     r$   ú	<genexpr>zDGoogleSecretManagerSettingsSource.get_field_value.<locals>.<genexpr>È   s4   è è € ÐaÐa¨QÅJÈqÕR_ÑD`ÔD`Ða˜qœyÐaÐaÐaÐaÐaÐar5   NÚpopulate_by_nameF)ÚnextÚmetadatarˆ   Úenv_varsr'   Ú_extract_field_inforU   rN   r-   rO   rh   r}   Úmodel_configrŠ   Úget_field_value)r3   r�   rŽ   Úsecret_versionÚ	field_keyÚenv_nameÚvalue_is_complexr`   Úenv_valÚvalr[   Ú
is_complexrŒ   s               €r$   r›   z1GoogleSecretManagerSettingsSource.get_field_valueº   s’  ø€ õ ÐaÐa°%´.ÐaÑaÔaÐcgÑhÔhˆð
 ð 	+�j¨¬Õ8RÑSÔSð 	+Ø9=×9QÒ9QÐRWÐYcÑ9dÔ9dð Dð DÑ5�	˜8Ð%5Ø"&¤-Ô"@×"DÒ"DÀXÑ"NÔ"N�Ø"Ð*°4Ô3FÐ*Ø&*¤mÔ&D×&HÒ&HÈÏÊÑIYÔIYÑ&ZÔ&Z�Oà"ð DØ"œm×=Ò=¸oÈ~Ñ^Ô^�GØÐ*ð  Ô,Ô9×=Ò=Ð>PÑQÔQð IØ#*¨JÐ8HÐ#HÐHÐHÐHØ&¨	Ð3CÐCÐCÐCÐCøð ˜ UÐ*Ð*å$™wœw×6Ò6°u¸jÑIÔIÑˆˆS�*ð ÔÔ)×-Ò-Ð.@ÑAÔAð 	/ÀcÀoØ˜
 JÐ.Ð.Ø�C˜Ð#Ð#r5   úMapping[str, str | None]c                óD   — t          | j        | j        | j        ¬¦  «        S )N)r+   r-   )r'   r)   r1   r-   r8   s    r$   Ú_load_env_varsz0GoogleSecretManagerSettingsSource._load_env_varsè   s)   € Ý)ØÔ¨DÔ,<ÈTÔM`ð
ñ 
ô 
ð 	
r5   c                ó@   — | j         j        › d| j        ›d| j        ›d�S )Nz(project_id=z, env_nested_delimiter=ú))rŒ   rt   r1   Úenv_nested_delimiterr8   s    r$   Ú__repr__z*GoogleSecretManagerSettingsSource.__repr__í   sE   € Ø”.Ô)ð  Að  A°tÔ7Gð  Að  AÐbfÔb{ð  Að  Að  Að  	Ar5   )NNNNNNT)r}   r~   r   r€   r+   ra   r�   ra   r‚   ra   rƒ   r„   r*   r…   r-   r„   r   r   )r�   r	   rŽ   r,   r   r�   )r   r£   rs   )	rt   ru   rv   rw   r4   r›   r¥   r©   Ú__classcell__)rŒ   s   @r$   r{   r{   „   sÏ   ø€ € € € € € ØÐÐÑØ.Ð.Ð.Ñ.ØÐÐÑð
 +/Ø!%Ø!%Ø)-Ø'+Ø;?Ø&*ð/
ð /
ð /
ð /
ð /
ð /
ð /
ðb,$ð ,$ð ,$ð ,$ð ,$ð ,$ð\
ð 
ð 
ð 
ð
Að Að Að Að Að Að Að Ar5   r{   )r   r   ) Ú
__future__r   Ú_annotationsr   Úcollections.abcr   r   Ú	functoolsr   Útypingr   r   Úpydantic.fieldsr	   Útypesr   Úenvr   r   r   r   r   r   r!   r   Úpydantic_settings.mainr   r%   r,   r'   r{   Ú__all__ry   r5   r$   ú<module>rµ      s�  ðØ 2Ð 2Ð 2Ð 2Ð 2Ð 2à €€€Ø -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ø %Ð %Ð %Ð %Ð %Ð %Ø %Ð %Ð %Ð %Ð %Ð %Ð %Ð %à %Ð %Ð %Ð %Ð %Ð %à !Ð !Ð !Ð !Ð !Ð !Ø "Ð "Ð "Ð "Ð "Ð "àð 	Ø:Ð:Ð:Ð:Ð:Ð:Ø3Ð3Ð3Ð3Ð3Ð3ØEÐEÐEÐEÐEÐEà3Ð3Ð3Ð3Ð3Ð3Ð3à€KØ!%ÐØÐðð ð ð ð$V(ð V(ð V(ð V(ð V( ¨¨c°D©j¨Ô!9ñ V(ô V(ð V(ðrjAð jAð jAð jAð jAÐ(9ñ jAô jAð jAðZ /Ð0LÐ
M€€€r5   