o
    tBh                     @   s(  d dl mZ d dlmZ d dlmZmZmZmZm	Z	m
Z
 ddlmZ ddlmZmZmZmZ ddlmZmZ ddlmZ dd	lmZmZmZmZ d
dgZ									d"dede
eef dededeeeef  dee dee dee dee dee	e  deeegef  defdd
ZdedefddZ 									d#dede
eef dededeeeef  dee dee dee dee dee	e  dedefddZ!dede
eef dededeeeef  dee dee dee dee dee	e  deeegef  dee fd d!Z"dS )$    )ensure_future)isawaitable)AnyCallableDictOptionalTypeUnion   )GraphQLError)ExecutionContextExecutionResult
Middlewareexecute)Sourceparse)AwaitableOrValue)GraphQLFieldResolverGraphQLSchemaGraphQLTypeResolvervalidate_schemagraphqlgraphql_syncNschemasource
root_valuecontext_valuevariable_valuesoperation_namefield_resolvertype_resolver
middlewareexecution_context_classis_awaitablereturnc                    s4   t | |||||||||	|
}t|r|I dH S |S )a  Execute a GraphQL operation asynchronously.

    This is the primary entry point function for fulfilling GraphQL operations by
    parsing, validating, and executing a GraphQL document along side a GraphQL schema.

    More sophisticated GraphQL servers, such as those which persist queries, may wish
    to separate the validation and execution phases to a static time tooling step,
    and a server runtime step.

    Accepts the following arguments:

    :arg schema:
      The GraphQL type system to use when validating and executing a query.
    :arg source:
      A GraphQL language formatted string representing the requested operation.
    :arg root_value:
      The value provided as the first argument to resolver functions on the top level
      type (e.g. the query object type).
    :arg context_value:
      The context value is provided as an attribute of the second argument
      (the resolve info) to resolver functions. It is used to pass shared information
      useful at any point during query execution, for example the currently logged in
      user and connections to databases or other services.
    :arg variable_values:
      A mapping of variable name to runtime value to use for all variables defined
      in the request string.
    :arg operation_name:
      The name of the operation to use if request string contains multiple possible
      operations. Can be omitted if request string contains only one operation.
    :arg field_resolver:
      A resolver function to use when one is not provided by the schema.
      If not provided, the default field resolver is used (which looks for a value
      or method on the source value with the field's name).
    :arg type_resolver:
      A type resolver function to use when none is provided by the schema.
      If not provided, the default type resolver is used (which looks for a
      ``__typename`` field or alternatively calls the
      :meth:`~graphql.type.GraphQLObjectType.is_type_of` method).
    :arg middleware:
      The middleware to wrap the resolvers with
    :arg execution_context_class:
      The execution context class to use to build the context
    :arg is_awaitable:
      The predicate to be used for checking whether values are awaitable
    N)graphql_implr   )r   r   r   r   r   r   r   r    r!   r"   r#   result r'   f/var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/graphql/graphql.pyr      s"   ;
_valuec                 C   s   dS )zGReplacement for isawaitable if everything is assumed to be synchronous.Fr'   )r)   r'   r'   r(   assume_not_awaitableb   s   r*   F
check_syncc                 C   sT   t |
r|
n|
r
dnt}t| |||||||||	|}t|r(t|  td|S )a  Execute a GraphQL operation synchronously.

    The graphql_sync function also fulfills GraphQL operations by parsing, validating,
    and executing a GraphQL document along side a GraphQL schema. However, it guarantees
    to complete synchronously (or throw an error) assuming that all field resolvers
    are also synchronous.

    Set check_sync to True to still run checks that no awaitable values are returned.
    Nz3GraphQL execution failed to complete synchronously.)callabler*   r%   r   r   cancelRuntimeError)r   r   r   r   r   r   r   r    r!   r"   r+   r#   r&   r'   r'   r(   r   g   s*   
c                 C   s   t | }|rtd|dS zt|}W n ty+ } ztd|gdW  Y d}~S d}~ww ddlm} || |}|r?td|dS t| |||||||d||	|
S )z9Execute a query, return asynchronously only if necessary.N)dataerrorsr
   )validate)r   r   r   r   
validationr1   r   )r   r   r   r   r   r   r   r    r!   r"   r#   schema_validation_errorsdocumenterrorr1   validation_errorsr'   r'   r(   r%      s6   
r%   )	NNNNNNNNN)	NNNNNNNNF)#asyncior   inspectr   typingr   r   r   r   r   r	   r5   r   	executionr   r   r   r   languager   r   pyutilsr   typer   r   r   r   __all__strboolr   r*   r   r%   r'   r'   r'   r(   <module>   s     
	


O
	


1
	

