Ë
    rPêjw&  ã                  óJ  — d Z ddlmZ ddlmZmZmZ ddlm	Z	m
Z
mZmZ ddlmZ ddlmZ ddlmZ ddlmZ dd	lmZ d
dlmZ ddlmZmZmZmZmZ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)dd„Z* G d„ dee+e+dz  f   «      Z, G d„ de «      Z-ddgZ.y)z Azure Key Vault settings source.é    )Úannotations)ÚIterableÚIteratorÚMapping)ÚTYPE_CHECKINGÚAnyÚget_argsÚ
get_origin)Úis_model_class)Úto_snake)Úis_pydantic_dataclass)Ú	FieldInfo)Úis_union_originé   )Ú_lenient_issubclassé   )Ú	InitStateÚ_get_model_configÚ_get_model_fieldsÚ_parse_env_none_strÚ_resolve_type_aliasÚ_strip_annotatedé   )Ú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    ún/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/pydantic_settings/sources/providers/azure.pyÚimport_azure_key_vaultr)   %   s3   € ð
Ý:Ý?Þ7øÜò ÜØró
àð	ûðús   ‚ •	/ž*ª/c                óJ  — t        t        | «      «      } t        | «      }t        |«      rt	        | «      D ]  }t        |||«       Œ yt        |t        «      r#t	        | «      x}r|j                  |d   «       yyt        | «      st        | «      r|j                  | «       yy)zWCollect the models and dict value types that nested keys of `annotation` can belong to.éÿÿÿÿN)r   r   r
   r   r	   Ú_collect_nested_typesr   ÚdictÚappendr   r   )Ú
annotationÚmodelsÚdict_value_typesÚoriginÚargÚargss         r(   r,   r,   4   sš   € ä!Ô"5°jÓ"AÓB€JÜ˜
Ó#€FÜ�vÔÜ˜JÓ'ò 	AˆCÜ! # vÐ/?Õ@ñ	Aä	˜V¤TÔ	*ä˜JÓ'Ð'ˆ4Ð'Ø×#Ñ# D¨¡HÕ-ð (ä	˜
Ô	#Ô'<¸ZÔ'HØ�‰�jÕ!ð (Ió    c                  ón   — e Zd ZU ded<   ded<   ded<   	 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_namesNc                óŠ   — i | _         || _        || _        || _        |xs d| _        || _        | j                  «       | _        y )NÚ )r8   r9   Ú_case_sensitiveÚ_snake_case_conversionÚ_env_prefixÚ_env_parse_none_strÚ_load_remoteÚ_secret_map)ÚselfÚsecret_clientÚcase_sensitiveÚsnake_case_conversionÚ
env_prefixÚenv_parse_none_strs         r(   Ú__init__zAzureKeyVaultMapping.__init__H   sJ   € ð  "ˆÔØ+ˆÔØ-ˆÔØ&;ˆÔ#Ø%Ò+¨ˆÔØ#5ˆÔ Ø+/×+<Ñ+<Ó+>ˆÕr5   c           
     ó¶  — d„ | j                   j                  «       D «       }| j                  rgi }|D ]^  }|j                  | j                  «      r3||| j                  › t        |t        | j                  «      d  «      › �<   ŒQ||t        |«      <   Œ` |S | 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©N)ÚnameÚenabled)Ú.0Úsecrets     r(   ú	<genexpr>z4AzureKeyVaultMapping._load_remote.<locals>.<genexpr>Y   s+   è ø€ ò '
Ø"ÐZ`×ZeÓZeÐjp×jxÓjxˆF�K�Kñ'
ùs   ‚2”2¡2)	r9   Úlist_properties_of_secretsr>   Ú
startswithr?   r   Úlenr=   Úlower)rC   Úsecret_namesÚname_maprM   s       r(   rA   z!AzureKeyVaultMapping._load_remoteX   sÛ   € ñ'
Ø&*×&9Ñ&9×&TÑ&TÓ&Vô'
ˆð ×&Ò&Ø')ˆHØ$ò 4�Ø—?‘? 4×#3Ñ#3Ô4Ø_c�H × 0Ñ 0Ð1´(¸4ÄÀD×DTÑDTÓ@UÐ@WÐ;XÓ2YÐ1ZÐ[Ò\à/3�HœX d›^Ò,ð	4ð
 ˆOà×ÒØ+7Ö8 4�D˜$‘JÒ8Ð8à/;Ö< t�—
‘
“˜dÑ"Ò<Ð<ùò 9ùâ<s   Â%
CÂ6Cc                ó  — |}| j                   rW|j                  | j                  «      r0| j                  › t        |t	        | j                  «      d  «      › �}n(t        |«      }n| j
                  s|j                  «       }|| j                  vrY|| j                  v r@| j                  j                  | j                  |   «      j                  | j                  |<   nt        |«      ‚t        | j                  |   | j                  «      S rL   )r>   rS   r?   r   rT   r=   rU   r8   rB   r9   Ú
get_secretÚvalueÚKeyErrorr   r@   )rC   ÚkeyÚnew_keys      r(   Ú__getitem__z AzureKeyVaultMapping.__getitem__k   sä   € Øˆà×&Ò&Ø�~‰~˜d×.Ñ.Ô/Ø!×-Ñ-Ð.¬x¸¼CÀ×@PÑ@PÓ<QÐ<SÐ8TÓ/UÐ.VÐW‘ä" 3›-‘à×%Ò%Ø—i‘i“kˆGà˜$×.Ñ.Ñ.Ø˜$×*Ñ*Ñ*Ø04×0CÑ0C×0NÑ0NÈt×O_ÑO_Ð`gÑOhÓ0i×0oÑ0o�×$Ñ$ WÒ-ä˜s“mÐ#ä" 4×#7Ñ#7¸Ñ#@À$×BZÑBZÓ[Ð[r5   c                ó,   — t        | j                  «      S rL   )rT   rB   ©rC   s    r(   Ú__len__zAzureKeyVaultMapping.__len__   s   € Ü�4×#Ñ#Ó$Ð$r5   c                óH   — t        | j                  j                  «       «      S rL   )ÚiterrB   Úkeysr`   s    r(   Ú__iter__zAzureKeyVaultMapping.__iter__‚   s   € Ü�D×$Ñ$×)Ñ)Ó+Ó,Ð,r5   rL   )rD   r    rE   ÚboolrF   rf   rG   ú
str | NonerH   rg   ÚreturnÚNone)rh   zdict[str, str])r\   Ústrrh   rg   )rh   Úint)rh   zIterator[str])	Ú__name__Ú
__module__Ú__qualname__Ú__annotations__rI   rA   r^   ra   re   © r5   r(   r7   r7   C   sm   … Ø*Ó*Ø Ó ØÓð *.ð?à#ð?ð ð?ð  $ð	?ð
 ð?ð 'ð?ð 
ó?ó =ó&\ó(%ô-r5   r7   c                  óº   ‡ — e Zd ZU ded<   ded<   	 	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dˆ fd„Zdd„Z	 d	 	 	 	 	 	 	 dˆ fd„Zdˆ fd„Zdd	„Zdd
„Z	dd„Z
ˆ xZS )ÚAzureKeyVaultSettingsSourcerj   Ú_urlr   Ú_credentialc           
     ó�   •— t        «        || _        || _        || _        || _        t
        ‰| �  ||rdn|||rdndd||	|
¬«       y )NTÚ__z--F)rE   rG   Úenv_nested_delimiterÚenv_ignore_emptyrH   Úenv_parse_enumsÚ_init_state)r)   rs   rt   Ú_dash_to_underscorer>   ÚsuperrI   )rC   Úsettings_clsÚurlÚ
credentialÚdash_to_underscorerE   rF   rG   rH   ry   rz   Ú	__class__s              €r(   rI   z$AzureKeyVaultSettingsSource.__init__Š   s\   ø€ ô 	Ô ØˆŒ	Ø%ˆÔØ#5ˆÔ Ø&;ˆÔ#Ü‰ÑØÙ#8™4¸nØ!Ù)>¡ÀDØ"Ø1Ø+Ø#ð 	õ 		
r5   c                ó´   — t        | j                  | j                  ¬«      }t        || j                  | j
                  | j                  | j                  ¬«      S )N)Ú	vault_urlr   )rD   rE   rF   rG   rH   )r    rs   rt   r7   rE   r>   rG   rH   )rC   rD   s     r(   Ú_load_env_varsz*AzureKeyVaultSettingsSource._load_env_vars§   sJ   € Ü$¨t¯y©yÀT×EUÑEUÔVˆÜ#Ø'Ø×.Ñ.Ø"&×"=Ñ"=Ø—‘Ø#×6Ñ6ô
ð 	
r5   c           
     ó¾   •— t         ‰| �  |||«      }| j                  r7| j                  s+|D ���cg c]  \  }}}||j	                  dd«      |f‘Œ c}}}S |S c c}}}w )NÚ_ú-)r|   Ú_extract_field_infor{   r>   Úreplace)	rC   ÚfieldÚ
field_nameÚmodel_configÚ
field_infoÚ	field_keyÚenv_nameÚ
is_complexr�   s	           €r(   rˆ   z/AzureKeyVaultSettingsSource._extract_field_info±   so   ø€ ô ‘WÑ0°¸
ÀLÓQˆ
Ø×#Ò#¨D×,GÒ,Gàku÷ð ÙHgÈ	ÐS[Ð]g�˜H×,Ñ,¨S°#Ó6¸
ÒCôð ð Ðùôs   ± Ac                ó”   •— t         ‰| �  |||«      }| j                  r)| j                  s| j	                  ||j
                  g«       |S rL   )r|   Úexplode_env_varsr{   r>   Ú_translate_nested_keysr/   )rC   r‹   rŠ   Úenv_varsÚvaluesr�   s        €r(   r’   z,AzureKeyVaultSettingsSource.explode_env_vars»   sE   ø€ Ü‘Ñ)¨*°e¸XÓFˆØ×#Ò#¨D×,GÒ,GØ×'Ñ'¨°×1AÑ1AÐ0BÔCØˆr5   c                ó”  — g }g }|D ]  }t        |||«       Œ | j                  |«      }|j                  «       D ���	ch c]  }|D ]  \  }}	|’Œ	 Œ }
}}}	i }|j                  «       D ]s  \  }}||vrŒ||   }|D ]W  \  }}|j	                  ||«       t        |t        «      sŒ)|j	                  t        |«      |g f«      d   j                  |«       ŒY ||
vsŒq||= Œu |j                  «       D ]  \  }}| j                  ||«       Œ |r9|j                  «       D ]%  }t        |t        «      sŒ| j                  ||«       Œ' yyc c}	}}w )zµRename the kebab-case keys of `values` to the keys of the nested model fields they belong to.

        The parent prefix has already been removed from the keys in `values`.
        r   N)
r,   Ú_nested_field_targetsr•   ÚitemsÚ
setdefaultÚ
isinstancer-   Úidr.   r“   )rC   r•   r   r0   r1   r/   ÚtargetsÚfield_targetsrŽ   r†   Ú
field_keysÚnestedr�   rZ   Úfield_annotationss                  r(   r“   z2AzureKeyVaultSettingsSource._translate_nested_keysÁ   s�  € ð
 ˆØ&(ÐØ%ò 	HˆJÜ! *¨fÐ6FÕGð	Hð ×,Ñ,¨VÓ4ˆØ5<·^±^Ó5E×hÐh MÐZgÒhÉ,È)ÐUV’iÐh�iÐhˆ
Òhð ?AˆØ'.§}¡}£ò 
	%Ñ#ˆH�mØ˜vÑ%ØØ˜8Ñ$ˆEØ)6ò TÑ%�	˜:Ø×!Ñ! )¨UÔ3Ü˜e¤TÕ*Ø×%Ñ%¤b¨£i°%¸°Ó=¸aÑ@×GÑGÈ
ÕSðTð
 ˜zÒ)Ø˜8Ñ$ð
	%ð )/¯©«ò 	BÑ$ˆEÐ$Ø×'Ñ'¨Ð/@ÕAð	Bñ ØŸ™›ò I�Ü˜e¤TÕ*Ø×/Ñ/°Ð7GÕHñIð ùô' is   ¾Ec                óD  — i }|D ]˜  }t        |«      }t        |«      j                  «       D ]o  \  }}| j                  |||«      D ]T  \  }}}| j	                  |«      j                  dd«      }	|j                  |	g «      j                  ||j                  f«       ŒV Œq Œš |S )zÇMap the dashed secret name segment of each field of `models` to its field keys and annotations.

        A dashed name may belong to several fields, e.g. the same field in two union members.
        r†   r‡   )	r   r   r˜   rˆ   Ú_apply_case_sensitiver‰   r™   r.   r/   )
rC   r0   rœ   ÚmodelÚconfigr‹   rŠ   rŽ   r†   r�   s
             r(   r—   z1AzureKeyVaultSettingsSource._nested_field_targetsä   sº   € ð
 57ˆØò 	[ˆEÜ& uÓ-ˆFÜ%6°uÓ%=×%CÑ%CÓ%Eò [Ñ!�
˜EØ'+×'?Ñ'?ÀÀzÐSYÓ'Zò [‘O�I˜q !Ø#×9Ñ9¸)ÓD×LÑLÈSÐRUÓV�HØ×&Ñ& x°Ó4×;Ñ;¸YÈ×HXÑHXÐ<YÕZñ[ñ[ð	[ð ˆr5   c                óh   — | j                   j                  › d| j                  ›d| j                  ›d�S )Nz(url=z, env_nested_delimiter=ú))r�   rl   rs   rw   r`   s    r(   Ú__repr__z$AzureKeyVaultSettingsSource.__repr__ò   s4   € Ø—.‘.×)Ñ)Ð*¨%°·	±	¨}Ð<SÐTX×TmÑTmÐSpÐpqÐrÐrr5   )FNFNNNN)r}   ztype[BaseSettings]r~   rj   r   r   r€   rf   rE   úbool | NonerF   rf   rG   rg   rH   rg   ry   r¨   rz   zInitState | Nonerh   ri   )rh   úMapping[str, str | None]rL   )rŠ   r   r‹   rj   rŒ   zMapping[str, Any] | Nonerh   zlist[tuple[str, str, bool]])r‹   rj   rŠ   r   r”   r©   rh   údict[str, Any])r•   rª   r   zIterable[Any]rh   ri   )r0   ú	list[Any]rh   z dict[str, list[tuple[str, Any]]])rh   rj   )rl   rm   rn   ro   rI   r„   rˆ   r’   r“   r—   r§   Ú__classcell__)r�   s   @r(   rr   rr   †   sÞ   ø… Ø
ƒIØ Ó ð $)Ø&*Ø&+Ø!%Ø)-Ø'+Ø(,ð
à(ð
ð ð
ð $ð	
ð
 !ð
ð $ð
ð  $ð
ð ð
ð 'ð
ð %ð
ð &ð
ð 
õ
ó:
ð [_ðØðØ,/ðØ?Wðà	$õõó!IóF÷sr5   rr   )rh   ri   )r/   r   r0   r«   r1   r«   rh   ri   )/Ú__doc__Ú
__future__r   Ú_annotationsÚcollections.abcr   r   r   Útypingr   r   r	   r
   Úpydantic._internal._utilsr   Úpydantic.alias_generatorsr   Úpydantic.dataclassesr   Úpydantic.fieldsr   Útyping_inspection.introspectionr   Úutilsr   r   r   r   r   r   r   Úenvr   r#   r   r$   r   r%   r    Úpydantic_settings.mainr!   r)   r,   rj   r7   rr   Ú__all__rp   r5   r(   ú<module>r»      sœ   ðÙ &å 2ç 7Ñ 7ß ;Ó ;å 4Ý .Ý 6Ý %Ý ;å (÷÷ õ #áÝ6Ý;Ý3æ3à€OØ ÐØ€Lóó"ô@-˜7 3¨¨d©
 ?Ñ3ô @-ôFmsÐ"3ô msð` "Ð#@Ð
A�r5   