
    (h                        S r SSKJr  SSKJrJr  SSKJrJ	r	  SSK
Jr  SSKJr  SSKJr  \(       a  SS	KJq  SS
KJq  SSKJq  SSKJr  OSqSqSqSS jr " S S\\\	\   4   5      r " S S\5      rSS/rg)z Azure Key Vault settings source.    )annotations)IteratorMapping)TYPE_CHECKINGOptional)to_snake)	FieldInfo   )EnvSettingsSourceTokenCredentialResourceNotFoundErrorSecretClient)BaseSettingsNc                 f     SSK Jq  SSKJq  SSKJq  g ! [         a  n [        S5      U eS n A ff = f)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    Y/root/34ku/venv/lib/python3.13/site-packages/pydantic_settings/sources/providers/azure.pyimport_azure_key_vaultr      s3    
:?7 r
	s    
0+0c                  v    \ rS rSr% S\S'   S\S'   S\S'           SS jrSS	 jrSS
 jrSS jrSS jr	Sr
g)AzureKeyVaultMapping(   zdict[str, str | None]_loaded_secretsr   _secret_clientz	list[str]_secret_namesc                `    0 U l         Xl        X l        X0l        U R	                  5       U l        g N)r   r   _case_sensitive_snake_case_conversion_load_remote_secret_map)selfsecret_clientcase_sensitivesnake_case_conversions       r   __init__AzureKeyVaultMapping.__init__-   s/      "+-&;#+/+<+<+>    c                H   S U R                   R                  5        5       nU R                  (       a  U Vs0 s H  n[        U5      U_M     sn$ U R                  (       a  U Vs0 s H  o"U_M     sn$ U Vs0 s H  o"R                  5       U_M     sn$ s  snf s  snf s  snf )Nc              3     #    U  H6  oR                   (       d  M  UR                  (       d  M(  UR                   v   M8     g 7fr"   )nameenabled).0secrets     r   	<genexpr>4AzureKeyVaultMapping._load_remote.<locals>.<genexpr>:   s+      '
&VFZeZeKjpjxjxKFKK&Vs   A A A )r   list_properties_of_secretsr$   r   r#   lower)r'   secret_namesr0   s      r   r%   !AzureKeyVaultMapping._load_remote9   s    '
&*&9&9&T&T&V'
 &&5AB\THTND(\BB+78<4$J<88/;<|t

d"|<< C 9<s   B%B8Bc                r   UnU R                   (       a  [        U5      nO!U R                  (       d  UR                  5       nX R                  ;  aZ  X R
                  ;   a@  U R                  R                  U R
                  U   5      R                  U R                  U'   O[        U5      eU R                  U   $ r"   )
r$   r   r#   r7   r   r&   r   
get_secretvalueKeyError)r'   keynew_keys      r   __getitem__ AzureKeyVaultMapping.__getitem__F   s    &&smG%%iikG...***040C0C0N0NtO_O_`gOh0i0o0o$$W-sm###G,,r-   c                ,    [        U R                  5      $ r"   )lenr&   r'   s    r   __len__AzureKeyVaultMapping.__len__V   s    4##$$r-   c                H    [        U R                  R                  5       5      $ r"   )iterr&   keysrD   s    r   __iter__AzureKeyVaultMapping.__iter__Y   s    D$$))+,,r-   )r#   r   r   r&   r$   N)r(   r   r)   boolr*   rL   returnNone)rM   zdict[str, str])r>   strrM   
str | None)rM   int)rM   zIterator[str])__name__
__module____qualname____firstlineno____annotations__r+   r%   r@   rE   rJ   __static_attributes__ r-   r   r   r   (   sS    **  
?#
? 
?  $	
?
 

?=- %-r-   r   c                     ^  \ rS rSr% S\S'   S\S'         S                   SU 4S jjjrSS jrSU 4S jjrSS	 jrS
r	U =r
$ )AzureKeyVaultSettingsSource]   rO   _urlr   _credentialc
           
        > [        5         X l        X0l        X@l        X`l        [
        T
U ]  UU(       a  SOUUU(       a  SOSSUU	S9  g )NF__z--)r)   
env_prefixenv_nested_delimiterenv_ignore_emptyenv_parse_none_strenv_parse_enums)r   r\   r]   _dash_to_underscorer$   superr+   )r'   settings_clsurl
credentialdash_to_underscorer)   r*   r`   rc   rd   	__class__s             r   r+   $AzureKeyVaultSettingsSource.__init__a   sQ     	 	%#5 &;#$95~!)>D"1+ 	 	
r-   c                |    [        U R                  U R                  S9n[        UU R                  U R
                  S9$ )N)	vault_urlri   )r(   r)   r*   )r   r\   r]   r   r)   r$   )r'   r(   s     r   _load_env_vars*AzureKeyVaultSettingsSource._load_env_vars|   s:    $tyyTEUEUV#'.."&"="=
 	
r-   c                   > U R                   (       a  [        S [        TU ]  X5       5       5      $ U R                  (       a  [        S [        TU ]  X5       5       5      $ [        TU ]  X5      $ )Nc              3  <   #    U  H  oS    US    US   4v   M     g7f)r      NrX   r2   xs     r   r4   BAzureKeyVaultSettingsSource._extract_field_info.<locals>.<genexpr>   s#     c4bq1qtQqT*4bs   c              3  \   #    U  H"  oS    US   R                  SS5      US   4v   M$     g7f)r   r
   _-rs   N)replacert   s     r   r4   rv      s.     uFt1qt||C5qt<Fts   *,)r$   listrf   _extract_field_infore   )r'   field
field_namerk   s      r   r|   /AzureKeyVaultSettingsSource._extract_field_info   s]    &&cEG4OPU4bccc##uegFabgFtuuuw*5==r-   c                l    U R                   R                   SU R                  < SU R                  < S3$ )Nz(url=z, env_nested_delimiter=))rk   rR   r\   ra   rD   s    r   __repr__$AzureKeyVaultSettingsSource.__repr__   s4    ..))*%		}<STXTmTmSppqrrr-   )r]   re   r$   r\   )FNFNNN)rg   ztype[BaseSettings]rh   rO   ri   r   rj   rL   r)   bool | Noner*   rL   r`   rP   rc   rP   rd   r   rM   rN   )rM   zMapping[str, Optional[str]])r}   r	   r~   rO   rM   zlist[tuple[str, str, bool]])rM   rO   )rR   rS   rT   rU   rV   r+   ro   r|   r   rW   __classcell__)rk   s   @r   rZ   rZ   ]   s    
I   $)&*&+!%)-'+
(
 
 $	

 !
 $
  $
 
 '
 %
 

 
6
>s sr-   rZ   )rM   rN   )__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   rO   r   rZ   __all__rX   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-   