
                         Z    S 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	   " S S\
5      rg	)
zContext managers related to credentials and authentication.

Context managers allow use of "with" syntax for managing credentials.
Example:

  with CredentialProvidersManager():
    # Task requiring credentials.
    )absolute_import)division)unicode_literals)util)storec                   .    \ rS rSrSrSS jrS rS rSrg)	CredentialProvidersManager    z>Context manager for handling credential provider registration.Nc                     Xl         g)zInitializes context manager with optional credential providers.

Args:
  credential_providers (list[object]): List of provider classes like those
    defined in core.credentials.store.py.
N_credential_providers)selfcredential_providerss     =lib/googlecloudsdk/core/credentials/creds_context_managers.py__init__#CredentialProvidersManager.__init__#   s
     "6    c                     U R                   =(       d    [        R                  " 5       /U l         U R                    H  nUR                  5         M     [        R
                  " 5       [        l        U $ )zBRegisters sources for credentials and project for use by commands.)r   r   GceCredentialProviderRegisteriamcred_util ImpersonationAccessTokenProviderIMPERSONATION_TOKEN_PROVIDER)r   providers     r   	__enter__$CredentialProvidersManager.__enter__,   s`    !%!;!; "##%@D .. /
 	557 
&Kr   c                 f    AAAU R                    H  nUR                  5         M     S[        l        g)zCleans up credential providers.N)r   
UnRegisterr   r   )r   exc_type	exc_valueexc_tracebackr   s        r   __exit__#CredentialProvidersManager.__exit__9   s/    	9m.. / *.E&r   r   )N)	__name__
__module____qualname____firstlineno____doc__r   r   r"   __static_attributes__ r   r   r	   r	       s    F6.r   r	   N)r(   
__future__r   r   r   %googlecloudsdk.api_lib.iamcredentialsr   r   googlecloudsdk.core.credentialsr   objectr	   r*   r   r   <module>r/      s'    '  ' F 1. .r   