
    Opf                         d Z ddlZddlZddlmZmZ d Zd Zd Z	d Z
ej                            dg d	          d
             Zd Zd Zd Zd Zd Zd Zd ZdS )zO
Tests the input parsing for opt_einsum. Duplicates the np.einsum input tests.
    N)contractcontract_pathc                 j   d}t          j        g d          d t          |          D             g }|                     dd          } |                     d          d                             d          }|D ]6}fd	|D             }|                    t          j        j        |            7|S )
N
abcdefghij)
            r	   r   r      r
   r	   c                     i | ]\  }}||	S  r   ).0css      [/var/www/html/nettyfy-visnx/env/lib/python3.11/site-packages/opt_einsum/tests/test_input.py
<dictcomp>zbuild_views.<locals>.<dictcomp>   s    000daQ000    z...ijz->r   ,c                      g | ]
}|         S r   r   )r   xsizess     r   
<listcomp>zbuild_views.<locals>.<listcomp>   s    '''Qa'''r   )nparrayzipreplacesplitappendrandomrand)stringcharsviewstermstermdimsr   s         @r   build_viewsr(      s    EH33344E00c%//000EE^^E4((FLLq!'',,E , ,''''$'''RY^T*++++Lr   c                  N   t          j        t                    5  t          dd           d d d            n# 1 swxY w Y   t          j        t                    5  t          ddd           d d d            n# 1 swxY w Y   t          j        t          t          f          5  t          ddd           d d d            n# 1 swxY w Y   t          j        t                    5  t          ddd           d d d            n# 1 swxY w Y   t          j        t                    5  t          ddd	
           d d d            n# 1 swxY w Y   t          j        t                    5  t          ddd           d d d            n# 1 swxY w Y   t          j        t                    5  t          d  d d d            n# 1 swxY w Y   t          j        t                    5  t          ddd           d d d            n# 1 swxY w Y   t          j        t                    5  t          ddd           d d d            n# 1 swxY w Y   t          j        t                    5  t          ddd           d d d            n# 1 swxY w Y   t          j        t                    5  t          ddd           d d d            n# 1 swxY w Y   d} t          |           }t          j        t                    5  t          |d         t          dgt          dgg           d d d            n# 1 swxY w Y   t          j        t                    5  t          |d         t          t                      gt          dg           d d d            d S # 1 swxY w Y   d S )Nr    testoutW)orderblah)castingbad_data_type)dtype)bad_arg)?NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNz->,->r
   z&,a->za,a->&
...a->...aa)pytestraises	TypeErrorr   
ValueErrorr(   Ellipsisdict)r"   r$   s     r   test_type_errorsr=      s   	y	!	!  A               
y	!	! $ $QF####$ $ $ $ $ $ $ $ $ $ $ $ $ $ $
 
	:.	/	/ # #Qc""""# # # # # # # # # # # # # # # 
z	"	" ( (Q''''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 
y	!	! / /Qo..../ / / / / / / / / / / / / / / 
y	!	! # #Q""""# # # # # # # # # # # # # # # 
y	!	! ! !-  ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
z	"	"    !Q                              
z	"	"    !Q                              
z	"	" ! !1a   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
z	"	" ! !1a   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! FE 
y	!	! = =qHa=8cU*;<<<= = = = = = = = = = = = = = = 
y	!	! @ @qHdff-#???@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @s   7;;A::A>A>%CCC(DDD+E

EE.FFF1
GGG+H		HH-III/JJJ1KKK'L77L;>L;2NN!Nc            	         t          j        t                    5  t          d           d d d            n# 1 swxY w Y   t          j        t                    5  t          dd           d d d            n# 1 swxY w Y   t          j        t                    5  t          dddg           d d d            n# 1 swxY w Y   t          j        t                    5  t          dddg           d d d            n# 1 swxY w Y   t          j        t                    5  t          dddg           d d d            n# 1 swxY w Y   t          j        t                    5  t          d           d d d            n# 1 swxY w Y   t          j        t                    5  t          ddd           d d d            n# 1 swxY w Y   t          j        t                    5  t          dddgdg           d d d            n# 1 swxY w Y   t          j        t                    5  t          ddg           d d d            n# 1 swxY w Y   t          j        t                    5  t          dd           d d d            n# 1 swxY w Y   t          j        t                    5  t          dddg           d d d            n# 1 swxY w Y   t          j        t                    5  t          d	d           d d d            n# 1 swxY w Y   t          j        t                    5  t          d
ddg           d d d            n# 1 swxY w Y   t          j        t                    5  t          dd           d d d            n# 1 swxY w Y   t          j        t                    5  t          dddg           d d d            n# 1 swxY w Y   t          j        t                    5  t          dddg           d d d            n# 1 swxY w Y   t          j        t                    5  t          dddg           d d d            n# 1 swxY w Y   t          j        t                    5  t          dddg           d d d            n# 1 swxY w Y   t          j        t                    5  t          dddg           d d d            n# 1 swxY w Y   t          j        t                    5  t          dddg           d d d            n# 1 swxY w Y   t          j        t                    5  t          dddg           d d d            n# 1 swxY w Y   t          j        t                    5  t          dddg           d d d            n# 1 swxY w Y   t          j        t                    5  t          dddg           d d d            n# 1 swxY w Y   t          j        t                    5  t          dddgddgg           d d d            n# 1 swxY w Y   t          j        t                    5  t          dt          j        d                              dd                     d d d            n# 1 swxY w Y   t          j        t                    5  t          dt          j        d                              dd                     d d d            n# 1 swxY w Y   t          j        t                    5  t          dt          j        d                              dd                     d d d            n# 1 swxY w Y   t          j        t                    5  t          dddgddggt          j        d                              dd                     d d d            d S # 1 swxY w Y   d S )Nr*   r   zi%...z...j$zi->&r   ir   z...izi...jzi...zij...zi..z.i...zj->..jzj->.j...zi->ijzij->jijiir   r   r   zii->ii->i   r	   r,   )r7   r8   r:   r   r9   r   arangereshaper   r   r   test_value_errorsrE   T   s   	z	"	"                 
y	!	!  A               
z	"	" " "1a&!!!" " " " " " " " " " " " " " "	z	"	" " "1a&!!!" " " " " " " " " " " " " " "	z	"	" ! !!Q   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
z	"	"                 
z	"	"  Q              	z	"	" # #a!qc"""# # # # # # # # # # # # # # #	z	"	"  qc               
z	"	"  a              	z	"	"  1v              	z	"	"                	z	"	" " "1a&!!!" " " " " " " " " " " " " " "	z	"	"                	z	"	" " "1a&!!!" " " " " " " " " " " " " " " 
z	"	"    A                             	z	"	" " "1a&!!!" " " " " " " " " " " " " " "	z	"	" # #Aq6"""# # # # # # # # # # # # # # #	z	"	" % %aV$$$% % % % % % % % % % % % % % % 
z	"	" " "1a&!!!" " " " " " " " " " " " " " "	z	"	" " "1a&!!!" " " " " " " " " " " " " " "	z	"	" ! !!Q   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
z	"	" " "1a&!!!" " " " " " " " " " " " " " " 
z	"	" . .aVaV,---. . . . . . . . . . . . . . . 
z	"	" 3 3ry||++Aq112223 3 3 3 3 3 3 3 3 3 3 3 3 3 3	z	"	" 6 6")A,,..q!445556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 
z	"	" 2 2bill**1a001112 2 2 2 2 2 2 2 2 2 2 2 2 2 2	z	"	" K K1a&1a&)ry||/C/CAq/I/IJJJJK K K K K K K K K K K K K K K K K Ks  6::A77A;>A;B::B>B>C==DD!E  EE$F  FF$GG	G&HHH+I		II-J

JJ.KKK1LLL2MMM5NNN6OOO9PPP<QQ"Q?RR"%R"S!!S%(S%T$$T(+T(U''U+.U+V**V.1V.W--W14W1X44X8;X87ZZ"Z?7\\	\&7]))]-0]-?__ _c                  ,   t          j        t                    5  t          dddgddggd           d d d            n# 1 swxY w Y   t          j        t                    5  t          dddgddggd           d d d            d S # 1 swxY w Y   d S )NrA   r   rB   T)	bad_kwarg)memory_limit)r7   r8   r9   r   r:   r   r   r   test_contract_inputsrJ      sF   	y	!	! @ @f1v1v.$????@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 
z	"	" A Af1v1v.R@@@@A A A A A A A A A A A A A A A A A As!   ?AA#B		BBr"   )	...a->...z	a...->...za...a->...az...,...za,bz	...a,...bc                     t          |           }t          | g|R ddi}t          | g|R  }t          j        ||          sJ t          | g|R ddi}t          j        ||          sJ d S )NoptimizeFoptimal)r(   r   r   allcloser"   r$   einopts       r   test_comparerS      s     E
6
2E
2
2
2E
2
2C
6
"E
"
"
"C;sC     
6
6E
6
6
6I
6
6C;sC       r   c                      d} t          |           }t          | g|R ddi}t          |d         t          dgt          g          }t          j        ||          sJ d S )NrK   rM   Fr   r(   r   r;   r   rO   rP   s       r   test_ellipse_input1rV      sj    FE
6
2E
2
2
2E
2
2C
58h]XJ
7
7C;sC       r   c                      d} t          |           }t          | g|R ddi}t          |d         t          dg          }t          j        ||          sJ d S )Nz...arM   Fr   rU   rP   s       r   test_ellipse_input2rX      sf    FE
6
2E
2
2
2E
2
2C
58h]
+
+C;sC       r   c                      d} t          |           }t          | g|R ddi}t          |d         t          dgt          dg          }t          j        ||          sJ d S )Nr5   rM   Fr   rU   rP   s       r   test_ellipse_input3rZ      sl    FE
6
2E
2
2
2E
2
2C
58h]XqM
:
:C;sC       r   c                      d} t          |           }t          | g|R ddi}t          |d         t          dg|d         t          dgt          g          }t          j        ||          sJ d S )Nz...b,...a->...rM   Fr   rB   rU   rP   s       r   test_ellipse_input4r\      sv    FE
6
2E
2
2
2E
2
2C
58h]E!HxmhZ
P
PC;sC       r   c                  ,   t          j        d          } t          j        d          }t          d| |d          }t          d| |d          }t          j        ||          sJ t          j        |ddg          sJ t          j        d          } t          j        d	          }d
D ]j}t          d| | |          f}t          d| ||          }t          j        ||          sJ t          j        |t          j        dd                    sJ kd S )N)
   r   )rB   r   zij,ij->jF)rM   Tg      $@)rB   r
   )r
   r
   )TFz...ij,...jk->...ikr
   )r   onesr   rO   full)pqrQ   rR   rM   res1res2s          r   "test_singleton_dimension_broadcastre      s!   
A
A
:q!e
4
4
4C
:q!d
3
3
3C;sC     ;sS#J'''''
A
A! 5 5,aXFFFG,aXFFF{4&&&&&{4!3!3444444	5 5r   c                  0   d} t          |           \  }}}t          | |||          }t          |d|d|d          }t          j        ||          sJ t	          d          D ]3}t          ||dz   |f          }t          j        ||j                  sJ 4d S )Nab,bc,cd)i    )rh     )ri   i  r^   rB   r(   r   r   rO   rangeT)r"   r   yzstring_output
int_outputr?   transpose_outputs           r   test_large_int_input_formatrr      s    F&!!GAq!VQ1--M!\1lA|LLJ;}j111112YY 2 2#AAqz22{+QS1111112 2r   c            	         d} t          |           \  }}}t          | |||          }t          |d|d|d          }t          |d|d|dd          }t          j        ||          sJ t          j        ||          sJ t	          dd          D ]6}t          |d|z  d	|z  f          }t          j        ||j                  sJ 7d S )
Nrg   )leftbond1)ru   bond2)rv   right)rt   rw   rB   r^   br6   rj   )	r"   r   rm   rn   ro   hash_output1hash_output2r?   rq   s	            r   !test_hashable_object_input_formatr{     s    F&!!GAq!VQ1--MA0!5GL^__LA0!5GL^`qrrL;}l33333;|\222221b\\ 2 2#Aaq'9::{+QS1111112 2r   )__doc__numpyr   r7   
opt_einsumr   r   r(   r=   rE   rJ   markparametrizerS   rV   rX   rZ   r\   re   rr   r{   r   r   r   <module>r      s=         . . . . . . . .   6@ 6@ 6@rLK LK LK^A A A   
 
! !
 
!! ! !! ! !! ! !! ! !5 5 5(2 2 2
2 
2 
2 
2 
2r   