
    x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dS )    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           ||                    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     /var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/pydantic_settings/sources/providers/nested_secrets.py
<listcomp>z8NestedSecretsSettingsSource.__init__.<locals>.<listcomp>i   s6    )X)X)XQ$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$>bhhjj$>288::$>$>?? 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  ,
 ,
 (,:(->>HH]##-
 -

 DRHH*++D
 D
 
 #+BBB `dF^ ` `aaa)7 HH+,, *
 *
!
 %3"HH-..HH%&&%
 %
 $2HH%&&HH\""$
 $
 5C$HH/00HH+,,5
 5
%
 ,:!HH,--,
 ,
"
 % 	7' 74884N+O+O 7#$wxxx02- #EE(4+66 	+%&EE)**E)X)XRW)X)X)X& 	- 	-D&&t,,,, 	.*!%!>" # 	 	
 	
 	
 #' 4%&& 	DMMM??BBBBt/ABBB G +#%'	 DMMMr2   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
          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   p   K   | ]1}|                                 |                                j        V  2d S r7   )is_filestatst_size)r.   fs     r0   r@   zDNestedSecretsSettingsSource.validate_secrets_path.<locals>.<genexpr>   s?      "^"^RSR[R[R]R]"^16688#3"^"^"^"^"^"^r2   z**/*zsecrets_dir size is above z bytes)existsr   warningsr   r   
ValueErroris_dirr   sumglobr   )r?   rS   secrets_dir_sizes      r0   rL   z1NestedSecretsSettingsSource.validate_secrets_path   s   {{}} 	d'4//)V33BDBBBqQQQQQQ)W44#$H$$H$H$HIII  ;;== n#$lUdeiUjUj$l$lmmm""^"^TYYv=N=N"^"^"^^^$";;;#$bAZ$b$b$bccc <;r2   c                 j      fdt          t          t            dd                    D             S )Nc                     i | ]]}|                                 t          |                                        |                                                                ^S r+   )rY   rI   relative_to	read_textstrip)r.   r/   rS   s     r0   
<dictcomp>z<NestedSecretsSettingsSource.load_secrets.<locals>.<dictcomp>   sa     
 
 
yy{{
d##$$akkmm&9&9&;&;
 
 
r2   z/**/*T)	recursive)mapr   r   )rS   s   `r0   r>   z(NestedSecretsSettingsSource.load_secrets   sK    
 
 
 
u^^^tDDDEE
 
 
 	
r2   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   staticmethodr8   r>   rn   __classcell__)rU   s   @r0   r   r      s        -1EI+/.2%)/3-1&*!%n n8;PPn j)n %%:;dB	n
 "Dj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 
DcN 
 
 
 \
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)rv   s    r0   rC   rC      s     ..55t<<<r2   )rF   r^   	functoolsr   rb   r   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 ' ' ' ' ' ' $ $ $ $ $ $ - - - - - - " " " " " " " " " " " " * * * * * * $$$$$$$###### " KP KP KP KP KP"3 KP KP KP\=# =# = = = = = =r2   