
    Nj(              	       ^   d dl Z d dlZd dlZd dlZd dlmZmZmZm	Z	 d dl
mZ ej                  j                         Zd ZdefdZdefdZ G d d	      Zdd
Ze j*                   G d d             Z edd       edd       edd       edd       edd       edd      gZd Zd Zd Zy)    N)EinopsErrorasnumpypackunpack)collect_test_backendsc                     t        | |      \  }}t        | ||      }t        |      t        |       k(  sJ t        ||       D ]/  \  }}t	        j
                  t        |      t        |            r/J  y N)r   r   lenzipnpallcloser   )xspatternxpsunpackedabs          j/Users/ahmed/devFolder/Ultron/claude-voice/.venv/lib/python3.12/site-packages/einops/tests/test_packing.pypack_unpackr      sg    WEArb"g&Hx=CG###Hb!1{{71:wqz222 "    r   c                     t        | ||      }t        ||      \  }}t        j                  t	        |      t	        |             sJ |S N)r   )r   r   r   r   r   )r   r   r   r   packedps2s         r   unpack_and_packr      sA    aW%Hx1KFC;;wv
333Or   c                    t               }t               }|5  t        | ||      }t        ||      \  }}d d d        |5  t        |       }t        |||      }	t        |	|      \  }
}d d d        t	        |j
                        t	        |j
                        k(  sJ |j
                  y t        j                  t              t        |             sJ t        j                  t        
      t        |             sJ t              t        	      k(  sJ t        ||	      D ]&  \  }}t        j                  t        |      |      r&J  y # 1 sw Y   xY w# 1 sw Y   xY wr   )
CaptureExceptionr   r   r   type	exceptionr   r   r
   r   )r   r   r   capturer_backendcapturer_numpyr   r   r   x_npunpacked_np	packed_npps3r   r   s                 r   unpack_and_pack_against_numpyr'      s0   ')%'N	!R)8W5 
 
qzT2w/k7;	3 

 (()T2B2L2L-MMMM+ {{76?GAJ777{{79-wqz:::8}K 0000+.DAq;;wqz1--- /% 
	 
s   E)EEE#c                       e Zd Zd Zd Zy)r   c                     d | _         y r	   r    selfs    r   	__enter__zCaptureException.__enter__8   s	    r   c                     || _         y)NTr*   )r,   exc_typeexc_valexc_tbs       r   __exit__zCaptureException.__exit__;   s     r   N)__name__
__module____qualname__r-   r2    r   r   r   r   7   s    r   r   c           	         d }d } |d| |      \  }}} || |d      } |t        j                  |||gd      t        |||gd      d           |t        j                  |||gd	      t        |||gd
      d           |t        j                  |||gd      t        |||gd      d           |t        j                  |||gd	      t        |||gd      d           |t        j                  |||gd      t        |||gd      d          t         j                  d d d d d f   } |t        j                  ||   ||   ||   |gd      t        ||||gd      d          t        j                  t              5  t        ||||gd       d d d        t        |||gd       t        j                  t              5  t        ||||gd       d d d        t        j                  t              5  t        ||||gd       d d d        t        j                  t              5  t        ||||gd       d d d        t        j                  t              5  t        ||||gd       d d d        t        j                  t              5  t        ||||gd       d d d        t        ||||gd       y # 1 sw Y   $xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   }xY w# 1 sw Y   WxY w)Nc                  ,    t         j                  |       S r	   )rngrandom)shapes    r   randz test_numpy_trivial.<locals>.randA   s    zz%  r   c                     | j                   |j                   k(  sJ | j                  |j                  k(  sJ t        j                  | |k(        sJ y r	   )dtyper;   r   all)r   r   s     r   checkz!test_numpy_trivial.<locals>.checkD   sB    ww!''!!!ww!''!!!vva1f~~r             )axiszh w *r      zh * wz* h wzh *z* wzh w nonexisting_axis *z"some_name_for_H some_name_for_w1 *zh _w *zh_ w *z1h_ w *z1 w *zh h *zh H *)r   stackr   concatenate	index_exppytestraisesr   )	HWr<   r@   rgr   
embeddingsis	            r   test_numpy_trivialrQ   @   s   !
 1amGAq!aBJ	
!Q#aAY # 

!Q#aAY # 

!Q#aAY #
 

1ayq)aAYq! 

1ayq)aAYq!
 	Q4Z A	
!adAaD*5A>aAz"G,Q/
 
{	#aAz"$<= 
$ 	!Q89	{	#aAz"H- 
$	{	#aAz"H- 
$	{	#aAz"I. 
$	{	#aAz"G, 
$	{	#aAz"G, 
$ 	!Q:	(! 
$	#
 
$	#	#	#	#	#	#	#	#	#sH   J6K6K(KK'K36K KKK$'K03K<c                   L    e Zd ZU ej                  edf   ed<   eed<   d Zd Z	y)UnpackTestCase.r;   r   c                 T    | j                   j                         j                  d      S )N*)r   splitindexr+   s    r   dimzUnpackTestCase.dim   s     ||!!#))#..r   c                 H    | j                   | j                            dk(  sJ y )N   )r;   rX   r+   s    r   	selfcheckzUnpackTestCase.selfcheck   s    zz$((*%***r   N)
r3   r4   r5   typingTupleint__annotations__strrX   r[   r6   r   r   rS   rS   {   s$    <<S!!L/+r   rS   )rZ   rU   )rZ      z* seven)ra   rZ   zseven *)rZ   rA      z* three four)rb   rZ   rA   zfour * three)rA   rb   rZ   zthree four *c            	      `   t         D ]  } | j                  }| j                  }t        j	                  |      t        dgdgdgg|       t        j                  t              5  t        dgdgdgg|dz          d d d        t        j                  t              5  t        dgdgdgg|       d d d        t        j                  t              5  t        dgdgdgg|       d d d        t        dgdgdgg|       t        dgdgdgg|       t        dgdgdgg|       t        dgdgdgg|      \  }}}|j                  | j                            dk(  sJ t        j                  t              5  t        dgdgdgg|       d d d        t        j                  t              5  t        dgdgdgg|       d d d        t        ddgddgddgg|      }t        fd	|D              sJ t        ddgddgddgg|      }t        fd
|D              sJ t        ddgddgddgg|      }t        fd|D              sJ t        j                  t              5  t        ddgdgdgg|       d d d        t        j                  t              5  t        ddgdgddgg|       d d d        t        j                  t              5  t        ddgdgddgg|       d d d        t        j                  t              5  t        ddgddgdgg|       d d d        t        j                  t              5  t        ddgddgdgg|       d d d        t        dgdgdgg|       t        dgdgdgg|       t        dgdgdgg|       t        ddgddgg|        y # 1 sw Y   6xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   LxY w# 1 sw Y   $xY w# 1 sw Y   wxY w# 1 sw Y   MxY w# 1 sw Y   #xY w# 1 sw Y   xY w# 1 sw Y   xY w)NrC   rE   z non_existent_axisrb   rA   r   rZ   c              3   z   K   | ]2  }t        |j                        t        j                        d z   k(   4 ywrE   Nr
   r;   .0rM   r   s     r   	<genexpr>z.test_pack_unpack_with_numpy.<locals>.<genexpr>   ,     @R3qww<3qww<!#33R   8;c              3   z   K   | ]2  }t        |j                        t        j                        d z   k(   4 ywrf   rg   rh   s     r   rj   z.test_pack_unpack_with_numpy.<locals>.<genexpr>   rk   rl   c              3   z   K   | ]2  }t        |j                        t        j                        d z   k(   4 ywrf   rg   rh   s     r   rj   z.test_pack_unpack_with_numpy.<locals>.<genexpr>   rk   rl   )casesr;   r   r9   r:   r   rI   rJ   r   rX   r   r?   )caser;   r   _lastrsr   s         @r   test_pack_unpack_with_numpyrt      s    

,,JJuQC!qc?G4]];'AaS1#:N0NO (]];'AaS1#8 (]];'AaS1#8 ( 	QC!rd+W5QC"s+W5RD1#s+W5$Q!qcB4(8'B
1dzz$((*%***]];'1sQC"&0 (
 ]];'1taS1#&0 ( Q!Q!Q"a 97C@R@@@@Q!Q!R1a& 97C@R@@@@Q!R1a&1a& 97C@R@@@@ ]];'1AwaS)73 (]];'11vsQG,g6 ( ]];'11vsQG,g6 (]];'11v2w,g6 (]];'12wA,g6 ( 	QC!rd+W5QC"s+W5RD1#s+W5 	QGaV,g6s  (''''' ('
 (' (''' ('''''sx   %N0N=O
9O.O$'O1O>PPP$0N:	=O	
O	O!	$O.	1O;	>P	P	P!	$P-	c            
      N   t        dd      D ]!  } t        d| j                          d}t        D ]  }t        }|j
                  }|j                  }t        j                  |      }| j                  |      } ||dgdgdgg|       t        j                  t              5  t        |dgdgdgg|       d d d        t        j                  t              5  t        |dgdgdgg|       d d d         ||dgdgdgg|        ||dgdgdgg|        ||dgdgdgg|       t        j                  t              5  t        |dgdgdgg|       d d d        t        j                  t              5  t        |dgdgd	gg|       d d d         ||ddgddgddgg|        ||ddgddgddgg|        ||ddgddgddgg|       t        j                  t              5  t        |ddgdgd	gg|       d d d        t        j                  t              5  t        |ddgdgd	dgg|       d d d        t        j                  t              5  t        |ddgdgd
dgg|       d d d        t        j                  t              5  t        |ddgd
dgdgg|       d d d        t        j                  t              5  t        |d
dgddgdgg|       d d d        |s ||dgd
gdgg|        ||dgd	gdgg|        ||dgdgd	gg|        ||dgd	gdgg|        ||ddgdd	gg|        $ y # 1 sw Y   xY w# 1 sw Y   WxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   uxY w# 1 sw Y   KxY w# 1 sw Y   !xY w# 1 sw Y   xY w# 1 sw Y   xY w)NF)symboliclayersztest packing against numpy for TrC   rE   rb   rd   rZ   rA   r   )r   printframework_namero   r'   r;   r   r9   r:   
from_numpyrI   rJ   r   r   )backendcheck_zero_lenrp   r   r;   r   r   s          r   test_pack_unpack_against_numpyr}      s   (%FF/0F0F/GHIED;OJJEllG

5!A""1%AAaS1#8{+qA3aS/73 , {+qA3aS/73 , AaS2$/9AbTA3/9AqcA3/9 {+qA3bT*G4 ,
 {+qB4!qc*G4 , AAAQ8'BAAB!Q8'BAB!Q!Q8'B {+qB7QC!-w7 ,{+qAq6A3B0': , {+qAq6A3B0': ,{+qAq6Ar7QC0': ,{+qAr7QFQC0': , QC!rd#3W=QC!rd#3W=QC"s#3W=RD1#s#3W=  QGaV#4g>q 	 G ,+ ,+ ,+
 ,+ ,+++ ,+++++sl   #L4M=M2M M(M5NN;N4L>MMM%(M25M?NNN$c            
      `   dd l } ddlm} | j                  dk  rt	        j
                          t        D ]k  }|j                  }|j                  }t        j                  |      }| j                  |      }dgdgdggdgdgdggdgdgddggddgg ddggfD ]  }t        |||      }|j                  |||      }	t        ||	      D ]/  \  }
}t        j                  |
|j!                  |dz               r/J  t#        ||      \  }}|j#                  |	|      \  }}||k(  sJ t        j                  ||j!                  |            rJ  ddggdgd	ggdgd	gdggdgddggdgd	gddggfD ]1  }t	        j$                  t&              5  t        |||       d d d        3 n y # 1 sw Y   AxY w)
Nr   )	array_apiz2.0.0rC   rE   rd   rA   )rE   rE   rE   rZ   )numpyeinopsr   __version__rI   skipro   r;   r   r9   r:   from_dlpackr   r   r   r   r   r   rJ   r   )xpAArp   r;   r   r#   x_xpr   
x_np_split
x_xp_splitr   r   x_agg_npps1x_agg_xpr   s                   r   test_pack_unpack_array_apir     s   &	~~

,,zz% ~~d# S1#sOS1#tS1#AwVY%	
B  b'2J4W5JJ
31{{1bjjQ&7888 4 !W5MHcGGJ8MHc#::;;xH)=>>>
" VHS1#JS1#tS1a&MS1#Aw
B {+tR) ,+
- : ,+s   F$$F-)      )dataclassesr\   r   r   rI   r   r   r   r   r   einops.testsr   r:   default_rngr9   r   r`   r   r'   r   rQ   	dataclassrS   ro   rt   r}   r   r6   r   r   <module>r      s        5 5 .ii3C .# .4 8)v + + + 469%69%9n-9n-9n-		<7~=?@&*r   