o
    tBh|                  
   @   s   d dl mZmZmZmZmZ ddlmZmZm	Z	m
Z
mZ ddlmZmZ ddlmZmZmZmZmZmZmZmZmZ dgZ	ddee
 d	ed
eeeef  defddZ	dde
d
eeeef  defddZdS )    )AnyDictListOptionalcast   )ListValueNodeNullValueNodeObjectValueNode	ValueNodeVariableNode)inspect	Undefined)	GraphQLInputObjectTypeGraphQLInputTypeGraphQLListGraphQLNonNullGraphQLScalarTypeis_input_object_typeis_leaf_typeis_list_typeis_non_null_typevalue_from_astN
value_nodetype_	variablesreturnc                 C   s\  | st S t| tr#| jj}|st S ||t }|du r!t|r!t S |S t|r:t| tr.t S tt	|}t
| |j|S t| trAdS t|rtt|}|j}t| trg }|j}| jD ]&}t||rnt|rit   S |d qZt
|||}	|	t u r|t   S ||	 qZ|S t
| ||}
|
t u rt S |
gS t|rt| tst S tt|}i }|j}dd | jD }| D ]@\}}||}|rt|j|r|jt ur|j||jp|< n	t|jrt   S qt
|j|j|}|t u rt   S |||jp|< q||S t|r$tt|}z|r|| |}W |S || }W |S  ty#   t  Y S w tdt | d)a4  Produce a Python value given a GraphQL Value AST.

    A GraphQL type must be provided, which will be used to interpret different GraphQL
    Value literals.

    Returns ``Undefined`` when the value could not be validly coerced according
    to the provided type.

    =================== ============== ================
       GraphQL Value      JSON Value     Python Value
    =================== ============== ================
       Input Object       Object         dict
       List               Array          list
       Boolean            Boolean        bool
       String             String         str
       Int / Float        Number         int / float
       Enum Value         Mixed          Any
       NullValue          null           None
    =================== ============== ================

    Nc                 S   s   i | ]}|j j|qS  )namevalue).0fieldr   r   w/var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/graphql/utilities/value_from_ast.py
<dictcomp>l   s    z"value_from_ast.<locals>.<dictcomp>zUnexpected input type: .)!r   
isinstancer   r   r   getr   r	   r   r   r   of_typer   r   r   appendvaluesis_missing_variabler   r
   r   fieldsitemsdefault_valueout_nametypeout_typer   r   parse_literal	Exception	TypeErrorr   )r   r   r   variable_namevariable_value	item_typecoerced_valuesappend_value	item_node
item_valuecoerced_valuecoerced_objr+   field_nodes
field_namer!   
field_nodefield_valueresultr   r   r"   r      s   

















c                 C   s$   t | to| p|| jjttu S )zLCheck if ``value_node`` is a variable not defined in the ``variables`` dict.)r%   r   r&   r   r   r   )r   r   r   r   r"   r*      s   
r*   )N)typingr   r   r   r   r   languager   r	   r
   r   r   pyutilsr   r   r/   r   r   r   r   r   r   r   r   r   __all__strr   boolr*   r   r   r   r"   <module>   s.    ,
v