
    ch                        S r SSKJr  SSKrSSK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r   " S S\5      rg)zSecrets file settings source.    )annotationsN)Path)TYPE_CHECKINGAny)	FieldInfo)path_type_label   )SettingsError   )PydanticBaseEnvSettingsSource)PathType)BaseSettingsc                     ^  \ rS rSrSr      S	               S
U 4S jjjrSU 4S jjr\SS j5       rSS jr	SS jr
SrU =r$ )SecretsSettingsSource   z=
Source class for loading settings values from secret files.
c                |   > [         TU ]  XXEXg5        Ub  X l        g U R                  R                  S5      U l        g )Nsecrets_dir)super__init__configgetr   )	selfsettings_clsr   case_sensitive
env_prefixenv_ignore_emptyenv_parse_none_strenv_parse_enums	__class__s	           c/var/www/html/shao/venv/lib/python3.13/site-packages/pydantic_settings/sources/providers/secrets.pyr   SecretsSettingsSource.__init__   s<     	*HZ	
 +6*A;t{{WdGe    c                  > 0 nU R                   c  U$ [        U R                   [        [        R                  45      (       a  U R                   /OU R                   nU Vs/ sH  n[        U5      R                  5       PM     nn/ U l        U HO  nUR                  5       (       d  [        R                  " SU S35        M4  U R                  R                  U5        MQ     [        U R                  5      (       d  U$ U R                   H/  nUR                  5       (       a  M  [        S[        U5       35      e   [         TU ]E  5       $ s  snf )z$
Build fields from "secrets" files.
zdirectory "z" does not existz.secrets_dir must reference a directory, not a )r   
isinstancestrosPathLiker   
expandusersecrets_pathsexistswarningswarnappendlenis_dirr
   r   r   __call__)r   secretssecrets_dirspr)   pathr   s         r    r0   SecretsSettingsSource.__call__-   s    *,#N-78H8H3PRP[P[J\-]-](()cgcscs7CD|!a++-|D!D;;==D61ABC""))$/	 " 4%%&&N&&D;;==#&TUdeiUjTk$lmm ' w!!! Es   "Ec                    UR                  5        HP  nUR                  U:X  a  Us  $ U(       a  M   UR                  R                  5       UR                  5       :X  d  MN  Us  $    g)a&  
Find a file within path's directory matching filename, optionally ignoring case.

Args:
    dir_path: Directory path.
    file_name: File name.
    case_sensitive: Whether to search for file name case sensitively.

Returns:
    Whether file path or `None` if file does not exist in directory.
N)iterdirnamelower)clsdir_path	file_namer   fs        r    find_case_path$SecretsSettingsSource.find_case_pathI   sO     !!#Avv"#^)//:K(K	 $
 r"   c           
        U R                  X5       H  u  p4n[        U R                  5       H  nU R                  XdU R                  5      nU(       d  M(  UR                  5       (       a$  UR                  5       R                  5       X54s  s  $ [        R                  " SU S[        U5       S3SS9  M     M     SWW4$ )a,  
Gets the value for field from secret file and a flag to determine whether value is complex.

Args:
    field: The field.
    field_name: The field name.

Returns:
    A tuple that contains the value (`None` if the file does not exist), key, and
        a flag to determine whether value is complex.
zattempted to load secret file "z" but found a z	 instead.   )
stacklevelN)_extract_field_inforeversedr)   r>   r   is_file	read_textstripr+   r,   r   )r   field
field_name	field_keyenv_namevalue_is_complexsecrets_pathr4   s           r    get_field_value%SecretsSettingsSource.get_field_value]   s     6:5M5Me5`1I!1 ();); <**<4CVCVW<<>>>>+113YPPMM9$~o^bNcMddmn#$ != 6a  Y 000r"   c                P    U R                   R                   SU R                  < S3$ )Nz(secrets_dir=))r   __name__r   )r   s    r    __repr__SecretsSettingsSource.__repr__|   s'    ..))*-8H8H7K1MMr"   )r   r)   )NNNNNN)r   ztype[BaseSettings]r   zPathType | Noner   bool | Noner   
str | Noner   rU   r   rV   r   rU   returnNone)rW   zdict[str, Any])r;   r   r<   r%   r   boolrW   zPath | None)rH   r   rI   r%   rW   ztuple[Any, str, bool])rW   r%   )rR   
__module____qualname____firstlineno____doc__r   r0   classmethodr>   rN   rS   __static_attributes____classcell__)r   s   @r    r   r      s     (,&*!%(,)-'+f(f %f $	f
 f &f 'f %f 
f f"8  &1>N Nr"   r   )r]   
__future__r   _annotationsr&   r+   pathlibr   typingr   r   pydantic.fieldsr   pydantic_settings.utilsr   
exceptionsr
   baser   typesr   pydantic_settings.mainr   r    r"   r    <module>rl      sA    # 2 	  
 & 3 ' 0 3dN9 dNr"   