o
    tBh		                     @   sd   d dl Z d dlmZ d dlmZmZmZ d dlmZm	Z	m
Z
mZmZ d dlmZ G dd deZdS )    N)isawaitable)AsyncGenerator	Awaitablecast)DocumentNodeExecutionResultGraphQLSchemaexecute	subscribe)AsyncTransportc                   @   sf   e Zd ZdZdefddZdd Zdd Zd	ed
e	fddZ
edd Zd	ed
ee	df fddZdS )LocalSchemaTransportzAA transport for executing GraphQL queries against a local schema.schemac                 C   s
   || _ dS )z{Initialize the transport with the given local schema.

        :param schema: Local schema as GraphQLSchema object
        N)r   )selfr    r   q/var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/gql/transport/local_schema.py__init__   s   
zLocalSchemaTransport.__init__c                       dS )z'No connection needed on local transportNr   r   r   r   r   connect      zLocalSchemaTransport.connectc                    r   )z"No close needed on local transportNr   r   r   r   r   close   r   zLocalSchemaTransport.closedocumentreturnc                    sR   t | j|g|R i |}t|r ttt |}|I dH }|S tt|}|}|S )z@Execute the provided document AST for on a local GraphQL Schema.N)r	   r   r   r   r   r   )r   r   argskwargsresult_or_awaitableexecution_resultr   r   r   r	      s   

zLocalSchemaTransport.executec                    s   t | r| I dH S | S )zTThis method is necessary to work with
        graphql-core versions < and >= 3.3.0a3N)asyncioiscoroutine)objr   r   r   _await_if_necessary4   s   z(LocalSchemaTransport._await_if_necessaryNc                 O  sZ   |  t| j|g|R i |I dH }t|tr|V  dS |2 z	3 dH W }|V  q 6 dS )zSend a subscription and receive the results using an async generator

        The results are sent as an ExecutionResult object
        N)r    r
   r   
isinstancer   )r   r   r   r   subscribe_resultresultr   r   r   r
   :   s   


zLocalSchemaTransport.subscribe)__name__
__module____qualname____doc__r   r   r   r   r   r   r	   staticmethodr    r   r
   r   r   r   r   r   
   s&    




r   )r   inspectr   typingr   r   r   graphqlr   r   r   r	   r
   gql.transportr   r   r   r   r   r   <module>   s    