Ë
    qPêj7  ã                   óN  — d dl Z d dlZd dlZd dlZd dlmZmZ d dlmZ d dl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 d d	lmZmZmZmZmZ  ej:                  e«      Zd
„ Z d„ Z!d„ Z"d„ Z# G d„ de«      Z$ G d„ d«      Z% G d„ d«      Z& G d„ d«      Z' G d„ d«      Z(y)é    N)ÚdatetimeÚ	timedelta)Ú
NamedTuple)Útzutc)ÚUNSIGNED)Útotal_seconds)ÚConfig)ÚClientErrorÚInvalidConfigErrorÚTokenRetrievalErrorÚUnknownTokenProviderError)ÚCachedPropertyÚJSONFileCacheÚSSOTokenLoaderÚcreate_nested_clientÚget_token_from_environmentc                  ó<   — t        j                  t        «       «      S ©N)r   Únowr   © ó    úT/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/botocore/tokens.pyÚ_utc_nowr   +   s   € Ü�<‰<œ›Ó Ð r   c                 óF   — t        | «      t        | «      g}t        |¬«      S )N)Ú	providers)ÚScopedEnvTokenProviderÚSSOTokenProviderÚTokenProviderChain)Úsessionr   s     r   Úcreate_token_resolverr    /   s&   € ä˜wÓ'Ü˜Ó!ð€Iô ¨	Ô2Ð2r   c                 óH   — t        | t        «      r| j                  d«      S | S )Nz%Y-%m-%dT%H:%M:%SZ)Ú
isinstancer   Ústrftime©Úobjs    r   Ú_serialize_utc_timestampr&   7   s!   € Ü�#”xÔ Ø�|‰|Ð0Ó1Ð1Ø€Jr   c                 ó8   — t        j                  | t        ¬«      S )N)Údefault)ÚjsonÚdumpsr&   r$   s    r   Ú_sso_json_dumpsr+   =   s   € Ü�:‰:�cÔ#;Ô<Ð<r   c                   ó,   — e Zd ZU eed<   dZedz  ed<   y)ÚFrozenAuthTokenÚtokenNÚ
expiration)Ú__name__Ú
__module__Ú__qualname__ÚstrÚ__annotations__r/   r   r   r   r   r-   r-   A   s   … ØƒJØ"&€J�˜4‘Ô&r   r-   c                   ó@   — e Zd ZdZdZdZefd„Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zy
)ÚDeferredRefreshableTokené„  iX  é<   c                 ó|   — || _         || _        || _        t        j                  «       | _        d | _        d | _        y r   )Ú_time_fetcherÚ_refresh_usingÚmethodÚ	threadingÚLockÚ_refresh_lockÚ_frozen_tokenÚ_next_refresh)Úselfr<   Úrefresh_usingÚtime_fetchers       r   Ú__init__z!DeferredRefreshableToken.__init__O   s:   € Ø)ˆÔØ+ˆÔØˆŒô 'Ÿ^™^Ó-ˆÔØ!ˆÔØ!ˆÕr   c                 ó:   — | j                  «        | j                  S r   )Ú_refreshr@   ©rB   s    r   Úget_frozen_tokenz)DeferredRefreshableToken.get_frozen_tokenY   s   € Ø�‰ŒØ×!Ñ!Ð!r   c                 ó   — | j                  «       }|sy |dk(  }| j                  j                  |«      r,	 | j                  «        | j                  j	                  «        y y # | j                  j	                  «        w xY w)NÚ	mandatory)Ú_should_refreshr?   ÚacquireÚ_protected_refreshÚrelease)rB   Úrefresh_typeÚblock_for_refreshs      r   rG   z!DeferredRefreshableToken._refresh]   sv   € à×+Ñ+Ó-ˆÙØð )¨KÑ7ÐØ×Ñ×%Ñ%Ð&7Ô8ð-Ø×'Ñ'Ô)à×"Ñ"×*Ñ*Õ,ð	 9øð ×"Ñ"×*Ñ*Õ,ús   µA! Á!A=c                 óZ  — | j                  «       }|sy 	 | j                  «       }|t        | j                  ¬«      z   | _        | j                  «       | _        | j                  «       rt        | j                  d¬«      ‚y # t        $ r! t        j                  d|d¬«       |dk(  r‚ Y ŒQw xY w)N©Úsecondsz5Refreshing token failed during the %s refresh period.T©Úexc_inforK   z$Token has expired and refresh failed)ÚproviderÚ	error_msg)rL   r:   r   Ú_attempt_timeoutrA   r;   r@   Ú	ExceptionÚloggerÚwarningÚ_is_expiredr   r<   )rB   rP   r   s      r   rN   z+DeferredRefreshableToken._protected_refreshk   s»   € ð ×+Ñ+Ó-ˆÙØð	Ø×$Ñ$Ó&ˆCØ!$¤y¸×9NÑ9NÔ'OÑ!OˆDÔØ!%×!4Ñ!4Ó!6ˆDÔð ×ÑÔä%ØŸ™Ø@ôð ð øô ò 	Ü�N‰NØGØØð ô ð
 ˜{Ò*àñ +ð	ús   •AB  Â 'B*Â)B*c                 óŠ   — | j                   €y| j                   j                  }t        || j                  «       z
  «      }|dk  S )NFr   )r@   r/   r   r:   )rB   r/   Ú	remainings      r   r]   z$DeferredRefreshableToken._is_expired‡   sD   € Ø×ÑÐ%Øà×'Ñ'×2Ñ2ˆ
Ü! *¨t×/AÑ/AÓ/CÑ"CÓDˆ	Ø˜A‰~Ðr   c                 óì   — | j                   €y| j                   j                  }|€y | j                  «       }|| j                  k  ry t	        ||z
  «      }|| j
                  k  ry|| j                  k  ryy )NrK   Úadvisory)r@   r/   r:   rA   r   Ú_mandatory_refresh_timeoutÚ_advisory_refresh_timeout)rB   r/   r   r_   s       r   rL   z(DeferredRefreshableToken._should_refresh�   s~   € Ø×ÑÐ%àà×'Ñ'×2Ñ2ˆ
ØÐàà× Ñ Ó"ˆØ�×#Ñ#Ò#Øä! *¨sÑ"2Ó3ˆ	à�t×6Ñ6Ò6ØØ˜×7Ñ7Ò7Øàr   N)r0   r1   r2   rc   rb   rY   r   rE   rI   rG   rN   r]   rL   r   r   r   r6   r6   F   s7   „ ð !(Ðà!(ÐàÐà;Có "ò"ò-òò8ór   r6   c                   ó8   — e Zd Zd	d„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	y)
r   Nc                 ó   — |€g }|| _         y r   )Ú
_providers)rB   r   s     r   rE   zTokenProviderChain.__init__¨   s   € ØÐØˆIØ#ˆ�r   c                 ó^   — | j                  |«      }| j                  j                  ||«       y)aÛ  Insert a token provider before an existing provider in the chain.

        :param name: The name of the token provider to insert before
            (e.g. ``env`` or ``sso``). Existing names can be discovered
            by accessing provider ``METHOD`` attributes.
        :type name: str

        :param token_provider: The token provider instance to insert.

        :raises UnknownTokenProviderError: If no provider named
            ``name`` exists in the chain.
        N©Ú_get_provider_offsetrf   Úinsert©rB   ÚnameÚtoken_providerÚoffsets       r   Úinsert_beforez TokenProviderChain.insert_before­   s(   € ð ×*Ñ*¨4Ó0ˆØ�‰×Ñ˜v ~Õ6r   c                 ód   — | j                  |«      }| j                  j                  |dz   |«       y)aÙ  Insert a token provider after an existing provider in the chain.

        :param name: The name of the token provider to insert after
            (e.g. ``env`` or ``sso``). Existing names can be discovered
            by accessing provider ``METHOD`` attributes.
        :type name: str

        :param token_provider: The token provider instance to insert.

        :raises UnknownTokenProviderError: If no provider named
            ``name`` exists in the chain.
        é   Nrh   rk   s       r   Úinsert_afterzTokenProviderChain.insert_after½   s,   € ð ×*Ñ*¨4Ó0ˆØ�‰×Ñ˜v¨™z¨>Õ:r   c                 ó¶   — | j                   D �cg c]  }|j                  ‘Œ }}||vry|j                  |«      }| j                   j                  |«       yc c}w )zÕRemove a token provider from the chain by name.

        If no provider with the given name exists, this is a no-op.

        :param name: The name of the token provider to remove.
        :type name: str
        N)rf   ÚMETHODÚindexÚpop)rB   rl   ÚpÚavailable_methodsrn   s        r   ÚremovezTokenProviderChain.removeÍ   sT   € ð 04¯©Ö?¨!˜QŸX›XÐ?ÐÐ?ØÐ(Ñ(Øà"×(Ñ(¨Ó.ˆØ�‰×Ñ˜FÕ#ùò @s   �Ac                 ó>   — | j                   | j                  |«         S )zèReturn a token provider by name.

        :param name: The name of the provider to retrieve.
        :type name: str

        :raises UnknownTokenProviderError: If no provider named
            ``name`` exists in the chain.
        )rf   ri   )rB   rl   s     r   Úget_providerzTokenProviderChain.get_providerÜ   s   € ð �‰˜t×8Ñ8¸Ó>Ñ?Ð?r   c                 ó¦   — 	 | j                   D �cg c]  }|j                  ‘Œ c}j                  |«      S c c}w # t        $ r t	        |¬«      ‚w xY w)N)rl   )rf   rt   ru   Ú
ValueErrorr   )rB   rl   rw   s      r   ri   z'TokenProviderChain._get_provider_offsetç   sH   € ð	7Ø&*§o¡oÖ6 �A—H“HÒ6×<Ñ<¸TÓBÐBùÒ6øÜò 	7Ü+°Ô6Ð6ð	7ús   ‚: �5£: µ: ºAc                 óV   — | j                   D ]  } |j                  di |¤Ž}|€Œ|c S  y )Nr   )rf   Ú
load_token)rB   ÚkwargsrW   r.   s       r   r   zTokenProviderChain.load_tokení   s:   € ØŸ™ò 	ˆHØ'�H×'Ñ'Ñ1¨&Ñ1ˆEØÑ Ø’ð	ð r   r   )
r0   r1   r2   rE   ro   rr   ry   r{   ri   r   r   r   r   r   r   §   s&   „ ó$ò
7ò ;ò $ò	@ò7ór   r   c                   óÞ   — e Zd ZdZdZej                  j                  ej                  j                  dddd«      «      Z	ddgZ
dZeZd	ed	fd
„Zd„ Zed„ «       Zed„ «       Zd„ Zd„ Zd„ Zd„ Zy	)r   Ússor7   ú~z.awsÚcacheÚsso_start_urlÚ
sso_regionÚrefresh_tokenNc                 óú   — || _         |€!| j                  | j                  t        ¬«      }|| _        || _        t        | j
                  ¬«      | _        |xs | j                   j                  d«      xs d| _	        y )N)Ú
dumps_func)r„   Úprofiler(   )
Ú_sessionÚDEFAULT_CACHE_CLSÚ_SSO_TOKEN_CACHE_DIRr+   Ú_nowÚ_cacher   Ú_token_loaderÚget_config_variableÚ_profile_name)rB   r   r„   rD   Úprofile_names        r   rE   zSSOTokenProvider.__init__  s|   € ð  ˆŒØˆ=Ø×*Ñ*Ø×)Ñ)Ü*ð +ó ˆEð !ˆŒ	ØˆŒÜ+°$·+±+Ô>ˆÔàò Ø�}‰}×0Ñ0°Ó;òàð 	Õr   c                 óÔ  — | j                   j                  }|j                  di «      }|j                  di «      }|j                  | j                  i «      }d|vry |d   }|j                  |d «      }|sd| j                  › d|› d�}t	        |¬«      ‚g }| j
                  D ]  }	|	|vsŒ|j                  |	«       Œ |rd| j                  › d|› d	�}t	        |¬«      ‚||d
   |d   dœS )NÚprofilesÚsso_sessionsÚsso_sessionzThe profile "z7" is configured to use the SSO token provider but the "z+" sso_session configuration does not exist.)rX   zZ" is configured to use the SSO token provider but is missing the following configuration: ú.r†   r…   )Úsession_namer†   r…   )r‹   Úfull_configÚgetr’   r   Ú_SSO_CONFIG_VARSÚappend)
rB   Úloaded_configr•   r–   Úprofile_configÚsso_session_nameÚ
sso_configrX   Úmissing_configsÚvars
             r   Ú_load_sso_configz!SSOTokenProvider._load_sso_config  s3  € ØŸ™×1Ñ1ˆØ ×$Ñ$ Z°Ó4ˆØ$×(Ñ(¨¸Ó<ˆØ!Ÿ™ d×&8Ñ&8¸"Ó=ˆà Ñ.Øà)¨-Ñ8ÐØ!×%Ñ%Ð&6¸Ó=ˆ
áà × 2Ñ 2Ð3ð 4+Ø+;Ð*<ð =0ð1ð ô
 %¨yÔ9Ð9àˆØ×(Ñ(ò 	,ˆCØ˜*Ò$Ø×&Ñ& sÕ+ð	,ñ à × 2Ñ 2Ð3ð 4Nà"Ð# 1ð&ð ô
 %¨yÔ9Ð9ð -Ø$ \Ñ2Ø'¨Ñ8ñ
ð 	
r   c                 ó"   — | j                  «       S r   )r¤   rH   s    r   Ú_sso_configzSSOTokenProvider._sso_config;  s   € à×$Ñ$Ó&Ð&r   c                 ón   — t        | j                  d   t        ¬«      }t        | j                  d|¬«      S )Nr†   )Úregion_nameÚsignature_versionzsso-oidc)Úconfig)r	   r¦   r   r   r‹   )rB   rª   s     r   Ú_clientzSSOTokenProvider._client?  s2   € äØ×(Ñ(¨Ñ6Ü&ô
ˆô $ D§M¡M°:ÀfÔMÐMr   c                 óL  — | j                   j                  | j                  |d   |d   |d   ¬«      }t        |d   ¬«      }| j                  d   | j                  d   |d	   | j                  «       |z   |d   |d   |d
   dœ}d|v r|d   |d<   t        j                  d«       |S )NÚclientIdÚclientSecretÚrefreshToken)Ú	grantTyper­   r®   r¯   Ú	expiresInrS   r…   r†   ÚaccessTokenÚregistrationExpiresAt)ÚstartUrlÚregionr²   Ú	expiresAtr­   r®   r³   zSSO Token refresh succeeded)r«   Úcreate_tokenÚ_GRANT_TYPEr   r¦   rŽ   r[   Úinfo)rB   r.   ÚresponseÚ
expires_inÚ	new_tokens        r   Ú_attempt_create_tokenz&SSOTokenProvider._attempt_create_tokenG  sË   € Ø—<‘<×,Ñ,Ø×&Ñ&Ø˜:Ñ&Ø˜~Ñ.Ø˜~Ñ.ð	 -ó 
ˆô  x°Ñ'<Ô=ˆ
à×(Ñ(¨Ñ9Ø×&Ñ& |Ñ4Ø# MÑ2ØŸ™› zÑ1à˜jÑ)Ø! .Ñ1Ø%*Ð+BÑ%Cñ	
ˆ	ð ˜XÑ%Ø(0°Ñ(@ˆI�nÑ%Ü�‰Ð1Ô2ØÐr   c                 ó’  — d}|D �cg c]	  }||vsŒ|‘Œ }}|rd|› �}t         j                  |«       y t        j                  j	                  |d   «      }t        || j                  «       z
  «      dk  rt         j                  d|«       y 	 | j                  |«      S c c}w # t        $ r t         j                  dd¬«       Y y w xY w)	N)r¯   r­   r®   r³   z+Unable to refresh SSO token: missing keys: r³   r   z$SSO token registration expired at %sz SSO token refresh attempt failedTrU   )
r[   r¹   ÚdateutilÚparserÚparser   rŽ   r½   r
   r\   )rB   r.   ÚkeysÚkÚmissing_keysÚmsgÚexpirys          r   Ú_refresh_access_tokenz&SSOTokenProvider._refresh_access_token^  sÆ   € ð
ˆð $(Ö:˜a¨1°Eª>šÐ:ˆÐ:ÙØ?À¸~ÐNˆCÜ�K‰K˜ÔØä—‘×&Ñ& uÐ-DÑ'EÓFˆÜ˜ $§)¡)£+Ñ-Ó.°!Ò3Ü�K‰KÐ>ÀÔGØð	Ø×-Ñ-¨eÓ4Ð4ùò ;øô ò 	Ü�N‰NÐ=ÈˆNÔMÙð	ús   ‡	B‘BÂB# Â# CÃCc                 óæ  — | j                   d   }| j                   d   }t        j                  d|«       | j                  ||¬«      }t        j
                  j                  |d   «      }t        j                  d|«       t        || j                  «       z
  «      }|| j                  k  r8| j                  |«      }|�%|}|d   }| j                  j                  |||¬«       t        |d   |¬«      S )	Nr…   r™   zLoading cached SSO token for %s)r™   r¶   zCached SSO token expires at %sr²   )r/   )r¦   r[   r¹   r�   r¿   rÀ   rÁ   Údebugr   rŽ   Ú_REFRESH_WINDOWrÇ   Ú
save_tokenr-   )rB   Ú	start_urlr™   Ú
token_dictr/   r_   Únew_token_dicts          r   Ú
_refresherzSSOTokenProvider._refresherv  sï   € Ø×$Ñ$ _Ñ5ˆ	Ø×'Ñ'¨Ñ7ˆÜ�‰Ð5°|ÔDØ×'Ñ'¨	ÀÐ'ÓMˆ
Ü—_‘_×*Ñ*¨:°kÑ+BÓCˆ
Ü�‰Ð5°zÔBä! *¨t¯y©y«{Ñ":Ó;ˆ	Ø�t×+Ñ+Ò+Ø!×7Ñ7¸
ÓCˆNØÐ)Ø+�
Ø'¨Ñ4�
Ø×"Ñ"×-Ñ-Ø˜z¸ð .ô ô Ø�}Ñ%°*ô
ð 	
r   c                 ót   — | j                   €y t        | j                  | j                  | j                  ¬«      S )N)rD   )r¦   r6   rt   rÏ   rŽ   )rB   r€   s     r   r   zSSOTokenProvider.load_tokenŒ  s1   € Ø×ÑÐ#Øä'Ø�K‰K˜Ÿ™°t·y±yô
ð 	
r   )r0   r1   r2   rt   rÊ   ÚosÚpathÚ
expanduserÚjoinr�   rœ   r¸   r   rŒ   r   rE   r¤   r   r¦   r«   r½   rÇ   rÏ   r   r   r   r   r   r   õ   s¦   „ Ø€FØ€OØŸ7™7×-Ñ-Ø
�‰�‰�S˜& %¨Ó1óÐð 	ØðÐð "€KØ%Ðð "°Àtó
ò$%
ðN ñ'ó ð'ð ñNó ðNòò.ò0
ó,
r   r   c                   ó"   — e Zd ZdZdZdd„Zd„ Zy)r   zn
    Token provider that loads tokens from environment variables scoped to
    a specific `signing_name`.
    ÚenvNc                 óD   — || _         |€t        j                  }|| _        y r   )r‹   rÑ   Úenviron)rB   r   rØ   s      r   rE   zScopedEnvTokenProvider.__init__�  s   € ØˆŒØˆ?Ü—j‘jˆGØˆ�r   c                 óœ   — |j                  d«      }|€y t        || j                  «      }|� t        j	                  d«       t        |«      S y )NÚsigning_namez%Found token in environment variables.)r›   r   rØ   r[   r¹   r-   )rB   r€   rÚ   r.   s       r   r   z!ScopedEnvTokenProvider.load_token£  sL   € Ø—z‘z .Ó1ˆØÐØä*¨<¸¿¹ÓFˆàÐÜ�K‰KÐ?Ô@Ü" 5Ó)Ð)ð r   r   )r0   r1   r2   Ú__doc__rt   rE   r   r   r   r   r   r   •  s   „ ñð
 €Fóó	*r   r   ))r)   ÚloggingrÑ   r=   r   r   Útypingr   Údateutil.parserr¿   Údateutil.tzr   Úbotocorer   Úbotocore.compatr   Úbotocore.configr	   Úbotocore.exceptionsr
   r   r   r   Úbotocore.utilsr   r   r   r   r   Ú	getLoggerr0   r[   r   r    r&   r+   r-   r6   r   r   r   r   r   r   ú<module>ræ      s¡   ðó Û Û 	Û ß (Ý ã Ý å Ý )Ý "÷ó ÷õ ð 
ˆ×	Ñ	˜8Ó	$€ò!ò3òò=ô'�jô '÷
^ñ ^÷BKñ K÷\]
ñ ]
÷@*ò *r   