§
    7xÅj7  ã                   ój  — 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(dS )é    N)ÚdatetimeÚ	timedelta)Ú
NamedTuple)Útzutc)ÚUNSIGNED)Útotal_seconds)ÚConfig)ÚClientErrorÚInvalidConfigErrorÚTokenRetrievalErrorÚUnknownTokenProviderError)ÚCachedPropertyÚJSONFileCacheÚSSOTokenLoaderÚcreate_nested_clientÚget_token_from_environmentc                  óB   — t          j        t          ¦   «         ¦  «        S ©N)r   Únowr   © ó    ú@C:\Projects\Historical\venv\Lib\site-packages\botocore/tokens.pyÚ_utc_nowr   +   s   € ÝŒ<�™œÑ Ô Ð r   c                 ó^   — t          | ¦  «        t          | ¦  «        g}t          |¬¦  «        S )N)Ú	providers)ÚScopedEnvTokenProviderÚSSOTokenProviderÚTokenProviderChain)Úsessionr   s     r   Úcreate_token_resolverr    /   s2   € å˜wÑ'Ô'Ý˜Ñ!Ô!ð€Iõ ¨	Ð2Ñ2Ô2Ð2r   c                 óZ   — t          | t          ¦  «        r|                      d¦  «        S | S )Nz%Y-%m-%dT%H:%M:%SZ)Ú
isinstancer   Ústrftime©Úobjs    r   Ú_serialize_utc_timestampr&   7   s,   € Ý�#•xÑ Ô ð 2Ø�|Š|Ð0Ñ1Ô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<   dS )ÚFrozenAuthTokenÚtokenNÚ
expiration)Ú__name__Ú
__module__Ú__qualname__ÚstrÚ__annotations__r/   r   r   r   r   r-   r-   A   s/   € € € € € € Ø€J€J�JØ"&€J�˜4‘Ð&Ð&Ñ&Ð&Ð&r   r-   c                   óB   — e Zd ZdZdZdZefd„Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zd
S )ÚDeferredRefreshableTokené„  iX  é<   c                 ó|   — || _         || _        || _        t          j        ¦   «         | _        d | _        d | _        d S 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   sA   € Ø)ˆÔØ+ˆÔØˆŒõ 'œ^Ñ-Ô-ˆÔØ!ˆÔØ!ˆÔÐÐr   c                 ó8   — |                       ¦   «          | j        S r   )Ú_refreshr@   ©rB   s    r   Úget_frozen_tokenz)DeferredRefreshableToken.get_frozen_tokenY   s   € Ø�Š‰ŒˆØÔ!Ð!r   c                 ó  — |                       ¦   «         }|sd S |dk    }| j                             |¦  «        rN	 |                      ¦   «          | j                             ¦   «          d S # | j                             ¦   «          w xY wd S )NÚ	mandatory)Ú_should_refreshr?   ÚacquireÚ_protected_refreshÚrelease)rB   Úrefresh_typeÚblock_for_refreshs      r   rG   z!DeferredRefreshableToken._refresh]   sž   € à×+Ò+Ñ-Ô-ˆØð 	Ø�4ð )¨KÒ7ÐØÔ×%Ò%Ð&7Ñ8Ô8ð 	-ð-Ø×'Ò'Ñ)Ô)Ð)àÔ"×*Ò*Ñ,Ô,Ð,Ð,Ð,ø�Ô"×*Ò*Ñ,Ô,Ð,Ð,øøøð		-ð 	-s   ºA) Á)Bc                 óŠ  — |                       ¦   «         }|sd S 	 |                      ¦   «         }|t          | j        ¬¦  «        z   | _        |                      ¦   «         | _        n4# t          $ r' t           	                    d|d¬¦  «         |dk    r‚ Y nw xY w|  
                    ¦   «         rt          | j        d¬¦  «        ‚d S )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   € ð ×+Ò+Ñ-Ô-ˆØð 	Ø�4ð	Ø×$Ò$Ñ&Ô&ˆCØ!$¥y¸Ô9NÐ'OÑ'OÔ'OÑ!OˆDÔØ!%×!4Ò!4Ñ!6Ô!6ˆDÔÐøÝð 	ð 	ð 	Ý�NŠNØGØØð ñ ô ð ð
 ˜{Ò*Ð*àð +Ð*ð	øøøð ×ÒÑÔð 	å%ØœØ@ðñ ô ð ð	ð 	s   šA
A% Á%.BÂBc                 ó€   — | j         €dS | j         j        }t          ||                      ¦   «         z
  ¦  «        }|dk    S )NFr   )r@   r/   r   r:   )rB   r/   Ú	remainings      r   r]   z$DeferredRefreshableToken._is_expired‡   sC   € ØÔÐ%Ø�5àÔ'Ô2ˆ
Ý! *¨t×/AÒ/AÑ/CÔ/CÑ"CÑDÔDˆ	Ø˜AŠ~Ðr   c                 óÒ   — | j         €dS | j         j        }|€d S |                      ¦   «         }|| j        k     rd S t	          ||z
  ¦  «        }|| j        k     rdS || j        k     rdS d S )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ˆ
ØÐà�4à× Ò Ñ"Ô"ˆØ�Ô#Ò#Ð#Ø�4å! *¨sÑ"2Ñ3Ô3ˆ	à�tÔ6Ò6Ð6Ø�;Ø˜Ô7Ò7Ð7Ø�:àˆtr   N)r0   r1   r2   rc   rb   rY   r   rE   rI   rG   rN   r]   rL   r   r   r   r6   r6   F   sŠ   € € € € € ð !(Ðà!(ÐàÐà;Cð "ð "ð "ð "ð"ð "ð "ð-ð -ð -ðð ð ð8ð ð ðð ð ð ð r   r6   c                   ó:   — e Zd Zd	d„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	dS )
r   Nc                 ó   — |€g }|| _         d S r   )Ú
_providers)rB   r   s     r   rE   zTokenProviderChain.__init__¨   s   € ØÐØˆIØ#ˆŒˆˆr   c                 óf   — |                       |¦  «        }| j                             ||¦  «         dS )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­   s5   € ð ×*Ò*¨4Ñ0Ô0ˆØŒ×Ò˜v ~Ñ6Ô6Ð6Ð6Ð6r   c                 ól   — |                       |¦  «        }| j                             |dz   |¦  «         dS )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½   s9   € ð ×*Ò*¨4Ñ0Ô0ˆØŒ×Ò˜v¨™z¨>Ñ:Ô:Ð:Ð:Ð:r   c                 ó’   — d„ | j         D ¦   «         }||vrdS |                     |¦  «        }| j                              |¦  «         dS )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
        c                 ó   — g | ]	}|j         ‘Œ
S r   ©ÚMETHOD©Ú.0Úps     r   ú
<listcomp>z-TokenProviderChain.remove.<locals>.<listcomp>Õ   s   € Ð?Ð?Ð?¨!˜QœXÐ?Ð?Ð?r   N)rf   ÚindexÚpop)rB   rl   Úavailable_methodsrn   s       r   ÚremovezTokenProviderChain.removeÍ   s[   € ð @Ð?¨t¬Ð?Ñ?Ô?ÐØÐ(Ð(Ð(ØˆFà"×(Ò(¨Ñ.Ô.ˆØŒ×Ò˜FÑ#Ô#Ð#Ð#Ð#r   c                 óB   — | 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                 óˆ   — 	 d„ | j         D ¦   «                              |¦  «        S # t          $ r t          |¬¦  «        ‚w xY w)Nc                 ó   — g | ]	}|j         ‘Œ
S r   ru   rw   s     r   rz   z;TokenProviderChain._get_provider_offset.<locals>.<listcomp>é   s   € Ð6Ð6Ð6 �A”HÐ6Ð6Ð6r   )rl   )rf   r{   Ú
ValueErrorr   r€   s     r   ri   z'TokenProviderChain._get_provider_offsetç   sW   € ð	7Ø6Ð6 d¤oÐ6Ñ6Ô6×<Ò<¸TÑBÔBÐBøÝð 	7ð 	7ð 	7Ý+°Ð6Ñ6Ô6Ð6ð	7øøøs	   ‚#& ¦Ac                 ó@   — | j         D ]} |j        di |¤Ž}|�|c S Œd S )Nr   )rf   Ú
load_token)rB   ÚkwargsrW   r.   s       r   r†   zTokenProviderChain.load_tokení   sD   € Øœð 	ð 	ˆHØ'�HÔ'Ð1Ð1¨&Ð1Ð1ˆEØÐ Ø���ð !àˆtr   r   )
r0   r1   r2   rE   ro   rr   r~   r�   ri   r†   r   r   r   r   r   §   s…   € € € € € ð$ð $ð $ð $ð
7ð 7ð 7ð ;ð ;ð ;ð $ð $ð $ð	@ð 	@ð 	@ð7ð 7ð 7ðð ð ð ð r   r   c                   óè   — e Zd ZdZdZej                             e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d	S )r   Ússor7   ú~z.awsÚcacheÚsso_start_urlÚ
sso_regionÚrefresh_tokenNc                 óð   — || _         |€!|                      | j        t          ¬¦  «        }|| _        || _        t          | j        ¬¦  «        | _        |p| j                              d¦  «        pd| _	        d S )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        }|                     di ¦  «        }|                     di ¦  «        }|                     | j        i ¦  «        }d|vrd S |d         }|                     |d ¦  «        }|sd| j        › d|› d�}t	          |¬¦  «        ‚g }| j        D ]}	|	|vr|                     |	¦  «         Œ|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  sd  € ØœÔ1ˆØ ×$Ò$ Z°Ñ4Ô4ˆØ$×(Ò(¨¸Ñ<Ô<ˆØ!Ÿš dÔ&8¸"Ñ=Ô=ˆà Ð.Ð.ØˆFà)¨-Ô8ÐØ!×%Ò%Ð&6¸Ñ=Ô=ˆ
àð 	:ð1 Ô 2ð 1ð 1Ø+;ð1ð 1ð 1ð õ
 %¨yÐ9Ñ9Ô9Ð9àˆØÔ(ð 	,ð 	,ˆCØ˜*Ð$Ð$Ø×&Ò& sÑ+Ô+Ð+øàð 	:ð& Ô 2ð &ð &à"ð&ð &ð &ð õ
 %¨yÐ9Ñ9Ô9Ð9ð -Ø$ \Ô2Ø'¨Ô8ð
ð 
ð 	
r   c                 ó*   — |                       ¦   «         S r   )r«   rH   s    r   Ú_sso_configzSSOTokenProvider._sso_config;  s   € à×$Ò$Ñ&Ô&Ð&r   c                 ór   — 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?  s=   € åØÔ(¨Ô6Ý&ð
ñ 
ô 
ˆõ $ D¤M°:ÀfÐMÑMÔMÐMr   c                 óˆ  — | j                              | j        |d         |d         |d         ¬¦  «        }t          |d         ¬¦  «        }| j        d         | j        d         |d	         |                      ¦   «         |z   |d         |d         |d
         dœ}d|v r|d         |d<   t                               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Ô2Ð2ØÐr   c                 óÄ  ‡— d}ˆfd„|D ¦   «         }|r!d|› �}t                                |¦  «         d S t          j                             ‰d         ¦  «        }t          ||                      ¦   «         z
  ¦  «        dk    rt                                d|¦  «         d S 	 |                      ‰¦  «        S # t          $ r  t            	                    dd¬	¦  «         Y d S w xY w)
N)r¶   r´   rµ   rº   c                 ó   •— g | ]}|‰v¯|‘Œ	S r   r   )rx   Úkr.   s     €r   rz   z:SSOTokenProvider._refresh_access_token.<locals>.<listcomp>e  s   ø€ Ð:Ð:Ð:˜a¨1°E¨>¨>˜¨>¨>¨>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Úmissing_keysÚmsgÚexpirys    `    r   Ú_refresh_access_tokenz&SSOTokenProvider._refresh_access_token^  sø   ø€ ð
ˆð ;Ð:Ð:Ð: 4Ð:Ñ:Ô:ˆØð 	ØNÀÐNÐNˆCÝ�KŠK˜ÑÔÐØ�4å”×&Ò& uÐ-DÔ'EÑFÔFˆÝ˜ $§)¢)¡+¤+Ñ-Ñ.Ô.°!Ò3Ð3Ý�KŠKÐ>ÀÑGÔGÐGØ�4ð	Ø×-Ò-¨eÑ4Ô4Ð4øÝð 	ð 	ð 	Ý�NŠNÐ=ÈˆNÑMÔMÐMØ�4�4ð	øøøs   Â B5 Â5&CÃCc                 ó"  — | j         d         }| j         d         }t                               d|¦  «         |                      ||¬¦  «        }t          j                             |d         ¦  «        }t                               d|¦  «         t          ||  	                    ¦   «         z
  ¦  «        }|| j
        k     r>|                      |¦  «        }|�'|}|d         }| 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ÔDÐDØ×'Ò'¨	ÀÐ'ÑMÔMˆ
Ý”_×*Ò*¨:°kÔ+BÑCÔCˆ
Ý�ŠÐ5°zÑBÔBÐBå! *¨t¯yªy©{¬{Ñ":Ñ;Ô;ˆ	Ø�tÔ+Ò+Ð+Ø!×7Ò7¸
ÑCÔCˆNØÐ)Ø+�
Ø'¨Ô4�
ØÔ"×-Ò-Ø˜z¸ð .ñ ô ð õ Ø�}Ô%°*ð
ñ 
ô 
ð 	
r   c                 óV   — | j         €d S t          | j        | j        | j        ¬¦  «        S )N)rD   )r­   r6   rv   r×   r•   )rB   r‡   s     r   r†   zSSOTokenProvider.load_tokenŒ  s4   € ØÔÐ#Ø�4å'ØŒK˜œ°t´yð
ñ 
ô 
ð 	
r   )r0   r1   r2   rv   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×-Ò-Ø
Œ�Š�S˜& %¨Ñ1Ô1ñô Ðð 	ØðÐð "€KØ%Ðð "°Àtð
ð 
ð 
ð 
ð$%
ð %
ð %
ðN ð'ð 'ñ „^ð'ð ðNð Nñ „^ðNðð ð ð.ð ð ð0
ð 
ð 
ð,
ð 
ð 
ð 
ð 
r   r   c                   ó$   — e Zd ZdZdZdd„Zd„ ZdS )r   zn
    Token provider that loads tokens from environment variables scoped to
    a specific `signing_name`.
    ÚenvNc                 ó>   — || _         |€t          j        }|| _        d S r   )r’   rÙ   Úenviron)rB   r   rà   s      r   rE   zScopedEnvTokenProvider.__init__�  s    € ØˆŒØˆ?Ý”jˆGØˆŒˆˆr   c                 ó¸   — |                      d¦  «        }|€d S t          || j        ¦  «        }|�)t                               d¦  «         t          |¦  «        S d S )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£  s^   € Ø—z’z .Ñ1Ô1ˆØÐØ�4å*¨<¸¼ÑFÔFˆàÐÝ�KŠKÐ?Ñ@Ô@Ð@Ý" 5Ñ)Ô)Ð)ð Ðr   r   )r0   r1   r2   Ú__doc__rv   rE   r†   r   r   r   r   r   •  sH   € € € € € ðð ð
 €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î      sm  ðð €€€Ø €€€Ø 	€	€	€	Ø Ð Ð Ð Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø )Ð )Ð )Ð )Ð )Ð )Ø "Ð "Ð "Ð "Ð "Ð "ðð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð 
ˆÔ	˜8Ñ	$Ô	$€ð!ð !ð !ð3ð 3ð 3ðð ð ð=ð =ð =ð'ð 'ð 'ð 'ð '�jñ 'ô 'ð 'ð
^ð ^ð ^ð ^ð ^ñ ^ô ^ð ^ðBKð Kð Kð Kð Kñ Kô Kð Kð\]
ð ]
ð ]
ð ]
ð ]
ñ ]
ô ]
ð ]
ð@*ð *ð *ð *ð *ñ *ô *ð *ð *ð *r   