§
    \ˆtj’"  ã                   óæ   — d dl Z d dlZd dlmZ d dlmZ d dlmZ d dlm	Z	m
Z
mZmZ ddlmZ ddlmZ d	d
lmZ d	dlmZ ddlmZ ddlmZ e	rddlmZ ddlmZ dZ G d„ de¦  «        Zde
de
fd„ZdS )é    N)ÚIterator)Úreduce)ÚPath)ÚTYPE_CHECKINGÚAnyÚLiteralÚOptionalé   )ÚSettingsError)Úpath_type_labelé   )ÚPydanticBaseSettingsSource)Úparse_env_varsé   )ÚEnvSettingsSource)ÚSecretsSettingsSource)ÚBaseSettings)ÚPathTypei   c                   ó&  ‡ — e Zd Z	 	 	 	 	 	 	 	 	 ddeez  ded         ded         dz  dedz  dedz  d	e	dz  d
e	dz  dedz  dedz  de	dz  ddfˆ fd„Z
deddfd„Zededee         fd„¦   «         Zededee	e	f         fd„¦   «         Zde	fd„Zˆ xZS )ÚNestedSecretsSettingsSourceNÚfile_secret_settingsÚsecrets_dirr   Úsecrets_dir_missing©ÚokÚwarnÚerrorÚsecrets_dir_max_sizeÚsecrets_case_sensitiveÚsecrets_prefixÚsecrets_nested_delimiterÚsecrets_nested_subdirÚcase_sensitiveÚ
env_prefixÚreturnc           	      ó  •‡ — t          |d|¦  «        }|j        }t          t          |dd ¦  «        ||                     d¦  «        ¦  «        ‰ _        t          ||                     d¦  «        d¦  «        ‰ _        ‰ j        dvrt          d‰ j        › �¦  «        ‚t          ||                     d¦  «        t          ¦  «        ‰ _        t          ||                     d¦  «        |	|                     d	¦  «        d
¦  «        ‰ _	        t          ||                     d¦  «        |
|                     d¦  «        d¦  «        ‰ _
        t          ||                     d¦  «        |                     d¦  «        ¦  «        ‰ _        t          ||                     d¦  «        d
¦  «        ‰ _        ‰ j        r7|s|                     d¦  «        rt          d¦  «        ‚t          j        ‰ _        ‰ j        €g }n>t          ‰ j        t           t"          f¦  «        r	‰ j        g}nt%          ‰ j        ¦  «        }d„ |D ¦   «         ‰ _        ‰ j        D ]}‰                      |¦  «         Œt+          ¦   «                              |‰ j	        ‰ j
        ‰ j        d
dd ¬¦  «         d ‰ _        t1          ‰ j        ¦  «        s	i ‰ _        d S t5          d„ ˆ fd„‰ j        D ¦   «         ¦  «        }t7          |‰ j	        ‰ j        ‰ j        ¦  «        ‰ _        d S )NÚsettings_clsr   r   r   r   z#invalid secrets_dir_missing value: r   r   r#   Fr    r$   Ú r!   Úenv_nested_delimiterr"   zQOptions secrets_nested_delimiter and secrets_nested_subdir are mutually exclusivec                 ót   — g | ]5}t          |¦  «                             ¦   «                              ¦   «         ‘Œ6S © )r   Ú
expanduserÚresolve)Ú.0Úps     úp/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/pydantic_settings/sources/providers/nested_secrets.pyú
<listcomp>z8NestedSecretsSettingsSource.__init__.<locals>.<listcomp>i   s6   € Ð)XÐ)XÐ)XÈQ­$¨q©'¬'×*<Ò*<Ñ*>Ô*>×*FÒ*FÑ*HÔ*HÐ)XÐ)XÐ)Xó    T)r#   r$   r)   Úenv_ignore_emptyÚenv_parse_enumsÚenv_parse_none_strc                 ór   — t          g |                      ¦   «         ¢|                     ¦   «         ¢R ¦  «        S ©N)ÚdictÚitems)Úd1Úd2s     r0   ú<lambda>z6NestedSecretsSettingsSource.__init__.<locals>.<lambda>~   s,   € �tÐ$> b§h¢h¡j¤jÐ$>°2·8²8±:´:Ð$>Ð$>Ñ?Ô?€ r2   c              3   óB   •K  — | ]}‰                      |¦  «        V — Œd S r7   )Úload_secrets)r.   r/   Úselfs     €r0   ú	<genexpr>z7NestedSecretsSettingsSource.__init__.<locals>.<genexpr>   s1   øè è € ÐBÐB¨!�×"Ò" 1Ñ%Ô%ÐBÐBÐBÐBÐBÐBr2   )ÚgetattrÚmodel_configÚfirst_not_noneÚgetr   r   r   ÚSECRETS_DIR_MAX_SIZEr   r#   r    r!   r"   ÚosÚsepÚ
isinstancer   ÚstrÚlistÚsecrets_pathsÚvalidate_secrets_pathÚsuperÚ__init__r5   ÚlenÚenv_varsr   r   r3   )r?   r   r   r   r   r   r    r!   r"   r#   r$   r'   ÚconfÚpathsÚpathÚsecretsÚ	__class__s   `               €r0   rN   z$NestedSecretsSettingsSource.__init__   sH  øø€ õ$ ,3Ø ØØ ñ,
ô ,
ˆð Ô(ˆÝ,:ÝÐ(¨-¸Ñ>Ô>ØØ�HŠH�]Ñ#Ô#ñ-
ô -
ˆÔõ
 DRØØ�HŠHÐ*Ñ+Ô+ØñD
ô D
ˆÔ ð
 Ô#Ð+BÐBÐBÝÐ `ÀdÔF^Ð `Ð `ÑaÔaÐaÝ)7Ø Ø�HŠHÐ+Ñ,Ô,Ý ñ*
ô *
ˆÔ!õ
 %3Ø"Ø�HŠHÐ-Ñ.Ô.ØØ�HŠHÐ%Ñ&Ô&Øñ%
ô %
ˆÔõ $2ØØ�HŠHÐ%Ñ&Ô&ØØ�HŠH�\Ñ"Ô"Øñ$
ô $
ˆÔõ 5CØ$Ø�HŠHÐ/Ñ0Ô0Ø�HŠHÐ+Ñ,Ô,ñ5
ô 5
ˆÔ%õ
 ,:Ø!Ø�HŠHÐ,Ñ-Ô-Øñ,
ô ,
ˆÔ"ð
 Ô%ð 	7Ø'ð 7¨4¯8ª8Ð4NÑ+OÔ+Oð 7Ý#Ð$wÑxÔxÐxå02´�Ô-ð ÔÐ#ØˆEˆEÝ˜Ô(­4µ¨+Ñ6Ô6ð 	+ØÔ%Ð&ˆEˆEå˜Ô)Ñ*Ô*ˆEØ)XÐ)XÐRWÐ)XÑ)XÔ)XˆÔØÔ&ð 	-ð 	-ˆDØ×&Ò& tÑ,Ô,Ð,Ð,õ 	‰Œ×ÒØØÔ.ØÔ*Ø!%Ô!>Ø"Ø Ø#ð 	ñ 	
ô 	
ð 	
ð #'ˆÔõ �4Ô%Ñ&Ô&ð 	ØˆDŒMˆMˆMåØ?Ð?ØBÐBÐBÐB¨tÔ/AÐBÑBÔBñô ˆGõ +ØØÔ#ØÔ%ØÔ'ñ	ô ˆDŒMˆMˆMr2   rS   c                 óä  — |                      ¦   «         sY| j        dk    rd S | j        dk    rt          j        d|› d�d¬¦  «         d S | j        dk    rt	          d|› d�¦  «        ‚t
          ‚|                     ¦   «         st	          dt          |¦  «        › �¦  «        ‚t          d	„ |  	                    |¦  «        D ¦   «         ¦  «        }|| j
        k    rt	          d
| j
        › d�¦  «        ‚d S )Nr   r   zdirectory "z" does not existr   )Ú
stacklevelr   z.secrets_dir must reference a directory, not a c              3   óH   K  — | ]}|                      ¦   «         j        V — Œd S r7   )ÚstatÚst_size)r.   Úfs     r0   r@   zDNestedSecretsSettingsSource.validate_secrets_path.<locals>.<genexpr>•   s-   è è € Ð"[Ð"[¸ 1§6¢6¡8¤8Ô#3Ð"[Ð"[Ð"[Ð"[Ð"[Ð"[r2   zsecrets_dir size is above z bytes)Úexistsr   Úwarningsr   r   Ú
ValueErrorÚis_dirr   ÚsumÚ_iter_secret_filesr   )r?   rS   Úsecrets_dir_sizes      r0   rL   z1NestedSecretsSettingsSource.validate_secrets_pathˆ   s  € Ø�{Š{‰}Œ}ð 	dØÔ'¨4Ò/Ð/Ø�ØÔ)¨VÒ3Ð3Ý”ÐB¨DÐBÐBÐBÈqÐQÑQÔQÐQÐQÐQØÔ)¨WÒ4Ð4Ý#Ð$H°$Ð$HÐ$HÐ$HÑIÔIÐIå Ð à—;’;‘=”=ð nÝ#Ð$lÕUdÐeiÑUjÔUjÐ$lÐ$lÑmÔmÐmÝ"Ð"[Ð"[¸T×=TÒ=TÐUYÑ=ZÔ=ZÐ"[Ñ"[Ô"[Ñ[Ô[ÐØ $Ô";Ò;Ð;Ý#Ð$bÀÔAZÐ$bÐ$bÐ$bÑcÔcÐcð <Ð;r2   c              #   ó�   ‡ ‡‡K  — t          ¦   «         Šdt          dt          t                   fˆ ˆˆfd„Š ‰‰ ¦  «        E d{V —† dS )a  Yield the secret files contained in ``path``.

        ``path`` is expected to already be resolved. The directory tree is walked
        explicitly so that symbolic links are handled safely:

        * a file is only yielded if its real location stays within ``path``; entries
          that resolve outside of it (e.g. through a symbolic link) are skipped, so
          they neither contribute to the ``secrets_dir_max_size`` accounting nor get
          loaded;
        * each real directory is visited at most once, so cyclic or repeated
          symlinks cannot make the walk loop and inflate the size accounting or the
          number of loaded secrets.

        Because the size check and the loader share this iterator, they always see
        the same set of files.
        Ú	directoryr%   c              3   ó°  •K  — |                       ¦   «         }|‰v rd S ‰                     |¦  «         	 t          |                      ¦   «         ¦  «        }n# t          $ r Y d S w xY w|D ]l}|                      ¦   «         }|                     ¦   «         r!|‰k    s	‰|j        v r ‰|¦  «        E d {V —† ŒK|                     ¦   «         r‰|j        v r|V — Œmd S r7   )r-   ÚaddÚsortedÚiterdirÚOSErrorr_   ÚparentsÚis_file)rd   Úresolved_dirÚentriesÚentryÚresolvedrS   Ú	seen_dirsÚwalks        €€€r0   rq   z<NestedSecretsSettingsSource._iter_secret_files.<locals>.walk­   s  øè è € ð %×,Ò,Ñ.Ô.ˆLØ˜yÐ(Ð(Ø�Ø�MŠM˜,Ñ'Ô'Ð'ðÝ  ×!2Ò!2Ñ!4Ô!4Ñ5Ô5��øÝð ð ð Ø��ðøøøà ð  ð  �Ø Ÿ=š=™?œ?�Ø—?’?Ñ$Ô$ð  ð
   4Ò'Ð'¨4°8Ô3CÐ+CÐ+CØ#' 4¨¡;¤;Ð.Ð.Ð.Ð.Ð.Ð.Ð.øØ×%Ò%Ñ'Ô'ð  ¨D°HÔ4DÐ,DÐ,Dð  �K�K�Køð ð  s   ´!A Á
A$Á#A$N)Úsetr   r   )rS   rp   rq   s   `@@r0   ra   z.NestedSecretsSettingsSource._iter_secret_files™   sv   øøøè è € õ$  #™uœuˆ	ð	 �Dð 	 ¥X­d¤^ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð4 �4˜‘:”:ÐÐÐÐÐÐÐÐÐr2   c                 óF   ‡— ˆfd„|                       ‰¦  «        D ¦   «         S )Nc                 óž   •— i | ]I}t          |                     ‰¦  «        ¦  «        |                     ¦   «                              ¦   «         “ŒJS r+   )rI   Úrelative_toÚ	read_textÚstrip)r.   r/   rS   s     €r0   ú
<dictcomp>z<NestedSecretsSettingsSource.load_secrets.<locals>.<dictcomp>Ë   sC   ø€ ÐfÐfÐfÀA•�A—M’M $Ñ'Ô'Ñ(Ô(¨!¯+ª+©-¬-×*=Ò*=Ñ*?Ô*?ÐfÐfÐfr2   )ra   )ÚclsrS   s    `r0   r>   z(NestedSecretsSettingsSource.load_secretsÉ   s,   ø€ àfÐfÐfÐfÈ×I_ÒI_Ð`dÑIeÔIeÐfÑfÔfÐfr2   c                 ó   — d| j         ›d�S )Nz(NestedSecretsSettingsSource(secrets_dir=ú))r   )r?   s    r0   Ú__repr__z$NestedSecretsSettingsSource.__repr__Í   s   € ØO¸$Ô:JÐOÐOÐOÐOr2   )	NNNNNNNNN)Ú__name__Ú
__module__Ú__qualname__r   r   r	   r   ÚintÚboolrI   rN   r   rL   Ústaticmethodr   ra   Úclassmethodr8   r>   r|   Ú__classcell__)rU   s   @r0   r   r      sË  ø€ € € € € ð -1ØEIØ+/Ø.2Ø%)Ø/3Ø-1à&*Ø!%ðnð nà8Ð;PÑPðnð ˜jÔ)ðnð %Ð%:Ô;¸dÑBð	nð
 " D™jðnð !% t¡ðnð ˜d™
ðnð #&¨¡*ðnð  $ d™{ðnð ˜t™ðnð ˜$‘Jðnð 
ðnð nð nð nð nð nð`d¨$ð d°4ð dð dð dð dð" ð- ð -¨(°4¬.ð -ð -ð -ñ „\ð-ð^ ðg ð g¨¨c°3¨h¬ð gð gð gñ „[ðgðP˜#ð Pð Pð Pð Pð Pð Pð Pð Pr2   r   Úobjsr%   c                  ó@   — t          t          d„ | ¦  «        d ¦  «        S )Nc                 ó
   — | d uS r7   r+   )Úos    r0   r<   z first_not_none.<locals>.<lambda>Ò   s
   €  ¨$ € r2   )ÚnextÚfilter)r…   s    r0   rC   rC   Ñ   s    € Ý•Ð.Ð.°Ñ5Ô5°tÑ<Ô<Ð<r2   )rF   r]   Úcollections.abcr   Ú	functoolsr   Úpathlibr   Útypingr   r   r   r	   Ú
exceptionsr   Úutilsr   Úbaser   r   Úenvr   rT   r   Úmainr   Úsourcesr   rE   r   rC   r+   r2   r0   ú<module>r•      sy  ðØ 	€	€	€	Ø €€€Ø $Ð $Ð $Ð $Ð $Ð $Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8à 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø $Ð $Ð $Ð $Ð $Ð $Ø -Ð -Ð -Ð -Ð -Ð -Ø "Ð "Ð "Ð "Ð "Ð "Ø "Ð "Ð "Ð "Ð "Ð "Ø *Ð *Ð *Ð *Ð *Ð *àð $Ø$Ð$Ð$Ð$Ð$Ð$Ø#Ð#Ð#Ð#Ð#Ð#ð "Ð ðwPð wPð wPð wPð wPÐ"3ñ wPô wPð wPðt=˜#ð = #ð =ð =ð =ð =ð =ð =r2   