File: //opt/cppython/lib/python3.8/site-packages/botocore/__pycache__/credentials.cpython-38.pyc
U
KD�g-X � @ s� d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlm Z d dl
mZ d dlm
Z
d dlmZ d dlmZmZ d dlZd dlZd dlmZ d dlmZmZ d d lmZ d d
lmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$ d dl%m&Z& d dl'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/ e�0e1�Z2e d
ddddgdd�Z3dZ4dZ5dUdd�Z6G dd� d�Z7dd� Z8dd� Z9dd� Z:dVd!d"�Z;d#d$� Z<d%d&� Z=d'd(� Z>G d)d*� d*�Z?G d+d,� d,e?�Z@G d-d.� d.e@�ZAG d/d0� d0�ZBG d1d2� d2eB�ZCG d3d4� d4eC�ZDG d5d6� d6eC�ZEG d7d8� d8�ZFG d9d:� d:eF�ZGG d;d<� d<eF�ZHG d=d>� d>eF�ZIG d?d@� d@eF�ZJG dAdB� dBeF�ZKG dCdD� dDeF�ZLG dEdF� dFeF�ZMG dGdH� dHeF�ZNG dIdJ� dJeF�ZOG dKdL� dL�ZPG dMdN� dNeF�ZQG dOdP� dP�ZRG dQdR� dReB�ZSG dSdT� dTeF�ZTdS )W� N)�
namedtuple)�deepcopy)�sha1��parse)�tzlocal�tzutc)�UNSIGNED)�compat_shell_split�
total_seconds)�Config) �ConfigNotFound�CredentialRetrievalError�InfiniteLoopConfigError�InvalidConfigError�MetadataRetrievalError�PartialCredentialsError�RefreshWithMFAUnsupportedError�UnauthorizedSSOTokenError�UnknownCredentialError)�SSOTokenProvider)� ArnParser�ContainerMetadataFetcher�FileWebIdentityTokenLoader�InstanceMetadataFetcher�
JSONFileCache�SSOTokenLoader�parse_key_val_file�resolve_imds_endpoint_mode�ReadOnlyCredentials�
access_key�
secret_key�token�
account_id�N)�defaultsiX � c s � � d�pd}� � d�}� � d�}� �� �d�dk }� � d�t� �t� � d�d�}|dkr^i }t� }t� } tt||� � � |d �d
�}
t
� ||d�}t� fdd
�t� |�||t
|| |
g�|d�}||g}
|j||d�}t� t� | |
g}|
| | }|�r
|�|� t�d� t|d�}|S )z�Create a default credential resolver.
This creates a pre-configured credential resolver
that includes the default lookup chain for
credentials.
�profile�defaultZmetadata_service_timeoutZmetadata_service_num_attemptsN�ec2_metadata_service_endpoint�ec2_metadata_v1_disabled)r) Z"ec2_metadata_service_endpoint_modeZec2_credential_refresh_windowr* )�timeout�num_attempts�
user_agent�config)�iam_role_fetcher)�cache�region_namec s � j S r$ )�full_config� ��sessionr3 �A/opt/cppython/lib/python3.8/site-packages/botocore/credentials.py�<lambda>p � z,create_credential_resolver.<locals>.<lambda>)�load_config�client_creatorr0 �profile_name�credential_sourcer�profile_provider_builder�r; �disable_env_varszWSkipping environment variable credential check because profile name was explicitly set.�� providers)�get_config_variableZinstance_variables�getr �!_DEFAULT_ADVISORY_REFRESH_TIMEOUT�EnvProvider�ContainerProvider�InstanceMetadataProviderr r- �ProfileProviderBuilder�AssumeRoleProvider�_get_client_creator�CanonicalNameCredentialSourcerrA �OriginalEC2Provider�BotoProvider�remove�logger�debug�CredentialResolver)r5 r0 r1 r; Zmetadata_timeoutr, r? Zimds_configZenv_providerZcontainer_providerZinstance_metadata_providerr= �assume_role_providerZpre_profile�profile_providersZpost_profilerA �resolverr3 r4 r6 �create_credential_resolverD s|
����
�� �
�����
�
rU c @ sL e Zd ZdZddd�Zddd�Zdd � Zd
d� Zdd
� Zdd� Z dd� Z
dS )rH a� This class handles the creation of profile based providers.
NOTE: This class is only intended for internal use.
This class handles the creation and ordering of the various credential
providers that primarly source their configuration from the shared config.
This is needed to enable sharing between the default credential chain and
the source profile chain created by the assume role provider.
Nc C s || _ || _|| _|| _d S r$ )�_session�_cache�_region_name�_sso_token_cache)�selfr5 r0 r1 Zsso_token_cacher3 r3 r6 �__init__� s zProfileProviderBuilder.__init__Fc C s. | � ||�| �|�| �|�| �|�| �|�gS r$ )�_create_web_identity_provider�_create_sso_provider�"_create_shared_credential_provider�_create_process_provider�_create_config_provider�rZ r; r? r3 r3 r6 rA � s ��z ProfileProviderBuilder.providersc s t |� fdd�d�S )Nc s � j jS r$ �rV r2 r3 �rZ r3 r6 r7 � r8 zAProfileProviderBuilder._create_process_provider.<locals>.<lambda>)r; r9 )�ProcessProvider�rZ r; r3 rc r6 r_ � s
�z/ProfileProviderBuilder._create_process_providerc C s | j �d�}t||d�S )NZcredentials_file)r; �creds_filename)rV rB �SharedCredentialProvider)rZ r; Zcredential_filer3 r3 r6 r^ � s
�z9ProfileProviderBuilder._create_shared_credential_providerc C s | j �d�}t||d�S )N�config_file)r; �config_filename)rV rB �ConfigProvider)rZ r; rh r3 r3 r6 r` � s
�z.ProfileProviderBuilder._create_config_providerc s&