
    3j(              	       d   S SK r S SKrS SKrS SKrS SKJrJrJrJ	r	  S SK
Jr  \R                  R                  5       rS rS\4S jrS\4S jr " S S	5      rSS
 jr\ R*                   " S S5      5       r\" SS5      \" SS5      \" SS5      \" SS5      \" SS5      \" SS5      /rS rS rS rg)    N)EinopsErrorasnumpypackunpack)collect_test_backendsc                     [        X5      u  p#[        XU5      n[        U5      [        U 5      :X  d   e[        X@5       H5  u  pV[        R
                  " [        U5      [        U5      5      (       a  M5   e   g N)r   r   lenzipnpallcloser   )xspatternxpsunpackedabs          S/home/wildlama/miniconda3/lib/python3.13/site-packages/einops/tests/test_packing.pypack_unpackr      s`    EAbg&Hx=CG###H!{{71:wqz2222 "    r   c                     [        XU5      n[        X2S9u  pE[        R                  " [	        U5      [	        U 5      5      (       d   eU$ N)r   )r   r   r   r   r   )r   r   r   r   packedps2s         r   unpack_and_packr      s>    aW%Hx1KF;;wv
3333Or   c                    [        5       n[        5       nU   [        XU5      n[        XRS9u  pgS S S 5        U   [        U 5      n[        XU5      n	[        XS9u  pS S S 5        [	        UR
                  5      [	        UR
                  5      :X  d   eUR
                  b  g [        R                  " [        W5      [        U 5      5      (       d   e[        R                  " [        W
5      [        U 5      5      (       d   e[        W5      [        W	5      :X  d   e[        XY5       H,  u  p[        R                  " [        U5      U5      (       a  M,   e   g ! , (       d  f       GN.= f! , (       d  f       GN= f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	!)85 
 
qzTw/k;	 

 (()T2B2L2L-MMMM+ {{76?GAJ7777{{79-wqz::::8}K 0000.DA;;wqz1---- /% 
	 
s   E#E(
E%(
E7c                        \ rS rSrS rS rSrg)r   7   c                     S U l         g r	   r    selfs    r   	__enter__CaptureException.__enter__8   s	    r   c                     X l         g)NTr+   )r-   exc_typeexc_valexc_tbs       r   __exit__CaptureException.__exit__;   s
     r   r+   N)__name__
__module____qualname____firstlineno__r.   r4   __static_attributes__ r   r   r   r   7   s    r   r   c           	         S nS nU" SX5      u  pEnU" XS5      nU" [         R                  " XEU/SS9[        XEU/S5      S   5        U" [         R                  " XEU/S	S9[        XEU/S
5      S   5        U" [         R                  " XEU/SS9[        XEU/S5      S   5        U" [         R                  " XEU/S	S9[        XEU/S5      S   5        U" [         R                  " XEU/SS9[        XEU/S5      S   5        [         R                  S S 2S S 2S 4   nU" [         R                  " XH   XX   Xh   U/SS9[        XEXg/S5      S   5        [
        R                  " [        5         [        XEXg/S5        S S S 5        [        XEU/S5        [
        R                  " [        5         [        XEXg/S5        S S S 5        [
        R                  " [        5         [        XEXg/S5        S S S 5        [
        R                  " [        5         [        XEXg/S5        S S S 5        [
        R                  " [        5         [        XEXg/S5        S S S 5        [
        R                  " [        5         [        XEXg/S5        S S S 5        [        XEXg/S5        g ! , (       d  f       GN!= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Ns= f)Nc                  ,    [         R                  U 5      $ r	   )rngrandom)shapes    r   rand test_numpy_trivial.<locals>.randA   s    zz%  r   c                     U R                   UR                   :X  d   eU R                  UR                  :X  d   e[        R                  " X:H  5      (       d   eg r	   )dtyper@   r   all)r   r   s     r   check!test_numpy_trivial.<locals>.checkD   sB    ww!''!!!ww!''!!!vvaf~~~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WrA   rF   rgr   
embeddingsis	            r   test_numpy_trivialrX   @   ss   !
 1amGA!aBJ	
!#aAY # 

!#aAY # 

!#aAY #
 

ayq)aAYq! 

ayq)aAYq!
 	Q4Z A	
adAD*5A>aA"G,Q/
 
{	#aA"$<= 
$ 	!89	{	#aA"H- 
$	{	#aA"H- 
$	{	#aA"I. 
$	{	#aA"G, 
$	{	#aA"G, 
$ 	!	(! 
$	#
 
$	#	#	#	#	#	#	#	#	#sH   &J%J!J2K8K)K%
J!
J/2
K 
K
K"%
K3c                   T    \ rS rSr% \R
                  \S4   \S'   \\S'   S r	S r
Srg)	UnpackTestCase{   .r@   r   c                 T    U R                   R                  5       R                  S5      $ )N*)r   splitindexr,   s    r   dimUnpackTestCase.dim   s     ||!!#))#..r   c                 J    U R                   U R                  5          S:X  d   eg )N   )r@   r`   r,   s    r   	selfcheckUnpackTestCase.selfcheck   s    zz$((*%***r   r;   N)r6   r7   r8   r9   typingTupleint__annotations__strr`   rd   r:   r;   r   r   rZ   rZ   {   s$    <<S!!L/+r   rZ   )rc   r]   )rc      z* seven)rk   rc   zseven *)rc   rH      z* three four)rl   rc   rH   zfour * three)rH   rl   rc   zthree four *c            	      	  ^ [          GH  n U R                  nU R                  n[        R	                  U5      m[        TS/S/S//U5        [        R                  " [        5         [        TS/S/S//US-   5        S S S 5        [        R                  " [        5         [        TS/S/S//U5        S S S 5        [        R                  " [        5         [        TS/S/S//U5        S S S 5        [        TS/S/S//U5        [        TS/S/S//U5        [        TS/S/S//U5        [        TS/S/S//U5      u    p4UR                  U R                  5          S:X  d   e[        R                  " [        5         [        TS/S/S//U5        S S S 5        [        R                  " [        5         [        TS/S/S//U5        S S S 5        [        TSS/SS/SS//U5      n[        U4S	 jU 5       5      (       d   e[        TSS/SS/SS//U5      n[        U4S
 jU 5       5      (       d   e[        TSS/SS/SS//U5      n[        U4S jU 5       5      (       d   e[        R                  " [        5         [        TSS/S/S//U5        S S S 5        [        R                  " [        5         [        TSS/S/SS//U5        S S S 5        [        R                  " [        5         [        TSS/S/SS//U5        S S S 5        [        R                  " [        5         [        TSS/SS/S//U5        S S S 5        [        R                  " [        5         [        TSS/SS/S//U5        S S S 5        [        TS/S/S//U5        [        TS/S/S//U5        [        TS/S/S//U5        [        TSS/SS//U5        GM     g ! , (       d  f       GNX= f! , (       d  f       GN4= f! , (       d  f       GN= f! , (       d  f       GNz= f! , (       d  f       GNV= f! , (       d  f       GN= f! , (       d  f       GNu= f! , (       d  f       GNO= f! , (       d  f       GN)= f! , (       d  f       GN= f)NrJ   rL   z non_existent_axisrl   rH   r   rc   c              3      >#    U  H3  n[        UR                  5      [        TR                  5      S -   :H  v   M5     g7frL   Nr
   r@   .0rT   r   s     r   	<genexpr>.test_pack_unpack_with_numpy.<locals>.<genexpr>   +     @R3qww<3qww<!#33R   ;>c              3      >#    U  H3  n[        UR                  5      [        TR                  5      S -   :H  v   M5     g7frp   rq   rr   s     r   rt   ru      rv   rw   c              3      >#    U  H3  n[        UR                  5      [        TR                  5      S -   :H  v   M5     g7frp   rq   rr   s     r   rt   ru      rv   rw   )casesr@   r   r>   r?   r   rP   rQ   r   r`   r   rE   )caser@   r   _lastrsr   s         @r   test_pack_unpack_with_numpyr      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
1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   &OO O2=P3P?P(6P:.Q&QQ0
O	 
O/	2
P	
P	
P%	(
P7	:
Q		
Q	
Q-	0
Q?	c            
         [        SSS9 GH3  n [        SU R                   35        Sn[         GH
  n[        nUR
                  nUR                  n[        R                  U5      nU R                  U5      nU" US/S/S//U5        [        R                  " [        5         [        US/S/S//U5        S S S 5        [        R                  " [        5         [        US/S/S//U5        S S S 5        U" US/S/S//U5        U" US/S/S//U5        U" US/S/S//U5        [        R                  " [        5         [        US/S/S//U5        S S S 5        [        R                  " [        5         [        US/S/S	//U5        S S S 5        U" USS/SS/SS//U5        U" USS/SS/SS//U5        U" USS/SS/SS//U5        [        R                  " [        5         [        USS/S/S	//U5        S S S 5        [        R                  " [        5         [        USS/S/S	S//U5        S S S 5        [        R                  " [        5         [        USS/S/S
S//U5        S S S 5        [        R                  " [        5         [        USS/S
S/S//U5        S S S 5        [        R                  " [        5         [        US
S/SS/S//U5        S S S 5        U(       d  GM  U" US/S
/S//U5        U" US/S	/S//U5        U" US/S/S	//U5        U" US/S	/S//U5        U" USS/SS	//U5        GM     GM6     g ! , (       d  f       GN= f! , (       d  f       GNr= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNv= f! , (       d  f       GNP= f! , (       d  f       GN*= f! , (       d  f       GN= f)NF)symboliclayersztest packing against numpy for TrJ   rL   rl   rn   rc   rH   r   )r   printframework_namerz   r'   r@   r   r>   r?   
from_numpyrP   rQ   r   r   )backendcheck_zero_lenr{   r   r@   r   r   s          r   test_pack_unpack_against_numpyr      s   (%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   !MM=M(3M:"NNN0	OO
M
M%(
M7:
N	
N
N-0
N?
O
O#c            
         SS K n SSKJn  U R                  S:  a  [        R
                  " 5         [         GHt  nUR                  nUR                  n[        R                  U5      nU R                  U5      nS/S/S//S/S/S//S/S/SS//SS// SQS//4 H  n[        XWU5      nUR                  XgU5      n	[        X5       H4  u  p[        R                  " XR!                  US-   5      5      (       a  M4   e   [#        X5      u  pUR#                  X5      u  pX:X  d   e[        R                  " XR!                  U5      5      (       a  M   e   SS//S/S	//S/S	/S//S/SS//S/S	/SS//4 H2  n[        R$                  " [&        5         [        XWU5        S S S 5        M4     GMw     g ! , (       d  f       MK  = f)
Nr   )	array_apiz2.0.0rJ   rL   rn   rH   )rL   rL   rL   rc   )numpyeinopsr   __version__rP   skiprz   r@   r   r>   r?   from_dlpackr   r   r   r   r   r   rQ   r   )xpAAr{   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  '2J4W5JJ3{{1jjQ&78888 4 !5MHGGJ8MH::;;xH)=>>>>
" VHS1#JS1#tS1a&MS1#Aw
B {+t) ,+
- : ,+s   F00
F?)      )dataclassesrf   r   r   rP   r   r   r   r   r   einops.testsr   r?   default_rngr>   r   rj   r   r'   r   rX   	dataclassrZ   rz   r   r   r   r;   r   r   <module>r      s        5 5 .ii3C .# .4 8)v + + + 469%69%9n-9n-9n-		<7~=?@&*r   