
    ~h                     <    d dl Z ddlmZ dgZdZ G d d      Zd Zy)    N   )FrameworkIntegration	BaseOAuth)	client_idclient_secretrequest_token_urlrequest_token_paramsaccess_token_urlaccess_token_paramsrefresh_token_urlrefresh_token_paramsauthorize_urlauthorize_paramsapi_base_urlclient_kwargsserver_metadata_urlc                   D    e Zd ZdZdZdZeZd	dZd Z	d
dZ
d Zd Zd Zy)r   z`Registry for oauth clients.

    Create an instance for registry::

        oauth = OAuth()
    Nc                 J    i | _         i | _        || _        || _        || _        y N)	_registry_clientscachefetch_tokenupdate_token)selfr   r   r   s       e/opt/mcp/mcp-sentiment/venv/lib/python3.12/site-packages/authlib/integrations/base_client/registry.py__init__zBaseOAuth.__init__%   s'    
&(    c                    || j                   v r| j                   |   S || j                  vry| j                  |   \  }}|j                  dd      }|r*|j                  r|j                  }|j	                  |       n|} | j
                  ||fi |}| j                  || j                        }|r |||fi |}n:|j                  d      r | j                  ||fi |}n | j                  ||fi |}|| j                   |<   |S )a>  Create or get the given named OAuth client. For instance, the
        OAuth registry has ``.register`` a twitter client, developers may
        access the client with::

            client = oauth.create_client("twitter")

        :param: name: Name of the remote application
        :return: OAuth remote app
        N
client_clsr   )r   r   popOAUTH_APP_CONFIGupdategenerate_client_kwargsframework_integration_clsr   getoauth1_client_clsoauth2_client_cls)r   name	overwriteconfigr    kwargs	frameworkclients           r   create_clientzBaseOAuth.create_client,   s    4== ==&&t~~% NN40	6ZZd3
*5500FMM&!F,,,T9GG224D		4:6:FZZ+,+T++ItFvFF+T++ItFvFF$dr   c                 F    ||f| j                   |<   | j                  |      S )a  Registers a new remote application.

        :param name: Name of the remote application.
        :param overwrite: Overwrite existing config with framework settings.
        :param kwargs: Parameters for :class:`RemoteApp`.

        Find parameters for the given remote app class. When a remote app is
        registered, it can be accessed with *named* attribute::

            oauth.register('twitter', client_id='', ...)
            oauth.twitter.get('timeline')
        )r   r/   )r   r)   r*   r,   s       r   registerzBaseOAuth.registerQ   s(     !*62t!!$''r   c                    |j                  dd       }|j                  dd       }| j                  |t              }|rt        |||      }|s,| j                  r t        j                  | j                  |      }||d<   |j                  d      s3|s,| j                  r t        j                  | j                  |      }||d<   |S )Nr   r   r   )	r!   load_configOAUTH_CLIENT_PARAMS_config_clientr   	functoolspartialr&   r   )r   r)   r*   r,   r   r   r+   s          r   r$   z BaseOAuth.generate_client_kwargsa   s    jj5zz.$7!!$(;<#FFI>Ft//#++D,<,<dCK +}zz-.D$5$5(001B1BDI%1F>"r   c                 <    | j                   j                  | ||      S r   )r%   r3   )r   r)   paramss      r   r3   zBaseOAuth.load_configu   s    --99$fMMr   c                     	 t         j                  | |      S # t        $ r8}|| j                  v r| j	                  |      cY d }~S t        d|       |d }~ww xY w)NzNo such client: )object__getattribute__AttributeErrorr   r/   )r   keyexcs      r   __getattr__zBaseOAuth.__getattr__x   s_    	D**455 	Ddnn$))#.. #3C5!9:C	Ds    	AAAAA)NNN)F)__name__
__module____qualname____doc__r'   r(   r   r%   r   r/   r1   r$   r3   r@    r   r   r   r      s<      4)#J( (NDr   c                     t         D ]Q  }| j                  |d       }||vr|||<   |s"|s%t        ||   t              r||   j	                  |       M|||<   S |S r   )r4   r&   
isinstancedictr#   )r+   r,   r*   kvs        r   r5   r5      sf      JJq$F?F1I1&)T*q	  #q	 Mr   )r6   framework_integrationr   __all__r4   r   r5   rE   r   r   <module>rM      s.     7- "eD eDP
r   