+
     Ii-  c                   sP   ^ RI t ^ RIt^ RIt^ RIt^ RIHtHt ^ RIHtHt ^ RI	t
^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHtHtHt ^ R	IHtHtHtHtHt ]P:                  ! ]4      tR
 t R t!R t"R t# ! R R]4      t$ ! R R4      t% ! R R4      t& ! R R4      t' ! R R4      t(R# )i    N)datetime	timedelta)
NamedTupleOptional)tzutc)UNSIGNED)total_seconds)Config)ClientErrorInvalidConfigErrorTokenRetrievalError)CachedPropertyJSONFileCacheSSOTokenLoadercreate_nested_clientget_token_from_environmentc                  s>    \         P                  ! \        4       4      # N)r    nowr        4/usr/lib/python3.14/site-packages/botocore/tokens.py_utc_nowr   *   s    <<  r   c                 sF    \        V 4      \        V 4      .p\        VR 7      # ))	providers)ScopedEnvTokenProviderSSOTokenProviderTokenProviderChain)sessionr      & r   create_token_resolverr   .   s&    w'!I 	22r   c                 sT    \        V \        4      '       d   V P                  R 4      # V # )z%Y-%m-%dT%H:%M:%SZ)Z
isinstancer    ZstrftimeZobj   &r   _serialize_utc_timestampr   6   s$    #x  ||011Jr   c                 s:    \         P                  ! V \        R 7      # ))default)jsonZdumpsr   r   r   r   _sso_json_dumpsr"   <   s    ::c#;<<r   c                   s0   a  ] tR t^@t o RtV 3R ltRtV tR# )FrozenAuthTokenNc                sB   < V ^8  d   Qh/ S[ ;R&   S[S[,          ;R&   # )i   token
expiration)Zstrr   r    )Zformat__classdict__s   "r   Z__annotate__ZFrozenAuthToken.__annotate__@   s     J ") r   r   )__name__
__module____qualname____firstlineno__r%   Z__annotate_func____static_attributes____classdictcell__r&      @r   r#   r#   @   s     %)J  r   r#   c                   sV   a  ] tR t^Et o R	tR
t^<t]3R ltR t	R t
R tR tR tRtV tR# )DeferredRefreshableTokenc                sz    W0n         W n        Wn        \        P                  ! 4       V n        R V n        R V n        R # r   )_time_fetcher_refresh_usingmethod	threadingZLock_refresh_lock_frozen_token_next_refresh)selfr2   Zrefresh_usingtime_fetchers   &&&&r   __init__Z!DeferredRefreshableToken.__init__N   s4    )+ '^^-!!r   c                s:    V P                  4        V P                  # r   )_refreshr5   r7   r   r   get_frozen_tokenZ)DeferredRefreshableToken.get_frozen_tokenX   s    !!!r   c                s   V P                  4       pV'       g   R # VR8H  pV P                  P                  V4      '       d.    V P                  4        V P                  P	                  4        R # R #   T P                  P	                  4        i ; i)N	mandatory)_should_refreshr4   Zacquire_protected_refreshZrelease)r7   refresh_typeZblock_for_refresh   &  r   r:   Z!DeferredRefreshableToken._refresh\   sy    ++- )K7%%&788-'')""**,	 9 ""**,s   A0 0Bc                s   V P                  4       pV'       g   R #  V P                  4       pV\        V P                  R7      ,           V n        V P                  4       V n        V P                  4       '       d   \        V P                  RR7      hR #   \         d$    \        P                  RTRR7       TR8X  d   h  L\i ; i)NZsecondsz5Refreshing token failed during the %s refresh period.TZexc_infor=   z$Token has expired and refresh failed)provider	error_msg)r>   r0   r   _attempt_timeoutr6   r1   r5   Z	Exceptionloggerwarning_is_expiredr
   r2   )r7   r@   r   rA   r   r?   Z+DeferredRefreshableToken._protected_refreshj   s     ++-	$$&C!$y9N9N'O!OD!%!4!4!6D %@    	NNG  
 {* +	s   AB +C ?C c                s    V P                   f   R# V P                   P                  p\        WP                  4       ,
          4      pV^ 8*  # )NF)r5   r%   r   r0   )r7   r%   	remainingrA   r   rI   Z$DeferredRefreshableToken._is_expired   sB    %''22
!*/A/A/C"CD	A~r   c                s   V P                   f   R# V P                   P                  pVf   R # V P                  4       pW P                  8  d   R # \	        W,
          4      pW0P
                  8  d   R# W0P                  8  d   R# R # )Nr=   Zadvisory)r5   r%   r0   r6   r   _mandatory_refresh_timeout_advisory_refresh_timeout)r7   r%   r   rJ   s   &   r   r>   Z(DeferredRefreshableToken._should_refresh   sv    %''22
  "###!*"23	666777r   )r5   r6   r4   r1   r0   r2   N  iX  )r'   r(   r)   r*   rL   rK   rF   r   r9   r<   r:   r?   rI   r>   r+   r,   r-   r.   r   r/   r/   E   s?      !(!(;C ""-8 r   r/   c                   s0   a  ] tR t^t o RR ltR tRtV tR# )r   Nc                s    Vf   . pWn         R # r   
_providers)r7   r   s   &&r   r9   ZTokenProviderChain.__init__   s    I#r   c                s`    V P                    F  pVP                  ! R/ VB pVf   K  Vu # 	  R # )Nr   )rO   
load_token)r7   kwargsrD   r$      &,  r   rP   ZTokenProviderChain.load_token   s3    H''1&1E  ( r   rN   r   )r'   r(   r)   r*   r9   rP   r+   r,   r-   r.   r   r   r      s     $
 r   r   c                   s   a  ] tR t^t o RtRt]P                  P                  ]P                  P                  RRRR4      4      t
RR.tRt]tR]R3R	 ltR
 t]R 4       t]R 4       tR tR tR tR tRtV tR# )r   ZssoZ~z.awscachesso_start_url
sso_regionZrefresh_tokenNc                s   Wn         Vf"   V P                  V P                  \        R7      pW0n        W n        \        V P
                  R7      V n        T;'       g&    V P                   P                  R4      ;'       g    RV n	        R # )N)Z
dumps_func)rS   Zprofiler    )
_sessionDEFAULT_CACHE_CLS_SSO_TOKEN_CACHE_DIRr"   _now_cacher   _token_loaderZget_config_variable_profile_name)r7   r   rS   r8   Zprofile_names   &&&&&r   r9   ZSSOTokenProvider.__init__   s      =**))* + E !	+$++>  }}00;  	r   c                s   V P                   P                  pVP                  R / 4      pVP                  R/ 4      pVP                  V P                  / 4      pRV9  d   R# VR,          pVP                  VR4      pV'       g    RV P                   RV R2p\	        VR7      h. pV P
                   F  p	W9  g   K  VP                  V	4       K  	  V'       d    RV P                   RV R	2p\	        VR7      hR
VRVR,          RVR,          /# )profilessso_sessionsZsso_sessionNzThe profile "z7" is configured to use the SSO token provider but the "z+" sso_session configuration does not exist.)rE   zZ" is configured to use the SSO token provider but is missing the following configuration: Z.session_namerU   rT   )rV   Zfull_configgetr\   r	   _SSO_CONFIG_VARSZappend)
r7   Zloaded_configr]   r^   Zprofile_configZsso_session_nameZ
sso_configrE   Zmissing_configsZ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Z8
 	
r   c                s"    V P                  4       # r   )rb   r;   r   r   _sso_configZSSOTokenProvider._sso_config   s    $$&&r   c                sv    \        V P                  R ,          \        R7      p\        V P                  RVR7      # )rU   )Zregion_nameZsignature_versionzsso-oidc)config)r   rc   r   r   rV   )r7   rd   r   r   _clientZSSOTokenProvider._client   s2    ((6&
 $DMM:fMMr   c                s   V P                   P                  V P                  VR ,          VR,          VR,          R7      p\        VR,          R7      pRV P                  R,          RV P                  R	,          R
VR
,          RV P                  4       V,           R VR ,          RVR,          RVR,          /pRV9   d   VR,          VR&   \        P                  R4       V# )clientIdclientSecretrefreshToken)Z	grantTyperf   rg   rh   Z	expiresInrB   ZstartUrlrT   ZregionrU   accessToken	expiresAtregistrationExpiresAtzSSO Token refresh succeeded)re   Zcreate_token_GRANT_TYPEr   rc   rY   rG   info)r7   r$   ZresponseZ
expires_inZ	new_tokens   &&   r   _attempt_create_tokenZ&SSOTokenProvider._attempt_create_token  s    <<,,&&:&~.~.	 - 
 x'<=
((9d&&|48M2z1j)E.1#U+B%C	
	 X%(0(@In%12r   c                s   RpV Uu. uF  q3V9  g   K  VNK  	  ppV'       d   RV 2p\         P                  V4       R# \        P                  P	                  VR,          4      p\        W`P                  4       ,
          4      ^ 8:  d   \         P                  RV4       R#  V P                  V4      # u upi   \         d    \         P                  RRR7        R# i ; i)	rh   rk   z+Unable to refresh SSO token: missing keys: Nz$SSO token registration expired at %sz SSO token refresh attempt failedTrC   )rh   rf   rg   rk   )
rG   rm   dateutilparserparser   rY   rn   r   rH   )r7   r$   ZkeysZkZmissing_keysZmsgZexpirys   &&     r   _refresh_access_tokenZ&SSOTokenProvider._refresh_access_token  s    
 $(:4aE>4:?~NCKK&&u-D'EF))+-.!3KK>G	--e44 ;  	NN=NM	s   B4B4#B9 9"CCc                s   V P                   R ,          pV P                   R,          p\        P                  RV4       V P                  WR7      p\        P
                  P                  VR,          4      p\        P                  RV4       \        W@P                  4       ,
          4      pWPP                  8  d>   V P                  V4      pVe)   TpVR,          pV P                  P                  WVR7       \        VR,          VR7      # )rT   r_   zLoading cached SSO token for %s)r_   rj   zCached SSO token expires at %sri   )r%   )rc   rG   rm   r[   ro   rp   rq   Zdebugr   rY   _REFRESH_WINDOWrr   Z
save_tokenr#   )r7   Z	start_urlr_   Z
token_dictr%   rJ   Znew_token_dicts   &      r   
_refresherZSSOTokenProvider._refresher5  s    $$_5	''75|D''	'M
__**:k+BC
5zB!*yy{":;	+++!77
CN)+
'4
""-- .  }%*
 	
r   c                sz    V P                   f   R # \        V P                  V P                  V P                  R7      # )N)r8   )rc   r/   METHODrt   rY   )r7   rQ   s   &,r   rP   ZSSOTokenProvider.load_tokenK  s1    #'KKtyy
 	
r   )rZ   rY   r\   rV   r[   rM   )r'   r(   r)   r*   ru   rs   osZpathZ
expanduserZjoinrX   ra   rl   r   rW   r   r9   rb   r   rc   re   rn   rr   rt   rP   r+   r,   r-   r.   r   r   r      s     FO77--
S&%1 	 "K% "t
$%
N ' ' N N.0
,
 
r   r   c                   s8   a  ] tR tRt o RtRtRR ltR tRtV t	R# )	r   iT  zb
Token provider that loads tokens from environment variables scoped to
a specific `signing_name`.
ZenvNc                sF    Wn         Vf   \        P                  pW n        R # r   )rV   rv   environ)r7   r   rw   s   &&&r   r9   ZScopedEnvTokenProvider.__init__\  s    ?jjGr   c                s    VP                  R 4      pVf   R# \        W P                  4      pVe!   \        P	                  R4       \        V4      # R# )signing_nameNz%Found token in environment variables.)r`   r   rw   rG   rm   r#   )r7   rQ   rx   r$   rR   r   rP   Z!ScopedEnvTokenProvider.load_tokenb  sJ    zz.1*<FKK?@"5)) r   )rV   rw   r   )
r'   r(   r)   r*   Z__doc__ru   r9   rP   r+   r,   r-   r.   r   r   r   T  s      
 F	* 	*r   r   ))r!   Zloggingrv   r3   r    r   Ztypingr   r   Zdateutil.parserro   Zdateutil.tzr   Zbotocorer   Zbotocore.compatr   Zbotocore.configr   Zbotocore.exceptionsr   r	   r
   Zbotocore.utilsr   r   r   r   r   Z	getLoggerr'   rG   r   r   r   r"   r#   r/   r   r   r   r   r   r   <module>ry      s      	  ( '    ) " 
  
		8	$!3=*j *
^ ^B ]
 ]
@* *r   