
    Opf;                     
   d dl Zd dlZd dlmZmZmZmZmZ d dl	m
Z
mZmZ 	 d dlZdZn# e$ r dZY nw xY w	 d dlZ ej                    Zdej        _        dZn# e$ r dZY nw xY w	 d dlZdej        d<   d dlZdZn# e$ r dZY nw xY w	 d dlZdZn# e$ r dZY nw xY w	 d dlZdZn# e$ r dZY nw xY w	 d dlZdZ n# e$ r dZ Y nw xY wg dZ!ej"        #                    e d	
          ej"        $                    de!          d                         Z%ej"        #                    e d	
          ej"        $                    dd dhd dhddhg          d                         Z&ej"        #                    e d	
          ej"        $                    de!          d                         Z'ej"        #                    e d
          ej"        $                    de!          d                         Z(ej"        #                    e d
          ej"        $                    dd dhd dhddhg          d                         Z)ej"        #                    e d
          ej"        $                    de!          d                         Z*ej"        #                    e d
          ej"        $                    de!          d                         Z+ej"        #                    e d
          ej"        $                    dd dhd dhddhg          d                         Z,ej"        #                    e d
          ej"        $                    de!          d                         Z-ej"        #                    e d
          ej"        $                    dd dhd dhddhg          d                         Z.ej"        #                    e d
          d             Z/ej"        #                    e  d
          d             Z0ej"        $                    de!          d              Z1ej"        $                    de!          d!             Z2ej"        #                    e d"
          ej"        $                    de!          d#                         Z3ej"        #                    e d"
          ej"        $                    dd dhd dhddhg          d$                         Z4d% Z5ej"        $                    de!          d&             Z6dS )'    N)backendscontractcontract_expressionhelperssharingShapedinfer_backendparse_backendTFGNUMKL_THREADING_LAYER)z	ab,bc->cazabc,bcd,deazabc,def->fedcbazabc,bcd,df->fazijk,ikjzi,j->ijz	ijk,k->ijz	AB,BC->CAzTensorflow not installed.)reasonstringc                    t          j        |           }t          | g|R ddd}t          j        |          }d |D             }t          | g|R ddi}t          j        t                    }|	                                5   ||d|d d d d            n# 1 swxY w Y   |
                                 t          j        ||          sJ d	 |D             } ||  d S )
NFoptimizeuse_blasc                     g | ]	}|j         
S  shape.0vs     ^/var/www/html/nettyfy-visnx/env/lib/python3.11/site-packages/opt_einsum/tests/test_backends.py
<listcomp>z#test_tensorflow.<locals>.<listcomp>D       ###AG###    r   Tconfig
tensorflow)backendoutc                 6    g | ]}t          j        |          S r   )r   to_tensorflowr   views     r   r   z#test_tensorflow.<locals>.<listcomp>O   s#    GGG.t44GGGr   )r   build_viewsr   np
empty_liker   tfSession
_TF_CONFIG
as_defaultcloseallclose)r   viewseinoptshpsexprsesstensorflow_viewss           r   test_tensorflowr8   =   sP    ''E
6
BE
B
BEE
B
B
BC
-

C##U###Dv<<<<t<<D:Z(((D			 4 4e\s33334 4 4 4 4 4 4 4 4 4 4 4 4 4 4JJLLL;sC      HGGGGD
s   
BB!B	constants      c                    	
 d}d}h d z
  \  } fdt          |          D             	t          j        j        ||          
t	          |g 	
fdt          d          D             R  }t          |g	R d i}t          j        t                    
                                5   |
d	
          }d d d            n# 1 swxY w Y   t          d |j        d	         D                       sJ t          j        ||          sJ  |
d
          }t          j        ||          sJ  |t          j        
                    }t!          |t          j                  sJ d S )Nij,jk,kl->lir;      r@      )rB         r   r:   r;   c                 H    g | ]\  }}|v rt          j        j        | n|S r   r)   randomrandr   ishpr9   s      r   r   z2test_tensorflow_with_constants.<locals>.<listcomp>Y   3    
[
[
[vq#1	>>29>3s
[
[
[r   c              3   4   K   | ]}|v r|         nV  d S Nr   r   rJ   r9   opsvars     r   	<genexpr>z1test_tensorflow_with_constants.<locals>.<genexpr>[   3      QQ1qI~~SVV3QQQQQQr   r@   r9   r   r!   r"   c              3   D   K   | ]}|d u pt          |          dk    V  d S )Nr!   r
   r   arrays     r   rR   z1test_tensorflow_with_constants.<locals>.<genexpr>b   sT       E E }De 4 4 D E E E E E Er   numpy)	enumerater)   rG   rH   r   ranger   r+   r,   r-   r.   all_evaluated_constantsr0   r   r%   
isinstanceTensorr9   eqshapes	non_constres_expr5   res_gotres_got2res_got3rP   rQ   s   `        @@r   test_tensorflow_with_constantsrh   S   s    
B#FY&JI
[
[
[
[SYIZIZ
[
[
[C
).&+
,CrRQQQQQQaQQQRRRGr=C===9==D 
:	&	&	&	1	1	3	3 2 2$sL1112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 E E 5lCE E E E E E E E;w((((( tC)))H;w))))) tH*3//00Hh	*******s   )CC
Cc                    t          j        |           }t          | g|R ddd}d |D             }t          | g|R ddi}t	          j        t                    }|                                5  t          j	                    5 } ||ddi}t          j
                    |u sJ t          |          }|d	k    sJ  ||ddi}	t          |          |k    sJ 	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          d
 |                                D                       sJ t          j        ||          sJ t          j        ||	          sJ d S )NFr   c                     g | ]	}|j         
S r   r   r   s     r   r   z0test_tensorflow_with_sharing.<locals>.<listcomp>u   r   r   r   Tr   r"   r!   r   c              3   J   K   | ]}t          |t          j                  V  d S rN   )r^   r+   r_   r   ts     r   rR   z/test_tensorflow_with_sharing.<locals>.<genexpr>   s.      @@Az!RY''@@@@@@r   )r   r(   r   r   r+   r,   r-   r.   r   shared_intermediatesget_sharing_cachelenr\   valuesr)   r0   )
r   r1   r2   r4   r5   r6   cachetfl1cache_sztfl2s
             r   test_tensorflow_with_sharingrv   o   s    ''E
6
BE
B
BEE
B
B
BC##U###Dv<<<<t<<D:Z(((D			 & &G8:: &etU1L11(**e3333u::!||||tU1L115zzX%%%%%& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & @@@@@@@@@@;sD!!!!!;sD!!!!!!!s7   0C<AC%C<%C)	)C<,C)	-C<<D D zTheano not installed.c                 *   t          j        |           }t          | g|R ddd}d |D             }t          | g|R ddi} ||ddi}t	          j        ||          sJ d |D             } || }t          |t          j        j	                  sJ d S )	NFr   c                     g | ]	}|j         
S r   r   r   s     r   r   ztest_theano.<locals>.<listcomp>   r   r   r   Tr"   theanoc                 6    g | ]}t          j        |          S r   )r   	to_theanor&   s     r   r   ztest_theano.<locals>.<listcomp>   s#    ???H&t,,???r   )
r   r(   r   r   r)   r0   r^   ry   tensorTensorVariable)r   r1   r2   r4   r5   r3   theano_views
theano_opts           r   test_theanor      s     ''E
6
BE
B
BEE
B
B
BC##U###Dv<<<<t<<D
$
(x
(
(C;sC      @????L|$Jj&-">???????r   ztheano not installed.c                 V   	
 d}d}h d z
  \  } fdt          |          D             	t          j        j        ||          
t	          |g 	
fdt          d          D             R  }t          |g	R d i} |
d	          }t          d
 |j        d         D                       sJ t          j	        ||          sJ  |
d	          }t          j	        ||          sJ  |t          j        
                    }t          |t          j        j                  sJ d S )Nr=   r>   rD   c                 H    g | ]\  }}|v rt          j        j        | n|S r   rF   rI   s      r   r   z.test_theano_with_constants.<locals>.<listcomp>   rL   r   c              3   4   K   | ]}|v r|         nV  d S rN   r   rO   s     r   rR   z-test_theano_with_constants.<locals>.<genexpr>   rS   r   r@   r9   ry   rT   c              3   D   K   | ]}|d u pt          |          dk    V  d S )Nry   rV   rW   s     r   rR   z-test_theano_with_constants.<locals>.<genexpr>   s8      rrUu}@e 4 4 @rrrrrrr   rY   )rZ   r)   rG   rH   r   r[   r   r\   r]   r0   r   r{   r^   ry   r|   r}   r`   s   `        @@r   test_theano_with_constantsr      sn    
B#FY&JI
[
[
[
[SYIZIZ
[
[
[C
).&+
,CrRQQQQQQaQQQRRRGr=C===9==D d3)))GrrdNghpNqrrrrrrrr;w((((( tC)))H;w))))) tH&s++,,Hh <=======r   c                 <   t          j        |           }t          | g|R ddd}d |D             }t          | g|R ddi}t	          j                    5 } ||ddi}t	          j                    |u sJ t          |          }|dk    sJ  ||ddi}t          |          |k    sJ 	 d d d            n# 1 swxY w Y   t          d	 |	                                D                       sJ t          j        ||          sJ t          j        ||          sJ d S )
NFr   c                     g | ]	}|j         
S r   r   r   s     r   r   z,test_theano_with_sharing.<locals>.<listcomp>   r   r   r   Tr"   ry   r   c              3   T   K   | ]#}t          |t          j        j                  V  $d S rN   )r^   ry   r|   r}   rl   s     r   rR   z+test_theano_with_sharing.<locals>.<genexpr>   s1      SSqz!V]9::SSSSSSr   )r   r(   r   r   r   rn   ro   rp   r\   rq   r)   r0   )	r   r1   r2   r4   r5   rr   thn1rt   thn2s	            r   test_theano_with_sharingr      s    ''E
6
BE
B
BEE
B
B
BC##U###Dv<<<<t<<D		%	'	' &5tU-H--(**e3333u::!||||tU-H--5zzX%%%%%& & & & & & & & & & & & & & & SSELLNNSSSSSSSS;sD!!!!!;sD!!!!!!!s   AB66B:=B:zCupy not installed.c                 r   t          j        |           }t          | g|R ddd}d |D             }t          | g|R ddi} ||ddi}t	          j        ||          sJ d |D             } || }t          |t          j                  sJ t	          j        |t          j	        |                    sJ d S )	NFr   c                     g | ]	}|j         
S r   r   r   s     r   r   ztest_cupy.<locals>.<listcomp>   r   r   r   Tr"   cupyc                 6    g | ]}t          j        |          S r   )r   to_cupyr&   s     r   r   ztest_cupy.<locals>.<listcomp>   s#    ;;;T("4((;;;r   )
r   r(   r   r   r)   r0   r^   r   ndarrayasnumpy)r   r1   r2   r4   r5   r3   
cupy_viewscupy_opts           r   	test_cupyr      s     ''E
6
BE
B
BEE
B
B
BC##U###Dv<<<<t<<D
$
&v
&
&C;sC      <;U;;;JtZ Hh-----;sDL223333333r   c                    	
 d}d}h d z
  \  } fdt          |          D             	t          j        j        ||          
t	          |g 	
fdt          d          D             R  }t          |g	R d i} |
d	          }t          d
 |j        d         D                       sJ t          j	        ||          sJ  |
d	          }t          j	        ||          sJ  |t          j        
                    }t          |t          j                  sJ t          j	        ||                                          sJ d S )Nr=   r>   rD   c                 H    g | ]\  }}|v rt          j        j        | n|S r   rF   rI   s      r   r   z,test_cupy_with_constants.<locals>.<listcomp>   rL   r   c              3   4   K   | ]}|v r|         nV  d S rN   r   rO   s     r   rR   z+test_cupy_with_constants.<locals>.<genexpr>   rS   r   r@   r9   r   rT   c              3   D   K   | ]}|d u pt          |          dk    V  d S )Nr   rV   rW   s     r   rR   z+test_cupy_with_constants.<locals>.<genexpr>   s8      nn5u}>e 4 4 >nnnnnnr   rY   )rZ   r)   rG   rH   r   r[   r   r\   r]   r0   r   asarrayr^   r   getr`   s   `        @@r   test_cupy_with_constantsr      s    
B#FY&JI
[
[
[
[SYIZIZ
[
[
[C
).&+
,CrRQQQQQQaQQQRRRGr=C===9==D d3'''GnnDLeflLmnnnnnnnn;w((((( tC)))H;w))))) tDL%%&&Hh-----;w///////r   zjax not installed.c                     t          j        |           }t          | g|R ddd}d |D             }t          | g|R ddi} ||ddi}t	          j        ||          sJ t          |t          j                  sJ d S )NFr   c                     g | ]	}|j         
S r   r   r   s     r   r   ztest_jax.<locals>.<listcomp>   r   r   r   Tr"   jax)r   r(   r   r   r)   r0   r^   r   )r   r1   r2   r4   r5   r3   s         r   test_jaxr      s     ''E
6
BE
B
BEE
B
B
BC##U###Dv<<<<t<<D
$
%u
%
%C;sC     c2:&&&&&&&r   c                     d}d}h d z
  \  } fdt          |          D             t          j        j        ||          t	          |g fdt          d          D             R  }t          |gR d i} |d	          }t          d
 |j        d         D                       sJ t          j	        ||          sJ d S )Nr=   r>   rD   c                 H    g | ]\  }}|v rt          j        j        | n|S r   rF   rI   s      r   r   z+test_jax_with_constants.<locals>.<listcomp>  rL   r   c              3   4   K   | ]}|v r|         nV  d S rN   r   rO   s     r   rR   z*test_jax_with_constants.<locals>.<genexpr>  rS   r   r@   r9   r   rT   c              3   D   K   | ]}|d u pt          |          dk    V  d S )Nr   rV   rW   s     r   rR   z*test_jax_with_constants.<locals>.<genexpr>  s8      ll%u}=e 4 4 =llllllr   )
rZ   r)   rG   rH   r   r[   r   r\   r]   r0   )	r9   ra   rb   rc   rd   r5   re   rP   rQ   s	   `      @@r   test_jax_with_constantsr     s	    
B#FY&JI
[
[
[
[SYIZIZ
[
[
[C
).&+
,CrRQQQQQQaQQQRRRGr=C===9==D d3&&&Gll4KdejKkllllllll;w(((((((r   c                    
 d} d}d |D             }t          | g|R  
 
| }t          j        
          } ||                                 }|t	          j        |d          k    sJ t          j        t          j        
fd                    } ||          }t          d t          ||          D                       sJ d t          ||          D             } ||                                 }	|	|k     sJ d S )	N
ij,jk,kl->r?   rA   )rB   r;   c                 4    g | ]}t          j        j        | S r   r)   rG   randnr   ss     r   r   z)test_jax_jit_gradient.<locals>.<listcomp>   !    111QRY_a 111r   gh㈵>)relc                      |  S rN   r   r1   r5   s    r   <lambda>z'test_jax_jit_gradient.<locals>.<lambda>)  s    ttU| r   c              3   <   K   | ]\  }}|j         |j         k    V  d S rN   r   r   v1v2s      r   rR   z(test_jax_jit_gradient.<locals>.<genexpr>+  /      IIBrx28#IIIIIIr   c                 $    g | ]\  }}|d |z  z
  S gMbP?r   r   r   dvs      r   r   z)test_jax_jit_gradient.<locals>.<listcomp>.  $    DDDEArURZDDDr   )	r   r   jititempytestapproxgradr\   zip)ra   rb   r1   x0jit_exprx1	grad_expr
view_grads	new_viewsx2r5   s             @r   test_jax_jit_gradientr     s/   	B#F11&111Er+F+++D	uBwt}}H	5				 	 Brt,,,,,,, !;!;!;!;<<==I5!!JII#eZ2H2HIIIIIIII EDS
-C-CDDDI	9		"	"	$	$B777777r   zautograd not installed.c                  0   d} d}d |D             }t          | g|R   | }t          j        fd          } ||          }t          d t	          ||          D                       sJ d t	          ||          D             } | }||k     sJ d S )Nr   r   c                 4    g | ]}t          j        j        | S r   r   r   s     r   r   z*test_autograd_gradient.<locals>.<listcomp>7  r   r   c                      |  S rN   r   r   s    r   r   z(test_autograd_gradient.<locals>.<lambda><  s    DD%L r   c              3   <   K   | ]\  }}|j         |j         k    V  d S rN   r   r   s      r   rR   z)test_autograd_gradient.<locals>.<genexpr>>  r   r   c                 $    g | ]\  }}|d |z  z
  S r   r   r   s      r   r   z*test_autograd_gradient.<locals>.<listcomp>A  r   r   )r   autogradr   r\   r   )	ra   rb   r1   r   r   r   r   r   r5   s	           @r   test_autograd_gradientr   3  s    	B#F11&111Er+F+++D	uB 888899I5!!JII#eZ2H2HIIIIIIII EDS
-C-CDDDI	y	B777777r   c                    t          j        d          t          j        |           }t	          | g|R ddd}d |D             }t          | g|R ddi}fd|D             } || }t          |j                  sJ t          j	        |t          j
        |                    sJ t	          | g|R  }t          |j                  sJ t          j	        |t          j
        |                    sJ d S )Nz
dask.arrayFr   c                     g | ]	}|j         
S r   r   r   s     r   r   ztest_dask.<locals>.<listcomp>L  r   r   r   Tc                 >    g | ]}                     |d           S )r;   )chunks)
from_array)r   xdas     r   r   ztest_dask.<locals>.<listcomp>P  s)    <<<a,,<<<r   )r   importorskipr   r(   r   r   r^   Arrayr)   r0   rX   )r   r1   r2   r4   r5   da_viewsda_optr   s          @r   	test_daskr   F  s+   		\	*	*B''E
6
BE
B
BEE
B
B
BC##U###Dv<<<<t<<D =<<<e<<<HT8_F fbh''''';sBHV,,----- f(x(((Ffbh''''';sBHV,,-------r   c                   	 t          j        d          	t          j        |           }|D ]Q}t          j                            d           t          j                            ddg|j        dddg          }d||<   Rt          | g|R ddd}d	 |D             }t          | g|R d
di}	fd|D             } || }t          |	j                  sJ t	          j        ||                                          sJ t          | g|R  }t          |	j                  sJ t	          j        ||                                          sJ d S )Nsparse*   FTg?gffffff?r   r   c                     g | ]	}|j         
S r   r   r   s     r   r   ztest_sparse.<locals>.<listcomp>k  r   r   r   c                 D    g | ]}j                             |          S r   )COO
from_numpy)r   r   r   s     r   r   ztest_sparse.<locals>.<listcomp>o  s)    <<<FJ))!,,<<<r   )r   r   r   r(   r)   rG   seedchoicer   r   r   r^   r   r0   todense)
r   r1   r'   maskr2   r4   r5   sparse_views
sparse_optr   s
            @r   test_sparser   ^  s    **F''E   
	rytz4$NNT


6
BE
B
BEE
B
B
BC##U###Dv<<<<t<<D =<<<e<<<L|$J j&*-----;sJ..0011111 &0<000Jj&*-----;sJ..001111111r   zTorch not installed.c                    t          j        |           }t          | g|R ddd}d |D             }t          | g|R ddi} ||ddi}t	          j        ||          sJ d |D             } || }t          |t          j                  sJ t	          j        ||	                                
                                          sJ d S )	NFr   c                     g | ]	}|j         
S r   r   r   s     r   r   ztest_torch.<locals>.<listcomp>  r   r   r   Tr"   torchc                 6    g | ]}t          j        |          S r   )r   to_torchr&   s     r   r   ztest_torch.<locals>.<listcomp>  s#    ===t8$T**===r   )r   r(   r   r   r)   r0   r^   r   r_   cpurY   )r   r1   r2   r4   r5   r3   torch_views	torch_opts           r   
test_torchr   }  s     ''E
6
BE
B
BEE
B
B
BC##U###Dv<<<<t<<D
$
'w
'
'C;sC      >=u===Kk"Ii.....;sIMMOO11334444444r   c                    	
 d}d}h d z
  \  } fdt          |          D             	t          j        j        ||          
t	          |g 	
fdt          d          D             R  }t          |g	R d i} |
d	          }t          d
 |j        d         D                       sJ t          j	        ||          sJ  |
d	          }t          j	        ||          sJ  |t          j        
                    }t          |t          j                  sJ |j        j        dk    r|                                n%|                                                                }t          j	        ||          sJ d S )Nr=   r>   rD   c                 H    g | ]\  }}|v rt          j        j        | n|S r   rF   rI   s      r   r   z-test_torch_with_constants.<locals>.<listcomp>  rL   r   c              3   4   K   | ]}|v r|         nV  d S rN   r   rO   s     r   rR   z,test_torch_with_constants.<locals>.<genexpr>  rS   r   r@   r9   r   rT   c              3   D   K   | ]}|d u pt          |          dk    V  d S )Nr   rV   rW   s     r   rR   z,test_torch_with_constants.<locals>.<genexpr>  s8      ppEu}?e 4 4 ?ppppppr   rY   r   )rZ   r)   rG   rH   r   r[   r   r\   r]   r0   r   r   r^   r   r_   devicetyperY   r   r`   s   `        @@r   test_torch_with_constantsr     s    
B#FY&JI
[
[
[
[SYIZIZ
[
[
[C
).&+
,CrRQQQQQQaQQQRRRGr=C===9==D d3(((GppTMfgnMopppppppp;w((((( tC)))H;w))))) tH%c**++Hh-----#+?#75#@#@x~~hllnnFZFZF\F\H;w)))))))r   c                  |    t          d          } t          |           dk    sJ t          | gd          dk    sJ d S )N)r:   r;   r@   
opt_einsumautorY   r   )r   s    r   +test_auto_backend_custom_array_no_tensordotr     sK    yA|++++!f%%000000r   c                    t          j        |           }t          | g|R ddd}|j        t          k    sJ d |D             }t          | g|R ddi}d |D             }t          | g|R ddi}|j        t          k    sJ t          j        ||                    t                              sJ  ||ddi}|j        t          k    sJ t          j        ||                    t                              sJ d S )	NFr   c                     g | ]	}|j         
S r   r   r   s     r   r   z.test_object_arrays_backend.<locals>.<listcomp>  r   r   r   Tc                 B    g | ]}|                     t                    S r   )astypeobjectr&   s     r   r   z.test_object_arrays_backend.<locals>.<listcomp>  s$    777V$$777r   r"   r  )
r   r(   r   dtyper  r   r)   r0   r  float)r   r1   r2   r4   r5   	obj_viewsobj_opts          r   test_object_arrays_backendr	    s0   ''E
6
BE
B
BEE
B
B
BC9##U###Dv<<<<t<<D77777I v<	<<<8<<G=F"""";sGNN51122222 dI0x00G=F"""";sGNN5112222222r   )7rY   r)   r   r   r   r   r   r   r   opt_einsum.contractr	   r
   r   r   
found_cupyImportErrorr!   r+   ConfigProtor-   gpu_optionsallow_growthfound_tensorflowosenvironry   found_theanor   found_torchr   	found_jaxr   found_autogradtestsmarkskipifparametrizer8   rh   rv   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r	  r   r   r   <module>r     sW        R R R R R R R R R R R R R R D D D D D D D D D DKKKJJ   JJJ!!J*.J'   III(-BJ$%MMMLL   LLLLLLKK   KKKJJJII   IIIOOONN   NNN
	 
	 
	 ((1LMM5))  *) NM( ((1LMM1v1v1v&>??+ + @? NM+4 ((1LMM5))" " *) NM". $-DEE5))@ @ *) FE@  $-DEE1v1v1v&>??> > @? FE>0 $-DEE5))" " *) FE"* 
N+@AA5))4 4 *) BA4" 
N+@AA1v1v1v&>??0 0 @? BA04 	M*>??5))	' 	' *) @?	' 	M*>??1v1v1v&>??) ) @? @?)$ 	M*>??  @?, &/HII  JI$ 5)). . *).. 5))2 2 *)2< O,BCC5))5 5 *) DC5$ O,BCC1v1v1v&>??* * @? DC*41 1 1 5))3 3 *)3 3 3se   ) 33!A A#"A#'A< <BB
B BBB& &B0/B04B; ;CC