o
    ni`	                     @   sp   d Z ddlmZmZmZmZmZmZ ddlZddl	m
Z
 ddlmZ ddlmZ ddlmZ G dd	 d	e
ZdS )
zA simple GraphQL client for sending queries and mutations.

Note: This was originally wandb/vendor/gql-0.2.0/wandb_gql/transport/requests.py
The only substantial change is to re-use a requests.Session object.
    )AnyCallableDictOptionalTupleUnionN)HTTPTransport)ExecutionResult)ast)	print_astc                       s   e Zd Z				ddedeeeeef ef  dedeee	e
f  deeeef  ded	df fd
dZ		ddejdee deee	e
f  d	efddZ  ZS )GraphQLSessionNFurlauthuse_jsontimeoutproxieskwargsreturnc                    sH   t  j|fi | t | _|r| jj| || j_|| _|| _	dS )a  Setup a session for sending GraphQL queries and mutations.

        Args:
            url (str): The GraphQL URL
            auth (tuple or callable): Auth tuple or callable for Basic/Digest/Custom HTTP Auth
            use_json (bool): Send request body as JSON instead of form-urlencoded
            timeout (int, float): Specifies a default timeout for requests (Default: None)
        N)
super__init__requestsSessionsessionr   updater   default_timeoutr   )selfr   r   r   r   r   r   	__class__ W/home/ubuntu/SoloSpeech/.venv/lib/python3.10/site-packages/wandb/sdk/lib/gql_request.pyr      s   

zGraphQLSession.__init__documentvariable_valuesc                 C   s   t |}||pi d}| jrdnd}d| jd| jd|p| j||i}| jj| jfi |}|  |	 }	|	
d|	
d}
}|
d u rN|d u rNtd|	 t|
|d	S )
N)query	variablesjsondataheaderscookiesr   errorsz"Received non-compatible response: )r%   r(   )r   r   r&   r'   r   r   postr   raise_for_statusr$   getRuntimeErrorr	   )r   r    r!   r   	query_strpayloaddata_key	post_argsrequestresultr%   r(   r   r   r   execute*   s   
zGraphQLSession.execute)NFNN)NN)__name__
__module____qualname__strr   r   r   r   boolintfloatr   r   r   r
   Noder	   r3   __classcell__r   r   r   r   r      s>    r   )__doc__typingr   r   r   r   r   r   r   wandb_gql.transport.httpr   wandb_graphql.executionr	   wandb_graphql.languager
   wandb_graphql.language.printerr   r   r   r   r   r   <module>   s     