
    $g
                         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
mZ ddlmZmZmZ ddlmZmZ d	gZ G d
 d	e          ZdededefdZdS )    )defaultdict)AnyDict   )GraphQLError)NameNodeObjectTypeDefinitionNodeVisitorActionSKIP)is_object_typeis_interface_typeis_input_object_type   )SDLValidationContextSDLValidationRuleUniqueFieldDefinitionNamesRulec                   T     e Zd ZdZdef fdZdededefdZ	e	Z
e	Ze	Ze	Ze	Ze	Z xZS )r   zrUnique field definition names

    A GraphQL complex type is only valid if all its fields are uniquely named.
    contextc                     t                                          |           |j        }|r|j        ni | _        t          t                    | _        d S )N)super__init__schematype_mapexisting_type_mapr   dictknown_field_names)selfr   r   	__class__s      v/var/www/html/netbox-4.1.3/venv/lib/python3.11/site-packages/graphql/validation/rules/unique_field_definition_names.pyr   z'UniqueFieldDefinitionNamesRule.__init__   sK    !!!4:!BALTARAR    node_argsreturnc           
         | j         }|j        j        }| j        |         }|j        pg D ]}|j        j        }t          |                    |          |          r0|                     t          d| d| d|j                             a||v r8|                     t          d| d| d||         |j        g                     |j        ||<   t          S )NzField '.zQ' already exists in the schema. It cannot also be defined in this type extension.z' can only be defined once.)
r   namevaluer   fields	has_fieldgetreport_errorr   r   )r   r!   r"   r   	type_namefield_names	field_def
field_names           r   check_field_uniquenessz5UniqueFieldDefinitionNamesRule.check_field_uniqueness   s;    !2IO	,Y7* 	9 	9I"-J*..y99:FF 9!! M) M Mj M M M "	     {**!! 5) 5 5j 5 5 5$Z0).A     +4.J''r    )__name__
__module____qualname____doc__r   r   r	   r   r
   r0   "enter_input_object_type_definition!enter_input_object_type_extensionenter_interface_type_definitionenter_interface_type_extensionenter_object_type_definitionenter_object_type_extension__classcell__)r   s   @r   r   r      s         
S 4 S S S S S S,69	   @ *@&(>%&<#%;"#9 "8r    type_r/   r#   c                 r    t          |           st          |           st          |           r	|| j        v S dS )NF)r   r   r   r(   )r<   r/   s     r   r)   r)   @   sE    e * 1% 8 8 *<PQV<W<W *U\))5r    N)collectionsr   typingr   r   errorr   languager   r	   r
   r   typer   r   r    r   r   __all__r   strboolr)    r    r   <module>rH      s   # # # # # #         ! ! ! ! ! ! O O O O O O O O O O O O K K K K K K K K K K 5 5 5 5 5 5 5 5+
,19 19 19 19 19%6 19 19 19hS c d      r    