
    Piz!                        d dl Z d dlZd dlmZ d dlZ G d d          Zg i ddg dg fdZ ej                    Zd Z	 G d d          Z
 G d	 d
          Z G d de          ZddZ G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d d          ZddZdS )    N)partialc                   *    e Zd Zd Zed             ZdS )Applicationc	                 <    | _         | _        | _        |t                      n| _        | _        | _        | _        | _         fd}	t          j
                            |	 j                   |dk    r2t          j        d g|R i |}
|
d          _        |
d          _        d S |dk    r2t          j        d g|R i |}
|
d          _        |
d          _        d S |dk    r2t          j        d	 g|R i |}
|
d
          _        |
d          _        d S d S )Nc                     | _         d S Norigin)tracerkeyselfs     f/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/einx/tracer/tracer.pyupdate_originz+Application.__init__.<locals>.update_origin   s     FMMM    reshapec                     d S r    tensorshapes     r   <lambda>z&Application.__init__.<locals>.<lambda>       t r   r   r   broadcast_toc                     d S r   r   r   s     r   r   z&Application.__init__.<locals>.<lambda>   r   r   	transposec                     d S r   r   )r   permutations     r   r   z&Application.__init__.<locals>.<lambda>!   s    T r   r   )opargskwargsTraceroutput	signatureinplace_updatescomment	depend_oneinx	tree_utiltree_map_with_keyinspectgetcallargsr   r   r   )r   r   r   r    r"   r#   r$   r%   r&   r   paramss   `          r   __init__zApplication.__init__   sh   	"(.fhhhf"."	! 	! 	! 	! 	! 	((DDD 	!!()C)CUdUUUfUUFDJ *DKKK.((()C)CUdUUUfUUFDJ *DKKK+%%()I)I[D[[[TZ[[F%m4D *DKKK &%r   c                     | j         gt          | j                  z   t          | j                                                  z   | j        z   S r   )r   listr   r    valuesr&   r   s    r   dependencieszApplication.dependencies%   s;    y4	??*T$+2D2D2F2F-G-GG$.XXr   N)__name__
__module____qualname__r-   propertyr2   r   r   r   r   r      sC        + + +: Y Y XY Y Yr   r   c                    t          | t                    rGt          | j        t	          | j                  t	          |          z   i | j        ||||||          S t          | t                    rEt          |          dk    sJ  | |i |}|$d }	t          j
                            |	||           |S t          | |||||||t                      z             j        S )N)r   r    r"   r#   r$   r%   r&   r   c                     t          |           t          |          k    r/t          dt          |           dt          |                      d S )NzExpected output type z$ when tracing TracableFunction, got )type
ValueError)
got_outputexpected_outputs     r   checkzapply.<locals>.checkD   sj    
##tO'<'<<<$D_0E0E D D15j1A1AD D   =<r   )
isinstancer   applyfuncr/   r   keywordsTracableFunctionlenr'   r(   tree_mapr   _get_depend_on_stackr"   )
r   r   r    r"   r#   r$   r%   r&   r;   r=   s
             r   r?   r?   *   s    "g $Gbgd+,bk,V,+	
 	
 	
 		
 
B(	)	) ?##q((((R(((
~   N##E:v>>>+"6"8"88	
 	
 	
 		r   c                  \    t          t          d          sg t          _        t          j        S )Nr&   )hasattr_thread_localr&   r   r   r   rE   rE   ^   s%    =+.. %"$""r   c                        e Zd Zd Zd Zd ZdS )r&   c                 h    t          t          j                            |                    | _        d S r   )r/   r'   r(   tree_flattenr   )r   tracerss     r   r-   zdepend_on.__init__e   s%    4>66w??@@r   c                 R    t                                          | j                   d S r   )rE   appendr   r1   s    r   	__enter__zdepend_on.__enter__h   s$    %%dk22222r   c                     t                      d         | j        u sJ t                                                       d S )N)rE   r   popr   r   s     r   __exit__zdepend_on.__exit__k   s>    #%%b)T[8888""$$$$$r   N)r3   r4   r5   r-   rO   rT   r   r   r   r&   r&   d   sD        A A A3 3 3% % % % %r   r&   c                   .    e Zd ZddZd Zd Zd Zd ZdS )r!   Nc                     || _         d S r   r	   )r   r
   s     r   r-   zTracer.__init__q       r   c                     |                     d          r0|                    d          rt                              | |          S  t	                      | |          S )N__)
startswithendswithobject__getattribute__MemberAccessr   r   s     r   __getattr__zTracer.__getattr__t   sU    >>$ 	-CLL$6$6 	-**4555!<>>$,,,r   c                 2     t                      | |          S r   )GetAtr_   s     r   __getitem__zTracer.__getitem__z   s    uwwtS!!!r   c                 &    t          | ||          S )Nr   r    r?   r   r   r    s      r   __call__zTracer.__call__}   s    TV4444r   c                 R    t          |           t          k    sJ t                      S r   )r9   r!   r1   s    r   __copy__zTracer.__copy__   s"    DzzV####xxr   r   )r3   r4   r5   r-   r`   rc   rh   rj   r   r   r   r!   r!   p   sd           - - -" " "5 5 5    r   r!   c                       e Zd Zd Zd ZdS )Importc                 h    t                               | d           || _        || _        || _        d S Nconstantr	   )r!   r-   import_as_from_)r   rp   rq   rr   s       r   r-   zImport.__init__   s1    Z000


r   c                      t          |           S r   rf   r1   s    r   rh   zImport.__call__   s    T{{r   Nr3   r4   r5   r-   rh   r   r   r   rl   rl      s2              r   rl   c                 4     t          | ||                      S r   )rl   )rp   rq   rr   s      r   rp   rp      s    &6'3&&(((r   c                       e Zd Zd Zd ZdS )r^   c                 >    t                               | d           d S rn   r!   r-   r1   s    r   r-   zMemberAccess.__init__       Z00000r   c                 V    t          |t                    sJ t          | ||g          S N)r   )r>   strr?   r   objr   s      r   rh   zMemberAccess.__call__   s/    #s#####Tc
++++r   Nrt   r   r   r   r^   r^      s2        1 1 1, , , , ,r   r^   c                        e Zd ZdefdZd ZdS )Operatorr   c                 L    t                               | d           || _        d S rn   r!   r-   r   r   r   s     r   r-   zOperator.__init__   #    Z000r   c                 $    t          | |          S r{   rf   rS   s     r   rh   zOperator.__call__   s    T%%%%r   Nr3   r4   r5   r|   r-   rh   r   r   r   r   r      s>        3    & & & & &r   r   c                        e Zd ZdefdZd ZdS )AssignAtr   c                 L    t                               | d           || _        d S rn   r   r   s     r   r-   zAssignAt.__init__   r   r   c                 *    t          | |||g          S r{   rf   )r   r~   r   updates       r   rh   zAssignAt.__call__   s    Tc6 23333r   Nr   r   r   r   r   r      s>        3    4 4 4 4 4r   r   c                       e Zd Zd Zd ZdS )rb   c                 >    t                               | d           d S rn   rx   r1   s    r   r-   zGetAt.__init__   ry   r   c                 (    t          | ||g          S r{   rf   r}   s      r   rh   zGetAt.__call__   s    Tc
++++r   Nrt   r   r   r   rb   rb      s2        1 1 1, , , , ,r   rb   c                        e Zd Zd Zd Zd ZdS )Functionc                     || _         d S r   )r"   )r   r"   s     r   r-   zFunction.__init__   rW   r   c                 *    t          | j                  S r   )r   r"   r1   s    r   rj   zFunction.__copy__   s    $$$r   c           	      p    t          | ||t          j                            d | j                            S )Nc                 *    |                                  S r   )rj   )xs    r   r   z#Function.__call__.<locals>.<lambda>   s    QZZ\\ r   )r   r    r"   )r?   r'   r(   rD   r"   rg   s      r   rh   zFunction.__call__   s=    >**+A+A4;OO	
 
 
 	
r   N)r3   r4   r5   r-   rj   rh   r   r   r   r   r      sA          % % %
 
 
 
 
r   r   c                   (    e Zd Zdddg ddfdZd ZdS )rB   Nc                 8   t                               |            t          |t                     rt          d          |||t          d          ||g }||i }|||| ||i |}|| _        || _        || _        || _        || _        || _	        d S )Nzfunc cannot be a tracer objectz<Cannot create a TracableFunction with an output but no input)
r!   r-   r>   r:   r@   r   r    virtual_argsr"   name)r   r@   r   r    r   r"   r   s          r   r-   zTracableFunction.__init__   s    dF## 	@>???~$,6>\]]]<D|F|FNT4*6**F		(			r   c                 H    | j         t          d           | j         |i |S )NzKCannot call a TracableFunction that was created without a callable function)r@   NotImplementedErrorrg   s      r   rh   zTracableFunction.__call__   s8    9%^   ty$)&)))r   rt   r   r   r   rB   rB      sF         tDrRV]a    .* * * * *r   rB   c                       e Zd Zd Zd ZdS )Usagesc                 :     i  _          fd |           d S )Nc                    t          |           j        vrg j        t          |           <   t          | t          t          f          r| D ]} |           d S t          | t
                    r$|                                 D ]} |           d S t          | t                    rt          | j        t                    r| j        j
        D ]}t          |t                    rt          |          j        vrg j        t          |          <   j        t          |                   D ])}t          |          t          | j                  k    r n3*j        t          |                                       | j                    |           d S t          | t                    rB | j                    | j                    | j                    | j                   d S d S r   )idusagesr>   r/   tupledictr0   r!   r
   r   r2   rN   rB   r@   r   r    r"   )r   yusage_capture_usagesr   s      r   r   z(Usages.__init__.<locals>._capture_usages   s   a55DK''%'BqEE"!dE]++ * ' 'A#OA&&&&' 'At$$ * ' 'A#OA&&&&' 'Av&& *:ah+L+L *. ' 'A!!V,, @!!uu3313DK1.%)[A%7 @ @E!%yyBqxLL88 %  9 !K1.55ah???#OA&&&&' ' A/00 *''''''))))))))	* *r   )r   )r   rL   r   s   ` @r   r-   zUsages.__init__   sA    	* 	* 	* 	* 	* 	*8 	     r   c                 Z     g  fd}t           j                            ||           S )Nc                     t          |           j        v r/                    j        t          |                               d S d S r   )r   r   extend)r   r   r   s    r   retrieve_usagesz#Usages.get.<locals>.retrieve_usages  sC    &zzT[((dk"V**566666 )(r   )r'   r(   rD   )r   rL   r   r   s   `  @r   getz
Usages.get	  sF    	7 	7 	7 	7 	7 	7 	999r   N)r3   r4   r5   r-   r   r   r   r   r   r      s3        ! ! !B    r   r   c                 X    | t          t          ||          S t          | ||          S )Nre   r@   r   r    )r   tracerB   r   s      r   r   r     s1    |u47777TVDDDDr   )NN)NNN)r'   r*   	functoolsr   	threadingr   r?   localrH   rE   r&   r!   rl   rp   r^   r   r   rb   r   rB   r   r   r   r   r   <module>r      s               Y  Y  Y  Y  Y  Y  Y  YJ 
. . . .b  	!!# # #	% 	% 	% 	% 	% 	% 	% 	%       *    V   ) ) ) ), , , , ,6 , , ,& & & & &v & & &4 4 4 4 4v 4 4 4, , , , ,F , , ,
 
 
 
 
v 
 
 
 * * * * *v * * *@* * * * * * * *ZE E E E E Er   