o
    tBhH                     @   sn   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 dgZG d	d deZd
S )    )Anycast   )GraphQLError)ArgumentNodeEnumValueNode	FieldNodeObjectFieldNode)GraphQLInputObjectTypeget_named_typeis_input_object_type   )ValidationRuleNoDeprecatedCustomRulec                   @   sh   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	deddfd
dZ
dededdfddZdS )r   ax  No deprecated

    A GraphQL document is only valid if all selected fields and all used enum values
    have not been deprecated.

    Note: This rule is optional and is not part of the Validation section of the GraphQL
    Specification. The main purpose of this rule is detection of deprecated usages and
    not necessarily to forbid their use when querying a service.
    node_argsreturnNc              	   G   s`   | j }| }|r,|j}|d ur.| }|j}| td| d|jj d| | d S d S d S )Nz
The field . is deprecated. )contextget_field_defdeprecation_reasonget_parent_typenamereport_errorr   value)selfr   r   r   	field_defr   parent_typeparent_name r    /var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/graphql/validation/rules/custom/no_deprecated.pyenter_field   s"   z"NoDeprecatedCustomRule.enter_fieldc                 G   s   | j }| }|rV|j}|d urX| }|jj}|d u rB| }|j}	| }
|
jjj}| 	t
d|	 d| d| d| | d S | 	t
d|j d| d| | d S d S d S )NzField 'r   z' argument '' is deprecated. zDirective '@)r   get_argumentr   get_directiver   r   r   r   ast_noder   r   )r   r   r   r   arg_defr   directive_defarg_namer   r   r   
field_namer    r    r!   enter_argument&   sD   

z%NoDeprecatedCustomRule.enter_argumentc           	   	   G   s   | j }t| }t|r;tt|j|jj	}|r=|j
}|d ur?|jj	}|j}| td| d| d| | d S d S d S d S )NzThe input field r   r   )r   r   get_parent_input_typer   r   r
   fieldsgetr   r   r   r   r   )	r   r   r   r   input_object_definput_field_defr   r*   input_object_namer    r    r!   enter_object_fieldC   s,   z)NoDeprecatedCustomRule.enter_object_fieldc              	   G   sb   | j }| }|r-|j}|d ur/t| }|j}| td| d|j d| | d S d S d S )NzThe enum value 'r   r#   )	r   get_enum_valuer   r   get_input_typer   r   r   r   )r   r   r   r   enum_value_defr   enum_type_defenum_type_namer    r    r!   enter_enum_valueW   s"   z'NoDeprecatedCustomRule.enter_enum_value)__name__
__module____qualname____doc__r   r   r"   r   r+   r	   r2   r   r8   r    r    r    r!   r      s    
N)typingr   r   errorr   languager   r   r   r	   typer
   r   r    r   __all__r   r    r    r    r!   <module>   s    