
    Ph                        d Z ddlmZ ddlmZmZ ddlmZ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	e   f         Z G d de      ZddgZy)z Azure Key Vault settings source.    )annotations)IteratorMapping)TYPE_CHECKINGOptional)to_snake)	FieldInfo   )EnvSettingsSourceTokenCredentialResourceNotFoundErrorSecretClient)BaseSettingsNc                 d    	 ddl ma ddlma ddlma y # 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    c/var/www/html/saasai/venv/lib/python3.12/site-packages/pydantic_settings/sources/providers/azure.pyimport_azure_key_vaultr      s3    
:?7 r
	s    	/*/c                  d    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y)AzureKeyVaultMappingzdict[str, str | None]_loaded_secretsr   _secret_clientz	list[str]_secret_namesc                f    i | _         || _        || _        || _        | j	                         | _        y N)r   r   _case_sensitive_snake_case_conversion_load_remote_secret_map)selfsecret_clientcase_sensitivesnake_case_conversions       r   __init__zAzureKeyVaultMapping.__init__-   s5      "+-&;#+/+<+<+>    c                &   d | j                   j                         D        }| j                  r|D ci c]  }t        |      | c}S | j                  r|D ci c]  }|| c}S |D ci c]  }|j                         | c}S c c}w c c}w c c}w )Nc              3  h   K   | ]*  }|j                   s|j                  s|j                    , y wr!   )nameenabled).0secrets     r   	<genexpr>z4AzureKeyVaultMapping._load_remote.<locals>.<genexpr>:   s+      '
&VFZ`ZeZejpjxjxFKK&Vs   222)r   list_properties_of_secretsr#   r   r"   lower)r&   secret_namesr.   s      r   r$   z!AzureKeyVaultMapping._load_remote9   s    '
&*&9&9&T&T&V'
 &&5AB\THTND(\BB+78<4D$J<88/;<|t

d"|<< C 9<s   B
B	)Bc                Z   |}| j                   rt        |      }n| j                  s|j                         }|| j                  vrY|| j
                  v r@| j                  j                  | j
                  |         j                  | j                  |<   nt        |      | j                  |   S r!   )
r#   r   r"   r4   r   r%   r   
get_secretvalueKeyError)r&   keynew_keys      r   __getitem__z AzureKeyVaultMapping.__getitem__F   s    &&smG%%iikG$...$***040C0C0N0NtO_O_`gOh0i0o0o$$W-sm###G,,r+   c                ,    t        | j                        S r!   )lenr%   r&   s    r   __len__zAzureKeyVaultMapping.__len__V   s    4##$$r+   c                H    t        | j                  j                               S r!   )iterr%   keysr?   s    r   __iter__zAzureKeyVaultMapping.__iter__Y   s    D$$))+,,r+   N)r'   r   r(   boolr)   rE   returnNone)rF   zdict[str, str])r:   strrF   
str | None)rF   int)rF   zIterator[str])	__name__
__module____qualname____annotations__r*   r$   r<   r@   rD    r+   r   r   r   (   sS    **  
?#
? 
?  $	
?
 

?=- %-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 )AzureKeyVaultSettingsSourcerH   _urlr   _credentialc
           	         t                || _        || _        || _        || _        t
        
|   ||rdn|||rdndd||	       y )NF__z--)r(   
env_prefixenv_nested_delimiterenv_ignore_emptyenv_parse_none_strenv_parse_enums)r   rR   rS   _dash_to_underscorer#   superr*   )r&   settings_clsurl
credentialdash_to_underscorer(   r)   rV   rY   rZ   	__class__s             r   r*   z$AzureKeyVaultSettingsSource.__init__a   sY     	 	%#5 &;#$95~!)>D"1+ 	 	
r+   c                    t        | j                  | j                        }t        || j                  | j
                        S )N)	vault_urlr_   )r'   r(   r)   )r   rR   rS   r   r(   r#   )r&   r'   s     r   _load_env_varsz*AzureKeyVaultSettingsSource._load_env_vars|   s:    $tyyTEUEUV#'.."&"="=
 	
r+   c                    | j                   r t        d t        |   ||      D              S | j                  r t        d t        |   ||      D              S t        |   ||      S )Nc              3  8   K   | ]  }|d    |d    |d   f  yw)r      NrO   r0   xs     r   r2   zBAzureKeyVaultSettingsSource._extract_field_info.<locals>.<genexpr>   s&     c4bq1qtQqT*4bs   c              3  X   K   | ]"  }|d    |d   j                  dd      |d   f $ yw)r   r
   _-rg   N)replacerh   s     r   r2   zBAzureKeyVaultSettingsSource._extract_field_info.<locals>.<genexpr>   s1     uFt1qt||C5qt<Fts   (*)r#   listr\   _extract_field_infor[   )r&   field
field_namera   s      r   ro   z/AzureKeyVaultSettingsSource._extract_field_info   se    &&cEG4OPUWa4bccc##uegFabgisFtuuuw*5*==r+   c                h    | j                   j                   d| j                  d| j                  dS )Nz(url=z, env_nested_delimiter=))ra   rK   rR   rW   r?   s    r   __repr__z$AzureKeyVaultSettingsSource.__repr__   s4    ..))*%		}<STXTmTmSppqrrr+   )FNFNNN)r]   ztype[BaseSettings]r^   rH   r_   r   r`   rE   r(   bool | Noner)   rE   rV   rI   rY   rI   rZ   ru   rF   rG   )rF   zMapping[str, Optional[str]])rp   r	   rq   rH   rF   zlist[tuple[str, str, bool]])rF   rH   )	rK   rL   rM   rN   r*   rd   ro   rt   __classcell__)ra   s   @r   rQ   rQ   ]   s    
I   $)&*&+!%)-'+
(
 
 $	

 !
 $
  $
 
 '
 %
 

6
>sr+   rQ   )rF   rG   )__doc__
__future__r   _annotationscollections.abcr   r   typingr   r   pydantic.alias_generatorsr   pydantic.fieldsr	   envr   r   r   r   r   r   r   pydantic_settings.mainr   r   rH   r   rQ   __all__rO   r+   r   <module>r      sv    & 2 - * . % "6;33O L2-73#56 2-j1s"3 1sh "#@
Ar+   