o
    tBh                     @   sn   d dl mZ d dlmZmZ ddlmZ ddlmZm	Z	m
Z
 ddlmZ ddlmZ d	gZG d
d	 d	eZdS )    )
attrgetter)Any
Collection   )GraphQLError)ArgumentNodeDirectiveNode	FieldNode)group_by   )ASTValidationRuleUniqueArgumentNamesRulec                   @   sR   e Zd ZdZdededdfddZdededdfd	d
Zde	e
 ddfddZdS )r   zUnique argument names

    A GraphQL field or directive is only valid if all supplied arguments are uniquely
    named.

    See https://spec.graphql.org/draft/#sec-Argument-Names
    node_argsreturnNc                 G      |  |j d S Ncheck_arg_uniqueness	arguments)selfr   r    r   /var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/graphql/validation/rules/unique_argument_names.pyenter_field      z#UniqueArgumentNamesRule.enter_fieldargsc                 G   r   r   r   )r   r   r   r   r   r   enter_directive   r   z'UniqueArgumentNamesRule.enter_directiveargument_nodesc                 C   sR   t |td}| D ]\}}t|dkr&| td| ddd |D  qd S )Nz
name.valuer   z&There can be only one argument named 'z'.c                 S   s   g | ]}|j qS r   )name).0r   r   r   r   
<listcomp>#   s    z@UniqueArgumentNamesRule.check_arg_uniqueness.<locals>.<listcomp>)r
   r   itemslenreport_errorr   )r   r   	seen_argsarg_name	arg_nodesr   r   r   r      s   
z,UniqueArgumentNamesRule.check_arg_uniqueness)__name__
__module____qualname____doc__r	   r   r   r   r   r   r   r   r   r   r   r   r      s
    N)operatorr   typingr   r   errorr   languager   r   r	   pyutilsr
    r   __all__r   r   r   r   r   <module>   s    