
    Ng                     V    d dl Z d dlmZmZmZmZ d dlmZmZm	Z	  G d de          Z
dS )    N)AnyCallableDictOptional)	BaseModel
ConfigDictmodel_validatorc                      e Zd ZU dZdZeeeef                  ed<   dZ	ee
         ed<   eed<   dZeed<   eegef         ed<    ed	          Z ed
          ededefd                        ZdedefdZdedeeef         fdZdS )GraphQLAPIWrapperzWrapper around GraphQL API.

    To use, you should have the ``gql`` python package installed.
    This wrapper will use the GraphQL API to conduct queries.
    Ncustom_headersfetch_schema_from_transportgraphql_endpoint
gql_clientgql_functionforbid)extrabefore)modevaluesreturnc                    	 ddl m}m } ddlm} n$# t          $ r}t	          d|           d}~ww xY w|                    d          } ||d         |          }|                    d	d
          } |||          }	|	|d<   ||d<   |S )z;Validate that the python package exists in the environment.r   )Clientgql)RequestsHTTPTransportz_Could not import gql python package. Try installing it with `pip install gql`. Received error: Nr   r   )urlheadersr   T)	transportr   r   r   )r   r   gql.transport.requestsr   ImportErrorget)
clsr   r   r   r   er   r   r   clients
             a/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/utilities/graphql.pyvalidate_environmentz&GraphQLAPIWrapper.validate_environment   s    	''''''''DDDDDDD 	 	 	QMNQ Q  	
 **-..)))*
 
 
	 '-jj1NPT&U&U#=X
 
 
  &|!$~s    
2-2queryc                 X    |                      |          }t          j        |d          S )z(Run a GraphQL query and get the results.   )indent)_execute_queryjsondumps)selfr&   results      r$   runzGraphQLAPIWrapper.run1   s*    $$U++z&++++    c                 d    |                      |          }| j                            |          }|S )z/Execute a GraphQL query and return the results.)r   r   execute)r-   r&   document_noder.   s       r$   r*   z GraphQLAPIWrapper._execute_query6   s/    ))%00((77r0   )__name__
__module____qualname____doc__r   r   r   str__annotations__r   boolr   r   r   r   model_configr	   classmethodr%   r/   r*    r0   r$   r   r      s2          04NHT#s(^,33326$666JC5#:&&&&:  L _(###$ 3    [ $#., , , , , ,
C DcN      r0   r   )r+   typingr   r   r   r   pydanticr   r   r	   r   r=   r0   r$   <module>r@      s     0 0 0 0 0 0 0 0 0 0 0 0 ; ; ; ; ; ; ; ; ; ;3 3 3 3 3	 3 3 3 3 3r0   