
    xi|                        d Z ddlmZ ddlmZ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a dd
lma ddlma ddlmZ ndadadaddZ G d deeedz  f                   Z G d de          ZddgZdS )z Azure Key Vault settings source.    )annotations)IteratorMapping)TYPE_CHECKINGto_snake)	FieldInfo   )EnvSettingsSourceTokenCredentialResourceNotFoundErrorSecretClient)BaseSettingsNreturnNonec                 p    	 ddl ma ddlma ddlma d S # t          $ r} t          d          | d } ~ ww xY w)Nr   r   r   r   zdAzure Key Vault dependencies are not installed, run `pip install pydantic-settings[azure-key-vault]`)azure.core.credentialsr   azure.core.exceptionsr   azure.keyvault.secretsr   ImportError)es    /var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/pydantic_settings/sources/providers/azure.pyimport_azure_key_vaultr      sz    
::::::??????77777777   r
 
	s    
505c                  V    e Zd ZU ded<   ded<   ded<   ddZddZddZddZddZdS )AzureKeyVaultMappingzdict[str, str | None]_loaded_secretsr   _secret_clientz	list[str]_secret_namessecret_clientcase_sensitiveboolsnake_case_conversionr   r   c                p    i | _         || _        || _        || _        |                                 | _        d S N)r   r    _case_sensitive_snake_case_conversion_load_remote_secret_map)selfr"   r#   r%   s       r   __init__zAzureKeyVaultMapping.__init__-   s>      "+-&;#+/+<+<+>+>    dict[str, str]c                    d | j                                         D             }| j        rd |D             S | j        rd |D             S d |D             S )Nc              3  @   K   | ]}|j         	|j        |j         V  d S r'   )nameenabled).0secrets     r   	<genexpr>z4AzureKeyVaultMapping._load_remote.<locals>.<genexpr>:   sL       '
 '
"Z`Ze'
jpjx'
K'
 '
 '
 '
 '
 '
r.   c                .    i | ]}t          |          |S  r   r4   r2   s     r   
<dictcomp>z5AzureKeyVaultMapping._load_remote.<locals>.<dictcomp>?   s     BBBTHTNNDBBBr.   c                    i | ]}||S r8   r8   r9   s     r   r:   z5AzureKeyVaultMapping._load_remote.<locals>.<dictcomp>B   s    8884D$888r.   c                8    i | ]}|                                 |S r8   )lowerr9   s     r   r:   z5AzureKeyVaultMapping._load_remote.<locals>.<dictcomp>D   s"    <<<t

d<<<r.   )r    list_properties_of_secretsr)   r(   )r,   secret_namess     r   r*   z!AzureKeyVaultMapping._load_remote9   s    '
 '
&*&9&T&T&V&V'
 '
 '
 & 	CBB\BBBB 	988<8888<<|<<<<r.   keystr
str | Nonec                ,   |}| j         rt          |          }n| j        s|                                }|| j        vrK|| j        v r3| j                            | j        |                   j        | j        |<   nt          |          | j        |         S r'   )
r)   r   r(   r=   r   r+   r    
get_secretvalueKeyError)r,   r@   new_keys      r   __getitem__z AzureKeyVaultMapping.__getitem__F   s    & 	"smmGG% 	"iikkG$...$***040C0N0NtO_`gOh0i0i0o$W--smm##G,,r.   intc                *    t          | j                  S r'   )lenr+   r,   s    r   __len__zAzureKeyVaultMapping.__len__V   s    4#$$$r.   Iterator[str]c                N    t          | j                                                  S r'   )iterr+   keysrL   s    r   __iter__zAzureKeyVaultMapping.__iter__Y   s    D$))++,,,r.   N)r"   r   r#   r$   r%   r$   r   r   )r   r/   )r@   rA   r   rB   )r   rI   )r   rN   )	__name__
__module____qualname____annotations__r-   r*   rH   rM   rR   r8   r.   r   r   r   (   s         ****    
? 
? 
? 
?= = = =- - - - % % % %- - - - - -r.   r   c                  `     e Zd ZU ded<   ded<   	 	 	 	 	 	 dd  fdZd!dZd" fdZd#dZ xZS )$AzureKeyVaultSettingsSourcerA   _urlr   _credentialFNsettings_clstype[BaseSettings]url
credentialdash_to_underscorer$   r#   bool | Noner%   
env_prefixrB   env_parse_none_strenv_parse_enumsr   r   c
           	         t                       || _        || _        || _        || _        t                                          ||rdn|||rdndd||	           d S )NF__z--)r#   ra   env_nested_delimiterenv_ignore_emptyrb   rc   )r   rY   rZ   _dash_to_underscorer)   superr-   )r,   r[   r]   r^   r_   r#   r%   ra   rb   rc   	__class__s             r   r-   z$AzureKeyVaultSettingsSource.__init__a   s     	   	%#5 &;#$9M55~!)>!HD"1+ 	 	
 	
 	
 	
 	
r.   Mapping[str, str | None]c                p    t          | j        | j                  }t          || j        | j                  S )N)	vault_urlr^   )r"   r#   r%   )r   rY   rZ   r   r#   r)   )r,   r"   s     r   _load_env_varsz*AzureKeyVaultSettingsSource._load_env_vars|   s?    $tyTEUVVV#'."&"=
 
 
 	
r.   fieldr	   
field_namelist[tuple[str, str, bool]]c                H   | j         r9t          d t                                          ||          D                       S | j        r9t          d t                                          ||          D                       S t                                          ||          S )Nc              3  D   K   | ]}|d          |d          |d         fV  dS )r      Nr8   r4   xs     r   r6   zBAzureKeyVaultSettingsSource._extract_field_info.<locals>.<genexpr>   s5      ccq1qtQqT*ccccccr.   c              3  l   K   | ]/}|d          |d                              dd          |d         fV  0dS )r   r
   _-rt   N)replaceru   s     r   r6   zBAzureKeyVaultSettingsSource._extract_field_info.<locals>.<genexpr>   sC      uu1qt||C55qt<uuuuuur.   )r)   listri   _extract_field_inforh   )r,   ro   rp   rj   s      r   r|   z/AzureKeyVaultSettingsSource._extract_field_info   s    & 	dccEGG4O4OPUWa4b4bcccccc# 	vuueggFaFabgisFtFtuuuuuuww**5*===r.   c                @    | j         j         d| j        d| j        dS )Nz(url=z, env_nested_delimiter=))rj   rS   rY   rf   rL   s    r   __repr__z$AzureKeyVaultSettingsSource.__repr__   s,    .)rr	rrTXTmrrrrr.   )FNFNNN)r[   r\   r]   rA   r^   r   r_   r$   r#   r`   r%   r$   ra   rB   rb   rB   rc   r`   r   r   )r   rk   )ro   r	   rp   rA   r   rq   )r   rA   )	rS   rT   rU   rV   r-   rn   r|   r   __classcell__)rj   s   @r   rX   rX   ]   s         III     $)&*&+!%)-'+
 
 
 
 
 
 
6
 
 
 
> > > > > >s s s s s s s sr.   rX   )r   r   )__doc__
__future__r   _annotationscollections.abcr   r   typingr   pydantic.alias_generatorsr   pydantic.fieldsr	   envr   r   r   r   r   r   r   pydantic_settings.mainr   r   rA   r   rX   __all__r8   r.   r   <module>r      sq   & & 2 2 2 2 2 2 - - - - - - - -             . . . . . . % % % % % % " " " " " " 	666666;;;;;;3333333333333O L   2- 2- 2- 2- 2-73d
?3 2- 2- 2-j1s 1s 1s 1s 1s"3 1s 1s 1sh "#@
Ar.   