
    !i-                     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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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Optional)tzutc)UNSIGNED)total_seconds)Config)ClientErrorInvalidConfigErrorTokenRetrievalError)CachedPropertyJSONFileCacheSSOTokenLoadercreate_nested_clientget_token_from_environmentc                  >    [         R                  " [        5       5      $ N)r   nowr        N/var/www/html/ai-image-ml/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&   6   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r	g)FrozenAuthToken@   tokenN
expirationr   )
__name__
__module____qualname____firstlineno__str__annotations__r0   r   r   __static_attributes__r   r   r   r-   r-   @   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)DeferredRefreshableTokenE     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__N   s4    )+ '^^-!!r   c                 :    U R                  5         U R                  $ r   )_refreshrD   rF   s    r   get_frozen_token)DeferredRefreshableToken.get_frozen_tokenX   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_refreshj   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   )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   E   s7     !(!(;C ""-8r   r9   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)rF   r   s     r   rI   TokenProviderChain.__init__   s    I#r   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   ru   TokenProviderChain.load_token   s3    H''1&1E  ( r   rq   r   )r1   r2   r3   r4   rI   ru   r7   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      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&
 $DMM: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_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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    
 $(:4aE>4:?~NCKK&&u-D'EF))+-.!3KK>G	--e44 ;  	NN=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._refresher5  s    $$_5	''75|D''	'M
__**:k+BC
5zB!*yy{":;	+++!77
CN)+
'4
""-- .  }%*
 	
r   c                 p    U R                   c  g [        U R                  U R                  U R                  S9$ )N)rH   )r   r9   METHODr   r   )rF   rv   s     r   ru   SSOTokenProvider.load_tokenK  s1    #'KKtyy
 	
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   ru   r7   r   r   r   r   r      s    FO77--
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   iT  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    ?jjG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   rv   r   r/   s       r   ru   !ScopedEnvTokenProvider.load_tokenb  sJ    zz.1*<FKK?@"5)) r   )r   r   r   )	r1   r2   r3   r4   __doc__r   rI   ru   r7   r   r   r   r   r   T  s    
 F	*r   r   ))r)   loggingr   rA   r   r   typingr   r   dateutil.parserr   dateutil.tzr   botocorer   botocore.compatr	   botocore.configr
   botocore.exceptionsr   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 ]
 ]
@* *r   