
    !Sh(              	       X   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 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dS )    N)EinopsErrorasnumpypackunpack)collect_test_backendsc                     t          | |          \  }}t          | ||          }t          |          t          |           k    sJ t          ||           D ]6\  }}t	          j        t          |          t          |                    sJ 7d S N)r   r   lenzipnpallcloser   )xspatternxpsunpackedabs          _/var/www/html/movieo_spanner_bot/venv/lib/python3.11/site-packages/einops/tests/test_packing.pypack_unpackr      s    WEArb"g&&Hx==CGG####Hb!! 3 31{71::wqzz2222223 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      sR    aW%%Hx111KFC;wv

33333Or   c                 >   t                      }t                      }|5  t          | ||          }t          ||          \  }}d d d            n# 1 swxY w Y   |5  t          |           }t          |||          }	t          |	|          \  }
}d d d            n# 1 swxY w Y   t	          |j                  t	          |j                  k    sJ |j        d S t          j        t          |          t          |                     sJ t          j        t          |
          t          |                     sJ t          |          t          |	          k    sJ t          ||	          D ])\  }}t          j        t          |          |          sJ *d S 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'      s   '))%''N	 6 6!R))8W5556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 
 < <qzzT2w//k7;;;	3< < < < < < < < < < < < < < <
 ())T2B2L-M-MMMMM+ {76??GAJJ77777{79--wqzz:::::8}}K 0 00000+.. 	. 	.DAq;wqzz1------	. 	.s#   &AAA5BB#&B#c                       e Zd Zd Zd ZdS )r   c                     d | _         d S r	   r    selfs    r   	__enter__zCaptureException.__enter__6   s    r   c                     || _         dS )NTr*   )r,   exc_typeexc_valexc_tbs       r   __exit__zCaptureException.__exit__9   s     tr   N)__name__
__module____qualname__r-   r2    r   r   r   r   5   s2              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            n# 1 swxY w Y   t          |||gd           t          j        t                    5  t          ||||gd           d d d            n# 1 swxY w Y   t          j        t                    5  t          ||||gd           d d d            n# 1 swxY w Y   t          j        t                    5  t          ||||gd           d d d            n# 1 swxY w Y   t          j        t                    5  t          ||||gd           d d d            n# 1 swxY w Y   t          j        t                    5  t          ||||gd           d d d            n# 1 swxY w Y   t          ||||gd           d S )Nc                  @    t           j                            |           S r	   )r   random)shapes    r   randz test_numpy_trivial.<locals>.rand?   s    y&&&r   c                     | j         |j         k    sJ | j        |j        k    sJ t          j        | |k              sJ d S r	   )dtyper<   r   all)r   r   s     r   checkz!test_numpy_trivial.<locals>.checkB   sI    w!'!!!!w!'!!!!va1f~~~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=   rA   rgr   
embeddingsis	            r   test_numpy_trivialrR   >   sI   ' ' '  
 d1ammGAq!aBJ	E
!Q###aAY  #   
E
!Q###aAY  #   
E
!Q###aAY  #  
 
E
1ayq)))aAYq!   
E
1ayq)))aAYq!  
 	QQQ4Z A	E
!adAaD*5A>>>aAz"G,,Q/  
 
{	#	# > >aAz"$<===> > > > > > > > > > > > > > > 	!Q8999	{	#	# . .aAz"H---. . . . . . . . . . . . . . .	{	#	# . .aAz"H---. . . . . . . . . . . . . . .	{	#	# / /aAz"I.../ / / / / / / / / / / / / / /	{	#	# - -aAz"G,,,- - - - - - - - - - - - - - -	{	#	# - -aAz"G,,,- - - - - - - - - - - - - - - 	!Q:	(((((sl   G((G,/G,I  II$JJ	J	)K

KK.LLL3MMMc                   J    e Zd ZU ej        edf         ed<   eed<   d Zd Z	dS )UnpackTestCase.r<   r   c                 Z    | j                                                             d          S )N*)r   splitindexr+   s    r   dimzUnpackTestCase.dim~   s$    |!!##))#...r   c                 P    | j         |                                          dk    sJ d S )N   )r<   rY   r+   s    r   	selfcheckzUnpackTestCase.selfcheck   s(    z$((**%******r   N)
r3   r4   r5   typingTupleint__annotations__strrY   r\   r6   r   r   rT   rT   y   sT         <S!!!!LLL/ / /+ + + + +r   rT   )r[   rV   )r[      z* seven)rb   r[   zseven *)r[   rB      z* three four)rc   r[   rB   zfour * three)rB   rc   r[   zthree four *c            	      l	   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            n# 1 swxY w Y   t          j        t                    5  t          dgdgdgg|           d d d            n# 1 swxY w Y   t          j        t                    5  t          dgdgdgg|           d d d            n# 1 swxY w Y   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        | 	                                         dk    sJ t          j        t                    5  t          dgdgdgg|           d d d            n# 1 swxY w Y   t          j        t                    5  t          dgdgdgg|           d d d            n# 1 swxY w Y   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            n# 1 swxY w Y   t          j        t                    5  t          ddgdgddgg|           d d d            n# 1 swxY w Y   t          j        t                    5  t          ddgdgddgg|           d d d            n# 1 swxY w Y   t          j        t                    5  t          ddgddgdgg|           d d d            n# 1 swxY w Y   t          j        t                    5  t          ddgddgdgg|           d d d            n# 1 swxY w Y   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|           d S )NrD   rF   z non_existent_axisrc   rB   r   r[   c              3   r   K   | ]1}t          |j                  t          j                  d z   k    V  2dS rF   Nr
   r<   .0rN   r   s     r   	<genexpr>z.test_pack_unpack_with_numpy.<locals>.<genexpr>   =      @@3qw<<3qw<<!#33@@@@@@r   c              3   r   K   | ]1}t          |j                  t          j                  d z   k    V  2dS rg   rh   ri   s     r   rk   z.test_pack_unpack_with_numpy.<locals>.<genexpr>   rl   r   c              3   r   K   | ]1}t          |j                  t          j                  d z   k    V  2dS rg   rh   ri   s     r   rk   z.test_pack_unpack_with_numpy.<locals>.<genexpr>   rl   r   )casesr<   r   r   r;   r   rJ   rK   BaseExceptionrY   r   r@   )caser<   r   _lastrsr   s         @r   test_pack_unpack_with_numpyru      s     97 97
,IU##QC!qc?G444]=)) 	P 	PAaS1#:N0NOOO	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P]=)) 	9 	9AaS1#888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9]=)) 	9 	9AaS1#888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	QC!rd+W555QC"s+W555RD1#s+W555$Q!qcB4(8'BB
1dz$((**%****]=)) 	1 	11sQC"&000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1
 ]=)) 	1 	11taS1#&000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 Q!Q!Q"a 97CC@@@@R@@@@@@@@Q!Q!R1a& 97CC@@@@R@@@@@@@@Q!R1a&1a& 97CC@@@@R@@@@@@@@ ]=)) 	4 	41AwaS)7333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4]=)) 	7 	711vsQG,g666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 ]=)) 	7 	711vsQG,g666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7]=)) 	7 	711v2w,g666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7]=)) 	7 	712wA,g666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	QC!rd+W555QC"s+W555RD1#s+W555 	QGaV,g6666s97 97s   )BB	B	4CC	C	<D  D$	'D$		G--G1	4G1	H55H9	<H9	>L##L'	*L'	M--M1	4M1	N77N;	>N;	PP	P	%QQ	Q	c            
         t          dd          D ]} t          d| j                    d}t          D ]}t          }|j        }|j        }t          j                            |          }| 	                    |          } ||dgdgdgg|           t          j        t                    5  t          |dgdgdgg|           d d d            n# 1 swxY w Y   t          j        t                    5  t          |dgdgdgg|           d d d            n# 1 swxY w Y    ||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            n# 1 swxY w Y   t          j        t                    5  t          |dgdgd	gg|           d d d            n# 1 swxY w Y    ||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            n# 1 swxY w Y   t          j        t                    5  t          |ddgdgd	dgg|           d d d            n# 1 swxY w Y   t          j        t                    5  t          |ddgdgd
dgg|           d d d            n# 1 swxY w Y   t          j        t                    5  t          |ddgd
dgdgg|           d d d            n# 1 swxY w Y   t          j        t                    5  t          |d
dgddgdgg|           d d d            n# 1 swxY w Y   |r_ ||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|           ΐd S )NF)symboliclayersztest packing against numpy for TrD   rF   rc   re   r[   rB   r   )r   printframework_namero   r'   r<   r   r   r;   
from_numpyrJ   rK   rp   r   )backendcheck_zero_lenrq   r   r<   r   r   s          r   test_pack_unpack_against_numpyr~      s   (%FFF <? <?H0FHHIII 8	? 8	?D;OJElG	  ''A""1%%AOAaS1#888}-- 4 4qA3aS/73334 4 4 4 4 4 4 4 4 4 4 4 4 4 4 }-- 4 4qA3aS/73334 4 4 4 4 4 4 4 4 4 4 4 4 4 4 OAaS2$/999OAbTA3/999OAqcA3/999 }-- 5 5qA3bT*G4445 5 5 5 5 5 5 5 5 5 5 5 5 5 5
 }-- 5 5qB4!qc*G4445 5 5 5 5 5 5 5 5 5 5 5 5 5 5 OAAAQ8'BBBOAAB!Q8'BBBOAB!Q!Q8'BBB }-- 8 8qB7QC!-w7778 8 8 8 8 8 8 8 8 8 8 8 8 8 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	?	<? <?s   -CCC5DD D6FF!F>G""G&)G&I--I14I1J77J;>J;LLL%MMM/NNNc            
         ddl m}  dd l}|j        dk     rt	          j                     t          D ]}|j        }|j        }t          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          |||          }|                     |||          }	t          ||	          D ]2\  }
}t          j        |
|                     |dz                       sJ 3t!          ||          \  }}|                     |	|          \  }}||k    sJ t          j        ||                     |                    s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 ]D}t	          j        t$                    5  t          |||           d d d            n# 1 swxY w Y   Ed S )
Nr   )	array_apiz2.0.0rD   rF   re   rB   )rF   rF   rF   r[   )einopsr   numpy__version__rJ   skipro   r<   r   r   r;   from_dlpackr   r   r   r   r   rK   rp   )AAxprq   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   &&&&&&	~ * *
,y&&~~d## S1#sOS1#tS1#AwVYYY%	
 	? 	?B  b'22J4W55JJ
33 9 91{1bjjQ&7&7888888 W55MHcGGJ88MHc#::::;xH)=)=>>>>>> VHS1#JS1#tS1a&MS1#Aw
 	* 	*B }-- * *tR)))* * * * * * * * * * * * * * *	*-* *s   F;;F?F?)r7   r8   )dataclassesr]   r   r   rJ   r   r   r   r   r   einops.testsr   r   ra   r   r'   r   rR   	dataclassrT   ro   ru   r~   r   r6   r   r   <module>r      s             5 5 5 5 5 5 5 5 5 5 5 5 . . . . . .3 3 3C    .# . . . .4       8) 8) 8) 8)v + + + + + + + + N4N69%%N69%%N9n--N9n--N9n--		<7 <7 <7~=? =? =?@%* %* %* %* %*r   