
    vKg*                     2   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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  S S	KJrJrJr  \R6                  " \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%g)    N)datetime	timedelta)
NamedTupleOptional)tzutc)UNSIGNED)total_seconds)Config)ClientErrorInvalidConfigErrorTokenRetrievalError)CachedPropertyJSONFileCacheSSOTokenLoaderc                  >    [         R                  " [        5       5      $ N)r   nowr        O/var/www/highfloat_scraper/venv/lib/python3.13/site-packages/botocore/tokens.py_utc_nowr   $   s    <<  r   c                 ,    [        U 5      /n[        US9$ )N)	providers)SSOTokenProviderTokenProviderChain)sessionr   s     r   create_token_resolverr   (   s    !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#   /   s$    #x  ||011Jr   c                 4    [         R                  " U [        S9$ )N)default)jsondumpsr#   r!   s    r   _sso_json_dumpsr(   5   s    ::c#;<<r   c                   4    \ rS rSr% \\S'   Sr\\   \S'   Sr	g)FrozenAuthToken9   tokenN
expirationr   )
__name__
__module____qualname____firstlineno__str__annotations__r-   r   r   __static_attributes__r   r   r   r*   r*   9   s    J%)J")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>     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__G   s4    )+ '^^-!!r   c                 :    U R                  5         U R                  $ r   )_refreshrA   rC   s    r   get_frozen_token)DeferredRefreshableToken.get_frozen_tokenQ   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_refreshr@   acquire_protected_refreshrelease)rC   refresh_typeblock_for_refreshs      r   rI   !DeferredRefreshableToken._refreshU   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_inforN   z$Token has expired and refresh failed)provider	error_msg)rO   r;   r   _attempt_timeoutrB   r<   rA   	Exceptionloggerwarning_is_expiredr   r=   )rC   rS   r   s      r   rQ   +DeferredRefreshableToken._protected_refreshc   s     ++-	$$&C!$y9N9N'O!OD!%!4!4!6D %@    	NNG  
 {* +	s   A B &B-,B-c                     U R                   c  gU R                   R                  n[        XR                  5       -
  5      nUS:*  $ )NFr   )rA   r-   r	   r;   )rC   r-   	remainings      r   ra   $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 )NrN   advisory)rA   r-   r;   rB   r	   _mandatory_refresh_timeout_advisory_refresh_timeout)rC   r-   r   rd   s       r   rO   (DeferredRefreshableToken._should_refresh   sv    %''22
  "###!*"23	666777r   )rA   rB   r@   r<   r;   r=   N)r.   r/   r0   r1   ri   rh   r]   r   rF   rK   rI   rQ   ra   rO   r4   r   r   r   r6   r6   >   s7     !(!(;C ""-8r   r6   c                   $    \ rS rSrSS jrS rSrg)r      Nc                     Uc  / nXl         g r   
_providers)rC   r   s     r   rF   TokenProviderChain.__init__   s    I#r   c                 X    U R                    H  nUR                  5       nUc  M  Us  $    g r   )ro   
load_token)rC   r[   r,   s      r   rr   TokenProviderChain.load_token   s.    H'')E  ( r   rn   r   )r.   r/   r0   r1   rF   rr   r4   r   r   r   r   r      s    $
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      ssor8   ~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)rx   profiler%   )
_sessionDEFAULT_CACHE_CLS_SSO_TOKEN_CACHE_DIRr(   _now_cacher   _token_loaderget_config_variable_profile_name)rC   r   rx   rE   profile_names        r   rF   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: .rz   ry   )session_namerz   ry   )r   full_configgetr   r   _SSO_CONFIG_VARSappend)
rC   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   rJ   s    r   _sso_configSSOTokenProvider._sso_config   s    $$&&r   c                 l    [        U R                  S   [        S9nU R                  R	                  SUS9$ )Nrz   )region_namesignature_versionzsso-oidc)config)r
   r   r   r   create_client)rC   r   s     r   _clientSSOTokenProvider._client   s9    ((6&
 }}**:f*EEr   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   	expiresInrW   ry   rz   accessTokenregistrationExpiresAt)startUrlregionr   	expiresAtr   r   r   zSSO Token refresh succeeded)r   create_token_GRANT_TYPEr   r   r   r_   info)rC   r,   response
expires_in	new_tokens        r   _attempt_create_token&SSOTokenProvider._attempt_create_token   s    <<,,&&:&~.~.	 - 
 x'<=
((9&&|4#M2z1j)!.1%*+B%C	
	 X%(0(@In%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 3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 z SSO token refresh attempt failedTrY   )
r_   r   dateutilparserparser	   r   r   r   r`   )rC   r,   keyskmissing_keysmsgexpirys          r   _refresh_access_token&SSOTokenProvider._refresh_access_token  s    
 $(:4aE>4:?~NCKK&&u-D'EF))+-.!3KK<VHEF	--e44 ;  	NN=NM	s   B)B)B. .CCc                    U R                   S   nU R                   S   n[        R                  SU 35        U R                  XS9n[        R
                  R                  US   5      n[        R                  SU 3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$ )	Nry   r   zLoading cached SSO token for )r   r   zCached SSO token expires at r   )r-   )r   r_   r   r   r   r   r   debugr	   r   _REFRESH_WINDOWr   
save_tokenr*   )rC   	start_urlr   
token_dictr-   rd   new_token_dicts          r   
_refresherSSOTokenProvider._refresher.  s    $$_5	''73L>BC''	'M
__**:k+BC
3J<@A!*yy{":;	+++!77
CN)+
'4
""-- .  }%*
 	
r   c                 p    U R                   c  g [        U R                  U R                  U R                  S9$ )N)rE   )r   r6   METHODr   r   rJ   s    r   rr   SSOTokenProvider.load_tokenD  s1    #'KKtyy
 	
r   )r   r   r   r   r   )r.   r/   r0   r1   r   r   ospath
expanduserjoinr   r   r   r   r   r   rF   r   r   r   r   r   r   r   rr   r4   r   r   r   r   r      s    FO77--
S&%1 	 "K% "t
$%
N ' ' F F.0
,
r   r   )&r&   loggingr   r>   r   r   typingr   r   dateutil.parserr   dateutil.tzr   botocorer   botocore.compatr	   botocore.configr
   botocore.exceptionsr   r   r   botocore.utilsr   r   r   	getLoggerr.   r_   r   r   r#   r(   r*   r6   r   r   r   r   r   <module>r      s      	  ( '    ) " 
 I H			8	$!3=*j *
^ ^B ]
 ]
r   