Ë
    £…j/  ã                   óÞ   — d dl Z d dlmZ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 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  G d„ de«      Z G d„ dee«      Zy)é    N)ÚOptionalÚAnyÚDict)ÚClientAuthenticationErrorÚHttpResponseError)ÚAccessTokenInfo)ÚAsyncRetryPolicy)ÚPipelineResponseé   )ÚCredentialUnavailableError)ÚEnvironmentVariablesé   )ÚAsyncContextManager)ÚGetTokenMixin)ÚAsyncManagedIdentityClient)Úwithin_credential_chain)Ú_get_requestÚ_check_forbidden_responseÚPIPELINE_SETTINGSc                   óX   ‡ — e Zd ZdZdeddfˆ fd„Zdeeef   deeef   de	fˆ fd„Z
ˆ xZS )	ÚAsyncImdsRetryPolicyaX  Async custom retry policy for IMDS credential with extended retry duration for 410 responses.

    This policy ensures that specifically for 410 status codes, the total exponential backoff duration
    is at least 70 seconds to handle temporary IMDS endpoint unavailability.
    For other status codes, it uses the standard retry behavior.
    ÚkwargsÚreturnNc                 ó2   •— d| _         t        ‰| �  di |¤Ž y )Ng      @© )Úbackoff_factor_for_410ÚsuperÚ__init__©Úselfr   Ú	__class__s     €úe/root/aria/tools/markitdown-venv/lib/python3.12/site-packages/azure/identity/aio/_credentials/imds.pyr   zAsyncImdsRetryPolicy.__init__   s   ø€ ð '*ˆÔ#Ü‰ÑÑ"˜6Ó"ó    ÚsettingsÚresponsec                 ó”   •— |j                   j                  dk(  r| j                  |d<   n| j                  |d<   t        ‰| �  ||«      S )Niš  Úbackoff)Úhttp_responseÚstatus_coder   Úbackoff_factorr   Úis_retry)r    r$   r%   r!   s      €r"   r+   zAsyncImdsRetryPolicy.is_retry$   sI   ø€ Ø×!Ñ!×-Ñ-°Ò4Ø"&×"=Ñ"=ˆH�YÒà"&×"5Ñ"5ˆH�YÑÜ‰wÑ ¨(Ó3Ð3r#   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   Ústrr
   Úboolr+   Ú__classcell__©r!   s   @r"   r   r      sN   ø„ ñð# ð #¨õ #ð4  c¨3 h¡ð 4Ð;KÈCÐQTÈHÑ;Uð 4ÐZ^÷ 4ñ 4r#   r   c                   óf   ‡ — e Zd Zdeddfˆ fd„Zd
d„Zdd„Zdededee	   fd„Z
dedede	fd	„Zˆ xZS )ÚImdsCredentialr   r   Nc           	      ó$  •— t         ‰| �  «        |j                  dd «      | _        t        |d<   t        t        fi t        t        fi |¤Ž¤Ž| _	        t        j                  t        j                  v rd| _        nd | _        d|v xs d|v | _        y )NÚ_enable_imds_probeÚretry_policy_classTÚ	client_idÚidentity_config)r   r   Úpopr7   r   r   r   Údictr   Ú_clientr   Ú!AZURE_POD_IDENTITY_AUTHORITY_HOSTÚosÚenvironÚ_endpoint_availableÚ_user_assigned_identityr   s     €r"   r   zImdsCredential.__init__-   s‡   ø€ Ü‰ÑÔð
 #)§*¡*Ð-AÀ4Ó"HˆÔÜ';ˆÐ#Ñ$Ü1´,ÑdÄ$ÔGXÑBcÐ\bÑBcÑdˆŒÜ×AÑAÄRÇZÁZÑOØ7;ˆDÕ$à'+ˆDÔ$Ø'2°fÐ'<Ò'[Ð@QÐU[Ð@[ˆÕ$r#   c              ƒ   óV   K  — | j                   j                  «       ƒ d {  –—†  | S 7 Œ­w©N)r=   Ú
__aenter__©r    s    r"   rE   zImdsCredential.__aenter__<   s&   è ø€ Ø�l‰l×%Ñ%Ó'×'Ð'Øˆð 	(ús   ‚) '¡)c              ƒ   óT   K  — | j                   j                  «       ƒ d {  –—†  y 7 Œ­wrD   )r=   ÚcloserF   s    r"   rH   zImdsCredential.close@   s   è ø€ Ø�l‰l× Ñ Ó"×"Ò"ús   ‚( &¡(Úscopesc              �   óB   K  —  | j                   j                  |i |¤ŽS ­wrD   )r=   Úget_cached_token)r    rI   r   s      r"   Ú_acquire_token_silentlyz&ImdsCredential._acquire_token_silentlyC   s"   è ø€ Ø,ˆt�|‰|×,Ñ,¨fÐ?¸Ñ?Ð?ùs   ‚c              �   ó   K  — | j                   �| j                   nt        j                  «       }|r9| j                  s-	  | j                  j
                  |dddœŽƒ d {  –—†  d| _        	  | j                  j
                  |ddd	iiŽƒ d {  –—† }|S 7 Œ4# t        $ r}t        |«       d| _        Y d }~ŒKd }~wt        $ r}d}t        |¬«      |‚d }~ww xY w7 ŒK# t        $ r ‚ t        $ r…}|j                  d
k(  rDd}| j                  r|dz  }n|dz  }|j                  r|d|j                  › �z  }t        |¬«      |‚t        |«       t        |j                  |j                  ¬«      |‚d }~wt        $ r}d}t        |«      |‚d }~ww xY w­w)Né   r   )Úconnection_timeoutÚretry_totalTzYManagedIdentityCredential authentication unavailable, no response from the IMDS endpoint.)ÚmessageÚheadersÚMetadataÚtruei�  z6ManagedIdentityCredential authentication unavailable. z>The requested identity has not been assigned to this resource.z/No identity has been assigned to this resource.z Error: )rQ   r%   )r7   r   ÚgetrA   r=   Úrequest_tokenr   r   Ú	Exceptionr   r)   rB   rQ   r   r%   )r    rI   r   Údo_probeÚexÚerror_messageÚ
token_infos          r"   Ú_request_tokenzImdsCredential._request_tokenF   s—  è ø€ à.2×.EÑ.EÐ.Q�4×*Ò*ÔWn×WrÑWrÓWtˆÙ˜D×4Ò4ðPØ0�d—l‘l×0Ñ0°&ÈQÐ\]Ò^×^Ð^Ø+/�Ô(ð	DØ9˜tŸ|™|×9Ñ9¸6Ð`ÈJÐX^ÐK_Ñ`×`ˆJð4 ÐðO _ùä$ò 0ä)¨"Ô-Ø+/�×(Ñ(ûÜò Pàoð ô 1¸ÔGÈRÐOûð	Púð aùÜ)ò 	àÜ ò 	^ð �~‰~ Ò$Ø X�Ø×/Ò/Ø!Ð%eÑe‘Mà!Ð%VÑV�Mà—:’:Ø! x°·
±
¨|Ð%<Ñ<�Mä0¸ÔGÈRÐOä% bÔ)ä+°B·J±JÈÏÉÔUÐ[]Ð]ûÜò 	DàwˆMÜ,¨]Ó;ÀÐCûð	Düs‰   ‚;F¾ B ÁBÁB Á+!C ÂCÂC ÂFÂB Â	CÂB5Â0FÂ5CÃCÃCÃFÃC ÃFÃ,B E,Å,FÅ8FÆFÆF)r   r5   )r   N)r,   r-   r.   r   r   rE   rH   r0   r   r   rL   r\   r2   r3   s   @r"   r5   r5   ,   sa   ø„ ð\ ð \¨õ \óó#ð@°Sð @ÀCð @ÈHÐUdÑLeó @ð-¨Cð -¸3ð -À?÷ -r#   r5   )r?   Útypingr   r   r   Úazure.core.exceptionsr   r   Úazure.core.credentialsr   Úazure.core.pipeline.policiesr	   Úazure.core.pipeliner
   Ú r   Ú
_constantsr   Ú	_internalr   Ú_internal.get_token_mixinr   Ú!_internal.managed_identity_clientr   r   Ú_credentials.imdsr   r   r   r   r5   r   r#   r"   ú<module>rh      sR   ðó
 
ß &Ñ &ç NÝ 2Ý 9Ý 0å *Ý .Ý +Ý 5Ý JÝ 0ß [Ñ [ô4Ð+ô 4ô,GÐ(¨-õ Gr#   