
    gz                         d 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	  G d de	j                        Z
 G d	 d
e	j                        Zy)a  OAuth 2.0 Async Credentials.

This module provides credentials based on OAuth 2.0 access and refresh tokens.
These credentials usually access resources on behalf of a user (resource
owner).

Specifically, this is intended to use access tokens acquired using the
`Authorization Code grant`_ and can refresh those tokens using a
optional `refresh token`_.

Obtaining the initial access and refresh token is outside of the scope of this
module. Consult `rfc6749 section 4.1`_ for complete details on the
Authorization Code grant flow.

.. _Authorization Code grant: https://tools.ietf.org/html/rfc6749#section-1.3.1
.. _refresh token: https://tools.ietf.org/html/rfc6749#section-6
.. _rfc6749 section 4.1: https://tools.ietf.org/html/rfc6749#section-4.1
    )_credentials_async)_helpers)
exceptions)_reauth_async)credentialsc                       e Zd ZdZ ej
                  ej                        d        Z ej
                  ej                        d        Z	y)Credentialsa  Credentials using OAuth 2.0 access and refresh tokens.

    The credentials are considered immutable. If you want to modify the
    quota project, use :meth:`with_quota_project` or ::

        credentials = credentials.with_quota_project('myproject-123)
    c           
        K   | j                   $| j                  | j                  | j                  t	        j
                  d      t        j                  || j                  | j                   | j                  | j                  | j                  | j                  | j                         d {   \  }}}}}|| _        || _        || _         |j                  d      | _        || _	        | j                  rqd|v rlt        | j                        }t        |d   j!                               }||z
  }	|	r3t	        j
                  dj#                  dj%                  |	                  y y y 7 w)NzThe credentials do not contain the necessary fields need to refresh the access token. You must specify refresh_token, token_uri, client_id, and client_secret.)scopes
rapt_tokenenable_reauth_refreshid_tokenscopezUNot all requested scopes were granted by the authorization server, missing scopes {}.z, )_refresh_token
_token_uri
_client_id_client_secretr   RefreshErrorreauthrefresh_grant_scopes_rapt_token_enable_reauth_refreshtokenexpiryget	_id_token	frozensetsplitformatjoin)
selfrequestaccess_tokenrefresh_tokenr   grant_responser   requested_scopesgranted_scopes scopes_requested_but_not_granteds
             U/var/www/openai/venv/lib/python3.12/site-packages/google/oauth2/_credentials_async.pyrefreshzCredentials.refresh2   sg     '&&""*));  &&OOOO<<''"&"="=	
 	
	
 "
+'++J7%<<G~5(6&~g'>'D'D'FGN/?./P,/ --??Ev		"BC@  0	 6<#	
s   B,E+.E)/B;E+c                 |   K   | j                   s| j                  |       d {    | j                  |       y 7 w)N)validr+   apply)r"   r#   methodurlheaderss        r*   before_requestzCredentials.before_requestc   s0     zz,,w'''

7 (s   !<:<N)
__name__
__module____qualname____doc__r   copy_docstringr   r	   r+   r2        r*   r	   r	   )   sV     X[445. 6.` X[445 6r9   r	   c                       e Zd ZdZy)UserAccessTokenCredentialsa  Access token credentials for user account.

    Obtain the access token for a given user account or the current active
    user account with the ``gcloud auth print-access-token`` command.

    Args:
        account (Optional[str]): Account to get the access token for. If not
            specified, the current active account will be used.
        quota_project_id (Optional[str]): The project ID used for quota
            and billing.

    N)r3   r4   r5   r6   r8   r9   r*   r;   r;   j   s    r9   r;   N)r6   google.authr   r   r   r   google.oauth2r   r   oauth2_credentialsr	   r;   r8   r9   r*   <module>r?      sB   & :   " 1 ;>$00 >B!3!N!N r9   