ó
    ±“,j0  ã                   óÊ   • S SK r S SKrS SKrS SKrS SKJr  S SKJr  S SKJr  S SKrS SK	r
 " S S5      r " S S5      r " S	 S
5      r " S S5      r " S S5      r\" 5       rg)é    N)ÚImportBackendError)ÚOperationNotSupportedError)ÚBackendResolutionErrorc                   óH   • \ rS rSrSS jrS rS rS rS rS r	S r
S	 rS
rg)ÚInvalidBackendé   c                 ó(   • Xl         X l        X0l        g ©N)ÚnameÚmessageÚpriority)Úselfr   r   r   s       Ú¨C:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\einx/_src/frontend/backend.pyÚ__init__ÚInvalidBackend.__init__   s   € ØŒ	ØŒØ �ó    c                 ó   • g)NF© )r   Útensors     r   Úis_supported_tensorÚ"InvalidBackend.is_supported_tensor   s   € Ør   c                 ó,   • [        U R                  5      er
   ©r   r   )r   r   s     r   Ú__getattr__ÚInvalidBackend.__getattr__   ó   € Ü  §¡Ó.Ð.r   c                 ó,   • [        U R                  5      er
   r   ©r   s    r   Úraise_on_import_failureÚ&InvalidBackend.raise_on_import_failure   r   r   c                 ó   • [        U 5      $ r
   ©Úidr   s    r   Ú__hash__ÚInvalidBackend.__hash__   ó   € Ü�$‹xˆr   c                 ó   • XL $ r
   r   ©r   Úothers     r   Ú__eq__ÚInvalidBackend.__eq__   ó
   € Øˆ}Ðr   c                 ó@   • [        U [        5      R                  5         g r
   ©ÚUseÚregistryÚ	__enter__r   s    r   r1   ÚInvalidBackend.__enter__!   ó   € ÜˆD”(Ó×%Ñ%Õ'r   c                 ó>   • [        U [        5      R                  " U6   g r
   ©r/   r0   Ú__exit__©r   Úargss     r   r6   ÚInvalidBackend.__exit__$   ó   € ÜˆD”(Ó×$Ò$ dÒ+r   )r   r   r   N)r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r   r   r   r$   r*   r1   r6   Ú__static_attributes__r   r   r   r   r      s*   † ô!ò
ò/ò/òòò(õ,r   r   c                   ó>   • \ rS rSrS rS rS rS rS rS r	S r
S	rg
)ÚBackendé(   c                 óX   • Xl         X l        X0l        X@l        XPl        X`l        Xpl        g r
   )Úopsr   r   ÚoptimizationsÚcompilerr   Ú	get_shape)r   rD   r   r   rE   rF   r   rG   s           r   r   ÚBackend.__init__)   s'   € ØŒØŒ	Ø ŒØ*ÔØ ŒØ#6Ô Ø"�r   c                 óœ   ^ ^• UU 4S jnTT R                   ;   a+  [        R                  " T R                   T   5      " U5      nU$ TUl        U$ )Nc                  ó„   >• TTR                   ;  a  [        T STR                   S35      eTR                   T   " U 0 UD6$ )Nz# operation is not supported by the z	 backend.)rD   r   r   )r8   Úkwargsr   r   s     €€r   ÚopÚBackend.__getattr__.<locals>.op3   sI   ø€ Ø˜4Ÿ8™8Ó#Ü0°D°6Ð9\Ð]a×]fÑ]fÐ\gÐgpÐ1qÓrÐrØ—8‘8˜D’> 4Ð2¨6Ñ2Ð2r   )rD   Ú	functoolsÚwrapsr;   )r   r   rL   s   `` r   r   ÚBackend.__getattr__2   sF   ù€ ö	3ð
 �4—8‘8ÓÜ—’ §¡¨$¡Ô0°Ó4ˆBð ˆ	ð ˆBŒKàˆ	r   c                 ó   • g r
   r   r   s    r   r   ÚBackend.raise_on_import_failure?   s   € Ør   c                 ó   • [        U 5      $ r
   r"   r   s    r   r$   ÚBackend.__hash__B   r&   r   c                 ó   • XL $ r
   r   r(   s     r   r*   ÚBackend.__eq__E   r,   r   c                 ó@   • [        U [        5      R                  5         g r
   r.   r   s    r   r1   ÚBackend.__enter__H   r3   r   c                 ó>   • [        U [        5      R                  " U6   g r
   r5   r7   s     r   r6   ÚBackend.__exit__K   r:   r   )rF   rG   r   r   rD   rE   r   N)r;   r<   r=   r>   r   r   r   r$   r*   r1   r6   r?   r   r   r   rA   rA   (   s%   † ò#òòòòò(õ,r   rA   c                   ó&   • \ rS rSrS rS rS rSrg)r/   éO   c                 ó   • Xl         X l        g r
   ©Úbackendr0   )r   r_   r0   s      r   r   ÚUse.__init__P   s   € ØŒØ �r   c                 óN   • U R                   R                  U R                  5        g r
   )r0   Úenterr_   r   s    r   r1   ÚUse.__enter__T   s   € Ø�‰×Ñ˜DŸL™LÕ)r   c                 óN   • U R                   R                  U R                  5        g r
   )r0   Úexitr_   )r   Úexc_typeÚ	exc_valueÚ	tracebacks       r   r6   ÚUse.__exit__W   s   € Ø�‰×Ñ˜4Ÿ<™<Õ(r   r^   N)r;   r<   r=   r>   r   r1   r6   r?   r   r   r   r/   r/   O   s   † ò!ò*õ)r   r/   c                   ó”   • \ rS rSrSS jrS rS rS rS rS r	SS	 jr
SS
 jrSS jrS rS rS rS rS rS rSS jrS rS rSrg)ÚBackendRegistryStateé[   Nc                 ó,  • [        5       U l        0 U l        / U l        0 U l        0 U l        / U l        Ubß  U R                  R                  UR                  5        U R                  R                  UR                  5        U R                  R                  UR                  5        U R                  R                  UR                  5        U R
                  R                  UR
                  5        U R                  R                  UR                  5        g g r
   )	ÚsetÚseen_module_namesÚuninitialized_backendsÚbackendsÚtensortypes_to_backendÚname_to_backendÚ	use_stackÚupdateÚextend)r   Ústates     r   r   ÚBackendRegistryState.__init__\   sÑ   € Ü!$£ˆÔØ&(ˆÔ#ØˆŒØ&(ˆÔ#Ø!ˆÔØˆŒØÑØ×"Ñ"×)Ñ)¨%×*AÑ*AÔBØ×'Ñ'×.Ñ.¨u×/KÑ/KÔLØ�M‰M× Ñ  §¡Ô0Ø×'Ñ'×.Ñ.¨u×/KÑ/KÔLØ× Ñ ×'Ñ'¨×(=Ñ(=Ô>Ø�N‰N×!Ñ! %§/¡/Õ2ð r   c                 óú   • U R                    Vs/ s H  n[        U[        5      (       d  M  UPM     nn[        U5      S:”  a1  SnU H'  nUSUR                   S3-  nX1R
                   S3-  nM)     U$ SnU$ s  snf )Nr   z3

The following backends could not be initialized:
z
############################ z ############################
Ú
Ú )rq   Ú
isinstancer   Úlenr   r   )r   r_   Úinvalid_backendsr   s       r   Ú_invalid_backend_reasonsÚ-BackendRegistryState._invalid_backend_reasonsk   sˆ   € Ø37·=²=Óh²=¨ÄJÈwÔXf×DgŸG±=ÐÐhÜÐÓ  1Ó$ØNˆGÛ+�ØÐ<¸W¿\¹\¸NÐJiÐjÑj�ØŸo™oÐ.¨bÐ1Ñ1’ñ ,ð
 ˆð ˆGØˆùò is
   �A8¬A8c                 ó¦   •  U" 5       nU R	                  U5        g ! [          a+    [        USU SU S[        R                  " 5        35      n NFf = f)NzFailed to import backend "z" for module "z" due to the following error:
)Ú	Exceptionr   rh   Ú
format_excÚ	_register)r   Úmodule_nameÚbackend_nameÚbackend_factoryr_   s        r   Ú_run_factoryÚ!BackendRegistryState._run_factoryv   sz   € ð	Ù%Ó'ˆGð
 	�‰�wÕøô	 ó 	Ü$ØÐ :¸<¸.ÈÐWbÐVcð  dCô  DM÷  DXò  DXó  DZð  C[ð  \óŠGð	ús   ‚ ›2AÁAc                 ó¸   • [        U[        [        -  5      (       d  [        S5      eU R                  R                  U5        XR                  UR                  '   g )Nz9Backend must be an instance of Backend or InvalidBackend.)r|   rA   r   Ú
ValueErrorrq   Úappendrs   r   ©r   r_   s     r   r„   ÚBackendRegistryState._register   sD   € Ü˜'¤7¬^Ñ#;×<Ñ<ÜÐXÓYÐYà�‰×Ñ˜WÔ%Ø-4×Ñ˜WŸ\™\Ò*r   c                 óÌ   • U[         R                  ;   a  U R                  XU5        g XR                  ;  a  / U R                  U'   U R                  U   R	                  X#45        g r
   )ÚsysÚmodulesrˆ   rp   rŒ   ©r   r…   r†   r‡   s       r   Ú_register_on_importÚ(BackendRegistryState._register_on_import†   sX   € Øœ#Ÿ+™+Ó%à×Ñ˜k¸ÕIð ×"=Ñ"=Ó=Ø;=�×+Ñ+¨KÑ8Ø×'Ñ'¨Ñ4×;Ñ;¸\Ð<[Õ\r   c                 ó¾  ^ • US   (       a  gSUS'   [        U 4S j[        R                   5       5      (       aŸ  [        R                   Vs/ s H  o"T R                  ;  d  M  UPM     nnU Hg  nT R                  R	                  U5        UT R
                  ;   d  M0  T R
                  U    H  u  pVT R                  XEU5        M     T R
                  U	 Mi     ggs  snf )Nr   FTc              3   ó@   >#   • U  H  oTR                   ;  v •  M     g 7fr
   )ro   )Ú.0r…   r   s     €r   Ú	<genexpr>Ú:BackendRegistryState._check_new_imports.<locals>.<genexpr>•   s   øé € ÐXÊK¸[ $×"8Ñ"8Ö8ÊKùs   ƒ)Úanyr�   r‘   ro   Úaddrp   rˆ   )r   Úhas_checkedr…   Únew_module_namesÚnew_module_namer†   r‡   s   `      r   Ú_check_new_importsÚ'BackendRegistryState._check_new_imports�   sÂ   ø€ Ø�q�>ØØˆ�A‰äÔXÌCÏKÊKÓX×XÑXÜ?B¿{º{Óxº{°Ðae×awÑawÑNw§¹{ÐÐxã#3�Ø×&Ñ&×*Ñ*¨?Ô;Ø" d×&AÑ&AÕAØ9=×9TÑ9TÐUdÔ9eÑ5˜Ø×)Ñ)¨/ÈÖYñ :fà×3Ñ3°OÒDñ $4ð àùò  ys   ÁCÁ#Cc                 ó  ^ ^^• [        S U 5       5      nUT R                  ;   a  T R                  U   /$ Tc  S/mUUU 4S jm[        5       nU H  nUR                  T" U5      5        M     [	        U5      n[        S U 5       5      (       a  T R                  S5      /n[        U5      S:”  a5  [        S U 5       5      nU Vs/ s H  owR                  U:X  d  M  UPM     nn[        U5      S:X  a  US   T R                  U'   U$ s  snf )	Nc              3   ó8   #   • U  H  n[        U5      v •  M     g 7fr
   )Útype©r—   r   s     r   r˜   Ú7BackendRegistryState._get_by_tensors.<locals>.<genexpr>¤   s   é € Ð?²w¨VœD ŸL˜L²wùó   ‚Fc                 óÚ   >• TR                    Vs/ s H  oR                  U 5      (       d  M  UPM     nn[        U5      S:”  a  U$ TR                  T5      nU(       a  T" U 5      $ / $ s  snf )Nr   )rq   r   r}   rŸ   )r   r_   rq   ÚchangedÚ_get_by_tensorÚhas_checked_new_importsr   s       €€€r   r©   Ú<BackendRegistryState._get_by_tensors.<locals>._get_by_tensor«   sd   ø€ à/3¯}ª}Ódª} G×@[Ñ@[Ð\b×@cŸ©}ˆHÐdä�8‹}˜qÓ Ø�ð ×1Ñ1Ð2IÓJ�ÞÙ)¨&Ó1Ð1Ø�	ùò es
   �A(­A(c              3   óÄ   #   • U  HV  n[        U[        [        -  [        -  [        R
                  -  [        R                  -  [        R                  -  5      v •  MX     g 7fr
   )r|   ÚfloatÚintÚboolÚnpÚfloatingÚintegerÚbool_r¤   s     r   r˜   r¥   ½   sD   é € ÐrÒjqÐ`fŒz˜&¤%¬#¡+´Ñ"4´r·{±{Ñ"BÄRÇZÁZÑ"OÔRT×RZÑRZÑ"Z×[Ð[Òjqùs   ‚AA Únumpyé   c              3   ó8   #   • U  H  oR                   v •  M     g 7fr
   )r   )r—   r_   s     r   r˜   r¥   Â   s   é € ÐHºx°G×/Ö/ºxùr¦   r   )
Útuplerr   rn   ru   ÚlistÚallÚ_get_by_namer}   Úmaxr   )	r   Útensorsrª   Útensortypesrq   r   Úmax_priorityr_   r©   s	   ` `     @r   Ú_get_by_tensorsÚ$BackendRegistryState._get_by_tensors£   s  ú€ ÜÑ?±wÓ?Ó?ˆØ˜$×5Ñ5Ó5Ø×/Ñ/°Ñ<Ð=Ð=à"Ñ*Ø', gÐ#÷	ô “5ˆÛˆFØ�O‰O™N¨6Ó2Ö3ñ ä˜“>ˆäÑrÑjqÓr×rÑrØ×)Ñ)¨'Ó2Ð3ˆHô ˆx‹=˜1ÓÜÑH¹xÓHÓHˆLÙ/7Ó\ªx G×;KÑ;KÈ|Ñ;[Ÿ©xˆHÐ\ô ˆx‹=˜AÓØ7?À±{ˆD×'Ñ'¨Ñ4àˆùò ]s   ÃD	ÃD	c           	      ó4  • XR                   ;  ao  Uc  S/nU R                  U5      nU(       a  XR                   ;  aB  [        SU S[        U R                   R	                  5       5       U R                  5        35      eU R                   R                  U5      $ )NFzBackend with name z/ not found. Currently registered backends are: )rs   rŸ   r‹   r¸   Úkeysr   Úget)r   r   rª   r¨   s       r   rº   Ú!BackendRegistryState._get_by_nameË   s™   € Ø×+Ñ+Ó+Ø&Ñ.Ø+0¨'Ð'Ø×-Ñ-Ð.EÓFˆGÞ˜d×*>Ñ*>Ó>Ü Ø(¨¨Ð.]Ü˜D×0Ñ0×5Ñ5Ó7Ó8Ð9¸$×:WÑ:WÓ:YÐ9Zð\óð ð ×#Ñ#×'Ñ'¨Ó-Ð-r   c                 óž  • Uc  / n[        U[        [        -  5      (       a  U$ Uc  S/n[        U[        5      (       a  U R	                  X5      $ [        U R                  5      S:”  a  U R                  S   $ Ub  [        S5      eU R                  X#5      n[        U5      S:X  a  US   $ [        U5      S:”  a7  [        SSR                  U Vs/ s H  oR                  PM     sn5       35      eSSR                  U Vs/ s H  n[        [        U5      5      PM     sn5       3nX`R                  5       -  n[        U5      es  snf s  snf )	NFr   éÿÿÿÿz=Backend must be either a Backend instance, a string, or None.rµ   a  Failed to determine which backend to use for this operation:
 - The 'backend' parameter is not specified.
 - No global default backend is specified using 'with backend:'.
 - Multiple registered backends with same priority match the tensor types of the arguments: z, zîFailed to determine which backend to use for this operation:
 - The 'backend' parameter is not specified.
 - No global default backend is specified using 'with backend:'.
 - No registered backends match the tensor types of the arguments: )r|   rA   r   Ústrrº   r}   rt   r‹   r¿   r   Újoinr   r£   r   )r   r_   r¼   rª   rq   Útr   s          r   Ú_getÚBackendRegistryState._get×   sq  € Ø‰?ØˆGô �gœw¬Ñ7×8Ñ8ØˆNà"Ñ*Ø', gÐ#ô �gœs×#Ñ#Ø×$Ñ$ WÓFÐFô ˆt�~‰~Ó Ó"Ø—>‘> "Ñ%Ð%ð ÑÜÐ\Ó]Ð]ð ×'Ñ'¨ÓIˆÜˆx‹=˜AÓØ˜A‘;ÐÜ�‹]˜QÓÜ(ðoð —9‘9¹(ÓCº(¨wŸlœl¹(ÑCÓDÐEð	Góð ðVð W[×V_ÑV_Ñw~Ó`Òw~ÐrsÔadÔeiÐjkÓelÖamÑw~Ñ`ó  WAð  VBðCð ð ×4Ñ4Ó6Ñ6ˆGä(¨Ó1Ð1ùò Dùò a@s   ÃEÄE

c                 ó:   • U R                   R                  U5        g r
   )rt   rŒ   r�   s     r   Ú_enterÚBackendRegistryState._enter  s   € Ø�‰×Ñ˜gÕ&r   c                 ó†   • [        U R                  S   5      [        U5      :X  d   eU R                  R                  5         g )NrÆ   )r#   rt   Úpopr�   s     r   Ú_exitÚBackendRegistryState._exit  s2   € Ü�$—.‘. Ñ$Ó%¬¨G«Ó4Ð4Ð4Ø�‰×ÑÕr   c                 ó>   • [        U 5      nUR                  U5        U$ r
   )rk   r„   ©r   r_   Ú	new_states      r   ÚregisterÚBackendRegistryState.register  s    € Ü(¨Ó.ˆ	Ø×Ñ˜GÔ$ØÐr   c                 ó@   • [        U 5      nUR                  XU5        U$ r
   )rk   r“   )r   r…   r†   r‡   rÕ   s        r   Úregister_on_importÚ'BackendRegistryState.register_on_import  s"   € Ü(¨Ó.ˆ	Ø×%Ñ% kÀÔQØÐr   c                 ó@   • [        U 5      nUR                  U5      nX#4$ r
   )rk   r¿   )r   r¼   rÕ   rq   s       r   Úget_by_tensorsÚ#BackendRegistryState.get_by_tensors  s%   € Ü(¨Ó.ˆ	Ø×,Ñ,¨WÓ5ˆØÐ"Ð"r   c                 ó@   • [        U 5      nUR                  U5      nX#4$ r
   )rk   rº   )r   r   rÕ   r_   s       r   Úget_by_nameÚ BackendRegistryState.get_by_name  s%   € Ü(¨Ó.ˆ	Ø×(Ñ(¨Ó.ˆØÐ!Ð!r   c                 ó@   • [        U 5      nUR                  X5      nX14$ r
   )rk   rÊ   )r   r_   r¼   rÕ   s       r   rÃ   ÚBackendRegistryState.get   s#   € Ü(¨Ó.ˆ	Ø—.‘. Ó2ˆØÐ!Ð!r   c                 ó>   • [        U 5      nUR                  U5        U$ r
   )rk   rÍ   rÔ   s      r   rb   ÚBackendRegistryState.enter%  s    € Ü(¨Ó.ˆ	Ø×Ñ˜Ô!ØÐr   c                 ó>   • [        U 5      nUR                  U5        U$ r
   )rk   rÑ   rÔ   s      r   re   ÚBackendRegistryState.exit*  s   € Ü(¨Ó.ˆ	Ø�‰˜Ô ØÐr   )rq   rs   ro   rr   rp   rt   r
   )NNN©NN)r;   r<   r=   r>   r   r   rˆ   r„   r“   rŸ   r¿   rº   rÊ   rÍ   rÑ   rÖ   rÙ   rÜ   rß   rÃ   rb   re   r?   r   r   r   rk   rk   [   s_   † ô3ò	ò ò5ò]òô&&ôP
.ô,2ò\'òòò
ò
#ò
"ô
"ò
õ
r   rk   c                   óH   • \ rS rSrS rS rS rS rS rSS jr	S	 r
S
 rSrg)ÚBackendRegistryi0  c                 óV   • [        5       U l        [        R                  " 5       U l        g r
   )rk   rw   Ú	threadingÚLockÚuse_lockr   s    r   r   ÚBackendRegistry.__init__1  s   € Ü)Ó+ˆŒ
Ü!ŸšÓ(ˆ�r   c                 óD   • U R                   R                  U5      U l         g r
   )rw   rÖ   r�   s     r   rÖ   ÚBackendRegistry.register5  s   € Ø—Z‘Z×(Ñ(¨Ó1ˆ�
r   c                 óF   • U R                   R                  XU5      U l         g r
   )rw   rÙ   r’   s       r   rÙ   Ú"BackendRegistry.register_on_import8  s   € Ø—Z‘Z×2Ñ2°;ÈoÓ^ˆ�
r   c                 óL   • U R                   R                  U5      u  U l         nU$ r
   )rw   rÜ   )r   r   rq   s      r   rÜ   ÚBackendRegistry.get_by_tensors;  s"   € Ø#Ÿz™z×8Ñ8¸Ó@ÑˆŒ
�HØˆr   c                 óL   • U R                   R                  U5      u  U l         nU$ r
   )rw   rß   )r   r   r_   s      r   rß   ÚBackendRegistry.get_by_name?  s"   € Ø"Ÿj™j×4Ñ4°TÓ:ÑˆŒ
�GØˆr   Nc                 óL   • U R                   R                  X5      u  U l         nU$ r
   )rw   rÃ   )r   r_   r¼   s      r   rÃ   ÚBackendRegistry.getC  s    € Ø"Ÿj™jŸn™n¨WÓ>ÑˆŒ
�GØˆr   c                 ó�   • U R                      U R                  R                  U5      U l        S S S 5        g ! , (       d  f       g = fr
   )rí   rw   rb   r�   s     r   rb   ÚBackendRegistry.enterG  s)   € Ø�]‹]ØŸ™×)Ñ)¨'Ó2ˆDŒJ÷ �]Ž]úó	   �!7·
Ac                 ó�   • U R                      U R                  R                  U5      U l        S S S 5        g ! , (       d  f       g = fr
   )rí   rw   re   r�   s     r   re   ÚBackendRegistry.exitK  s'   € Ø�]‹]ØŸ™Ÿ™¨Ó1ˆDŒJ÷ �]Ž]úrû   )rw   rí   rç   )r;   r<   r=   r>   r   rÖ   rÙ   rÜ   rß   rÃ   rb   re   r?   r   r   r   ré   ré   0  s+   † ò)ò2ò_òòôò3õ2r   ré   )r�   rh   Útypesrë   Úeinx._src.frontend.errorsr   r   r   rN   r´   r°   r   rA   r/   rk   ré   r0   r   r   r   Ú<module>r      sa   ðÛ 
Û Û Û Ý 8Ý @Ý <Û Û ÷,ñ ,÷8$,ñ $,÷N	)ñ 	)÷Rñ R÷j2ñ 2ñ@ Ó�r   