
    'i(              	       ^   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          S/var/www/stems/demucs_env/lib/python3.12/site-packages/einops/tests/test_packing.pypack_unpackr      sl    WEArb"g&Hx=CG###Hb! 31{{71:wqz2223    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'      sD   ')%'N	 6!R)8W56 
 <qzT2w/k7;	3<
 (()T2B2L2L-MMMM+ {{76?GAJ777{{79-wqz:::8}K 0000+. 	.DAq;;wqz1---	.%6 6< <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>   +     @3qww<3qww<!#33@   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      sD     97

,,JJuQC!qc?G4]];' 	PAaS1#:N0NO	P]];' 	9AaS1#8	9]];' 	9AaS1#8	9 	QC!rd+W5QC"s+W5RD1#s+W5$Q!qcB4(8'B
1dzz$((*%***]];' 	11sQC"&0	1
 ]];' 	11taS1#&0	1 Q!Q!Q"a 97C@R@@@@Q!Q!R1a& 97C@R@@@@Q!R1a&1a& 97C@R@@@@ ]];' 	41AwaS)73	4]];' 	711vsQG,g6	7 ]];' 	711vsQG,g6	7]];' 	711v2w,g6	7]];' 	712wA,g6	7 	QC!rd+W5QC"s+W5RD1#s+W5 	QGaV,g6s97	P 	P	9 	9	9 	9	1 	1
	1 	1	4 	4	7 	7	7 	7	7 	7	7 	7sx   %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 <?/0F0F/GHI 8	?D;OJJEllG

5!A""1%AAaS1#8{+ 4qA3aS/734 {+ 4qA3aS/734 AaS2$/9AbTA3/9AqcA3/9 {+ 5qA3bT*G45
 {+ 5qB4!qc*G45 AAAQ8'BAAB!Q8'BAB!Q!Q8'B {+ 8qB7QC!-w78{+ ;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8	?	<?4 44 45 5
5 58 8; ;; ;; ;; ;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 91{{1bjjQ&78889 !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   