
    Pi                         d dl ZddlmZmZ d dlZd dlZ G d d          Z G d de          Z G d d	e          Z	 G d
 de          Z
 G d d          Zg Zd Zd Zd Zd ZdS )    N   )tracertensorc                       e Zd ZdS )CacheKeyN__name__
__module____qualname__     e/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/einx/tracer/input.pyr   r   
           Dr   r   c                        e Zd Zd Zd Zd ZdS )Scalarc                 ,    t          |t                    S N)
isinstancer   selfothers     r   __eq__zScalar.__eq__   s    %(((r   c                     dS )Nr   r   r   s    r   __hash__zScalar.__hash__   s    qr   c                 0    t          j                    }||fS r   )r   r   r   backendvirtual_argxs       r   	to_tracerzScalar.to_tracer   s    MOO!tr   N)r	   r
   r   r   r   r!   r   r   r   r   r      sA        ) ) )      r   r   c                   &    e Zd Zd Zd Zd Zd ZdS )Tensorc                 "    || _         || _        d S r   )shapetype)r   r%   r&   s      r   __init__zTensor.__init__   s    
			r   c                 l    t          |t                    o|j        | j        k    o|j        | j        k    S r   )r   r#   r%   r&   r   s     r   r   zTensor.__eq__   s0    %((bU[DJ-Fb5:Y]YbKbbr   c                 Z    dt          | j                  z   t          | j                  z   S )N   )hashr%   r&   r   s    r   r   zTensor.__hash__"   s$    4
###d49oo55r   c                      t           fd|j        D                       rt          j         j                  }nt          j         j                  }||fS )Nc              3   B   K   | ]}t          j        |          V  d S r   )
issubclassr&   ).0r&   r   s     r   	<genexpr>z#Tensor.to_tracer.<locals>.<genexpr>&   s/      LLtz$)T**LLLLLLr   )anytensor_typesr   r#   r%   TensorRequiringConversionr   s   `   r   r!   zTensor.to_tracer%   sY    LLLLw7KLLLLL 	=dj))AA0<<A!tr   Nr	   r
   r   r'   r   r   r!   r   r   r   r#   r#      sS          c c c6 6 6    r   r#   c                   &    e Zd Zd Zd Zd Zd ZdS )TensorFactoryc                 .    t          |          | _        d S r   )tupleparams)r   r9   s     r   r'   zTensorFactory.__init__.   s    Fmmr   c                 L    t          |t                    o|j        | j        k    S r   )r   r6   r9   r   s     r   r   zTensorFactory.__eq__1   s     %//OELDK4OOr   c                 0    dt          | j                  z   S )N   )r+   r9   r   s    r   r   zTensorFactory.__hash__4   s    4$$$$r   c                 <    t          j        | j                  }||fS r   )r   r6   r9   r   s       r   r!   zTensorFactory.to_tracer7   s     --!tr   Nr4   r   r   r   r6   r6   -   sS        $ $ $P P P% % %    r   r6   c                       e Zd ZdS )InputNr   r   r   r   r?   r?   <   r   r   r?   c                 :    t                               |            | S r   )tensor_factoriesappend)factorys    r   register_tensor_factoryrD   C   s    G$$$Nr   c                 <    t           D ]} ||           }||c S d S r   )rA   )r    rC   x2s      r   apply_registered_tensor_factoryrG   H   s6    #  WQZZ>III 4r   c           	         t          | t          t          t          j        t          j        t          t          j        f          r| t                      fS t          | t          t          f          rOt          j                            |           }|t          d          | t          |t!          |                     fS t          | t"                    r|                                 S t'          |           x}|S t)          |           rg }	 t+          j        |           j                                        D ]Y\  }}|j        t*          j        j        k    rd| }n|j        t*          j        j        k    rd| }|                    |           Zn#  Y nxY w| t=          |          fS | t          t          d | j        D                       t!          |                     fS )Nz)Failed to determine shape of input tensorz***c              3   4   K   | ]}t          |          V  d S r   )int)r/   is     r   r0   z,concrete_to_value_and_key.<locals>.<genexpr>o   s(      77!s1vv777777r   ) r   floatrK   npfloatingintegerboolbool_r   r8   listeinxr   	get_shape
ValueErrorr#   r&   r?   to_value_and_keyrG   callableinspect	signature
parametersitemskind	ParameterVAR_KEYWORDVAR_POSITIONALrB   r6   r%   )r    r%   rF   r9   nameparams         r   concrete_to_value_and_keyrc   P   s   !eS"+rz4JKK B&(({	At}	%	% B%%a((=HIII&Q((((	Au		 B!!###3A666b?		! B	&033>DDFF $ $e:!2!>>>&;;DDZ7#4#CCC%t::Dd####$	D-'''' &77qw77777aAAAAs   BF Fc                 b    g fd}t           j                            ||           } | fS )Nc                     t          | t                    r2|                               \  }} |                    |           | S | S r   )r   r   r!   rB   )r    argargsr   r   s     r   mapzkey_to_tracer.<locals>.mapu   sM    a"" 	[[+66FC;C   HHr   )rT   	tree_utiltree_map)r    r   r   rh   rg   s    `` @r   key_to_tracerrk   r   sO    D       	Q''A7Nr   )numpyrN    r   r   rT   rY   r   r   r#   r6   r?   rA   rD   rG   rc   rk   r   r   r   <module>rn      s[                	 	 	 	 	 	 	 		 	 	 	 	X 	 	 	    X   &    H   	 	 	 	 	 	 	 	    
  B B BD    r   