Ë
    ÛÍ:j+  ã                   ó&  — d dl Z d dlmZmZ d dlZd dlZd dlmZm	Z	m
Z
 d dlmZ  G d„ d«      Z edddd	d
¬«      ddf edddd	d
¬«      ddf edddd
¬«      ddf edddd
ddd¬«      ddf edddddd¬«      ddfgZg d ¢Zd!„ Zg d"¢Zd#„ Zd$„ Zd%„ Zy)&é    N)ÚAnyÚCallable)ÚEinopsErrorÚ_compactify_pattern_for_einsumÚeinsum)Úcollect_test_backendsc                   ó(   — e Zd Zdedefd„Zdefd„Zy)Ú	ArgumentsÚargsÚkargsc                 ó    — || _         || _        y ©N©r   Úkwargs)Úselfr   r   s      úm/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/einops/tests/test_einsum.pyÚ__init__zArguments.__init__   s   € ØˆŒ	Øˆ�ó    Úfunctionc                 ó:   —  || j                   i | j                  ¤ŽS r   r   )r   r   s     r   Ú__call__zArguments.__call__   s   € Ù˜Ÿ™Ð2 d§k¡kÑ2Ð2r   N)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   © r   r   r
   r
      s!   „ ð˜cð ¨Có ð3 ô 3r   r
   zb c_in h w -> w c_out h bz
c_in c_outé   é   )Ú
bias_shapeÚc_outÚc_in)é   r   é   é   )r#   r   r"   r!   r   zb c_in h w -> w c_in h bÚ )r   r    )r#   r   r"   r!   zb c_in h w -> b c_outzc_in h w c_outr"   r#   é   )r   r    ÚhÚwr   ©r!   r%   zb t head c_in -> b t head c_outzhead c_in c_outé   )r   Úheadr    r   ©r!   r"   r#   r%   )r!   r"   r#   r)   ))zb c h w, b w -> b hzabcd,ad->ac)r+   r(   )r!   r#   )zb c h w, b w, b c -> b hzabcd,ad,ab->ac))r!   r"   é(   r%   r(   ©r!   r"   )r!   r,   )z2... one two three, three four five -> ... two fivez...abc,cde->...be)©é    r%   r!   r"   r#   ©r#   r%   r)   ©r/   r%   r"   r)   )z2one two three ..., three four five -> two five ...zabc...,cde->be...))r!   r"   r#   r/   r%   r0   )r"   r)   r/   r%   )z6... one two three, ... three four five -> ... two fivez...abc,...cde->...be)r.   )r/   r%   r#   r%   r)   r1   )z*first_tensor second_tensor -> first_tensorzab->a))r%   r#   ©r%   )zi i -> zaa->))r%   r%   r   )z% one  two  ,  three four->two  four  z	ab,cd->bd)r-   )r#   r%   )r"   r%   )zi middle i -> middlezaba->b))r%   é
   r%   ©r3   )zi ... i -> ...z
a...a->...©)r%   r"   r!   é   r#   r%   )r"   r!   r6   r#   )zi ... i -> i ...za...a->a...r5   )r%   r"   r!   r6   r#   )zone one one -> onezaaa->a))r%   r%   r%   r2   )zi j k -> j i kzabc->bac))r6   r!   r"   )r!   r6   r"   )z
... -> ...z...->...)©r%   r#   r"   r!   r6   r7   )z..., ..., ... -> ...z...,...,...->...)©r"   r!   r8   r8   r8   )zindex ->za->r4   r   c                  óà  — t        dd¬«      D ]Þ  } t        j                  j                  «       }| j                  dv sŒ0| j                  «       j                  }t        D ]Œ  \  }}} ||«      }t        d|j                  d| j                  «       |j                  |¬«      j                  d«      }| j                  |«      } ||«      }	| j                  |	«      }
|
j                  |k(  rŒŒJ ‚ Œà y )	NTF)ÚlayersÚsymbolic)Ú
tensorflowÚtorchÚoneflowÚpaddleÚRunningÚfor©ÚsizeÚfloat32)r   ÚnpÚrandomÚdefault_rngÚframework_namer:   ÚEinMixÚtest_layer_casesÚprintÚeinsum_patternÚuniformÚastypeÚ
from_numpyÚto_numpyÚshape)ÚbackendÚrngÚ
layer_typer   Úin_shapeÚ	out_shapeÚlayerÚinputÚinput_frameworkÚoutput_frameworkÚoutputs              r   Ú
test_layerr\   ©   sÞ   € Ü(°¸uÔEò 1ˆÜ�i‰i×#Ñ#Ó%ˆØ×!Ñ!Ð%QÒQØ Ÿ™Ó)×0Ñ0ˆJÜ-=ò 1Ñ)��h 	Ù˜ZÓ(�Ü�i ×!5Ñ!5°u¸g×>TÑ>TÔUØŸ™¨˜Ó2×9Ñ9¸)ÓD�Ø")×"4Ñ"4°UÓ";�Ù#(¨Ó#9Ð Ø ×)Ñ)Ð*:Ó;�Ø—|‘| yÓ0Ð0Ð0ñ1ñ	1r   )
r<   r=   ÚjaxÚnumpyr>   Úcupyztensorflow.kerasr?   ÚpytensorÚmlxc            	      óô  — t        d„ t        «       «      } | D �]S  }t        D �]F  \  }}}}t        d|› d|j                  › �«       t        |«      }||k(  sJ ‚t        j                  j                  d«      }|D �cg c]#  }|j                  |¬«      j                  d«      ‘Œ% }	}|	D �
cg c]  }
|j                  |
«      ‘Œ }}
dD ]¡  }|r |j                  |g|¢­Ž }nt        g |¢|‘­Ž }t        |j                  «      |k7  rt        d|› d	|j                  › �«      ‚t        j                  |g|	¢­Ž }|j!                  |«      }t        j"                  j%                  ||d
¬«       Œ£ �ŒI �ŒV y c c}w c c}
w )Nc                 ó&   — | j                   t        v S r   ©rH   Úvalid_backends_functional©Úxs    r   ú<lambda>z!test_functional.<locals>.<lambda>È   s   €  × 0Ñ 0Ô4MÐ M€ r   ú	Running 'z' for r   rB   rD   ©TFúExpected output shape ú	 but got r%   ©Údecimal)Úfilterr   Útest_functional_casesrK   rH   r   rE   rF   ÚRandomStaterM   rN   rO   r   ÚtuplerQ   Ú
ValueErrorrP   ÚtestingÚassert_array_almost_equal)ÚbackendsrR   Úeinops_patternÚtrue_patternÚ	in_shapesrV   Úpredicted_patternÚrstaterQ   Ú	in_arraysÚarrayÚin_arrays_frameworkÚdo_manual_callÚ	out_arrayÚtrue_out_arrayÚpredicted_out_arrays                   r   Útest_functionalrƒ   Æ   s’  € äÑMÔOdÓOfÓg€HØó eˆÜBWó 	eÑ>ˆN˜L¨)°YÜ�I˜nÐ-¨V°G×4JÑ4JÐ3KÐLÔMô !?¸~Ó NÐØ$¨Ò4Ð4Ð4ô —Y‘Y×*Ñ*¨1Ó-ˆFØS\Ö]È%˜Ÿ™¨U˜Ó3×:Ñ:¸9ÕEÐ]ˆIÐ]ØJSÖ"TÀ 7×#5Ñ#5°eÕ#<Ð"TÐÐ"Tð #0ò e�á!Ø . §¡Ð/@Ð WÐCVÒ W‘Iä &Ð LÐ(;Ð L¸^Ò L�Iô ˜Ÿ™Ó)¨YÒ6Ü$Ð'=¸i¸[È	ÐR[×RaÑRaÐQbÐ%cÓdÐdô "$§¡¨<Ð!D¸)Ò!D�Ø&-×&6Ñ&6°yÓ&AÐ#Ü—
‘
×4Ñ4Ð5HÈ.ÐbcÐ4Õdòeò	eñeùò ^ùÚ"Ts   Á;(E0Â)E5c                  ó  — t        d„ t        dd¬«      «      } | D �]^  }t        D �]Q  \  }}}}t        d|› d|j                  › �«       t        |«      }||k(  sJ ‚t        j                  j                  d«      }|D �cg c]  }|j                  |«      ‘Œ }	}|D �cg c]#  }|j                  |¬«      j                  d	«      ‘Œ% }
}t        j                  |g|
¢­Ž }d
D ]–  }|r |j                  |g|	¢­Ž }nt        g |	¢|‘­Ž }|j                  |t        t        |	|
«      «      «      }|j                   |k7  rt#        d|› d|j                   › �«      ‚t        j$                  j'                  ||d¬«       Œ˜ �ŒT �Œa y c c}w c c}w )Nc                 ó&   — | j                   t        v S r   rd   rf   s    r   rh   z*test_functional_symbolic.<locals>.<lambda>ë   s   € �!×"Ñ"Ô&?Ð?€ r   TF)r;   r:   ri   z' for symbolic r   rB   rD   rj   rk   rl   r%   rm   )ro   r   rp   rK   rH   r   rE   rF   rq   Úcreate_symbolrM   rN   r   Úeval_symbolÚlistÚziprQ   rs   rt   ru   )rv   rR   rw   rx   ry   rV   rz   r{   rU   Úin_symsÚin_dataÚexpected_out_datar   Úpredicted_out_symbolÚpredicted_out_datas                  r   Útest_functional_symbolicr�   é   s¤  € ÜÙ?ÔAVÐ`dÐmrÔAsó€Hð ó gˆÜBWó 	gÑ>ˆN˜L¨)°YÜ�I˜nÐ-¨_¸W×=SÑ=SÐ<TÐUÔVä >¸~Ó NÐØ$¨Ò4Ð4Ð4ä—Y‘Y×*Ñ*¨1Ó-ˆFØGPÖQ¸8�w×,Ñ,¨XÕ6ÐQˆGÐQØW`ÖaÈ8�v—~‘~¨8�~Ó4×;Ñ;¸IÕFÐaˆGÐaä "§	¡	¨,Ð A¸Ò AÐà"/ò g�Ù!Ø+9¨7¯>©>Ð:KÐ+VÈgÒ+VÑ(ä+1Ð+K°7Ð+K¸NÒ+KÐ(à%,×%8Ñ%8Ø(Üœ˜W gÓ.Ó/ó&Ð"ð &×+Ñ+¨yÒ8Ü$Ð'=¸i¸[È	ÐRd×RjÑRjÐQkÐ%lÓmÐmÜ—
‘
×4Ñ4Ð5GÐIZÐdeÐ4Õfògò	gñgùò RùÚas   Á>E>Â(Fc            	      óP  ‡— t         j                  j                  d«      Šˆfd„} t        j                  t
        d¬«      5  t         | dd«      d«       d d d «       t        j                  t
        d¬«      5  t         | dd«      d	«       d d d «       t        j                  t
        d¬«      5  t         | d
d«      d«       d d d «       t        j                  t
        d¬«      5  t         | dd«      d«       d d d «       t        j                  t        d¬«      5  t         | dd«      d«       d d d «       t        j                  t        d¬«      5  t         | ddd«      d«       d d d «       t        j                  t        d¬«      5  t         | d«      dj                  t        j                  «      dz   «       d d d «       t        j                  t        d¬«      5  t         | dd«      d«       d d d «       t        j                  t        d¬«      5  t        d | ddd«      «       d d d «       t        j                  t        d¬«      5  t        d«       d d d «       t        j                  t        d¬«      5  t         | dd«      «       d d d «       y # 1 sw Y   �ŒIx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   �Œvx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   y xY w)Nr   c                  óF   •— ‰j                  | ¬«      j                  d«      S )NrB   rD   )rM   rN   )rQ   r{   s    €r   Úcreate_tensorz-test_functional_errors.<locals>.create_tensor  s   ø€ Ø�~‰~ 5ˆ~Ó)×0Ñ0°Ó;Ð;r   z
^Singleton)Úmatchr%   r6   z	i () -> iz^Shape rearrangementza b -> (a b)r3   z(a b) -> a bz^Anonymous axeszi 2 -> iz^Invalid axis identifierz	i 2j -> iz^Einsum patternr"   r!   zi j kz^Too many axesú z	 extra ->z^Unknown axiszi j -> kz^The last argumentz
i j k -> ir#   z^`einops.einsum` takes)rE   rF   rq   ÚpytestÚraisesÚNotImplementedErrorr   r   rs   ÚRuntimeErrorÚjoinÚstringÚascii_letters)r’   r{   s    @r   Útest_functional_errorsrœ   	  s¸  ø€ ô �Y‰Y×"Ñ" 1Ó%€Fô<ô 
�‰Ô*°,Ô	?ñ 
ÜÙ˜!˜QÓØô	
÷
ô 
�‰Ô*Ð2HÔ	Iñ 
ÜÙ˜!˜QÓØô	
÷
ô 
�‰Ô*Ð2HÔ	Iñ 
ÜÙ˜"˜aÓ Øô	
÷
ô 
�‰Ô*Ð2CÔ	Dñ 
ÜÙ˜!˜QÓØô	
÷
ô 
�‰”{Ð*DÔ	Eñ 
ÜÙ˜!˜QÓØô	
÷
ô 
�‰”zÐ):Ô	;ñ 
ÜÙ˜!˜Q Ó"Øô	
÷
ô 
�‰”|Ð+;Ô	<ñ 
ÜÙ˜!ÓØ�H‰H”V×)Ñ)Ó*¨[Ñ8ô	
÷
ô 
�‰”|¨?Ô	;ñ 
ÜÙ˜!˜QÓØô	
÷
ô 
�‰”zÐ)=Ô	>ñ 
ÜØÙ˜!˜Q Ó"ô	
÷
ô 
�‰”zÐ)AÔ	Bñ 
ÜØô	
÷
ô 
�‰”zÐ)AÔ	Bñ 
ÜÙ˜!˜QÓô	
÷
ð 
÷Y
ñ 
ú÷
ñ 
ú÷
ñ 
ú÷
ñ 
ú÷
ñ 
ú÷
ñ 
ú÷
ñ 
ú÷
ñ 
ú÷
ð 
ú÷
ð 
ú÷
ð 
ús„   ÁJÁ8J)Â/J6Ã&KÄKÅKÆ3K*Ç"K7ÈLÉLÊ LÊJ&Ê)J3Ê6K ËKËKËK'Ë*K4Ë7LÌLÌLÌL%)rš   Útypingr   r   r^   rE   r•   Úeinops.einopsr   r   r   Úeinops.testsr   r
   rJ   rp   r\   re   rƒ   r�   rœ   r   r   r   ú<module>r       sÿ   ðÛ ß  ã Û ç MÑ MÝ .÷3ñ 3ñ 	Ð-¨|ÈÐTVÐ]_Ô`ØØðñ 	Ð-¨|ÈÐWYÐ`bÔcØØðñ 	Ð,¨b¸TÈÔKØØðñ 	Ð)Ð+;ÈÐSUÐYZÐ^_ÐghÔiØØðñ 	Ð3Ð5FÐSWÐ^_ÐfgÐopÔqØØðð+Ð ò>sÐ òl1òÐ ò eòFgó@Y
r   