ó
    Ú°›j7  ã                   óN  • S SK r S SKrS SKrS SKrS SKJrJr  S SKJr  S SKr	S SK
Jr  S SKJr  S SKJr  S SKJr  S SKJrJrJrJr  S S	KJrJrJrJrJr  \R:                  " \5      rS
 r S r!S r"S r# " S S\5      r$ " S S5      r% " S S5      r& " S S5      r' " S S5      r(g)é    N)ÚdatetimeÚ	timedelta)Ú
NamedTuple)Útzutc)ÚUNSIGNED)Útotal_seconds)ÚConfig)ÚClientErrorÚInvalidConfigErrorÚTokenRetrievalErrorÚUnknownTokenProviderError)ÚCachedPropertyÚJSONFileCacheÚSSOTokenLoaderÚcreate_nested_clientÚget_token_from_environmentc                  ó>   • [         R                  " [        5       5      $ ©N)r   Únowr   © ó    ÚL/home/mande/repo/quber/.venv/lib/python3.13/site-packages/botocore/tokens.pyÚ_utc_nowr   +   s   € Ü�<Š<œ›Ó Ð r   c                 ó@   • [        U 5      [        U 5      /n[        US9$ )N)Ú	providers)ÚScopedEnvTokenProviderÚSSOTokenProviderÚTokenProviderChain)Úsessionr   s     r   Úcreate_token_resolverr    /   s&   € ä˜wÓ'Ü˜Ó!ð€Iô ¨	Ñ2Ð2r   c                 óR   • [        U [        5      (       a  U R                  S5      $ U $ )Nz%Y-%m-%dT%H:%M:%SZ)Ú
isinstancer   Ústrftime©Úobjs    r   Ú_serialize_utc_timestampr&   7   s$   € Ü�#”x× Ñ Ø�|‰|Ð0Ó1Ð1Ø€Jr   c                 ó4   • [         R                  " U [        S9$ )N)Údefault)ÚjsonÚdumpsr&   r$   s    r   Ú_sso_json_dumpsr+   =   s   € Ü�:Š:�cÔ#;Ñ<Ð<r   c                   ó4   • \ rS rSr% \\S'   Sr\S-  \S'   Srg)ÚFrozenAuthTokenéA   ÚtokenNÚ
expirationr   )	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__ÚstrÚ__annotations__r0   r   Ú__static_attributes__r   r   r   r-   r-   A   s   ‡ ØƒJØ"&€J�˜4‘Ö&r   r-   c                   óJ   • \ rS rSrSrSrSr\4S jrS r	S r
S rS	 rS
 rSrg)ÚDeferredRefreshableTokenéF   é„  iX  é<   c                 óx   • X0l         X l        Xl        [        R                  " 5       U l        S U l        S U l        g r   )Ú_time_fetcherÚ_refresh_usingÚmethodÚ	threadingÚLockÚ_refresh_lockÚ_frozen_tokenÚ_next_refresh)Úselfr@   Úrefresh_usingÚtime_fetchers       r   Ú__init__Ú!DeferredRefreshableToken.__init__O   s4   € Ø)ÔØ+ÔØŒô 'Ÿ^š^Ó-ˆÔØ!ˆÔØ!ˆÕr   c                 ó:   • U R                  5         U R                  $ r   )Ú_refreshrD   ©rF   s    r   Úget_frozen_tokenÚ)DeferredRefreshableToken.get_frozen_tokenY   s   € Ø�‰ŒØ×!Ñ!Ð!r   c                 ó  • U R                  5       nU(       d  g US:H  nU R                  R                  U5      (       a,   U R                  5         U R                  R	                  5         g g ! U R                  R	                  5         f = f)NÚ	mandatory)Ú_should_refreshrC   ÚacquireÚ_protected_refreshÚrelease)rF   Úrefresh_typeÚblock_for_refreshs      r   rL   Ú!DeferredRefreshableToken._refresh]   sy   € à×+Ñ+Ó-ˆÞØð )¨KÑ7ÐØ×Ñ×%Ñ%Ð&7×8Ñ8ð-Ø×'Ñ'Ô)à×"Ñ"×*Ñ*Õ,ð	 9øð ×"Ñ"×*Ñ*Õ,ús   ¿A+ Á+Bc                 ó`  • U R                  5       nU(       d  g  U R                  5       nU[        U R                  S9-   U l        U R                  5       U l        U R                  5       (       a  [        U R                  SS9eg ! [         a    [        R                  SUSS9  US:X  a  e  NRf = f)N©Úsecondsz5Refreshing token failed during the %s refresh period.T©Úexc_inforQ   z$Token has expired and refresh failed)ÚproviderÚ	error_msg)rR   r>   r   Ú_attempt_timeoutrE   r?   rD   Ú	ExceptionÚloggerÚwarningÚ_is_expiredr   r@   )rF   rV   r   s      r   rT   Ú+DeferredRefreshableToken._protected_refreshk   s¾   € ð ×+Ñ+Ó-ˆÞØð	Ø×$Ñ$Ó&ˆCØ!$¤y¸×9NÑ9NÑ'OÑ!OˆDÔØ!%×!4Ñ!4Ó!6ˆDÔð ×Ñ×Ñä%ØŸ™Ø@ñð ð øô ó 	Ü�N‰NØGØØð ñ ð
 ˜{Ó*àñ +ð	ús   šA B Â&B-Â,B-c                 óŠ   • U R                   c  gU R                   R                  n[        XR                  5       -
  5      nUS:*  $ )NFr   )rD   r0   r   r>   )rF   r0   Ú	remainings      r   rd   Ú$DeferredRefreshableToken._is_expired‡   sB   € Ø×ÑÑ%Øà×'Ñ'×2Ñ2ˆ
Ü! *×/AÑ/AÓ/CÑ"CÓDˆ	Ø˜A‰~Ðr   c                 óî   • U R                   c  gU R                   R                  nUc  g U R                  5       nX R                  :  a  g [	        X-
  5      nX0R
                  :  a  gX0R                  :  a  gg )NrQ   Úadvisory)rD   r0   r>   rE   r   Ú_mandatory_refresh_timeoutÚ_advisory_refresh_timeout)rF   r0   r   rg   s       r   rR   Ú(DeferredRefreshableToken._should_refresh�   sv   € Ø×ÑÑ%àà×'Ñ'×2Ñ2ˆ
ØÑàà× Ñ Ó"ˆØ×#Ñ#Ó#Øä! *Ñ"2Ó3ˆ	à×6Ñ6Ó6ØØ×7Ñ7Ó7Øàr   )rD   rE   rC   r?   r>   r@   N)r1   r2   r3   r4   rl   rk   r`   r   rI   rN   rL   rT   rd   rR   r7   r   r   r   r9   r9   F   s7   † ð !(Ðà!(ÐàÐà;Cô "ò"ò-òò8õr   r9   c                   óB   • \ rS rSrSS jrS rS rS rS rS r	S	 r
S
rg)r   é§   Nc                 ó   • Uc  / nXl         g r   ©Ú
_providers)rF   r   s     r   rI   ÚTokenProviderChain.__init__¨   s   € ØÑØˆIØ#�r   c                 ó\   • U R                  U5      nU R                  R                  X25        g)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_offsetrr   Úinsert©rF   ÚnameÚtoken_providerÚoffsets       r   Úinsert_beforeÚ TokenProviderChain.insert_before­   s&   € ð ×*Ñ*¨4Ó0ˆØ�‰×Ñ˜vÕ6r   c                 ód   • U R                  U5      nU R                  R                  US-   U5        g)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.
é   Nru   rx   s       r   Úinsert_afterÚTokenProviderChain.insert_after½   s,   € ð ×*Ñ*¨4Ó0ˆØ�‰×Ñ˜v¨™z¨>Õ:r   c                 ó¼   • U R                    Vs/ s H  o"R                  PM     nnX;  a  gUR                  U5      nU R                   R                  U5        gs  snf )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)rr   ÚMETHODÚindexÚpop)rF   ry   ÚpÚavailable_methodsr{   s        r   ÚremoveÚTokenProviderChain.removeÍ   sP   € ð 04¯ªÓ?ª¨!ŸXœX©ÐÐ?ØÓ(Øà"×(Ñ(¨Ó.ˆØ�‰×Ñ˜FÕ#ùò @s   �Ac                 ó>   • U R                   U R                  U5         $ )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.
)rr   rv   )rF   ry   s     r   Úget_providerÚTokenProviderChain.get_providerÜ   s   € ð �‰˜t×8Ñ8¸Ó>Ñ?Ð?r   c                 ó¦   •  U R                    Vs/ s H  o"R                  PM     snR                  U5      $ s  snf ! [         a
    [	        US9ef = f)N)ry   )rr   rƒ   r„   Ú
ValueErrorr   )rF   ry   r†   s      r   rv   Ú'TokenProviderChain._get_provider_offsetç   sJ   € ð	7Ø&*§o¢oÓ6¢o —H”H¡oÑ6×<Ñ<¸TÓBÐBùÒ6øÜó 	7Ü+°Ñ6Ð6ð	7ús   ‚< �7¥< ·< ¼Ac                 ó\   • U R                    H  nUR                  " S0 UD6nUc  M  Us  $    g )Nr   )rr   Ú
load_token)rF   Úkwargsr^   r/   s       r   r‘   ÚTokenProviderChain.load_tokení   s3   € ØŸœˆHØ×'Ò'Ñ1¨&Ñ1ˆEØÓ Ø’ñ (ð r   rq   r   )r1   r2   r3   r4   rI   r|   r€   rˆ   r‹   rv   r‘   r7   r   r   r   r   r   §   s&   † ô$ò
7ò ;ò $ò	@ò7õr   r   c                   óè   • \ rS rSrSrSr\R                  R                  \R                  R                  SSSS5      5      r
SS/rS	r\rS
\S
4S jrS r\S 5       r\S 5       rS rS rS rS rSrg
)r   éõ   Ússor;   Ú~z.awsÚcacheÚsso_start_urlÚ
sso_regionÚrefresh_tokenNc                 óþ   • Xl         Uc  U R                  U R                  [        S9nX0l        X l        [        U R
                  S9U l        U=(       d$    U R                   R                  S5      =(       d    SU l	        g )N)Ú
dumps_func)r˜   Úprofiler(   )
Ú_sessionÚDEFAULT_CACHE_CLSÚ_SSO_TOKEN_CACHE_DIRr+   Ú_nowÚ_cacher   Ú_token_loaderÚget_config_variableÚ_profile_name)rF   r   r˜   rH   Úprofile_names        r   rI   ÚSSOTokenProvider.__init__  sv   € ð  ŒØ‰=Ø×*Ñ*Ø×)Ñ)Ü*ð +ð ˆEð !Œ	ØŒÜ+°$·+±+Ñ>ˆÔà÷ Ø�}‰}×0Ñ0°Ó;÷àð 	Õr   c                 óè  • U R                   R                  nUR                  S0 5      nUR                  S0 5      nUR                  U R                  0 5      nSU;  a  g US   nUR                  US 5      nU(       d  SU R                   SU S3n[	        US9e/ nU R
                   H  n	X–;  d  M
  UR                  U	5        M     U(       a  SU R                   SU S	3n[	        US9eUUS
   US   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.)r_   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)
rF   Úloaded_configrª   r«   Úprofile_configÚsso_session_nameÚ
sso_configr_   Úmissing_configsÚvars
             r   Ú_load_sso_configÚ!SSOTokenProvider._load_sso_config  s,  € ØŸ™×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                 ó"   • U R                  5       $ r   )r¹   rM   s    r   Ú_sso_configÚSSOTokenProvider._sso_config;  s   € à×$Ñ$Ó&Ð&r   c                 ób   • [        U R                  S   [        S9n[        U R                  SUS9$ )Nrš   )Úregion_nameÚsignature_versionzsso-oidc)Úconfig)r	   r¼   r   r   rŸ   )rF   rÁ   s     r   Ú_clientÚSSOTokenProvider._client?  s2   € äØ×(Ñ(¨Ñ6Ü&ñ
ˆô $ D§M¡M°:ÀfÑMÐMr   c                 óD  • U R                   R                  U R                  US   US   US   S9n[        US   S9nU R                  S   U R                  S   US	   U R                  5       U-   US   US   US
   S.nSU;   a  US   US'   [        R                  S5        U$ )NÚclientIdÚclientSecretÚrefreshToken)Ú	grantTyperÅ   rÆ   rÇ   Ú	expiresInrZ   r™   rš   ÚaccessTokenÚregistrationExpiresAt)ÚstartUrlÚregionrÊ   Ú	expiresAtrÅ   rÆ   rË   zSSO Token refresh succeeded)rÂ   Úcreate_tokenÚ_GRANT_TYPEr   r¼   r¢   rb   Úinfo)rF   r/   ÚresponseÚ
expires_inÚ	new_tokens        r   Ú_attempt_create_tokenÚ&SSOTokenProvider._attempt_create_tokenG  sË   € Ø—<‘<×,Ñ,Ø×&Ñ&Ø˜:Ñ&Ø˜~Ñ.Ø˜~Ñ.ð	 -ð 
ˆô  x°Ñ'<Ñ=ˆ
à×(Ñ(¨Ñ9Ø×&Ñ& |Ñ4Ø# MÑ2ØŸ™› zÑ1à˜jÑ)Ø! .Ñ1Ø%*Ð+BÑ%Cñ	
ˆ	ð ˜XÓ%Ø(0°Ñ(@ˆI�nÑ%Ü�‰Ð1Ô2ØÐr   c                 ó¢  • SnU Vs/ s H  o3U;  d  M
  UPM     nnU(       a  SU 3n[         R                  U5        g [        R                  R	                  US   5      n[        X`R                  5       -
  5      S::  a  [         R                  SU5        g  U R                  U5      $ s  snf ! [         a    [         R                  SSS9   g f = f)	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 failedTr\   )
rb   rÑ   ÚdateutilÚparserÚparser   r¢   rÕ   r
   rc   )rF   r/   ÚkeysÚkÚmissing_keysÚmsgÚexpirys          r   Ú_refresh_access_tokenÚ&SSOTokenProvider._refresh_access_token^  sÃ   € ð
ˆñ $(Ó:¢4˜a°E©>Ÿ¡4ˆÐ:ÞØ?À¸~Ð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                 óÐ  • U R                   S   nU R                   S   n[        R                  SU5        U R                  XS9n[        R
                  R                  US   5      n[        R                  SU5        [        X@R                  5       -
  5      nXPR                  :  a5  U R                  U5      nUb!  UnUS   nU R                  R                  XUS9  [        US   US9$ )	Nr™   r®   zLoading cached SSO token for %s)r®   rÎ   zCached SSO token expires at %srÊ   )r0   )r¼   rb   rÑ   r¤   rØ   rÙ   rÚ   Údebugr   r¢   Ú_REFRESH_WINDOWrà   Ú
save_tokenr-   )rF   Ú	start_urlr®   Ú
token_dictr0   rg   Únew_token_dicts          r   Ú
_refresherÚSSOTokenProvider._refresherv  sç   € Ø×$Ñ$ _Ñ5ˆ	Ø×'Ñ'¨Ñ7ˆÜ�‰Ð5°|ÔDØ×'Ñ'¨	Ð'ÐMˆ
Ü—_‘_×*Ñ*¨:°kÑ+BÓCˆ
Ü�‰Ð5°zÔBä! *¯y©y«{Ñ":Ó;ˆ	Ø×+Ñ+Ó+Ø!×7Ñ7¸
ÓCˆNØÑ)Ø+�
Ø'¨Ñ4�
Ø×"Ñ"×-Ñ-Ø¸ð .ñ ô Ø�}Ñ%°*ñ
ð 	
r   c                 óp   • U R                   c  g [        U R                  U R                  U R                  S9$ )N)rH   )r¼   r9   rƒ   ré   r¢   )rF   r’   s     r   r‘   ÚSSOTokenProvider.load_tokenŒ  s1   € Ø×ÑÑ#Øä'Ø�K‰K˜Ÿ™°t·y±yñ
ð 	
r   )r£   r¢   r¦   rŸ   r¤   )r1   r2   r3   r4   rƒ   rä   ÚosÚpathÚ
expanduserÚjoinr¡   r±   rÐ   r   r    r   rI   r¹   r   r¼   rÂ   rÕ   rà   ré   r‘   r7   r   r   r   r   r   õ   s¦   † Ø€FØ€OØŸ7™7×-Ñ-Ø
�‰�‰�S˜& %¨Ó1óÐð 	ØðÐð "€KØ%Ðð "°Àtô
ò$%
ðN ñ'ó ð'ð ñNó ðNòò.ò0
õ,
r   r   c                   ó,   • \ rS rSrSrSrSS jrS rSrg)	r   i•  zb
Token provider that loads tokens from environment variables scoped to
a specific `signing_name`.
ÚenvNc                 óB   • Xl         Uc  [        R                  nX l        g r   )rŸ   rí   Úenviron)rF   r   rô   s      r   rI   ÚScopedEnvTokenProvider.__init__�  s   € ØŒØ‰?Ü—j‘jˆGØ�r   c                 óž   • UR                  S5      nUc  g [        X R                  5      nUb   [        R	                  S5        [        U5      $ g )NÚsigning_namez%Found token in environment variables.)r°   r   rô   rb   rÑ   r-   )rF   r’   r÷   r/   s       r   r‘   Ú!ScopedEnvTokenProvider.load_token£  sJ   € Ø—z‘z .Ó1ˆØÑØä*¨<¿¹ÓFˆàÑÜ�K‰KÐ?Ô@Ü" 5Ó)Ð)ð r   )rŸ   rô   r   )	r1   r2   r3   r4   Ú__doc__rƒ   rI   r‘   r7   r   r   r   r   r   •  s   † ñð
 €Fôõ	*r   r   ))r)   Úloggingrí   rA   r   r   Útypingr   Údateutil.parserrØ   Údateutil.tzr   Úbotocorer   Úbotocore.compatr   Úbotocore.configr	   Úbotocore.exceptionsr
   r   r   r   Úbotocore.utilsr   r   r   r   r   Ú	getLoggerr1   rb   r   r    r&   r+   r-   r9   r   r   r   r   r   r   Ú<module>r     sŸ   ðó Û Û 	Û ß (Ý ã Ý å Ý )Ý "÷ó ÷õ ð 
×	Ò	˜8Ó	$€ò!ò3òò=ô'�jô '÷
^ñ ^÷BKñ K÷\]
ñ ]
÷@*ò *r   