ó
    >:jê&  ã                  ó  • 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    Úd/home/mande/repo/quber/.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Ñ6°t×7GÑ7GÓ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¸
°|ÐCTÐU_Ð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ÓWˆDØ �D‰Mà×'×'Ñ'Ø!ŸZ™Z›\�
ØÓ6Ø46Ð%Ñ1Ø!Ñ-×4Ñ4°TÖ:ñ ð ×#×#Ø*;×*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Ñ6°t×7GÑ7GÈÓ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ð =ð ç‰g—d‘dŸ6™6 '›?ð+øô ó 	Ùð	ú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Ñ3°CÓ8ˆØÑ"¨4×+?×+?Ø"×3Ñ3×7Ñ7¸¿	¹	»ÓDˆOæØ(,×(>Ñ(>¸Ó(OˆD× Ñ  Ò%ä˜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  pšU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 )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)Ú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´   ø€ ô &Ñ-´Ñ1DÔH[ÑHcÜ%Ô'ö ¦*Ü"5Ó"7ÑˆFð ÑØ ˆKàÑÜ˜+¤s×+Ñ+Ø(‘
ä$ð Tóð ð *5ÔØ *ÔæØ"/Õä"<È×IZÑIZÑ"[ˆ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  X‚U4s  $ X„U4s  $    SUS4$ [        TU ]9  X5      u  pšnU R                  R                  R                  S5      (       a  U	b  X’U4$ XšU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².¨QÄJÈqÔR_×D`›y˜qŸyžy².ù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°%·.².ÓaÐcgÓhˆ÷
 œj¨¯©Ô8R×SÑSØ9=×9QÑ9QÐRWÖ9dÑ5�	Ð%5Ø"&§-¡-×"@Ñ"@×"DÑ"DÀXÓ"N�Ø"Ñ*°4×3F×3FØ&*§m¡m×&DÑ&D×&HÑ&HÈÏÉÓIYÓ&Z�Oç"�?Ø"Ÿm™m×=Ñ=¸oÓ^�GØÓ*ð  ×,Ñ,×9Ñ9×=Ñ=Ð>P×QÑQØ#*Ð8HÐ#HÒHØ&Ð3CÐCÒCñ :eð  ˜ UÐ*Ð*ä$™wÑ6°uÓIÑˆ�*ð ×Ñ×)Ñ)×-Ñ-Ð.@×AÑAÀcÁoØ JÐ.Ð.Ø˜Ð#Ð#r3   c                óT   • [        U R                  U R                  U R                  S9$ )N)r/   r0   )r%   r(   r+   r0   r6   s    r"   Ú_load_env_varsÚ0GoogleSecretManagerSettingsSource._load_env_varsè   s(   € Ü)Ø×Ñ¨D×,<Ñ,<ÈT×M`Ñ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=   € Ø—.‘.×)Ñ)Ð*¨,°t×7GÑ7GÑ6JÐJaÐbf×b{Ñ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( ¨¨c°D©j¨Ñ!9ô V(ôrjAÐ(9ô jAðZ /Ð0LÐ
M�r3   