
    ~<i                         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y)    N)reduce)iglob)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	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       ||j                  d             _        t        ||j                  d      d       _         j
                  dvrt        d j
                         t        ||j                  d      t               _        t        ||j                  d      |	|j                  d	      d
       _	        t        ||j                  d      |
|j                  d      d       _
        t        ||j                  d      |j                  d             _        t        ||j                  d      d
       _         j                  r3|s|j                  d      rt        d      t        j                   _         j                  g }nCt         j                  t         t"        f      r j                  g}nt%         j                        }|D cg c])  }t!        |      j'                         j)                         + c} _         j*                  D ]  } j-                  |        t.         a  | j                   j                   j                  d
dd        d  _        t5         j*                        si  _        y t9        d  fd j*                  D              }t;        | j                   j<                   j2                         _        y c c}w )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 exclusiveT)r#   r$   r)   env_ignore_emptyenv_parse_enumsenv_parse_none_strc                 Z    t        g | j                         |j                               S N)dictitems)d1d2s     w/home/www/utuvibe.miabetepe.com/venv/lib/python3.12/site-packages/pydantic_settings/sources/providers/nested_secrets.py<lambda>z6NestedSecretsSettingsSource.__init__.<locals>.<lambda>~   s"    t$>bhhj$>288:$>?     c              3   @   K   | ]  }j                  |        y wr.   )load_secrets).0pselfs     r3   	<genexpr>z7NestedSecretsSettingsSource.__init__.<locals>.<genexpr>   s     B!""1%Bs   )getattrmodel_configfirst_not_nonegetr   r   r   SECRETS_DIR_MAX_SIZEr   r#   r    r!   r"   ossep
isinstancer   strlist
expanduserresolvesecrets_pathsvalidate_secrets_pathsuper__init__r,   lenenv_varsr   r   r*   )r:   r   r   r   r   r   r    r!   r"   r#   r$   r'   confpathsr9   pathsecrets	__class__s   `                r3   rK   z$NestedSecretsSettingsSource.__init__   s   $ ,3  ,
 ((,:(->HH]#-

 DRHH*+D
 
 ##+BB"EdF^F^E_ `aa)7 HH+, *
!
 %3"HH-.HH%&%
 $2HH%&HH\"$
 5C$HH/0HH+,5
%
 ,:!HH,-,
"
 %%'4884N+O#$wxx02- #E((4+6%%&E))*ERW)XQ$q'*<*<*>*F*F*H)X&& 	-D&&t,	- 	..**!%!>!>" # 	 	
 #' 4%%&DM?Bt/A/ABG +##%%''	DM1 *Ys   >.L rP   c                    |j                         s_| j                  dk(  ry | j                  dk(  rt        j                  d| dd       y | j                  dk(  rt	        d| d      t
        |j                         st	        dt        |             t        d	 |j                  d
      D              }|| j                  kD  rt	        d| j                   d      y )Nr   r   zdirectory "z" does not existr   )
stacklevelr   z.secrets_dir must reference a directory, not a c              3   r   K   | ]/  }|j                         s|j                         j                   1 y wr.   )is_filestatst_size)r8   fs     r3   r;   zDNestedSecretsSettingsSource.validate_secrets_path.<locals>.<genexpr>   s(     "^RSR[R[R]1668#3#3"^s   77z**/*zsecrets_dir size is above z bytes)existsr   warningsr   r   
ValueErroris_dirr   sumglobr   )r:   rP   secrets_dir_sizes      r3   rI   z1NestedSecretsSettingsSource.validate_secrets_path   s    {{}''4/))V3D61ABqQ))W4#k$7G$HII  ;;=#&TUdeiUjTk$lmm""^TYYv=N"^^$";";;#&@AZAZ@[[a$bcc <r5   c                     t        t        t        |  dd            D ci c]I  }|j                         r7t	        |j                  |             |j                         j                         K c}S c c}w )Nz/**/*T)	recursive)mapr   r   rV   rD   relative_to	read_textstrip)rP   r9   s     r3   r7   z(NestedSecretsSettingsSource.load_secrets   sc     uvU^tDE
yy{ d#$akkm&9&9&;;
 	
 
s   AA2c                 "    d| j                   dS )Nz(NestedSecretsSettingsSource(secrets_dir=))r   )r:   s    r3   __repr__z$NestedSecretsSettingsSource.__repr__   s    9$:J:J9MQOOr5   )	NNNNNNNNN)__name__
__module____qualname__r   r   r	   r   intboolrD   rK   r   rI   staticmethodr/   r7   ri   __classcell__)rR   s   @r3   r   r      s    -1EI+/.2%)/3-1&*!%n8;PPn j)n %%:;dB	n
 "Djn !%tn d
n #&*n  $d{n tn $Jn 
n`d$ d4 d" 
4 
DcN 
 
P# Pr5   r   objsr%   c                  0    t        t        d |       d       S )Nc                 
    | d uS r.    )os    r3   r4   z first_not_none.<locals>.<lambda>   s
    $ r5   )nextfilter)rq   s    r3   r>   r>      s    .5t<<r5   )rA   r[   	functoolsr   r_   r   pathlibr   typingr   r   r   r	   
exceptionsr   utilsr   baser   r   envr   rQ   r   mainr   sourcesr   r@   r   r>   rt   r5   r3   <module>r      sb    	     8 8 ' $ - " " *$# " KP"3 KP\=# =# =r5   