
    ih2	                         d Z ddlZddlZddlmZmZmZmZmZm	Z	 ddl
mZmZ ddlmZ ddlmZ  ej"                  e      Z G d de      Zy)	z-Chain that runs an arbitrary python function.    N)Any	AwaitableCallableDictListOptional)AsyncCallbackManagerForChainRunCallbackManagerForChainRun)Field)Chainc            	          e Zd ZU dZee   ed<   	 ee   ed<   	  ed      Ze	e
eef   ge
eef   f   ed<   	  edd      Zee	e
eef   gee
eef      f      ed	<   	 eej"                  d
eddfd              Zedee   fd       Zedee   fd       Z	 dde
eef   dee   de
eef   fdZ	 dde
eef   dee   de
eef   fdZy)TransformChaina  Chain that transforms the chain output.

    Example:
        .. code-block:: python

            from langchain.chains import TransformChain
            transform_chain = TransformChain(input_variables=["text"],
             output_variables["entities"], transform=func())
    input_variablesoutput_variables	transform)aliastransform_cbN
atransformatransform_cbmsgreturnc                 .    t         j                  |        y)z4Log a message once.

        :meta private:
        N)loggerwarning)r   s    X/var/www/html/dev/engine/venv/lib/python3.12/site-packages/langchain/chains/transform.py	_log_oncezTransformChain._log_once(   s     	s    c                     | j                   S )z3Expect input keys.

        :meta private:
        )r   selfs    r   
input_keyszTransformChain.input_keys1   s     ###r   c                     | j                   S )z4Return output keys.

        :meta private:
        )r   r   s    r   output_keyszTransformChain.output_keys9   s     $$$r   inputsrun_managerc                 $    | j                  |      S N)r   r    r$   r%   s      r   _callzTransformChain._callA   s    
   ((r   c                    K   | j                   | j                  |       d {   S | j                  d       | j                  |      S 7 &w)NzRTransformChain's atransform is not provided, falling back to synchronous transform)r   r   r   r(   s      r   _acallzTransformChain._acallH   sQ     
 )++F333NN1 $$V,, 4s   !AA
'Ar'   )__name__
__module____qualname____doc__r   str__annotations__r   r   r   r   r   r   r   r   staticmethod	functools	lru_cacher   propertyr!   r#   r
   r)   r	   r+    r   r   r   r      s{    #Y@3iA?D;?WL(DcN+T#s(^;<W!d,' 8Hd38n%5yc3h7P%PQR  2s t    $DI $ $ %T#Y % % =A)S#X) 89) 
c3h	) BF-S#X- =>- 
c3h	-r   r   )r/   r3   loggingtypingr   r   r   r   r   r   langchain_core.callbacksr	   r
   pydanticr   langchain.chains.baser   	getLoggerr,   r   r   r6   r   r   <module>r=      sA    3   A A  '			8	$B-U B-r   