
    Pi                        d dl Z d dlZd dlZd dlZd dlZddlmZ g Zi Z	i Z
i Z ej                    Zd Zd ZddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ  e ej                              Z edej                    edej                    edej                    edej                    edej                    edej                   d Zd Zd ZdS )    N   )Backendc                     t           5  | t          j        v rt           |                       n3| t          vr
g t          | <   t          |                              |           d d d            d S # 1 swxY w Y   d S N)locksysmodulesregisterbackend_factoriesappend)module_namebackend_factorys     i/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/einx/backend/register.pyregister_for_moduler      s    	 C C#+%%__&&'''' "33313!+.k*11/BBBC C C C C C C C C C C C C C C C C Cs   AA//A36A3c                 
   t           5  t          | t                    st          d          t                              |            | j        D ]}| t          |<   | t          | j	        <   | cd d d            S # 1 swxY w Y   d S )Nz3Backend must be an instance of einx.backend.Backend)
r   
isinstancer   
ValueErrorbackendsr   tensor_typestensortype_to_backendname_to_backendname)backendtypes     r   r
   r
      s    	  '7++ 	TRSSS   ( 	2 	2D*1!$''(/%                 s   A#A88A<?A<)_numpy)_torch)_tensorflow)_jax)_dask)_mlx)	_tinygradtorch
tensorflowjaxz
dask.arraymlxtinygradc                      t          t                                                    D ]L} | t          j        v r<t          t          |                    D ]}t           |                       t          | = Md S r   )listr   keysr   r	   r
   )r   factorys     r   _updater+   =   sz    -224455 / /#+%% 1+ >?? $ $####!+.	/ /    c                 :    t                               t                     d           }||S t                       t          D ]>}t           fd|j        D                       rt           t          j	                  s n?d S |t           t                     <   |S )Nc              3   8   K   | ]}t          |          V  d S r   )r   ).0r   tensors     r   	<genexpr>z_get1.<locals>.<genexpr>M   s-      IIDz&$''IIIIIIr,   )
r   getr   r+   r   anyr   r   npndarray)r0   r   s   ` r   _get1r6   E   s    #''Vd;;G?III  IIIIG4HIIIII 	R\BJS
 S
 	 Et*1$v,,'Nr,   c                    t           5  t          | t                    re| t          v rt          |          cd d d            S t	                       | t          v rt          |          cd d d            S t          d|  d          | }t          |          dk    r!t          |d                   cd d d            S d }|D ]a}|]t          |          }|L|;||k    r5|t          k    r*|t          k    rt          d|j	         d|j	                   ||t          k    r|}b|t          d          |cd d d            S # 1 swxY w Y   d S )NzBackend z
 not foundr   r   z'Got tensors with conflicting backends: z and z8Could not determine the backend to use in this operation)
r   r   strr   r+   r   lenr6   numpy__name__)argtensorsr   r0   backend2s        r   r2   r2   Y   s'   	    c3 	o%%&s+                IIIo%%&s+                7777888G7||q  WQZ((                G! / /%$V}}H#+#/ '8 3 3 '5 0 0 (E 1 1",!N#*#3!N !N:B:K!N !N# #  #?h%.?.?&.G !\]]]A                                   s$   +D> #D>0<D>9A8D>>EE)r   einx	threading	importlibr:   r4   baser   r   r   r   r   RLockr   r   r
    r   r   r   r   r   r    r!   creater+   r6   r2    r,   r   <module>rG      s   



                     y	C 	C 	C	 	 	                                           	!!  GV] + + +  L+"4 5 5 5  E4; ' ' '  L%, / / /  E4; ' ' '  J	 0 1 1 1
/ / /  (! ! ! ! !r,   