o
    h                     @  s   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rEd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dZG dd deee	e f ZG dd deZddgZdS )z Azure Key Vault settings source.    )annotations)IteratorMapping)TYPE_CHECKINGOptionalto_snake)	FieldInfo   )EnvSettingsSourceTokenCredentialResourceNotFoundErrorSecretClient)BaseSettingsNreturnNonec               
   C  sN   zddl ma ddlma ddlma W d S  ty& }  ztd| d } ~ w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)e r   k/var/www/html/pro-man-master/venv/lib/python3.10/site-packages/pydantic_settings/sources/providers/azure.pyimport_azure_key_vault   s   r   c                   @  sX   e Zd ZU ded< ded< ded< dddZdddZd ddZd!ddZd"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                 C  s&   i | _ || _|| _|| _|  | _d S N)r   r   _case_sensitive_snake_case_conversion_load_remote_secret_map)selfr!   r"   r$   r   r   r   __init__-   s
   zAzureKeyVaultMapping.__init__dict[str, str]c                 C  sJ   dd | j  D }| jrdd |D S | jrdd |D S dd |D S )Nc                 s  s"    | ]}|j r|jr|j V  qd S r%   )nameenabled).0secretr   r   r   	<genexpr>:   s    
z4AzureKeyVaultMapping._load_remote.<locals>.<genexpr>c                 S  s   i | ]}t ||qS r   r   r/   r-   r   r   r   
<dictcomp>?       z5AzureKeyVaultMapping._load_remote.<locals>.<dictcomp>c                 S  s   i | ]}||qS r   r   r2   r   r   r   r3   B   s    c                 S  s   i | ]}|  |qS r   )lowerr2   r   r   r   r3   D   r4   )r   list_properties_of_secretsr'   r&   )r*   secret_namesr   r   r   r(   9   s   z!AzureKeyVaultMapping._load_remotekeystr
str | Nonec                 C  sd   |}| j r
t|}n| js| }|| jvr-|| jv r)| j| j| j| j|< nt	|| j| S r%   )
r'   r   r&   r5   r   r)   r   
get_secretvalueKeyError)r*   r8   new_keyr   r   r   __getitem__F   s   



z AzureKeyVaultMapping.__getitem__intc                 C  s
   t | jS r%   )lenr)   r*   r   r   r   __len__V   s   
zAzureKeyVaultMapping.__len__Iterator[str]c                 C  s   t | j S r%   )iterr)   keysrB   r   r   r   __iter__Y   s   zAzureKeyVaultMapping.__iter__N)r!   r   r"   r#   r$   r#   r   r   )r   r,   )r8   r9   r   r:   )r   r@   )r   rD   )	__name__
__module____qualname____annotations__r+   r(   r?   rC   rG   r   r   r   r   r   (   s   
 



r   c                      s`   e Zd ZU ded< ded< 						d#d$ fddZd%ddZd& fdd Zd'd!d"Z  ZS )(AzureKeyVaultSettingsSourcer9   _urlr   _credentialFNsettings_clstype[BaseSettings]url
credentialdash_to_underscorer#   r"   bool | Noner$   
env_prefixr:   env_parse_none_strenv_parse_enumsr   r   c
           
   	     sL   t   || _|| _|| _|| _t j||rdn|||rdndd||	d d S )NF__z--)r"   rU   env_nested_delimiterenv_ignore_emptyrV   rW   )r   rM   rN   _dash_to_underscorer'   superr+   )
r*   rO   rQ   rR   rS   r"   r$   rU   rV   rW   	__class__r   r   r+   a   s   


z$AzureKeyVaultSettingsSource.__init__Mapping[str, Optional[str]]c                 C  s"   t | j| jd}t|| j| jdS )N)	vault_urlrR   )r!   r"   r$   )r   rM   rN   r   r"   r'   )r*   r!   r   r   r   _load_env_vars|   s   z*AzureKeyVaultSettingsSource._load_env_varsfieldr	   
field_namelist[tuple[str, str, bool]]c                   sR   | j rtdd t ||D S | jr"tdd t ||D S t ||S )Nc                 s  s&    | ]}|d  |d  |d fV  qdS )r      Nr   r/   xr   r   r   r1      s   $ zBAzureKeyVaultSettingsSource._extract_field_info.<locals>.<genexpr>c                 s  s.    | ]}|d  |d  dd|d fV  qdS )r   r
   _-re   N)replacerf   r   r   r   r1      s   , )r'   listr\   _extract_field_infor[   )r*   rb   rc   r]   r   r   rl      s
   z/AzureKeyVaultSettingsSource._extract_field_infoc                 C  s   | j j d| jd| jdS )Nz(url=z, env_nested_delimiter=))r^   rH   rM   rY   rB   r   r   r   __repr__   s   z$AzureKeyVaultSettingsSource.__repr__)FNFNNN)rO   rP   rQ   r9   rR   r   rS   r#   r"   rT   r$   r#   rU   r:   rV   r:   rW   rT   r   r   )r   r_   )rb   r	   rc   r9   r   rd   )r   r9   )	rH   rI   rJ   rK   r+   ra   rl   rn   __classcell__r   r   r]   r   rL   ]   s   
 
	rL   )r   r   )__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   r9   r   rL   __all__r   r   r   r   <module>   s&    
54