o
    tBhn                     @   s   d dl 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mZmZmZmZmZ ddlmZmZmZmZ ddlmZmZmZ dd	gZG d
d	 d	eZG dd deZdedefddZdS )    )castAnyDictListUnion   )GraphQLError)	DirectiveDefinitionNodeDirectiveNode	FieldNodeInputValueDefinitionNodeNonNullTypeNodeTypeNodeVisitorActionSKIP	print_ast)GraphQLArgumentis_required_argumentis_typespecified_directives   )ASTValidationRuleSDLValidationContextValidationContextProvidedRequiredArgumentsRule)ProvidedRequiredArgumentsOnDirectivesRulec                       sV   e Zd ZU dZeeef ed< deeef f fddZde	de
ddfd	d
Z  ZS )r   zProvided required arguments on directives

    A directive is only valid if all required (non-null without a default value)
    arguments have been provided.

    For internal use only.
    contextc                    s   t  | i }|j}|r|jnt}tt|D ]}dd |j D ||j	< q|j
j}|D ]}t|trEdd tt|jp=dD ||j	j< q-|| _d S )Nc                 S   s   i | ]\}}t |r||qS  )r   ).0nameargr   r   /var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/graphql/validation/rules/provided_required_arguments.py
<dictcomp>)   s    zFProvidedRequiredArgumentsOnDirectivesRule.__init__.<locals>.<dictcomp>c                 S      i | ]}|j j|qS r   r   valuer   r    r   r   r!   r"   2   s    r   )super__init__schema
directivesr   r   r   argsitemsr   documentdefinitions
isinstancer	   filteris_required_argument_node	argumentsr%   required_args_map)selfr   r3   r)   defined_directives	directiveast_definitionsdef_	__class__r   r!   r(       s"   

z2ProvidedRequiredArgumentsOnDirectivesRule.__init__directive_node_argsreturnNc           
      G   s   |j j}| j|}|rG|jpd}dd |D }|D ].}||vrF|| j}t|r-t|ntt	t
|}	| td| d| d|	 d| qd S d S )Nr   c                 S   s   h | ]}|j jqS r   r$   r&   r   r   r!   	<setcomp>@   s    zLProvidedRequiredArgumentsOnDirectivesRule.leave_directive.<locals>.<setcomp>zDirective '@' argument '' of type ''' is required, but it was not provided.)r   r%   r3   getr2   typer   strr   r   r   report_errorr   )
r4   r;   r<   directive_namerequired_args	arg_nodesarg_node_setarg_namearg_typearg_type_strr   r   r!   leave_directive9   s.   


z9ProvidedRequiredArgumentsOnDirectivesRule.leave_directive)__name__
__module____qualname____doc__r   r   r   __annotations__r(   r
   r   rM   __classcell__r   r   r9   r!   r      s
   
 c                       sF   e Zd ZU dZeed< def fddZdedede	fdd	Z
  ZS )
r   zProvided required arguments

    A field or directive is only valid if all required (non-null without a default
    value) field arguments have been provided.
    r   c                    s   t  | d S N)r'   r(   )r4   r   r9   r   r!   r(   \   s   z&ProvidedRequiredArgumentsRule.__init__
field_noder<   r=   c           	      G   s   | j  }|s	tS |jpd}dd |D }|j D ]$\}}||}|s>t|r>| t	d|j
j d| d|j d| qd S )Nr   c                 S   r#   r   r$   r&   r   r   r!   r"   f   s    z=ProvidedRequiredArgumentsRule.leave_field.<locals>.<dictcomp>zField 'r?   r@   rA   )r   get_field_defr   r2   r+   r,   rB   r   rE   r   r   r%   rC   )	r4   rU   r<   	field_defrH   arg_node_maprJ   arg_defarg_noder   r   r!   leave_field_   s$   


	z)ProvidedRequiredArgumentsRule.leave_field)rN   rO   rP   rQ   r   rR   r(   r   r   r   r[   rS   r   r   r9   r!   r   S   s
   
 r    r=   c                 C   s   t | jto
| jd u S rT   )r/   rC   r   default_value)r    r   r   r!   r1   v   s   r1   N) typingr   r   r   r   r   errorr   languager	   r
   r   r   r   r   r   r   r   rC   r   r   r   r    r   r   r   __all__r   r   boolr1   r   r   r   r!   <module>   s    ,>#