
    7|h                     N    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
y)    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y)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} |j                  d      } ||d   |      }|j                  d	d
      } |||      }	|	|d<   ||d<   |S # t        $ r}t	        d|       d}~ww xY w)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
             d/var/www/html/test/engine/venv/lib/python3.12/site-packages/langchain_community/utilities/graphql.pyvalidate_environmentz&GraphQLAPIWrapper.validate_environment   s    	'D **-.))*
	 '-jj1NPT&U#=X
  &|!$~!  	MMNCQ 	s   A 	A2A--A2queryc                 R    | j                  |      }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+zz&++    c                 ^    | j                  |      }| j                  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((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      s     04NHT#s(^,326$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 ; ;3	 3r0   