
    7|h-	                     N    d Z ddlZddlmZmZmZ ddlmZmZm	Z	  G d de      Z
y)zUtil that calls Lambda.    N)AnyDictOptional)	BaseModel
ConfigDictmodel_validatorc                       e Zd ZU dZdZeed<   	 dZee	   ed<   	 dZ
ee	   ed<   	 dZee	   ed<   	  ed      Z ed	
      ededefd              Zde	de	fdZy)LambdaWrappera7  Wrapper for AWS Lambda SDK.
    To use, you should have the ``boto3`` package installed
    and a lambda functions built from the AWS Console or
    CLI. Set up your AWS credentials with ``aws configure``

    Example:
        .. code-block:: bash

            pip install boto3

            aws configure

    Nlambda_clientfunction_nameawslambda_tool_nameawslambda_tool_descriptionforbid)extrabefore)modevaluesreturnc                 h    	 ddl }|j                  d      |d<   |S # t        $ r t        d      w xY w)z3Validate that python package exists in environment.r   NzBboto3 is not installed. Please install it with `pip install boto3`lambdar   )boto3ImportErrorclient)clsr   r   s      f/var/www/html/test/engine/venv/lib/python3.12/site-packages/langchain_community/utilities/awslambda.pyvalidate_environmentz"LambdaWrapper.validate_environment%   sE    
	 #(,,x"8  	T 	s    1queryc                 .   | j                   j                  | j                  dt        j                  d|i            }	 |d   }|j                         j                  d      }t        j                  |      d   }||dk(  ryd	| S # t        $ r Y yw xY w)
z
        Invokes the lambda function and returns the
        result.

        Args:
            query: an input to passed to the lambda
                function as the ``body`` of a JSON
                object.
        RequestResponsebody)FunctionNameInvocationTypePayloadr#   zutf-8z$Failed to parse response from Lambda zRequest failed.zResult: )	r   invoker   jsondumpsreaddecodeloadsStopIteration)selfr   respayload_streampayload_stringanswers         r   runzLambdaWrapper.run5   s       ''++,JJ/ ( 
	: ^N+00299'BNZZ/7F
 >Vr\$fX&&  	:9	:s   <B 	BB)__name__
__module____qualname____doc__r   r   __annotations__r   r   strr   r   r   model_configr   classmethodr   r   r1        r   r
   r
   	   s     M3%#'M8C='*)-#-9044;L (#$ 3   $' ' 'r;   r
   )r5   r&   typingr   r   r   pydanticr   r   r   r
   r:   r;   r   <module>r>      s%      & & ; ;H'I H'r;   