o
    R+ 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   u/home/app/PaddleOCR-VL-test/.venv_paddleocr/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]Z_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   r0   r   r   r   r1   B   s    c                 S  s   i | ]}|  |qS r   )lowerr0   r   r   r   r1   D   r2   )r   Zlist_properties_of_secretsr%   r$   )r(   Z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$   r3   r   r'   r   Z
get_secretvalueKeyError)r(   r4   Z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'   keysr<   r   r   r   __iter__Y   s   zAzureKeyVaultMapping.__iter__N)r   r   r    r!   r"   r!   r   r   )r   r*   )r4   r5   r   r6   )r   r:   )r   r>   )	__name__
__module____qualname____annotations__r)   r&   r9   r=   rA   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 )(AzureKeyVaultSettingsSourcer5   _urlr   _credentialFNsettings_clstype[BaseSettings]url
credentialdash_to_underscorer!   r    bool | Noner"   
env_prefixr6   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    rO   env_nested_delimiterZenv_ignore_emptyrP   rQ   )r   rG   rH   _dash_to_underscorer%   superr)   )
r(   rI   rK   rL   rM   r    r"   rO   rP   rQ   	__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)Z	vault_urlrL   )r   r    r"   )r   rG   rH   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   r/      s   $ zBAzureKeyVaultSettingsSource._extract_field_info.<locals>.<genexpr>c                 s  s.    | ]}|d  |d  dd|d fV  qdS )r   r	   _-r]   N)replacer^   r   r   r   r/      s   , )r%   listrU   _extract_field_inforT   )r(   rZ   r[   rV   r   r   rd      s
   z/AzureKeyVaultSettingsSource._extract_field_infoc                 C  s   | j j d| jd| jdS )Nz(url=z, env_nested_delimiter=))rW   rB   rG   rS   r<   r   r   r   __repr__   s   z$AzureKeyVaultSettingsSource.__repr__)FNFNNN)rI   rJ   rK   r5   rL   r   rM   r!   r    rN   r"   r!   rO   r6   rP   r6   rQ   rN   r   r   )r   rX   )rZ   r   r[   r5   r   r\   )r   r5   )	rB   rC   rD   rE   r)   rY   rd   rf   __classcell__r   r   rV   r   rF   ]   s   
 
	rF   )r   r   )__doc__
__future__r   Z_annotationscollections.abcr   r   typingr   Zpydantic.alias_generatorsr   Zpydantic.fieldsr   envr
   r   r   r   r   r   r   Zpydantic_settings.mainr   r   r5   r   rF   __all__r   r   r   r   <module>   s&    
54