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 er9d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   )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   }/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/pydantic_settings/sources/providers/azure.pyimport_azure_key_vault   s   r   c                   @  sN   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S )AzureKeyVaultMappingzdict[str, str | None]_loaded_secretsr   _secret_clientz	list[str]_secret_namessecret_clientr   r   c                 C  s&   i | _ || _dd | j D | _d S )Nc                 S  s   g | ]}|j r|jr|j qS r   )nameenabled).0secretr   r   r   
<listcomp>0   s    z1AzureKeyVaultMapping.__init__.<locals>.<listcomp>)r   r   list_properties_of_secretsr   selfr   r   r   r   __init__*   s
   zAzureKeyVaultMapping.__init__keystr
str | Nonec                 C  sN   || j vr"|| jv r"z| j|j| j |< W n ty!   t|w | j | S N)r   r   r   
get_secretvalue	ExceptionKeyError)r&   r(   r   r   r   __getitem__4   s   
z AzureKeyVaultMapping.__getitem__intc                 C  
   t | jS r+   )lenr   r&   r   r   r   __len__=      
zAzureKeyVaultMapping.__len__Iterator[str]c                 C  r2   r+   )iterr   r4   r   r   r   __iter__@   r6   zAzureKeyVaultMapping.__iter__N)r   r   r   r   )r(   r)   r   r*   )r   r1   )r   r7   )__name__
__module____qualname____annotations__r'   r0   r5   r9   r   r   r   r   r   %   s   
 



	r   c                      sL   e Zd ZU ded< ded< 			dd fddZdddZdddZ  ZS )AzureKeyVaultSettingsSourcer)   _urlr
   _credentialNsettings_clstype[BaseSettings]url
credential
env_prefixr*   env_parse_none_strenv_parse_enumsbool | Noner   r   c              	     s0   t   || _|| _t j|d|dd||d d S )NTz--F)case_sensitiverE   env_nested_delimiterenv_ignore_emptyrF   rG   )r   r?   r@   superr'   )r&   rA   rC   rD   rE   rF   rG   	__class__r   r   r'   H   s   	
z$AzureKeyVaultSettingsSource.__init__Mapping[str, Optional[str]]c                 C  s   t | j| jd}t|S )N)	vault_urlrD   )r   r?   r@   r   r%   r   r   r   _load_env_vars^   s   z*AzureKeyVaultSettingsSource._load_env_varsc                 C  s   | j j d| jd| jdS )Nz(url=z, env_nested_delimiter=))rN   r:   r?   rJ   r4   r   r   r   __repr__b   s   z$AzureKeyVaultSettingsSource.__repr__)NNN)rA   rB   rC   r)   rD   r
   rE   r*   rF   r*   rG   rH   r   r   )r   rO   )r   r)   )r:   r;   r<   r=   r'   rQ   rS   __classcell__r   r   rM   r   r>   D   s   
 
r>   )r   r   )__doc__
__future__r   _annotationscollections.abcr   r   typingr   r   envr   r   r
   r   r   r   r   pydantic_settings.mainr   r   r)   r   r>   __all__r   r   r   r   <module>   s"    
"