ó
    ±“,jƒ  ã                   ój  • S SK Jr  S SK Jr  SSKJs  Jr  SSKJs  Jr  SSKJ	r	  SSKJ
r
  S SKJr  SSKrSS	KJr  SS
KJr  S rS r\" 5       \l        S r\" 5       \l        S r\S 5       r\R,                  " SS\5        \S 5       r\R,                  " SS\5        S r\R,                  " SS\5        g)é   )Úregistry)ÚBackendé    Né   )Ú_make_iskwarg)Ú_unsupported_op)Úapi)Ú _make_doc_adapt_numpylike_reduce)Ú%_make_doc_adapt_numpylike_elementwisec                  ó²  ^• [         R                  R                  R                  SSS9m[         R                  R
                  R                  TR                  5      [         R                  R
                  R                  TR                  5      [         R                  R
                  R                  TR                  5      [         R                  R
                  R                  TR                  5      [         R                  R                  5       [         R                  R                  5       /n SS KmU4S jnS nU [         R"                  R                  XS.$ )NÚnumpyÚnp)Úas_r   c                 ó0   >• [        U TR                  5      $ ©N)Ú
isinstanceÚndarray)Útensorr   s    €Ú«C:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\einx/_src/frontend/impl/numpy.pyÚis_supported_tensorÚ0_get_backend_kwargs.<locals>.is_supported_tensor   s   ø€ Ü˜& "§*¡*Ó-Ð-ó    c                 ó:   • [        S U R                   5       5      $ )Nc              3   ó8   #   • U  H  n[        U5      v •  M     g 7fr   )Úint)Ú.0Úxs     r   Ú	<genexpr>Ú9_get_backend_kwargs.<locals>.get_shape.<locals>.<genexpr>   s   é € Ð2¢\ ”S˜—V�V¢\ùs   ‚)ÚtupleÚshape)r   s    r   Ú	get_shapeÚ&_get_backend_kwargs.<locals>.get_shape   s   € ÜÑ2 V§\¢\Ó2Ó2Ð2r   )ÚoptimizationsÚcompilerr   r"   )ÚtracerÚ	signatureÚpythonÚimport_Ú	optimizerÚ	classicalÚSkipReshapeÚreshapeÚSkipTransposeÚ	transposeÚSkipBroadcastToÚbroadcast_toÚSkipConcatenateÚconcatenateÚInlineGraphÚSkipCastr   r%   )r$   r   r"   r   s      @r   Ú_get_backend_kwargsr6      sö   ø€ Ü	×	Ñ	×	 Ñ	 ×	(Ñ	(¨°dÐ	(Ð	;€Bä×Ñ×"Ñ"×.Ñ.¨r¯z©zÓ:Ü×Ñ×"Ñ"×0Ñ0°·±Ó>Ü×Ñ×"Ñ"×2Ñ2°2·?±?ÓCÜ×Ñ×"Ñ"×2Ñ2°2·>±>ÓBÜ×Ñ×$Ñ$Ó&Ü×Ñ×!Ñ!Ó#ð€Mó õ.ò3ð +¼¿¹×8NÑ8NÐgzñ  Tð  Tr   c           	      óL  • [        U 5      4S jn[        R                  R                  5       n[        R
                  R                  U5      n[        R                  R                  R                  U 5      n [        R                  R                  XR                  S9n [        R                  R                  X5      n [        R                  R                  XR                  S9n [        R                  R                  XS9n [!        U ["        R$                  " S0 ['        5       D6S9$ )Nc                 ó*   • U S:g  =(       a    U" U 5      $ )NÚaxis© )ÚnameÚiskwargs     r   Ú<lambda>Ú(adapt_numpylike_reduce.<locals>.<lambda>$   s   € °d¸f±n×6VÉÐQUËÐ6Vr   ©Úexpected_type©r<   ©Úbackendr:   )r   r&   r'   r   ÚadapterÚclassical_from_numpyÚopsr(   ÚconstantÚ$decomposednamedtensor_from_classicalÚreducer   Ú&namedtensor_from_decomposednamedtensorÚopÚnamedtensor_calltensorfactoryÚeinx_from_namedtensorr	   ÚtypesÚSimpleNamespacer6   ©rK   r<   r   r+   s       r   Úadapt_numpylike_reducerQ   #   sÝ   € Ü#0°Ó#4ÓV€GÜ	×	Ñ	×	Ñ	Ó	!€Bä×,Ñ,×0Ñ0°Ó4€Iä	×	Ñ	×	 Ñ	 ×	)Ñ	)¨"Ó	-€BÜ	×	5Ñ	5×	<Ñ	<¸RÏzÉzÐ	<Ð	Z€BÜ	×	7Ñ	7×	:Ñ	:¸2Ó	I€BÜ	×	.Ñ	.×	1Ñ	1°"ÇJÁJÐ	1Ð	O€BÜ	×	&Ñ	&×	-Ñ	-¨bÐ	-Ð	B€Bäˆrœ5×0Ò0ÑIÔ3FÓ3HÑIÑJÐJr   c           	      óF  • [        U 5      n[        R                  R                  5       n[        R
                  R                  U5      n[        R                  R                  R                  U 5      n [        R                  R                  XUR                  S9n [        R                  R                  X5      n [        R                  R                  XR                  S9n [        R                  R                  XS9n [!        U ["        R$                  " S0 ['        5       D6S9$ )Nr?   rA   rB   r:   )r   r&   r'   r   rD   rE   rF   r(   rG   rH   Úelementwiser   rJ   rK   rL   rM   r	   rN   rO   r6   rP   s       r   Úadapt_numpylike_elementwiserT   5   sß   € Ü˜BÓ€GÜ	×	Ñ	×	Ñ	Ó	!€Bä×,Ñ,×0Ñ0°Ó4€Iä	×	Ñ	×	 Ñ	 ×	)Ñ	)¨"Ó	-€BÜ	×	5Ñ	5×	AÑ	AÀ"Ð_a×_iÑ_iÐ	AÐ	j€BÜ	×	7Ñ	7×	:Ñ	:¸2Ó	I€BÜ	×	.Ñ	.×	1Ñ	1°"ÇJÁJÐ	1Ð	O€BÜ	×	&Ñ	&×	2Ñ	2°2Ð	2Ð	G€Bäˆrœ5×0Ò0ÑIÔ3FÓ3HÑIÑJÐJr   c                 ó   ^ • U 4S jnU$ )Nc                  óˆ  >• [         R                  R                  5       n [        R                  R                  U 5      nT" X5      u  p#[        R                  R                  X!5      n[        R                  R                  X@R                  S9n[        R                  R                  U5      n[        SXSSS.[        5       D6$ )Nr?   éûÿÿÿ©rF   r;   Úpriorityr:   )r&   r'   r   rD   rE   rF   rJ   rL   r   rM   r   r6   )r   r+   Údecomposednamedtensor_opsr;   Únamedtensor_opsÚeinx_opsÚcreates         €r   Ú
new_createÚ$_backend_creator.<locals>.new_createH   s    ø€ Ü× Ñ ×&Ñ&Ó(ˆÜ×0Ñ0×4Ñ4°UÓ;ˆ	á*0°Ó*BÑ'Ð!ä!×HÑH×LÑLÐMfÓrˆÜ!×?Ñ?×CÑCÀO×cpÑcpÐCÐqˆÜ×0Ñ0×4Ñ4°_ÓEˆäÐU˜8¸ÑUÔ?RÓ?TÑUÐUr   r:   )r]   r^   s   ` r   Ú_backend_creatorr`   G   s   ø€ õ
Vð Ðr   c                 óô  • [         R                  R                   Vs0 s H,  o"[         R                  R                  [	        X5      U5      _M.     sn[         R                  R
                   Vs0 s H+  o"[         R                  R                  [	        X5      5      _M-     sn-  [         R                  R                   Vs0 s H+  o"[         R                  R                  [	        X5      5      _M-     sn-  [         R                  R                   Vs0 s H,  o"[         R                  R                  [	        X5      U5      _M.     sn-  [         R                  R                   Vs0 s H,  o"[         R                  R                  [	        X5      U5      _M.     sn-  [         R                  R                  U5      [         R                  R                  U5      S.-  nUS4$ s  snf s  snf s  snf s  snf s  snf )N)Úget_atÚdotúnumpy.numpylike)rD   rF   rS   rH   ÚgetattrrI   Úpreserve_shapeÚargfindÚ	update_atÚupdate_at_ravelledÚget_at_ravelledrc   )r   r+   r;   rZ   s       r   Úcreate_backend_numpylikerk   W   s(  € ô zA÷  zEñ  zE÷  zQò  zQó  	Rò  zQÐquŒw×;Ñ;×GÑGÌÐPYÓH`ÐbkÓlÒ	lñ  zQñ  	RÜkr×kvÑkv×k}Òk}Ó
~Òk}Ðcg”×=Ñ=×DÑDÄWÈYÓE]Ó^Ò^Ñk}Ñ
~ñ	äsz×s~Ñs~÷  tNò  tNó  Oò  tNÐko”×=Ñ=×LÑLÌWÐU^ÓMeÓfÒfñ  tNñ  Oñ	Oô x÷  xCñ  xC÷  xKò  xKó  Lò  xKÐos”×=Ñ=×EÑEÄgÈiÓF^Ð`iÓjÒjñ  xKñ  Lñ	Lô CJ÷  CNñ  CN÷  CXò  CXó  Yò  CXÐz~”×=Ñ=×PÑPÔQXÐYbÓQiÐktÓuÒuñ  CXñ  Yñ		Yô ×BÑB×RÑRÐS\Ó]Ü×?Ñ?×CÑCÀIÓNñ
ñ	
ð ð %Ð&7Ð7Ð7ùò 	RùÚ
~ùò Oùò Lùò Ys   �3G!Á.2G&Ã 2G+Ä3G0Å%3G5r   rd   c                 ó,  • [         R                  " U 5      n[         R                  R                  U5      [         R                  R	                  U5      [         R                  R                  U5      [         R                  R                  U5      S.nUS4$ )N)ÚidÚsumÚmultiplyrc   únumpy.einsum)rD   Úeinsum_from_numpyÚ!decomposednamedtensor_from_einsumrm   rn   ro   rc   )r   r+   ÚeinsumrZ   s       r   Úcreate_backend_einsumrt   k   sy   € ä×&Ò& uÓ-€Fô ×7Ñ7×:Ñ:¸6ÓBÜ×8Ñ8×<Ñ<¸VÓDÜ×=Ñ=×FÑFÀvÓNÜ×8Ñ8×<Ñ<¸VÓDñ	!Ðð % nÐ4Ð4r   rp   c                  ó”   • [        5       R                  n [        5       R                  nU SUS   0-  n[        SUSSS.[	        5       D6$ )Nrc   r   éÿÿÿÿrX   r:   )rk   rF   rt   r   r6   )Úeinx_ops_numpylikeÚeinx_ops_einsumr\   s      r   Úcreate_backendry   |   sN   € Ü1Ó3×7Ñ7ÐÜ+Ó-×1Ñ1€OØ! U¨O¸EÑ,BÐ$CÑC€HäÐT�x g¸ÑTÔ>QÓ>SÑTÐTr   )rC   r   r   Úeinx._src.adapterÚ_srcrD   Úeinx._src.tracerr&   Ú_utilr   r   r	   rN   Ú_docsr
   r   r6   rQ   Ú__doc__rT   r`   rk   Úregister_on_importrt   ry   r:   r   r   Ú<module>r�      sË   ðÝ Ý ß #Ð #ß !Ð !Ý  Ý "Ý Û Ý 3Ý 8òTò,Kñ "BÓ!CÐ Ô òKñ 'LÓ&MÐ Ô #òð  ñ8ó ð8ð  	× Ò ˜GÐ%6Ð8PÔ Qð ñ
5ó ð
5ð 	× Ò ˜G ^Ð5JÔ KòUð 	× Ò ˜G W¨nÕ =r   