ó
    ûÞ 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  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 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é   )ÚSettingsErroré   )ÚSecretVersion)Ú	InitStateé   )Ú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    Úa/var/www/html/gaurav/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                óF   •  SSK Jn  [        X5      $ ! [         a     gf = f)Nr   )ÚNotFoundF)Úgoogle.api_core.exceptionsr(   Ú
isinstancer#   )Úexcr(   s     r%   Ú_is_not_found_errorr,   -   s'   € ðÝ7ä˜#Ó(Ð(øÜó Ùðús   ‚ “
 Ÿ 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S jrSrg)ÚGoogleSecretManagerMappingé6   zdict[str, str | None]Ú_loaded_secretsr   Ú_secret_clientc                ó6   • 0 U l         Xl        X l        X0l        g ©N)r0   r1   Ú_project_idÚ_case_sensitive)ÚselfÚsecret_clientÚ
project_idÚcase_sensitives       r%   Ú__init__Ú#GoogleSecretManagerMapping.__init__:   s   € Ø!ˆÔØ+ÔØ%ÔØ-Õó    c                óL   • U R                   R                  U R                  5      $ r3   )r1   Úcommon_project_pathr4   ©r6   s    r%   Ú_gcp_project_pathÚ,GoogleSecretManagerMapping._gcp_project_path@   s   € à×"Ñ"×6Ñ6°t×7GÑ7GÓHÐHr<   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)r6   Ú
lower_nameÚ
candidatesÚwinners       r%   Ú_select_case_insensitive_secretÚ:GoogleSecretManagerMapping._select_case_insensitive_secretD   si   € Üˆz‹?˜aÓØ˜a‘=Ð ð 	�‰ÔØ˜B‘ˆÜ�ŠØ7¸
°|ÐCTÐU_ÐT`ð aØ�XÐ;ð=äØò		
ð ˆr<   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Ú )r1   Úlist_secretsr@   Úparse_secret_pathÚnameÚgetr5   ÚlowerÚappendÚitemsrL   )r6   ÚmappingÚnormalized_groupsÚsecretsrP   rT   rI   rJ   s           r%   Ú_secret_name_mapÚ+GoogleSecretManagerMapping._secret_name_mapS   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ð ˆr<   c                óH   • [        U R                  R                  5       5      $ r3   )Úlistr\   Úkeysr?   s    r%   Ú_secret_namesÚ(GoogleSecretManagerMapping._secret_namesj   s   € ä�D×)Ñ)×.Ñ.Ó0Ó1Ð1r<   c                óN   • U R                   R                  U R                  X5      $ r3   )r1   Úsecret_version_pathr4   )r6   ÚkeyÚversions      r%   Ú_secret_version_pathÚ/GoogleSecretManagerMapping._secret_version_pathn   s!   € Ø×"Ñ"×6Ñ6°t×7GÑ7GÈÓVÐVr<   c                óº   •  U R                   R                  U R                  X5      S9R                  R                  R                  S5      $ ! [         a     g f = f©N)rT   zUTF-8)r1   Úaccess_secret_versionrg   ÚpayloadÚdataÚdecodeÚ	Exception)r6   Úgcp_secret_namerf   s      r%   Ú_get_secret_valueÚ,GoogleSecretManagerMapping._get_secret_valueq   sX   € ð	Ø×&Ñ&×<Ñ<Ø×.Ñ.¨ÓHð =ð ç‰g—d‘dŸ6™6 '›?ð+øô ó 	Ùð	ús   ‚A
A Á
AÁAc                ó   •  U R                   R                  U R                  U5      S9R                  R                  R                  S5      $ ! [         a&  n[        U5      (       a  [        U5      Ue S nAg S nAff = frj   )	r1   rk   rg   rl   rm   rn   ro   r,   ÚKeyError)r6   rp   r$   s      r%   Ú_get_secret_value_or_raiseÚ5GoogleSecretManagerMapping._get_secret_value_or_raisey   sq   € ð	Ø×&Ñ&×<Ñ<Ø×.Ñ.¨Ó?ð =ð ç‰g—d‘dŸ6™6 '›?ð+øô ó 	Ü" 1×%Ñ%Ü˜Ó/°QÐ6Üûð	ús   ‚A
A Á
A=ÁA8Á8A=c                óÈ  • XR                   ;   a  U R                   U   $ U R                  (       a-  U R                  U5      U R                   U'   U R                   U   $ U R                  R	                  U5      nUc)  U R                  R	                  UR                  5       5      nU(       a  U R                  U5      U R                   U'   O[        U5      eU R                   U   $ r3   )r0   r5   ru   r\   rU   rV   rq   rt   )r6   re   rp   s      r%   Ú__getitem__Ú&GoogleSecretManagerMapping.__getitem__ƒ   sÅ   € Ø×&Ñ&Ó&Ø×'Ñ'¨Ñ,Ð,à××Ø(,×(GÑ(GÈÓ(LˆD× Ñ  Ñ%Ø×'Ñ'¨Ñ,Ð,à×/Ñ/×3Ñ3°CÓ8ˆØÑ"Ø"×3Ñ3×7Ñ7¸¿	¹	»ÓDˆOæØ(,×(>Ñ(>¸Ó(OˆD× Ñ  Ò%ä˜3“-Ðà×#Ñ# CÑ(Ð(r<   c                ó,   • [        U R                  5      $ r3   )rE   ra   r?   s    r%   Ú__len__Ú"GoogleSecretManagerMapping.__len__–   s   € Ü�4×%Ñ%Ó&Ð&r<   c                ó,   • [        U R                  5      $ r3   )Úiterra   r?   s    r%   Ú__iter__Ú#GoogleSecretManagerMapping.__iter__™   s   € Ü�D×&Ñ&Ó'Ð'r<   )r5   r0   r4   r1   N)r7   r   r8   Ústrr9   ÚboolÚreturnÚNone©rƒ   r�   )rI   r�   rJ   ú	list[str]rƒ   r�   )rƒ   zdict[str, str])rƒ   r†   )Úlatest)re   r�   rf   r�   rƒ   r�   )rp   r�   rf   r�   rƒ   ú
str | None)rp   r�   rƒ   rˆ   )re   r�   rƒ   rˆ   )rƒ   Úint)rƒ   zIterator[str])Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__annotations__r:   Úpropertyr@   rL   r   r\   ra   rg   rq   ru   rx   r{   r   Ú__static_attributes__© r<   r%   r.   r.   6   su   ‡ Ø*Ó*Ø.Ó.ô.ð óIó ðIôð óó ðð, ó2ó ð2öWöôô)ô&'÷(r<   r.   c                  óÔ   ^ • \ rS rSr% S\S'   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U 4S jjr	SS jr
SrU =r$ )Ú!GoogleSecretManagerSettingsSourceé�   úCredentials | NoneÚ_credentialsú!SecretManagerServiceClient | Noner1   rˆ   r4   Ú_explicit_project_idc           
     óÄ   >• [         b  [        b  [        c
  [        5         X0l        SU l        X l        Xpl        X�l        SU l	        [        TU ]-  UUUSUUU
S9  SU l	        g)a)  Settings source that reads secrets from Google Cloud Secret Manager.

Args:
    project_id: The GCP project to read secrets from. If not provided, it is
        resolved lazily (see below).
    project_id_field: The key, populated by a previous (higher priority)
        settings source, to use as the ``project_id`` when one is not passed
        explicitly. This must match the key used in ``current_state`` by the
        previous source (typically the field name or its preferred alias).
        For example, with ``some_field: str = Field(alias='GCP_PROJECT')``,
        previous env sources will expose the value under ``'GCP_PROJECT'``.
        Defaults to ``'project_id'``.

The ``project_id`` is resolved lazily in :meth:`__call__` rather than at
construction time so that it can be sourced from settings resolved by previous
sources (only available via ``current_state`` once the source is called).
Resolution order is:

1. the explicit ``project_id`` argument
2. the ``project_id_field`` value from previous settings sources
3. ``google.auth.default()``
NF)r9   Ú
env_prefixÚenv_ignore_emptyÚenv_parse_none_strÚenv_parse_enumsÚ_init_stateT)r   r   r   r&   r˜   r4   r–   r1   Ú_project_id_fieldÚ_env_vars_loadedÚsuperr:   )r6   Úsettings_clsÚcredentialsr8   rš   rœ   r�   r7   r9   Úproject_id_fieldrž   Ú	__class__s              €r%   r:   Ú*GoogleSecretManagerSettingsSource.__init__£   sx   ø€ ôH &Ñ-´Ñ1DÔH[ÑHcÜ%Ô'ð
 %/Ô!ØˆÔØ'ÔØ+ÔØ!1ÔØ %ˆÔä‰ÑØØ)Ø!Ø"Ø1Ø+Ø#ð 	ñ 	
ð !%ˆÕr<   c                óò  >• [        S UR                   5       S5      nU(       Ga  [        U R                  [        5      (       aì  U R                  X5       HÒ  u  pEnU R                  (       a  UnO[U R                  R                  R                  U5      nUc3  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  óf   #   • U H(  n[        U[        5      (       d  M  UR                  v •  M*     g 7fr3   )r*   r   rf   )Ú.0Úms     r%   Ú	<genexpr>ÚDGoogleSecretManagerSettingsSource.get_field_value.<locals>.<genexpr>î   s    é € Ða±.¨QÄJÈqÔR_×D`›y˜qŸyžy².ùs   ‚1ž1NÚpopulate_by_nameF)ÚnextÚmetadatar*   Úenv_varsr.   Ú_extract_field_infor9   r\   rU   rV   rq   r¢   Úmodel_configr¡   Úget_field_value)r6   ÚfieldÚ
field_nameÚsecret_versionÚ	field_keyÚenv_nameÚvalue_is_complexrp   Úenv_valÚvalre   Ú
is_complexr¥   s               €r%   r³   Ú1GoogleSecretManagerSettingsSource.get_field_valueà   sR  ø€ ô Ña°%·.².ÓaÐcgÓhˆ÷
 œj¨¯©Ô8R×SÑSØ9=×9QÑ9QÐRWÖ9dÑ5�	Ð%5Ø×&×&Ø2:‘Oà&*§m¡m×&DÑ&D×&HÑ&HÈÓ&R�OØ&Ñ.Ø*.¯-©-×*HÑ*H×*LÑ*LÈXÏ^É^ÓM]Ó*^˜ç"�?Ø"Ÿ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Ð.Ð.Ø˜Ð#Ð#r<   c                ó
  • U R                   b  gU R                  nU R                  nUc<  U R                  R	                  U R
                  5      n[        U[        5      (       a  UnU R                  SL =(       a    USL nUSL nU(       d  U(       a3  [        5       u  pgU(       a  UnU(       a  [        U[        5      (       a  UnUc  [        S5      eX l        Xl         U R                  c  [        U R                  S9U l        gg)a  Resolve the credentials, project_id and Secret Manager client.

``project_id`` is resolved, in order of precedence, from: the explicit
``project_id`` argument, the ``project_id_field`` value from previous settings
sources (``current_state``), and finally ``google.auth.default()``.
NzÚproject_id is required to be specified either as an argument, via a previous settings source, or from google.auth.default. See https://google-auth.readthedocs.io/en/master/reference/google.auth.html#google.auth.default)r£   )r4   r˜   r–   Úcurrent_staterU   rŸ   r*   r�   r1   r   ÚAttributeErrorr   )r6   r8   r£   Ústate_project_idÚneed_credentialsÚneed_projectÚ_credsr4   s           r%   Ú_resolve_gcp_projectÚ6GoogleSecretManagerSettingsSource._resolve_gcp_project  sÿ   € ð ×ÑÑ'Øà×.Ñ.ˆ
Ø×'Ñ'ˆð ÑØ#×1Ñ1×5Ñ5°d×6LÑ6LÓMÐÜÐ*¬C×0Ñ0Ø-�
ð  ×.Ñ.°$Ð6×N¸;È$Ð;NÐØ! TÐ)ˆÞž|Ü"5Ó"7ÑˆFÞØ$�Þ¤
¨;¼× <Ñ <Ø(�
àÑÜ ðnóð ð (ÔØ%ÔØ×ÑÑ&Ü"<È×IZÑIZÑ"[ˆDÕð 'r<   c                óä   • U R                   (       d  0 $ U R                  5         U R                  b  U R                  c  [	        S5      e[        U R                  U R                  U R                  S9$ )NzæGoogleSecretManagerSettingsSource: could not determine GCP project_id or initialize the Secret Manager client. Pass project_id explicitly or ensure it is available via application default credentials or a previous settings source.)r8   r9   )r    rÅ   r4   r1   r   r.   r9   r?   s    r%   Ú_load_env_varsÚ0GoogleSecretManagerSettingsSource._load_env_vars=  sp   € ð ×$×$ØˆIà×!Ñ!Ô#Ø×ÑÑ# t×':Ñ':Ñ'BÜðJóð ô *Ø×Ñ¨D×,<Ñ,<ÈT×M`ÑM`ñ
ð 	
r<   c                óX   >• SU l         U R                  5       U l        [        TU ]  5       $ )NT)r    rÈ   r°   r¡   Ú__call__)r6   r¥   s    €r%   rË   Ú*GoogleSecretManagerSettingsSource.__call__M  s+   ø€ ð !%ˆÔØ×+Ñ+Ó-ˆŒÜ‰wÑÓ!Ð!r<   c                ó¢   • U R                   b  U R                   OU R                  nU R                  R                   SU< SU R                  < S3$ )Nz(project_id=z, env_nested_delimiter=Ú))r4   r˜   r¥   rŠ   Úenv_nested_delimiter)r6   r8   s     r%   Ú__repr__Ú*GoogleSecretManagerSettingsSource.__repr__T  sR   € ð *.×)9Ñ)9Ñ)E�T×%Ò%È4×KdÑKdˆ
à�~‰~×&Ñ&Ð' |°J±>ÐAXÐY]×YrÑYrÑXuÐuvÐwð	
r<   )r–   r    r˜   r4   rŸ   r1   r°   )	NNNNNNTr8   N)r¢   ztype[BaseSettings]r£   r•   r8   rˆ   rš   rˆ   rœ   rˆ   r�   úbool | Noner7   r—   r9   rÒ   r¤   r�   rž   zInitState | Nonerƒ   r„   )r´   r	   rµ   r�   rƒ   ztuple[Any, str, bool]©rƒ   r„   )rƒ   zMapping[str, str | None])rƒ   zdict[str, Any]r…   )rŠ   r‹   rŒ   r�   rŽ   r:   r³   rÅ   rÈ   rË   rÐ   r�   Ú__classcell__)r¥   s   @r%   r“   r“   �   sÐ   ø‡ Ø$Ó$Ø5Ó5ØÓØ$Ó$ð
 +/Ø!%Ø!%Ø)-Ø'+Ø;?Ø&*Ø ,Ø(,ð;%à(ð;%ð (ð;%ð ð	;%ð
 ð;%ð 'ð;%ð %ð;%ð 9ð;%ð $ð;%ð ð;%ð &ð;%ð 
÷;%ð ;%÷z/$ôb*\ôX
÷ "÷
ò 
r<   r“   rÓ   )r+   ro   rƒ   r‚   )%Ú
__future__r   Ú_annotationsr   Úcollections.abcr   r   Ú	functoolsr   Útypingr   r   Úpydantic.fieldsr	   Ú
exceptionsr   Útypesr   Úutilsr   Úenvr   r   r   r   r   r   r"   r   Úpydantic_settings.mainr   r&   r,   r�   r.   r“   Ú__all__r‘   r<   r%   Ú<module>rá      s†   ðÝ 2ã ß -Ý %ß %å %å 'Ý !Ý Ý "æÝ:Ý3ÝEæ3à€KØ!%ÐØÐôô$ôd( ¨¨c°D©j¨Ñ!9ô d(ôN}
Ð(9ô }
ð@ (Ð)LÐ
M�r<   