o
    tBh                     @   sV   d dl mZmZ ddlmZ ddlmZmZ ddlm	Z	m
Z
 dgZG dd de
Zd	S )
    )AnySet   )GraphQLError)OperationDefinitionNodeVariableDefinitionNode   )ValidationContextValidationRuleNoUndefinedVariablesRulec                       sd   e Zd ZdZdef fddZdeddfdd	Zd
ededdfddZ	de
deddfddZ  ZS )r   zNo undefined variables

    A GraphQL operation is only valid if all variables encountered, both directly and
    via fragment spreads, are defined by that operation.

    See https://spec.graphql.org/draft/#sec-All-Variable-Uses-Defined
    contextc                    s   t  | t | _d S N)super__init__setdefined_variable_names)selfr   	__class__ /var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/graphql/validation/rules/no_undefined_variables.pyr      s   z!NoUndefinedVariablesRule.__init___argsreturnNc                 G   s   | j   d S r   )r   clear)r   r   r   r   r   enter_operation_definition   s   z3NoUndefinedVariablesRule.enter_operation_definition	operationc              	   G   sn   | j |}| j}|D ])}|j}|jj}||vr4| t|jr)d| d|jj dnd| d||g qd S )NzVariable '$z' is not defined by operation 'z'.z' is not defined.)r   get_recursive_variable_usagesr   nodenamevaluereport_errorr   )r   r   r   usagesdefined_variablesusager   var_namer   r   r   leave_operation_definition   s$   

z3NoUndefinedVariablesRule.leave_operation_definitionr   c                 G   s   | j |jjj d S r   )r   addvariabler   r   )r   r   r   r   r   r   enter_variable_definition/   s   z2NoUndefinedVariablesRule.enter_variable_definition)__name__
__module____qualname____doc__r	   r   r   r   r   r%   r   r(   __classcell__r   r   r   r   r   
   s$    
N)typingr   r   errorr   languager   r    r	   r
   __all__r   r   r   r   r   <module>   s    