
    Pi@                     <    d dl T d dlT d Z G d d          Zd ZdS )   )*c                 ,    | j         | j         j        S d S N)origin	signaturenodes    h/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/einx/tracer/optimize.pyget_signaturer      s    ;{$$t    c                       e Zd Zd Zd ZdS )	Optimizerc                 "    i | _         d| _        d S )NF)optimized_nodeschanged)selfs    r
   __init__zOptimizer.__init__   s    !r   c                     t          |           j        v r j        t          |                   S t          |t                    r`|j        t          d          t            |j                  |j        |j          |j	                    |j                            }nt          |t                    rt          |j        t                    rt          |          dk    rt          |j        j                  dk    rg|j        j        }t!            |j        j                    |j        j        j        j                  |gt%          |          d          }d _        nt          |          dk    rEt)          |j        j                  |j        j        k    r  |j        j                  }d _        net          |          dk    rEt)          |j        j                  |j        j        k    r  |j        j                  }d _        nt          |          dk    rgt+          |j        j                  t+          t/          t1          |j                                      k    r  |j        j                  }d _        nt2          j                            d |j        j                  } fd	}t2          j                            |||j        j                    j        t          |                   }t!            |j        j                    |j        j                    |j        j                  ||j        j         fd
|j        j        D             |j        j          |j        j                             n|}nt          |t*                    r fd|D             }nit          |t@                    rtA           fd|D                       }n8t          |tB                    r! fd|"                                D             }n|}| j        t          |          <   |S )NzFunction output is None)funcargskwargsvirtual_argsoutputreshape)r   r   Tbroadcast_to	transposec                 *    |                                  S r   )__copy__r   s    r
   <lambda>z$Optimizer.__call__.<locals>.<lambda>E   s    T]]__ r   c                 f    t          |          j        vsJ | j        t          |          <   d S r   )idr   )new_noder	   r   s     r
   storez!Optimizer.__call__.<locals>.storeH   s6    #%d88t/C#C#C#C#C9A,RXX666r   c                 ~    g | ]9\  }}j         t          |                   j         t          |                   f:S  )r   r!   ).0	tensor_in
tensor_outr   s      r
   
<listcomp>z&Optimizer.__call__.<locals>.<listcomp>U   sS     ) ) )
 !6	: !% 4R	]] C $ 4R
^^ D) ) )r   )r   r   inplace_updatescomment	depend_onc                 &    g | ]} |          S r%   r%   r&   xr   s     r
   r)   z&Optimizer.__call__.<locals>.<listcomp>b   s!    ...AQ...r   c              3   .   K   | ]} |          V  d S r   r%   r.   s     r
   	<genexpr>z%Optimizer.__call__.<locals>.<genexpr>d   s+      33TT!WW333333r   c                 .    i | ]\  }}| |          S r%   r%   )r&   kvr   s      r
   
<dictcomp>z&Optimizer.__call__.<locals>.<dictcomp>f   s'    <<<tq!4477<<<r   )#r!   r   
isinstanceTracableFunctionr   
ValueErrorr   r   r   r   Tracerr   Applicationr   tensorshapeapplyopTensorr   	get_shapelistpermutationrangeleneinx	tree_utiltree_mapr   r*   r+   r,   tupledictitems)r   r	   r"   r<   new_output_nodesr#   s   `     r
   __call__zOptimizer.__call__   sD   d88t+++'411d,-- S	{" !:;;;'T$)__Y{!T$"344tDK((  HH f%% I	$+{33 @ !$''944%dk&899YFF !K-E$T[^,,dk07>??G%e}}"+	     H $(DLL!$''944!$+"4559JJJ  $tDK$677H#'DLL!$''>99!$+"4559JJJ  $tDK$677H#'DLL"4((K77DAX<Y<Y]a#dj//**^ ^ = =  $tDK$677H#'DLL (,~'>'>44dk6H( ($B B B B B N++E3CT[EWXXX#3BtHH=HT[^,,T[-..T[/00/"&+"7) ) ) )
 :>9T) ) ) !% 3"&$t{'<"="=    "  d## 	.......HHe$$ 	3333d33333HHd## 	<<<<tzz||<<<HHH)1RXX&r   N)__name__
__module____qualname__r   rL   r%   r   r
   r   r      s7          Z Z Z Z Zr   r   c                 L    	 t                      } ||           } |j        sn"| S r   )r   r   )r	   	optimizers     r
   optimizerR   n   s7    KK	y  		 Kr   N)tracerr;   r   r   rR   r%   r   r
   <module>rT      sv             _ _ _ _ _ _ _ _D    r   