Ë
    ?²Xj|]  ã                   ó´   — d dl Z d dlmZmZ d dlmZmZ d dlmZ d dlmZm	Z	 d dl
Z
 e j                  e«      Z G d„ de«      Z G d„ d	e
j                   «      Zy)
é    N)Úgenerate_tokenÚ	urldecode)ÚWebApplicationClientÚInsecureTransportError)ÚLegacyApplicationClient)ÚTokenExpiredErrorÚis_secure_transportc                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )ÚTokenUpdatedc                 ó8   •— t         t        | �  «        || _        y ©N)Úsuperr   Ú__init__Útoken)Úselfr   Ú	__class__s     €úf/var/www/html/content_generation/venv/lib/python3.12/site-packages/requests_oauthlib/oauth2_session.pyr   zTokenUpdated.__init__   s   ø€ ÜŒl˜DÑ*Ô,Øˆ�
ó    )Ú__name__Ú
__module__Ú__qualname__r   Ú__classcell__©r   s   @r   r   r      s   ø„ ÷ð r   r   c                   óÎ  ‡ — e Zd ZdZ	 	 	 	 	 	 	 	 	 	 dˆ fd„	Zed„ «       Zej                  d„ «       Zd„ Zed„ «       Z	e	j                  d„ «       Z	e	j                  d„ «       Z	ed	„ «       Zej                  d
„ «       Zed„ «       Zej                  d„ «       Zej                  d„ «       Zed„ «       Zdd„Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Zd„ Z	 	 	 	 	 	 	 dd„Z	 	 	 	 	 	 dˆ fd„	Zd„ Zˆ xZS )ÚOAuth2Sessiona*  Versatile OAuth 2 extension to :class:`requests.Session`.

    Supports any grant type adhering to :class:`oauthlib.oauth2.Client` spec
    including the four core OAuth 2 grants.

    Can be used to create authorization urls, fetch tokens and access protected
    resources using the :class:`requests.Session` interface you are used to.

    - :class:`oauthlib.oauth2.WebApplicationClient` (default): Authorization Code Grant
    - :class:`oauthlib.oauth2.MobileApplicationClient`: Implicit Grant
    - :class:`oauthlib.oauth2.LegacyApplicationClient`: Password Credentials Grant
    - :class:`oauthlib.oauth2.BackendApplicationClient`: Client Credentials Grant

    Note that the only time you will be using Implicit Grant from python is if
    you are driving a user agent able to obtain URL fragments.
    c                 óê  •— t        t        | �
  di |¤Ž |xs t        ||¬«      | _        |xs i | _        || _        || _        |xs t        | _	        || _
        || _        |xs i | _        |	| _        |
| _        | j                  dvr/t        dj!                  | j"                  | j                  «      «      ‚d„ | _        t'        «       t'        «       t'        «       t'        «       t'        «       dœ| _        y)a˜  Construct a new OAuth 2 client session.

        :param client_id: Client id obtained during registration
        :param client: :class:`oauthlib.oauth2.Client` to be used. Default is
                       WebApplicationClient which is useful for any
                       hosted application but not mobile or desktop.
        :param scope: List of scopes you wish to request access to
        :param redirect_uri: Redirect URI you registered as callback
        :param token: Token dictionary, must include access_token
                      and token_type.
        :param state: State string used to prevent CSRF. This will be given
                      when creating the authorization url and must be supplied
                      when parsing the authorization response.
                      Can be either a string or a no argument callable.
        :auto_refresh_url: Refresh token endpoint URL, must be HTTPS. Supply
                           this if you wish the client to automatically refresh
                           your access tokens.
        :auto_refresh_kwargs: Extra arguments to pass to the refresh token
                              endpoint.
        :token_updater: Method with one argument, token, to be used to update
                        your token database on automatic token refresh. If not
                        set a TokenUpdated warning will be raised when a token
                        has been refreshed. This warning will carry the token
                        in its token argument.
        :param pkce: Set "S256" or "plain" to enable PKCE. Default is disabled.
        :param kwargs: Arguments to pass to the Session constructor.
        )r   )ÚS256ÚplainNzWrong value for {}(.., pkce={})c                 ó   — | S r   © )Úrs    r   Ú<lambda>z(OAuth2Session.__init__.<locals>.<lambda>^   s   € ™ar   )Úaccess_token_responseÚrefresh_token_responseÚprotected_requestÚrefresh_token_requestÚaccess_token_requestNr    )r   r   r   r   Ú_clientr   Ú_scopeÚredirect_urir   ÚstateÚ_stateÚauto_refresh_urlÚauto_refresh_kwargsÚtoken_updaterÚ_pkceÚAttributeErrorÚformatr   ÚauthÚsetÚcompliance_hook)r   Ú	client_idÚclientr-   r.   Úscoper*   r   r+   r/   ÚpkceÚkwargsr   s               €r   r   zOAuth2Session.__init__$   sÜ   ø€ ôR 	Œm˜TÑ+Ñ5¨fÒ5ØÒMÔ!5°iÀuÔ!MˆŒØ’[˜bˆŒ
ØˆŒØ(ˆÔØÒ,œnˆŒ
ØˆŒØ 0ˆÔØ#6Ò#<¸"ˆÔ Ø*ˆÔØˆŒ
à�:‰:Ð4Ñ4Ü Ð!B×!IÑ!IÈ$Ï.É.ÐZ^×ZdÑZdÓ!eÓfÐfñ  ˆŒ	ô
 &)£UÜ&)£eÜ!$£Ü%(£UÜ$'£Eñ 
ˆÕr   c                 óx   — | j                   �| j                   S | j                  �| j                  j                  S y)zBBy default the scope from the client is used, except if overriddenN)r)   r(   r8   ©r   s    r   r8   zOAuth2Session.scopej   s5   € ð �;‰;Ð"Ø—;‘;ÐØ�\‰\Ð%Ø—<‘<×%Ñ%Ð%àr   c                 ó   — || _         y r   )r)   )r   r8   s     r   r8   zOAuth2Session.scopet   s	   € àˆ�r   c                 ó  — 	 | j                  «       | _        t        j                  d| j                  «       | j                  S # t        $ r? | j                   | _        t        j                  d| j                  «       Y | j                  S w xY w)z6Generates a state string to be used in authorizations.zGenerated new state %s.z&Re-using previously supplied state %s.)r+   r,   ÚlogÚdebugÚ	TypeErrorr<   s    r   Ú	new_statezOAuth2Session.new_statex   so   € ð	MØŸ*™*›,ˆDŒKÜ�I‰IÐ/°·±Ô=ð �{‰{Ðøô ò 	MØŸ*™*ˆDŒKÜ�I‰IÐ>ÀÇÁÕLØ�{‰{Ðð	Mús   ‚5A Á:BÂ
Bc                 ó0   — t        | j                  dd «      S )Nr6   ©Úgetattrr(   r<   s    r   r6   zOAuth2Session.client_id‚   s   € ä�t—|‘| [°$Ó7Ð7r   c                 ó&   — || j                   _        y r   ©r(   r6   ©r   Úvalues     r   r6   zOAuth2Session.client_id†   s   € à!&ˆ�‰Õr   c                 ó   — | j                   `y r   rG   r<   s    r   r6   zOAuth2Session.client_idŠ   s   € à�L‰LÑ"r   c                 ó0   — t        | j                  dd «      S )Nr   rD   r<   s    r   r   zOAuth2Session.tokenŽ   s   € ä�t—|‘| W¨dÓ3Ð3r   c                 ó\   — || j                   _        | j                   j                  |«       y r   )r(   r   Úpopulate_token_attributesrH   s     r   r   zOAuth2Session.token’   s    € à"ˆ�‰ÔØ�‰×.Ñ.¨uÕ5r   c                 ó0   — t        | j                  dd «      S )NÚaccess_tokenrD   r<   s    r   rO   zOAuth2Session.access_token—   s   € ä�t—|‘| ^°TÓ:Ð:r   c                 ó&   — || j                   _        y r   ©r(   rO   rH   s     r   rO   zOAuth2Session.access_token›   s   € à$)ˆ�‰Õ!r   c                 ó   — | j                   `y r   rQ   r<   s    r   rO   zOAuth2Session.access_tokenŸ   s   € à�L‰LÑ%r   c                 ó,   — t        | j                  «      S )a€  Boolean that indicates whether this session has an OAuth token
        or not. If `self.authorized` is True, you can reasonably expect
        OAuth-protected requests to the resource to succeed. If
        `self.authorized` is False, you need the user to go through the OAuth
        authentication dance before OAuth-protected requests to the resource
        will succeed.
        )ÚboolrO   r<   s    r   Ú
authorizedzOAuth2Session.authorized£   s   € ô �D×%Ñ%Ó&Ð&r   c                 óv  — |xs | j                  «       }| j                  rc| j                  j                  d«      | _        | j                  |d<   | j                  j                  | j                  | j                  ¬«      |d<    | j                  j                  |f| j                  | j                  |dœ|¤Ž|fS )aF  Form an authorization URL.

        :param url: Authorization endpoint url, must be HTTPS.
        :param state: An optional state string for CSRF protection. If not
                      given it will be generated for you.
        :param kwargs: Extra parameters to include.
        :return: authorization_url, state
        é+   Úcode_challenge_method)Úcode_verifierrX   Úcode_challenge)r*   r8   r+   )	rB   r0   r(   Úcreate_code_verifierÚ_code_verifierÚcreate_code_challengeÚprepare_request_urir*   r8   )r   Úurlr+   r:   s       r   Úauthorization_urlzOAuth2Session.authorization_url®   s¼   € ð Ò)˜Ÿ™Ó)ˆØ�:Š:Ø"&§,¡,×"CÑ"CÀBÓ"GˆDÔØ.2¯j©jˆFÐ*Ñ+Ø'+§|¡|×'IÑ'IØ"×1Ñ1Ø&*§j¡jð (Jó (ˆFÐ#Ñ$ð
 -ˆD�L‰L×,Ñ,Øðà!×.Ñ.Ø—j‘jØñ	ð
 ñð ð	
ð 		
r   c                 óú  — t        |«      s
t        «       ‚|s@|r>| j                  j                  || j                  ¬«       | j                  j
                  }n?|s=t        | j                  t        «      r#| j                  j
                  }|st        d«      ‚| j                  r&| j                  €t        d«      ‚| j                  |d<   t        | j                  t        «      r|€t        d«      ‚|€t        d«      ‚|�||d<   |�||d<   |�|€Qd	}nN|d
urJ| j                  }|r<t        j                  d|«       |�|nd}t        j                   j#                  ||«      }|r|�||d<    | j                  j$                  d$||| j&                  |dœ|¤Ž}|xs dddœ}i | _        i }|j+                  «       dk(  rt-        t/        |«      «      ||	rdnd<   n6|j+                  «       dk(  rt-        t/        |«      «      |d<   nt        d«      ‚| j0                  d   D ]&  }t        j                  d|«        ||||«      \  }}}Œ(  | j2                  d$|||
|||||dœ|¤Ž}t        j                  d|j4                  «       t        j                  d|j2                  j6                  «       t        j                  d|j2                  j8                  «       t        j                  d|j2                  j:                  «       t        j                  d|j8                  |j<                  «       t        j                  dt?        | j0                  d    «      «       | j0                  d    D ]   }t        j                  d!|«        ||«      }Œ" | j                  jA                  |j<                  | jB                  ¬"«       | j                  j(                  | _        t        j                  d#| j(                  «       | j(                  S )%a  Generic method for fetching an access token from the token endpoint.

        If you are using the MobileApplicationClient you will want to use
        `token_from_fragment` instead of `fetch_token`.

        The current implementation enforces the RFC guidelines.

        :param token_url: Token endpoint URL, must use HTTPS.
        :param code: Authorization code (used by WebApplicationClients).
        :param authorization_response: Authorization response URL, the callback
                                       URL of the request back to you. Used by
                                       WebApplicationClients instead of code.
        :param body: Optional application/x-www-form-urlencoded body to add the
                     include in the token request. Prefer kwargs over body.
        :param auth: An auth tuple or method as accepted by `requests`.
        :param username: Username required by LegacyApplicationClients to appear
                         in the request body.
        :param password: Password required by LegacyApplicationClients to appear
                         in the request body.
        :param method: The HTTP method used to make the request. Defaults
                       to POST, but may also be GET. Other methods should
                       be added as needed.
        :param force_querystring: If True, force the request body to be sent
            in the querystring instead.
        :param timeout: Timeout of the request in seconds.
        :param headers: Dict to default request headers with.
        :param verify: Verify SSL certificate.
        :param proxies: The `proxies` argument is passed onto `requests`.
        :param include_client_id: Should the request body include the
                                  `client_id` parameter. Default is `None`,
                                  which will attempt to autodetect. This can be
                                  forced to always include (True) or never
                                  include (False).
        :param client_secret: The `client_secret` paired to the `client_id`.
                              This is generally required unless provided in the
                              `auth` tuple. If the value is `None`, it will be
                              omitted from the request, however if the value is
                              an empty string, an empty string will be sent.
        :param cert: Client certificate to send for OAuth 2.0 Mutual-TLS Client
                     Authentication (draft-ietf-oauth-mtls). Can either be the
                     path of a file containing the private key and certificate or
                     a tuple of two filenames for certificate and key.
        :param kwargs: Extra parameters to include in the token request.
        :return: A token dict
        ©r+   z?Please supply either code or authorization_response parameters.zFCode verifier is not found, authorization URL must be generated beforerY   zQ`LegacyApplicationClient` requires both the `username` and `password` parameters.zGThe required parameter `username` was supplied, but `password` was not.ÚusernameÚpasswordFTzIEncoding `client_id` "%s" with `client_secret` as Basic auth credentials.Ú Úclient_secret)ÚcodeÚbodyr*   Úinclude_client_idúapplication/jsonú!application/x-www-form-urlencoded©ÚAcceptzContent-TypeÚPOSTÚparamsÚdataÚGETz%The method kwarg must be POST or GET.r'   z&Invoking access_token_request hook %s.)Úmethodr_   ÚtimeoutÚheadersr3   ÚverifyÚproxiesÚcertz0Request to fetch token completed with status %s.zRequest url was %szRequest headers were %szRequest body was %sú(Response headers were %s and content %s.ú!Invoking %d token response hooks.r#   úInvoking hook %s.©r8   zObtained token %s.r    )"r	   r   r(   Úparse_request_uri_responser,   rg   Ú
isinstancer   Ú
ValueErrorr0   r\   r   r6   r?   r@   Úrequestsr3   ÚHTTPBasicAuthÚprepare_request_bodyr*   r   ÚupperÚdictr   r5   ÚrequestÚstatus_coder_   rt   rh   ÚtextÚlenÚparse_request_body_responser8   )r   Ú	token_urlrg   Úauthorization_responserh   r3   rc   rd   rr   Úforce_querystringrs   rt   ru   rv   ri   rf   rw   r:   r6   Úrequest_kwargsÚhookr!   s                         r   Úfetch_tokenzOAuth2Session.fetch_tokenÊ   sÛ  € ôB # 9Ô-Ü(Ó*Ð*áÑ.Ø�L‰L×3Ñ3Ø&¨d¯k©kð 4ô ð —<‘<×$Ñ$‰DÙœ* T§\¡\Ô3GÔHØ—<‘<×$Ñ$ˆDÙÜ ØXóð ð �:Š:Ø×"Ñ"Ð*Ü Ø\óð ð '+×&9Ñ&9ˆF�?Ñ#ô �d—l‘lÔ$;Ô<ØÐÜ ð<óð ð ÐÜ ð.óð ð ÐØ!)ˆF�:ÑØÐØ!)ˆF�:Ñð Ðð !Ð(Ø$)Ñ!ð !¨Ñ,Ø ŸN™N�	ÙÜ—I‘Ið5à!ôð
 6CÐ5N¡MÐTV�MÜ#Ÿ=™=×6Ñ6°yÀ-ÓP�Dáð Ð(Ø*7��Ñ'à0ˆt�|‰|×0Ñ0ð 
ØØØ×*Ñ*Ø/ñ	
ð
 ñ
ˆð ò 
Ø(Ø?ñ
ˆð ˆŒ
ØˆØ�<‰<‹>˜VÒ#ÜHLÜ˜$“óIˆNÑ'8™8¸fÒEð �\‰\‹^˜uÒ$Ü'+¬I°d«OÓ'<ˆN˜8Ò$äÐDÓEÐEà×(Ñ(Ð)?Ô@ˆDÜ�I‰IÐ>ÀÔEÙ15Ø˜7 Nó2Ñ.ˆI�w¡ð Að ˆD�L‰Lð 

ØØØØØØØØñ

ð ñ

ˆô 	�	‰	ÐDÀaÇmÁmÔTÜ�	‰	Ð&¨¯	©	¯©Ô6Ü�	‰	Ð+¨Q¯Y©Y×->Ñ->Ô?Ü�	‰	Ð'¨¯©¯©Ô8Ü�	‰	Ð<¸a¿i¹iÈÏÉÔPÜ�	‰	Ø/Ü�×$Ñ$Ð%<Ñ=Ó>ô	
ð ×(Ñ(Ð)@ÔAˆDÜ�I‰IÐ)¨4Ô0Ù�Q“‰Að Bð 	�‰×0Ñ0°·±¸t¿z¹zÐ0ÔJØ—\‘\×'Ñ'ˆŒ
Ü�	‰	Ð&¨¯
©
Ô3Ø�z‰zÐr   c                 óž   — | j                   j                  || j                  ¬«       | j                   j                  | _        | j                  S )z¼Parse token from the URI fragment, used by MobileApplicationClients.

        :param authorization_response: The full URL of the redirect back to you
        :return: A token dict
        rb   )r(   r|   r,   r   )r   rŠ   s     r   Útoken_from_fragmentz!OAuth2Session.token_from_fragment›  sA   € ð 	�‰×/Ñ/Ø"¨$¯+©+ð 	0ô 	
ð —\‘\×'Ñ'ˆŒ
Ø�z‰zÐr   c	           
      óˆ  — |st        d«      ‚t        |«      s
t        «       ‚|xs | j                  j	                  d«      }t
        j                  d| j                  «       |	j                  | j                  «        | j                  j                  d||| j                  dœ|	¤Ž}t
        j                  d|«       |€dddœ}| j                  d	   D ]&  }
t
        j                  d
|
«        |
|||«      \  }}}Œ( | j                  |t        t        |«      «      ||||d|¬«      }t
        j                  d|j                   «       t
        j                  d|j"                  |j$                  «       t
        j                  dt'        | j                  d   «      «       | j                  d   D ]   }
t
        j                  d|
«        |
|«      }Œ" | j                  j)                  |j$                  | j                  ¬«      | _        d| j                  vr$t
        j                  d«       || j                  d<   | j                  S )aô  Fetch a new access token using a refresh token.

        :param token_url: The token endpoint, must be HTTPS.
        :param refresh_token: The refresh_token to use.
        :param body: Optional application/x-www-form-urlencoded body to add the
                     include in the token request. Prefer kwargs over body.
        :param auth: An auth tuple or method as accepted by `requests`.
        :param timeout: Timeout of the request in seconds.
        :param headers: A dict of headers to be used by `requests`.
        :param verify: Verify SSL certificate.
        :param proxies: The `proxies` argument will be passed to `requests`.
        :param kwargs: Extra parameters to include in the token request.
        :return: A token dict
        z'No token endpoint set for auto_refresh.Úrefresh_tokenz*Adding auto refresh key word arguments %s.)rh   r’   r8   z&Prepared refresh token request body %srj   rk   rl   r&   z'Invoking refresh_token_request hook %s.T)rp   r3   rs   rt   ru   Úwithhold_tokenrv   z2Request to refresh token completed with status %s.rx   ry   r$   rz   r{   z)No new refresh token given. Re-using old.r    )r~   r	   r   r   Úgetr?   r@   r.   Úupdater(   Úprepare_refresh_bodyr8   r5   Úpostrƒ   r   r…   rt   r†   r‡   rˆ   )r   r‰   r’   rh   r3   rs   rt   ru   rv   r:   r�   r!   s               r   r’   zOAuth2Session.refresh_token§  s  € ñ4 ÜÐFÓGÐGä" 9Ô-Ü(Ó*Ð*à%ÒH¨¯©¯©¸Ó)Hˆä�	‰	Ø8¸$×:RÑ:Rô	
ð 	�‰�d×.Ñ.Ô/Ø0ˆt�|‰|×0Ñ0ð 
Ø ]¸$¿*¹*ñ
ØHNñ
ˆô 	�	‰	Ð:¸DÔAàˆ?à,Ø!DñˆGð
 ×(Ñ(Ð)@ÔAˆDÜ�I‰IÐ?ÀÔFÙ'+¨I°wÀÓ'EÑ$ˆI�w¡ð Bð �I‰IØÜ”i “oÓ&ØØØØØØð ó 	
ˆô 	�	‰	ÐFÈÏÉÔVÜ�	‰	Ð<¸a¿i¹iÈÏÉÔPÜ�	‰	Ø/Ü�×$Ñ$Ð%=Ñ>Ó?ô	
ð ×(Ñ(Ð)AÔBˆDÜ�I‰IÐ)¨4Ô0Ù�Q“‰Að Cð —\‘\×=Ñ=¸a¿f¹fÈDÏJÉJÐ=ÓWˆŒ
Ø $§*¡*Ñ,Ü�I‰IÐAÔBØ*7ˆD�J‰J�Ñ'Ø�z‰zÐr   c	                 ó„  •— t        |«      s
t        «       ‚| j                  rª|s¨t        j	                  dt        | j                  d   «      «       | j                  d   D ]&  }
t        j	                  d|
«        |
|||«      \  }}}Œ( t        j	                  d| j                  «       	 | j                  j                  ||||¬«      \  }}}t        j	                  d||«       t        j	                  d||«       t        j	                  d|	«       t%        t&        | �R  ||f|||dœ|	¤ŽS # t        $ �r | j                  rút        j	                  d| j                  «       |	j                  dd«      }|r:|r8|€6t        j	                  d	|«       t        j                  j                  ||«      } | j                  | j                  fd|i|	¤Ž}| j                   rVt        j	                  d
|| j                   «       | j!                  |«       | j                  j                  ||||¬«      \  }}}nt#        |«      ‚‚ Y �Œqw xY w)z<Intercept all requests and add the OAuth 2 token if present.z-Invoking %d protected resource request hooks.r%   rz   zAdding token %s to request.)Úhttp_methodrh   rt   z1Auto refresh is set, attempting to refresh at %s.r3   NzEEncoding client_id "%s" with client_secret as Basic auth credentials.zUpdating token to %s using %s.z"Requesting url %s using method %s.z Supplying headers %s and data %sz&Passing through key word arguments %s.)rt   rp   Úfiles)r	   r   r   r?   r@   r‡   r5   r(   Ú	add_tokenr   r-   Úpopr   r3   r€   r’   r/   r   r   r   r„   )r   rr   r_   rp   rt   r“   r6   rf   rš   r:   r�   r3   r   r   s                €r   r„   zOAuth2Session.requestö  s9  ø€ ô # 3Ô'Ü(Ó*Ð*Ø�:Š:™nÜ�I‰IØ?Ü�D×(Ñ(Ð)<Ñ=Ó>ôð ×,Ñ,Ð-@ÔA�Ü—	‘	Ð-¨tÔ4Ù%)¨#¨w¸Ó%=Ñ"��W™dð Bô �I‰IÐ3°T·Z±ZÔ@ð"Ø%)§\¡\×%;Ñ%;Ø V°$Àð &<ó &Ñ"��W˜dôF 	�	‰	Ð6¸¸VÔDÜ�	‰	Ð4°g¸tÔDÜ�	‰	Ð:¸FÔCÜ”] DÑ1Ø�Cð
Ø!(¨t¸5ñ
ØDJñ
ð 	
øôE %ó Ø×(Ò(Ü—I‘IØKØ×-Ñ-ôð "Ÿ:™: f¨dÓ3�DÙ ¡]¸¸ÜŸ	™	ØcØ%ôô  (Ÿ}™}×:Ñ:¸9ÀmÓT˜Ø.˜D×.Ñ.Ø×-Ñ-ñØ48ðØ<Bñ�Eð ×)Ò)ÜŸ	™	Ø<¸eÀT×EWÑEWôð ×*Ñ*¨5Ô1Ø-1¯\©\×-CÑ-CØ¨V¸$Èð .Dó .Ñ*˜˜W¡dô +¨5Ó1Ð1àò '+ð/ús   Â*#D* Ä*DH?È>H?c                 óŠ   — || j                   vrt        d|| j                   «      ‚| j                   |   j                  |«       y)a  Register a hook for request/response tweaking.

        Available hooks are:
            access_token_response invoked before token parsing.
            refresh_token_response invoked before refresh token parsing.
            protected_request invoked before making a request.
            access_token_request invoked before making a token fetch request.
            refresh_token_request invoked before making a refresh request.

        If you find a new hook is needed please send a GitHub PR request
        or open an issue.
        zHook type %s is not in %s.N)r5   r~   Úadd)r   Ú	hook_typer�   s      r   Úregister_compliance_hookz&OAuth2Session.register_compliance_hook:  sG   € ð ˜D×0Ñ0Ñ0ÜØ,¨i¸×9MÑ9Móð ð 	×Ñ˜YÑ'×+Ñ+¨DÕ1r   )
NNNNNNNNNNr   )NNre   NNNrn   FNNNNNNN)Nre   NNNNN)NNFNNN)r   r   r   Ú__doc__r   Úpropertyr8   ÚsetterrB   r6   Údeleterr   rO   rU   r`   rŽ   r�   r’   r„   r    r   r   s   @r   r   r      s®  ø„ ñð& ØØØ ØØØØØØõD
ðL ñó ðð ‡\�\ñó ðòð ñ8ó ð8ð ×Ññ'ó ð'ð ×Ññ#ó ð#ð ñ4ó ð4ð ‡\�\ñ6ó ð6ð ñ;ó ð;ð ×Ññ*ó ð*ð ×Ññ&ó ð&ð ñ'ó ð'ó
ð> Ø#ØØØØØØØØØØØØØó#Oòb
ð ØØØØØØóMðf ØØØØØõB
öH2r   r   )ÚloggingÚoauthlib.commonr   r   Úoauthlib.oauth2r   r   r   r   r	   r   Ú	getLoggerr   r?   ÚWarningr   ÚSessionr   r    r   r   Ú<module>r«      sI   ðÛ ç 5ß HÝ 3ß BÛ à€g×Ñ˜Ó!€ô�7ô ôy2�H×$Ñ$õ y2r   