class_docstr: Data that must be available at all points during query execution.
  
  Namely, schema of the type system that is currently executing,
  and the fragments defined in the query document
class_docstr_tok: ["Data","that","must","be","available","at","all","points","during","query","execution",".","Namely",",","schema","of","the","type","system","that","is","currently","executing",",","and","the","fragments","defined","in","the","query","document"]
docstr: Constructs a ExecutionContext object from the arguments passed
  to execute, which we will pass throughout the other execution
  methods.
docstr_tok: ["Constructs","a","ExecutionContext","object","from","the","arguments","passed","to","execute",",","which","we","will","pass","throughout","the","other","execution","methods","."]
code: def __init__(
      self,
      schema,
      document_ast,
      root_value,
      context_value,
      variable_values,
      operation_name,
      executor,
      middleware,
  ):
      """Constructs a ExecutionContext object from the arguments passed
      to execute, which we will pass throughout the other execution
      methods."""
      errors = []
      operation = None
      fragments = {}
  
      for definition in document_ast.definitions:
          if isinstance(definition, ast.OperationDefinition):
              if not operation_name and operation:
                  raise GraphQLError(
                      "Must provide operation name if query contains multiple operations."
                  )
  
              if (
                  not operation_name
                  or definition.name
                  and definition.name.value == operation_name
              ):
                  operation = definition
  
          elif isinstance(definition, ast.FragmentDefinition):
              fragments[definition.name.value] = definition
  
          else:
              raise GraphQLError(
                  "GraphQL cannot execute a request containing a {}.".format(
                      definition.__class__.__name__
                  ),
                  definition,
              )
  
      if not operation:
          if operation_name:
              raise GraphQLError(
                  'Unknown operation named "{}".'.format(operation_name)
              )
  
          else:
              raise GraphQLError("Must provide an operation.")
  
      variable_values = get_variable_values(
          schema, operation.variable_definitions or [], variable_values
      )
  
      self.schema = schema
      self.fragments = fragments
      self.root_value = root_value
      self.operation = operation
      self.variable_values = variable_values
      self.errors = errors
      self.context_value = context_value
      self.argument_values_cache = {}
      self.executor = executor
      self.middleware = middleware
      self._subfields_cache = {}
  
imports: from ..error import GraphQLError
  from ..language import ast
  from ..pyutils.default_ordered_dict import DefaultOrderedDict
  from ..type.definition import GraphQLInterfaceType, GraphQLUnionType
  from ..type.directives import GraphQLIncludeDirective, GraphQLSkipDirective
  from ..type.introspection import SchemaMetaFieldDef, TypeMetaFieldDef, TypeNameMetaFieldDef
  from ..utils.type_from_ast import type_from_ast
  from .values import get_argument_values, get_variable_values
label_desc: Use image node_id 1 to create a new ExecutionContext object from inherited base classes: object with example: obj = ExecutionContext(schema, document_ast, root_value, context_value, variable_values, operation_name, executor, middleware)