Ë
    øÿæi+  ã                   ó&  — 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/Volumes/fast/ai/experiments/voice-extract-mac/.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ˆÜ�i‰i×#Ñ#Ó%ˆØ×!Ñ!Ð%QÒQØ Ÿ™Ó)×0Ñ0ˆJß-=Ñ)��h 	Ù˜ZÓ(�Ü�i ×!5Ñ!5°u¸g×>TÑ>TÔUØŸ™¨˜Ó2×9Ñ9¸)ÓD�Ø")×"4Ñ"4°UÓ";�Ù#(¨Ó#9Ð Ø ×)Ñ)Ð*:Ó;�Ø—|‘| yÓ0Ð0Ð0ñ .>ñ	 Fr   )
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Ñ Mr   ú	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ÜˆßBWÐBWÑ>ˆN˜L¨)°YÜ�I˜nÐ-¨V°G×4JÑ4JÐ3KÐLÔMô !?¸~Ó NÐØ$¨Ò4Ð4Ð4ô —Y‘Y×*Ñ*¨1Ó-ˆFÙS\Ó]ÑS\È%˜Ÿ™¨U˜Ó3×:Ñ:¸9ÕEÐS\ˆIÐ]ÙJSÓ"TÉ)À 7×#5Ñ#5°eÕ#<È)ÐÐ"Tó #0�á!Ø . §¡Ð/@Ð 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ò #0ò CXñ ùò ^ùÚ"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ô ˆßBWÐBWÑ>ˆN˜L¨)°YÜ�I˜nÐ-¨_¸W×=SÑ=SÐ<TÐUÔVä >¸~Ó NÐØ$¨Ò4Ð4Ð4ä—Y‘Y×*Ñ*¨1Ó-ˆFÙGPÓQÁy¸8�w×,Ñ,¨XÕ6ÀyˆGÐQÙW`ÓaÑW`È8�v—~‘~¨8�~Ó4×;Ñ;¸IÕFÐW`ˆGÐaä "§	¡	¨,Ð A¸Ò AÐã"/�Ù!Ø+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ò #0ò CXñ ùò 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œ   	  sw  ø€ ô �Y‰Y×"Ñ" 1Ó%€Fô<ô 
�‰Ô*°,Ö	?ÜÙ˜!˜QÓØô	
÷ 
@ô 
�‰Ô*Ð2HÖ	IÜÙ˜!˜QÓØô	
÷ 
Jô 
�‰Ô*Ð2HÖ	IÜÙ˜"˜aÓ Øô	
÷ 
Jô 
�‰Ô*Ð2CÖ	DÜÙ˜!˜QÓØô	
÷ 
Eô 
�‰”{Ð*DÖ	EÜÙ˜!˜QÓØô	
÷ 
Fô 
�‰”zÐ):Ö	;ÜÙ˜!˜Q Ó"Øô	
÷ 
<ô 
�‰”|Ð+;Ö	<ÜÙ˜!ÓØ�H‰H”V×)Ñ)Ó*¨[Ñ8ô	
÷ 
=ô 
�‰”|¨?Ö	;ÜÙ˜!˜QÓØô	
÷ 
<ô 
�‰”zÐ)=Ö	>ÜØÙ˜!˜Q Ó"ô	
÷ 
?ô 
�‰”zÐ)AÖ	BÜØô	
÷ 
Cô 
�‰”zÐ)AÖ	BÜÙ˜!˜QÓô	
÷ 
CÐ	B÷Y 
@Ñ	?ú÷ 
JÑ	Iú÷ 
JÑ	Iú÷ 
EÑ	Dú÷ 
FÑ	Eú÷ 
<Ñ	;ú÷ 
=Ñ	<ú÷ 
<Ñ	;ú÷ 
?Ð	>ú÷ 
CÐ	Bú÷ 
CÐ	Bú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   