o
    i|                     @  s   d Z ddlmZ ddlmZmZ ddlmZ ddl	m
Z
 ddlmZ ddlmZ erCd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dB 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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   o/var/www/html/karishye-ai-python/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   r1   r   r   r   r2   B   s    c                 S  s   i | ]}|  |qS r   )lowerr1   r   r   r   r2   D   r3   )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%   r4   r   r(   r   
get_secretvalueKeyError)r)   r7   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(   keysrA   r   r   r   __iter__Y   s   zAzureKeyVaultMapping.__iter__N)r    r   r!   r"   r#   r"   r   r   )r   r+   )r7   r8   r   r9   )r   r?   )r   rC   )	__name__
__module____qualname____annotations__r*   r'   r>   rB   rF   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 )(AzureKeyVaultSettingsSourcer8   _urlr   _credentialFNsettings_clstype[BaseSettings]url
credentialdash_to_underscorer"   r!   bool | Noner#   
env_prefixr9   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!   rT   env_nested_delimiterenv_ignore_emptyrU   rV   )r   rL   rM   _dash_to_underscorer&   superr*   )
r)   rN   rP   rQ   rR   r!   r#   rT   rU   rV   	__class__r   r   r*   a   s   


z$AzureKeyVaultSettingsSource.__init__Mapping[str, str | None]c                 C  s"   t | j| jd}t|| j| jdS )N)	vault_urlrQ   )r    r!   r#   )r   rL   rM   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   r0      s   $ zBAzureKeyVaultSettingsSource._extract_field_info.<locals>.<genexpr>c                 s  s.    | ]}|d  |d  dd|d fV  qdS )r   r	   _-rd   N)replacere   r   r   r   r0      s   , )r&   listr[   _extract_field_inforZ   )r)   ra   rb   r\   r   r   rk      s
   z/AzureKeyVaultSettingsSource._extract_field_infoc                 C  s   | j j d| jd| jdS )Nz(url=z, env_nested_delimiter=))r]   rG   rL   rX   rA   r   r   r   __repr__   s   z$AzureKeyVaultSettingsSource.__repr__)FNFNNN)rN   rO   rP   r8   rQ   r   rR   r"   r!   rS   r#   r"   rT   r9   rU   r9   rV   rS   r   r   )r   r^   )ra   r   rb   r8   r   rc   )r   r8   )	rG   rH   rI   rJ   r*   r`   rk   rm   __classcell__r   r   r\   r   rK   ]   s   
 
	rK   )r   r   )__doc__
__future__r   _annotationscollections.abcr   r   typingr   pydantic.alias_generatorsr   pydantic.fieldsr   envr
   r   r   r   r   r   r   pydantic_settings.mainr   r   r8   r   rK   __all__r   r   r   r   <module>   s&    
54