Ë
    ÃÓ^j1  ã                  óæ  — d dl mZ d dlZd dlmZmZ d dlmZ d dlm	Z	m
Z
 d dlZd dlmc mZ d dlmZmZmZmZmZmZmZmZmZ d dlmZ e
rd dlmZ 	  G d	„ d
e«      Zej>                  dd„«       Z ej>                  dd„«       Z!ej>                  	 	 	 	 dd„«       Z" G d„ de«      Z#ej>                  	 	 	 	 dd„«       Z$ G d„ de«      Z% G d„ de«      Z& G d„ de«      Z'd d„Z(d!d„Z)d"d„Z*d#d„Z+d$d„Z,y)%é    )ÚannotationsN)ÚABCÚabstractmethod)Úcached_property)ÚAnyÚTYPE_CHECKING)	ÚCFunctionalizeInterpreterPtrÚCGradInterpreterPtrÚCInterpreterÚCJvpInterpreterPtrÚCVmapInterpreterPtrÚpop_dynamic_layer_stackÚpush_dynamic_layer_stackÚRandomnessTypeÚTransformType)Ú_set_fwd_grad_enabled)Ú	Generatorc                  óV   — e Zd Zd
d„Zedd„«       Zdd„Zdd„Zdd„Zdd„Z	dd„Z
dd„Zy	)ÚFuncTorchInterpreterc                ó   — || _         y ©N)Ú_cptr)ÚselfÚcptrs     úg/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/torch/_functorch/pyfunctorch.pyÚ__init__zFuncTorchInterpreter.__init__=   s	   € Øˆ�
ó    c                 ó   — y r   © )r   ÚopÚargsÚkwargss       r   ÚprocesszFuncTorchInterpreter.processB   s   € àr   c                ó   — t        «       S r   )Ú!temporarily_pop_interpreter_stack©r   s    r   ÚlowerzFuncTorchInterpreter.lowerI   s   € Ü0Ó2Ð2r   c                ó6   — | j                   j                  «       S r   )r   Úlevelr&   s    r   r)   zFuncTorchInterpreter.levelL   s   € Ø�z‰z×ÑÓ!Ð!r   c                ó6   — | j                   j                  «       S r   )r   Úkeyr&   s    r   r+   zFuncTorchInterpreter.keyO   s   € Ø�z‰z�~‰~ÓÐr   c                ó   — t         ‚r   )ÚNotImplementedErrorr&   s    r   Ú	get_statezFuncTorchInterpreter.get_stateR   s   € Ü!Ð!r   c                ó(   — || j                  «       k(  S r   )r.   ©r   Ústates     r   Úcheck_statez FuncTorchInterpreter.check_stateU   s   € Ø˜Ÿ™Ó(Ñ(Ð(r   c                ó^   — | j                   j                  «       }|j                  dd «       |S )Nr   )Ú__dict__ÚcopyÚpopr0   s     r   Ú__getstate__z!FuncTorchInterpreter.__getstate__X   s'   € Ø—‘×"Ñ"Ó$ˆØ�	‰	�'˜4Ô Øˆr   N)r   r   ÚreturnÚNone©r    r   r!   útuple[Any, ...]r"   údict[str, Any]r8   r   ©r8   ú&contextlib.AbstractContextManager[Any]©r8   Úint)r8   r   ©r8   r;   )r1   r;   r8   Úbool)r8   r<   )Ú__name__Ú
__module__Ú__qualname__r   r   r#   r'   r)   r+   r.   r2   r7   r   r   r   r   r   <   s9   „ óð
 òó ðó3ó"ó ó"ó)ôr   r   c               #  ó`   K  — 	 t        «       } d –— t        | «       y # t         «       w xY w­wr   )r   r   )Úsaveds    r   r%   r%   ^   s'   è ø€ ð(Ü'Ó)ˆÛä  Õ'øÔ  Õ'üs   ‚.„ ’.ž+«.c               #  ó†  K  — g } 	 t         j                  j                  j                  «       �B| j	                  t        «       «       t         j                  j                  j                  «       �ŒBt        | «      –— | rt        | j                  «       «       | rŒy y # | rt        | j                  «       «       | rŒw w xY w­wr   )	ÚtorchÚ_CÚ
_functorchÚpeek_interpreter_stackÚappendr   Úlistr   r6   )Ústacks    r   Ú#temporarily_clear_interpreter_stackrP   g   sŠ   è ø€ à€Eð2Ü�h‰h×!Ñ!×8Ñ8Ó:ÐFØ�L‰LÔ0Ó2Ô3ô �h‰h×!Ñ!×8Ñ8Ó:ÑFä�5‹kÒáÜ$ U§Y¡Y£[Ô1ô ø‰eÜ$ U§Y¡Y£[Ô1ô üs/   ‚C†A)B Á0B Á=CÂCÂB>Â<B>Â>Cc              #  óê   K  — g }| €y 	 t        | «      D ]  }t        |«       |j                  |«       Œ  d –— t        |«      D ]  }t        «        Œ y # t        |«      D ]  }t        «        Œ w xY w­wr   )Úreversedr   rM   r   )rO   ÚpushedÚsÚ_s       r   Ú%temporarily_restore_interpreter_stackrV   s   s~   è ø€ ð €FØ€}Øð	&Ü˜%“ò 	ˆAÜ$ QÔ'Ø�M‰M˜!Õð	ó 	ä˜&Ó!ò 	&ˆAô $Õ%ñ	&ø”˜&Ó!ò 	&ˆAô $Õ%ñ	&üs   ‚A3‰0A ¹A3ÁA0Á0A3c                  óF   — e Zd Zdd„Zed	d„«       Zd
d„Zdd„Zdd„Zdd„Z	y)ÚVmapInterpreterc                óŒ   — |j                  «       t        j                  k7  rt        d|j                  «       › �«      ‚|| _        y )Nz!expected TransformType.Vmap, got )r+   r   ÚVmapÚAssertionErrorÚ_cdata©r   Úcdatas     r   r   zVmapInterpreter.__init__‡   s8   € Ø�9‰9‹;œ-×,Ñ,Ò,Ü Ð#DÀUÇYÁYÃ[ÀMÐ!RÓSÐSð ˆ�r   c                ó,   — t        | j                  «      S r   )r   r\   r&   s    r   r   zVmapInterpreter._cptr�   ó   € ô # 4§;¡;Ó/Ð/r   c                óT   — |j                   t        j                     } || g|¢­i |¤ŽS r   )Úfunctorch_tabler   rZ   ©r   r    r!   r"   Úkernels        r   r#   zVmapInterpreter.process”   s-   € Ø×#Ñ#¤M×$6Ñ$6Ñ7ˆÙ�dÐ,˜TÒ, VÑ,Ð,r   c                ó6   — | j                   j                  «       S r   )r   Ú	batchSizer&   s    r   Ú
batch_sizezVmapInterpreter.batch_size˜   s   € Ø�z‰z×#Ñ#Ó%Ð%r   c                óÊ   — | j                   j                  «       }|t        j                  k(  ry|t        j                  k(  ry|t        j
                  k(  ryt        d|› �«      ‚)NÚerrorÚsameÚ	differentzUnknown RandomnessType: )r   Ú
randomnessr   ÚErrorÚSameÚ	DifferentÚRuntimeError)r   Útyps     r   rl   zVmapInterpreter.randomness›   sZ   € Ø�j‰j×#Ñ#Ó%ˆØ”.×&Ñ&Ò&ØØ”N×'Ñ'Ò'ØØ”N×,Ñ,Ò,ØÜÐ5°c°UÐ;Ó<Ð<r   c                ót   — | j                  «       j                  | j                  «       | j                  «       fS r   )r+   Únamer)   rl   r&   s    r   r.   zVmapInterpreter.get_state¥   s&   € Ø—‘“
—‘ §¡£¨t¯©Ó/@ÐAÐAr   N©r^   r   r8   r9   )r8   r   r:   r?   )r8   ÚstrrA   )
rC   rD   rE   r   r   r   r#   rg   rl   r.   r   r   r   rX   rX   †   s0   „ óð ò0ó ð0ó-ó&ó=ôBr   rX   c               '  ó–   K  — t        j                  «       5 }| D ]  }|j                  |«       Œ | –— d d d «       y # 1 sw Y   y xY w­wr   )Ú
contextlibÚ	ExitStackÚenter_context)ÚcontextsrO   Úctxs      r   Únestedr|   ©   sL   è ø€ ô 
×	Ñ	Ó	ð  5Øò 	%ˆCØ×Ñ Õ$ð	%àŠ÷÷ ñ üs   ‚A	—=´	A	½AÁA	c                  óf   ‡ — e Zd Zdd„Zed	d„«       Z	 	 	 	 	 	 d
d„Zdd„Zdˆ fd„Zdd„Z	dd„Z
ˆ xZS )ÚGradInterpreterc                óŒ   — |j                  «       t        j                  k7  rt        d|j                  «       › �«      ‚|| _        y )Nz!expected TransformType.Grad, got )r+   r   ÚGradr[   r\   r]   s     r   r   zGradInterpreter.__init__´   s6   € Ø�9‰9‹;œ-×,Ñ,Ò,Ü Ð#DÀUÇYÁYÃ[ÀMÐ!RÓSÐSàˆ�r   c                ó,   — t        | j                  «      S r   )r
   r\   r&   s    r   r   zGradInterpreter._cptrº   r`   r   c                ó†   — t        j                  t        j                  | j                  j
                  ||g«      \  }}||fS r   ©ÚpytreeÚtree_map_onlyrI   ÚTensorr   Úlift©r   r!   r"   s      r   r‡   zGradInterpreter.lift¿   ó;   € ô ×+Ñ+Ü�L‰L˜$Ÿ*™*Ÿ/™/¨D°&¨>ó
‰ˆˆfð �Vˆ|Ðr   c                ó~   — |j                   t        j                     }| j                  ||«      \  }} || g|¢­i |¤ŽS r   )rb   r   r€   r‡   rc   s        r   r#   zGradInterpreter.processÇ   sA   € Ø×#Ñ#¤M×$6Ñ$6Ñ7ˆØ—y‘y  vÓ.‰ˆˆfÙ�dÐ,˜TÒ, VÑ,Ð,r   c                ó˜   •— | j                  «       }|s*t        t        j                  «       t        ‰| �  «       «      S t        ‰| �  «       S r   )Úprev_grad_moder|   rI   Úno_gradÚsuperr'   )r   rŒ   Ú	__class__s     €r   r'   zGradInterpreter.lowerÏ   s9   ø€ Ø×,Ñ,Ó.ˆÙÜœ%Ÿ-™-›/¬5©7©=«?Ó;Ð;Ü‰w‰}‹Ðr   c                ó6   — | j                   j                  «       S r   )r   ÚprevGradModer&   s    r   rŒ   zGradInterpreter.prev_grad_modeÕ   s   € Ø�z‰z×&Ñ&Ó(Ð(r   c                ót   — | j                  «       j                  | j                  «       | j                  «       fS r   )r+   rs   r)   rŒ   r&   s    r   r.   zGradInterpreter.get_stateØ   s(   € Ø—‘“
—‘ §¡£¨t×/BÑ/BÓ/DÐEÐEr   rt   )r8   r
   ©r!   r;   r"   r<   r8   z&tuple[tuple[Any, ...], dict[str, Any]]r:   r=   ©r8   rB   rA   )rC   rD   rE   r   r   r   r‡   r#   r'   rŒ   r.   Ú__classcell__©r�   s   @r   r~   r~   ³   sN   ø„ óð ò0ó ð0ðØ#ðØ-;ðà	/óó-õó)÷Fr   r~   c                  óf   ‡ — e Zd Zdd„Zed	d„«       Z	 	 	 	 	 	 d
d„Zdd„Zdˆ fd„Zdd„Z	dd„Z
ˆ xZS )ÚJvpInterpreterc                óŒ   — |j                  «       t        j                  k7  rt        d|j                  «       › �«      ‚|| _        y )Nz expected TransformType.Jvp, got )r+   r   ÚJvpr[   r\   r]   s     r   r   zJvpInterpreter.__init__Ý   s6   € Ø�9‰9‹;œ-×+Ñ+Ò+Ü Ð#CÀEÇIÁIÃKÀ=Ð!QÓRÐRàˆ�r   c                ó,   — t        | j                  «      S r   )r   r\   r&   s    r   r   zJvpInterpreter._cptrã   s   € ô " $§+¡+Ó.Ð.r   c                ó†   — t        j                  t        j                  | j                  j
                  ||g«      \  }}||fS r   rƒ   rˆ   s      r   r‡   zJvpInterpreter.liftè   r‰   r   c                ó~   — |j                   t        j                     }| j                  ||«      \  }} || g|¢­i |¤ŽS r   )rb   r   rš   r‡   rc   s        r   r#   zJvpInterpreter.processð   sA   € Ø×#Ñ#¤M×$5Ñ$5Ñ6ˆØ—y‘y  vÓ.‰ˆˆfÙ�dÐ,˜TÒ, VÑ,Ð,r   c                ó†   •— | j                  «       }|s!t        t        d«      t        ‰| �  «       «      S t        ‰| �  «       S )NF)Úprev_fwd_grad_moder|   r   rŽ   r'   )r   rŸ   r�   s     €r   r'   zJvpInterpreter.lowerø   s:   ø€ Ø!×4Ñ4Ó6ÐÙ!ÜÔ/°Ó6¼¹¹»ÓHÐHÜ‰w‰}‹Ðr   c                ó6   — | j                   j                  «       S r   )r   ÚprevFwdGradModer&   s    r   rŸ   z!JvpInterpreter.prev_fwd_grad_modeþ   s   € Ø�z‰z×)Ñ)Ó+Ð+r   c                ót   — | j                  «       j                  | j                  «       | j                  «       fS r   )r+   rs   r)   rŸ   r&   s    r   r.   zJvpInterpreter.get_state  s(   € Ø—‘“
—‘ §¡£¨t×/FÑ/FÓ/HÐIÐIr   rt   )r8   r   r“   r:   r=   r”   rA   )rC   rD   rE   r   r   r   r‡   r#   r'   rŸ   r.   r•   r–   s   @r   r˜   r˜   Ü   sN   ø„ óð ò/ó ð/ðØ#ðØ-;ðà	/óó-õó,÷Jr   r˜   c                  ó>   — e Zd Zdd„Zedd„«       Zd	d„Zd
d„Zdd„Zy)ÚFunctionalizeInterpreterc                óŒ   — |j                  «       t        j                  k7  rt        d|j                  «       › �«      ‚|| _        y )Nz*expected TransformType.Functionalize, got )r+   r   ÚFunctionalizer[   r\   r]   s     r   r   z!FunctionalizeInterpreter.__init__  s<   € Ø�9‰9‹;œ-×5Ñ5Ò5Ü Ø<¸U¿Y¹Y»[¸MÐJóð ð ˆ�r   c                ó,   — t        | j                  «      S r   )r	   r\   r&   s    r   r   zFunctionalizeInterpreter._cptr  s   € ô ,¨D¯K©KÓ8Ð8r   c                óT   — |j                   t        j                     } || g|¢­i |¤ŽS r   )rb   r   r¦   rc   s        r   r#   z FunctionalizeInterpreter.process  s-   € Ø×#Ñ#¤M×$?Ñ$?Ñ@ˆÙ�dÐ,˜TÒ, VÑ,Ð,r   c                ó6   — | j                   j                  «       S r   )r   ÚfunctionalizeAddBackViewsr&   s    r   Úfunctionalize_add_back_viewsz5FunctionalizeInterpreter.functionalize_add_back_views  s   € Ø�z‰z×3Ñ3Ó5Ð5r   c                óV   — | j                  «       j                  | j                  «       fS r   )r+   rs   r)   r&   s    r   r.   z"FunctionalizeInterpreter.get_state  s   € Ø—‘“
—‘ §¡£Ð.Ð.r   Nrt   )r8   r	   r:   r”   rA   )	rC   rD   rE   r   r   r   r#   r«   r.   r   r   r   r¤   r¤     s*   „ óð ò9ó ð9ó-ó6ô/r   r¤   c                ó.  — | j                  «       }|t        j                  k(  rt        | «      S |t        j                  k(  rt        | «      S |t        j                  k(  rt        | «      S |t        j                  k(  rt        | «      S t        d|› �«      ‚)Nz2NYI: PyDispatcher has not implemented support for )r+   r   r€   r~   rZ   rX   rš   r˜   r¦   r¤   rp   )Úcinterpreterr+   s     r   Úcoerce_cinterpreterr¯     s‡   € Ø
×
Ñ
Ó
€CØ
Œm× Ñ Ò Ü˜|Ó,Ð,Ø
Œm× Ñ Ò Ü˜|Ó,Ð,Ø
Œm×ÑÒÜ˜lÓ+Ð+Ø
Œm×)Ñ)Ò)Ü'¨Ó5Ð5Ü
ÐKÈCÈ5ÐQÓ
RÐRr   c                 ó‚   — t         j                  j                  j                  «       } | €t	        d«      ‚t        | «      S )Nzinterpreter must not be None)rI   rJ   rK   rL   r[   r¯   )Úinterpreters    r   Ú&retrieve_current_functorch_interpreterr²   *  s7   € Ü—(‘(×%Ñ%×<Ñ<Ó>€KØÐÜÐ;Ó<Ð<Ü˜{Ó+Ð+r   c                 ó–   — t         j                  j                  j                  «       } | €g S | D �cg c]  }t	        |«      ‘Œ c}S c c}w r   )rI   rJ   rK   Úget_interpreter_stackr¯   )ÚcisÚcis     r   Ú#retrieve_all_functorch_interpretersr·   1  s>   € Ü
�(‰(×
Ñ
×
3Ñ
3Ó
5€CØ
€{Øˆ	Ø.1Ö2¨Ô Õ#Ò2Ð2ùÒ2s   ±Ac                ó  — t         j                  j                  j                  «       }|€t	        | «      dk7  s|�t	        | «      dk(  ryt        «       }t	        |«      t	        | «      k(  xr t        d„ t        || «      D «       «      S )Nr   Fc              3  óD   K  — | ]  \  }}|j                  |«      –— Œ y ­wr   )r2   )Ú.0r¶   r1   s      r   ú	<genexpr>z*compare_functorch_state.<locals>.<genexpr>C  s"   è ø€ ò +Ù"+ " eˆ�‰�u×ñ+ùs   ‚ )rI   rJ   rK   rL   Úlenr·   ÚallÚzip)ÚstatesÚpeekrµ   s      r   Úcompare_functorch_staterÁ   8  s}   € ô �8‰8×Ñ×5Ñ5Ó7€DØˆœ˜V›¨Ò)¨tÐ/?ÄCÈÃKÐSTÒDTØä
-Ó
/€CÜˆs‹8”s˜6“{Ñ"ò ¤sñ +Ü/2°3¸Ó/?ô+ó (ð r   c                óÔ   — t        «       }t        j                  t        j                  t        j
                  j                  j                  ||f«      \  }}|j                  | ||«      S r   )	r²   r„   r…   rI   r†   rJ   rK   Úunwrap_if_deadr#   )r    r!   r"   r±   s       r   Údispatch_functorchrÄ   H  sV   € Ü8Ó:€Kô ×'Ñ'Ü�‰”e—h‘h×)Ñ)×8Ñ8¸4À¸.ó�L€Dˆ&ð ×Ñ˜r 4¨Ó0Ð0r   )r8   úGenerator[None, None, None])r8   z Generator[list[Any], None, None])rO   zlist[Any] | Noner8   rÅ   )rz   r>   r8   zIGenerator[tuple[contextlib.AbstractContextManager[Any], ...], None, None])r®   r   r8   r   )r8   r   )r8   zlist[FuncTorchInterpreter])r¿   zlist[tuple[Any, ...]]r8   rB   r:   )-Ú
__future__r   rw   Úabcr   r   Ú	functoolsr   Útypingr   r   rI   Útorch.utils._pytreeÚutilsÚ_pytreer„   Útorch._C._functorchr	   r
   r   r   r   r   r   r   r   Útorch.autograd.forward_adr   Úcollections.abcr   r   Úcontextmanagerr%   rP   rV   rX   r|   r~   r˜   r¤   r¯   r²   r·   rÁ   rÄ   r   r   r   ú<module>rÑ      s+  ðÝ "ã ß #Ý %ß %ã ß $Ð $÷
÷ 
õ 
õ <ñ Ý)ðô@˜3ô ðD ×Ñò(ó ð(ð ×Ñò2ó ð2ð ×Ñð&Øð&à ò&ó ð&ô$ BÐ*ô  BðF ×ÑðØ5ðàNòó ðô&FÐ*ô &FôR&JÐ)ô &JôR/Ð3ô /ó0
Só,ó3óô 
1r   