
    h 	                         d Z ddlZddlZddlmZ ddl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)	Awaitable)AnyCallable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/eduruby.in/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_keys2   s     ###r   c                     | j                   S )z4Return output keys.

        :meta private:
        )r   r   s    r   output_keyszTransformChain.output_keys:   s     $$$r   inputsrun_managerc                 $    | j                  |      S N)r   r   r"   r#   s      r   _callzTransformChain._callB   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._acallI   sQ     
 )++F333-	
   (( 4s   !AA
'Ar%   )__name__
__module____qualname____doc__liststr__annotations__r	   r   r   dictr   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collections.abcr   typingr   r   r   langchain_core.callbacksr   r   pydanticr	   langchain.chains.baser
   	getLoggerr*   r   r   r6   r   r   <module>r>      sD    3   % * *  '			8	$A)U A)r   