
    nh                        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 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)	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    {/var/www/pru.catia.catastroantioquia-mas.com/tasa/lib/python3.12/site-packages/pydantic_settings/sources/providers/azure.pyimport_azure_key_vaultr      s3    
:?7 r
	s    	/*/c                  `    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                X    i | _         || _        || _        | j                         | _        y N)r   r   _case_sensitive_load_remote_secret_map)selfsecret_clientcase_sensitives      r   __init__zAzureKeyVaultMapping.__init__,   s-    
  "+-+/+<+<+>    c                    d | j                   j                         D        }| j                  r|D ci c]  }|| c}S |D ci c]  }|j                         | c}S 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>7   s+      '
"Z`ZeZejpjxjxFKK'
s   222)r   list_properties_of_secretsr!   lower)r$   secret_namesr+   s      r   r"   z!AzureKeyVaultMapping._load_remote6   sd    '
&*&9&9&T&T&V'
 +784D$J88/;<t

d"<< 9<s   
AA#c                   | j                   s|j                         }|| j                  vrM|| j                  v r?| j                  j                  | j                  |         j                  | j                  |<   | j                  |   S r    )r!   r1   r   r#   r   
get_secretvalue)r$   keys     r   __getitem__z AzureKeyVaultMapping.__getitem__>   su    ##))+Cd***sd6F6F/F(,(;(;(F(FtGWGWX[G\(](c(cD  %##C((r(   c                ,    t        | j                        S r    )lenr#   r$   s    r   __len__zAzureKeyVaultMapping.__len__E   s    4##$$r(   c                H    t        | j                  j                               S r    )iterr#   keysr:   s    r   __iter__zAzureKeyVaultMapping.__iter__H   s    D$$))+,,r(   N)r%   r   r&   boolreturnNone)rA   zdict[str, str])r6   strrA   
str | None)rA   int)rA   zIterator[str])	__name__
__module____qualname____annotations__r'   r"   r7   r;   r?    r(   r   r   r   '   sI    **  ?#? ? 
	?=)%-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 )AzureKeyVaultSettingsSourcerC   _urlr   _credentialc	           	     p    t                || _        || _        || _        t        	|   |||dd||       y )Nz--F)r&   
env_prefixenv_nested_delimiterenv_ignore_emptyenv_parse_none_strenv_parse_enums)r   rM   rN   _dash_to_underscoresuperr'   )
r$   settings_clsurl
credentialdash_to_underscorer&   rP   rS   rT   	__class__s
            r   r'   z$AzureKeyVaultSettingsSource.__init__P   sI     	 	%#5 )!!%"1+ 	 	
r(   c                p    t        | j                  | j                        }t        || j                        S )N)	vault_urlrY   )r   rM   rN   r   r&   )r$   r%   s     r   _load_env_varsz*AzureKeyVaultSettingsSource._load_env_varsi   s+    $tyyTEUEUV#M43F3FGGr(   c                |    | j                   r t        d t        |   ||      D              S t        |   ||      S )Nc              3  X   K   | ]"  }|d    |d   j                  dd      |d   f $ yw)r   r	   _-   N)replace)r-   xs     r   r/   zBAzureKeyVaultSettingsSource._extract_field_info.<locals>.<genexpr>o   s.     u1qt||C5qt<us   (*)rU   listrV   _extract_field_info)r$   field
field_namer[   s      r   rg   z/AzureKeyVaultSettingsSource._extract_field_infom   s=    ##uegFabgisFtuuuw*5*==r(   c                h    | j                   j                   d| j                  d| j                  dS )Nz(url=z, env_nested_delimiter=))r[   rF   rM   rQ   r:   s    r   __repr__z$AzureKeyVaultSettingsSource.__repr__r   s4    ..))*%		}<STXTmTmSppqrrr(   )FNNNN)rW   ztype[BaseSettings]rX   rC   rY   r   rZ   r@   r&   bool | NonerP   rD   rS   rD   rT   rm   rA   rB   )rA   zMapping[str, Optional[str]])rh   r   ri   rC   rA   zlist[tuple[str, str, bool]])rA   rC   )	rF   rG   rH   rI   r'   r^   rg   rl   __classcell__)r[   s   @r   rL   rL   L   s    
I   $)&*!%)-'+
(
 
 $	

 !
 $
 
 '
 %
 

2H>
sr(   rL   )rA   rB   )__doc__
__future__r   _annotationscollections.abcr   r   typingr   r   pydantic.fieldsr   envr
   r   r   r   r   r   r   pydantic_settings.mainr   r   rC   r   rL   __all__rJ   r(   r   <module>rx      ss    & 2 - * % "6;33O L"-73#56 "-J's"3 'sT "#@
Ar(   