ó
    Eñi1  ã                  ó  • S SK Jr  S SKrS SKJrJr  S SKJr  S SKJ	r	J
r
  S SKrS SKJs  Jr  S SKJrJrJrJrJrJrJrJrJr  S SKJr  \
(       a  S SKJr    " S	 S
\5      r\R>                  SS j5       r \R>                  SS j5       r!\R>                      SS j5       r" " S S\5      r#\R>                      SS j5       r$ " S S\5      r% " S S\5      r& " S S\5      r'S S jr(S!S jr)S"S jr*S#S jr+S$S jr,g)%é    )Ú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                  ón   • \ rS rSrSS jr\SS j5       rSS jrSS jrSS jr	SS jr
SS jrSS	 jrS
rg)ÚFuncTorchInterpreteré<   c                ó   • Xl         g ©N©Ú_cptr)ÚselfÚcptrs     ÚY/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/_functorch/pyfunctorch.pyÚ__init__ÚFuncTorchInterpreter.__init__=   s   € Ø�
ó    c                ó   • g r   © )r   ÚopÚargsÚkwargss       r   ÚprocessÚFuncTorchInterpreter.processB   s   € àr    c                ó   • [        5       $ r   )Ú!temporarily_pop_interpreter_stack©r   s    r   ÚlowerÚFuncTorchInterpreter.lowerI   s   € Ü0Ó2Ð2r    c                ó6   • U R                   R                  5       $ r   )r   Úlevelr*   s    r   r.   ÚFuncTorchInterpreter.levelL   s   € Ø�z‰z×ÑÓ!Ð!r    c                ó6   • U R                   R                  5       $ r   )r   Úkeyr*   s    r   r1   ÚFuncTorchInterpreter.keyO   s   € Ø�z‰z�~‰~ÓÐr    c                ó   • [         er   )ÚNotImplementedErrorr*   s    r   Ú	get_stateÚFuncTorchInterpreter.get_stateR   s   € Ü!Ð!r    c                ó&   • XR                  5       :H  $ r   )r5   ©r   Ústates     r   Úcheck_stateÚ FuncTorchInterpreter.check_stateU   s   € ØŸ™Ó(Ñ(Ð(r    c                ó^   • U R                   R                  5       nUR                  SS 5        U$ )Nr   )Ú__dict__ÚcopyÚpopr8   s     r   Ú__getstate__Ú!FuncTorchInterpreter.__getstate__X   s'   € Ø—‘×"Ñ"Ó$ˆØ�	‰	�'˜4Ô Øˆr    r   N)r   r   ÚreturnÚNone©r#   r   r$   útuple[Any, ...]r%   údict[str, Any]rB   r   ©rB   ú&contextlib.AbstractContextManager[Any]©rB   Úint)rB   r   ©rB   rE   )r9   rE   rB   Úbool)rB   rF   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r   r&   r+   r.   r1   r5   r:   r@   Ú__static_attributes__r"   r    r   r   r   <   s9   † ôð
 óó ðô3ô"ô ô"ô)÷r    r   c               #  ó`   #   •  [        5       n S v •  [        U 5        g ! [        W 5        f = f7fr   )r   r   )Úsaveds    r   r)   r)   ^   s&   é € ð(Ü'Ó)ˆÛä  Õ'øÔ  Õ'üs   ‚.„ ’.ž+«.c               #  ó¸  #   • / n  [         R                  R                  R                  5       bD  U R	                  [        5       5        [         R                  R                  R                  5       b  MD  [        U 5      v •  U (       a#  [        U R                  5       5        U (       a  M"  g g ! U (       a#  [        U R                  5       5        U (       a  M"  f f = f7fr   )	ÚtorchÚ_CÚ
_functorchÚpeek_interpreter_stackÚappendr   Úlistr   r?   )Ústacks    r   Ú#temporarily_clear_interpreter_stackr\   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øŽeÜ$ U§Y¡Y£[Ô1÷ Šeüs/   ‚C†A+B+ Á3B+ Â 'CÂ)CÂ+(CÃCÃCc              #  óø   #   • / nU c  g  [        U 5       H  n[        U5        UR                  U5        M!     S v •  [        U5       H  n[        5         M     g ! [        U5       H  n[        5         M     f = f7fr   )Úreversedr   rY   r   )r[   ÚpushedÚsÚ_s       r   Ú%temporarily_restore_interpreter_stackrb   s   sn   é € ð €FØ�}Øð	&Ü˜%–ˆAÜ$ QÔ'Ø�M‰M˜!Öñ !ó 	ä˜&Ö!ˆAô $Ö%ò "ø”˜&Ö!ˆAô $Ö%ò "üs   ‚A:Š2A ¼A:ÁA7Á7A:c                  óZ   • \ rS rSrS
S jr\SS j5       rSS jrSS jrSS jr	SS jr
Srg	)ÚVmapInterpreteré†   c                óŒ   • UR                  5       [        R                  :w  a  [        SUR                  5        35      eXl        g )Nz!expected TransformType.Vmap, got )r1   r   ÚVmapÚAssertionErrorÚ_cdata©r   Úcdatas     r   r   ÚVmapInterpreter.__init__‡   s6   € Ø�9‰9‹;œ-×,Ñ,Ó,Ü Ð#DÀUÇYÁYÃ[ÀMÐ!RÓSÐSð �r    c                ó,   • [        U R                  5      $ r   )r   ri   r*   s    r   r   ÚVmapInterpreter._cptr�   ó   € ô # 4§;¡;Ó/Ð/r    c                óT   • UR                   [        R                     nU" U /UQ70 UD6$ r   )Úfunctorch_tabler   rg   ©r   r#   r$   r%   Úkernels        r   r&   ÚVmapInterpreter.process”   s-   € Ø×#Ñ#¤M×$6Ñ$6Ñ7ˆÙ�dÐ,˜TÒ, VÑ,Ð,r    c                ó6   • U R                   R                  5       $ r   )r   Ú	batchSizer*   s    r   Ú
batch_sizeÚVmapInterpreter.batch_size˜   s   € Ø�z‰z×#Ñ#Ó%Ð%r    c                óÐ   • U R                   R                  5       nU[        R                  :X  a  gU[        R                  :X  a  gU[        R
                  :X  a  g[        SU 35      e)NÚerrorÚsameÚ	differentzUnknown RandomnessType: )r   Ú
randomnessr   ÚErrorÚSameÚ	DifferentÚRuntimeError)r   Útyps     r   r}   ÚVmapInterpreter.randomness›   sZ   € Ø�j‰j×#Ñ#Ó%ˆØ”.×&Ñ&Ó&ØØ”N×'Ñ'Ó'ØØ”N×,Ñ,Ó,ØÜÐ5°c°UÐ;Ó<Ð<r    c                ót   • U R                  5       R                  U R                  5       U R                  5       4$ r   )r1   Únamer.   r}   r*   s    r   r5   ÚVmapInterpreter.get_state¥   s&   € Ø—‘“
—‘ §¡£¨t¯©Ó/@ÐAÐAr    ©ri   N©rk   r   rB   rC   )rB   r   rD   rI   )rB   ÚstrrK   )rM   rN   rO   rP   r   r   r   r&   rw   r}   r5   rQ   r"   r    r   rd   rd   †   s0   † ôð ó0ó ð0ô-ô&ô=÷Br    rd   c               '  ó¦   #   • [         R                  " 5        nU  H  nUR                  U5        M     U v •  S S S 5        g ! , (       d  f       g = f7fr   )Ú
contextlibÚ	ExitStackÚenter_context)Úcontextsr[   Úctxs      r   Únestedr�   ©   s=   é € ô 
×	Ò	Ô	 5ÛˆCØ×Ñ Ö$ñ àŠ÷ 
 ×	Ö	üs   ‚A˜A ·	AÁ 
AÁ
Ac                  ó~   ^ • \ rS rSrS
S jr\SS j5       r      SS jrSS jrSU 4S jjr	SS jr
SS jrS	rU =r$ )ÚGradInterpreteré³   c                óŒ   • UR                  5       [        R                  :w  a  [        SUR                  5        35      eXl        g )Nz!expected TransformType.Grad, got )r1   r   ÚGradrh   ri   rj   s     r   r   ÚGradInterpreter.__init__´   s4   € Ø�9‰9‹;œ-×,Ñ,Ó,Ü Ð#DÀUÇYÁYÃ[ÀMÐ!RÓSÐSà�r    c                ó,   • [        U R                  5      $ r   )r
   ri   r*   s    r   r   ÚGradInterpreter._cptrº   ro   r    c                ó‚   • [         R                  " [        R                  U R                  R
                  X/5      u  pX4$ r   ©ÚpytreeÚtree_map_onlyrU   ÚTensorr   Úlift©r   r$   r%   s      r   rž   ÚGradInterpreter.lift¿   ó5   € ô ×+Ò+Ü�L‰L˜$Ÿ*™*Ÿ/™/¨D¨>ó
‰ˆð ˆ|Ðr    c                óz   • UR                   [        R                     nU R                  X#5      u  p#U" U /UQ70 UD6$ r   )rq   r   r•   rž   rr   s        r   r&   ÚGradInterpreter.processÇ   s=   € Ø×#Ñ#¤M×$6Ñ$6Ñ7ˆØ—y‘y Ó.‰ˆÙ�dÐ,˜TÒ, VÑ,Ð,r    c                ó¤   >• U R                  5       nU(       d+  [        [        R                  " 5       [        TU ]  5       5      $ [        TU ]  5       $ r   )Úprev_grad_moder�   rU   Úno_gradÚsuperr+   )r   r¥   Ú	__class__s     €r   r+   ÚGradInterpreter.lowerÏ   s9   ø€ Ø×,Ñ,Ó.ˆÞÜœ%Ÿ-š-›/¬5©7©=«?Ó;Ð;Ü‰w‰}‹Ðr    c                ó6   • U R                   R                  5       $ r   )r   ÚprevGradModer*   s    r   r¥   ÚGradInterpreter.prev_grad_modeÕ   s   € Ø�z‰z×&Ñ&Ó(Ð(r    c                ót   • U R                  5       R                  U R                  5       U R                  5       4$ r   )r1   r…   r.   r¥   r*   s    r   r5   ÚGradInterpreter.get_stateØ   s(   € Ø—‘“
—‘ §¡£¨t×/BÑ/BÓ/DÐEÐEr    r‡   rˆ   )rB   r
   ©r$   rE   r%   rF   rB   z&tuple[tuple[Any, ...], dict[str, Any]]rD   rG   ©rB   rL   rK   )rM   rN   rO   rP   r   r   r   rž   r&   r+   r¥   r5   rQ   Ú__classcell__©r¨   s   @r   r’   r’   ³   sT   ø† ôð ó0ó ð0ðØ#ðØ-;ðà	/ôô-÷ô)÷Fò Fr    r’   c                  ó~   ^ • \ rS rSrS
S jr\SS j5       r      SS jrSS jrSU 4S jjr	SS jr
SS jrS	rU =r$ )ÚJvpInterpreteréÜ   c                óŒ   • UR                  5       [        R                  :w  a  [        SUR                  5        35      eXl        g )Nz expected TransformType.Jvp, got )r1   r   ÚJvprh   ri   rj   s     r   r   ÚJvpInterpreter.__init__Ý   s4   € Ø�9‰9‹;œ-×+Ñ+Ó+Ü Ð#CÀEÇIÁIÃKÀ=Ð!QÓRÐRà�r    c                ó,   • [        U R                  5      $ r   )r   ri   r*   s    r   r   ÚJvpInterpreter._cptrã   s   € ô " $§+¡+Ó.Ð.r    c                ó‚   • [         R                  " [        R                  U R                  R
                  X/5      u  pX4$ r   rš   rŸ   s      r   rž   ÚJvpInterpreter.liftè   r¡   r    c                óz   • UR                   [        R                     nU R                  X#5      u  p#U" U /UQ70 UD6$ r   )rq   r   r·   rž   rr   s        r   r&   ÚJvpInterpreter.processð   s=   € Ø×#Ñ#¤M×$5Ñ$5Ñ6ˆØ—y‘y Ó.‰ˆÙ�dÐ,˜TÒ, VÑ,Ð,r    c                ó�   >• U R                  5       nU(       d!  [        [        S5      [        TU ]  5       5      $ [        TU ]  5       $ )NF)Úprev_fwd_grad_moder�   r   r§   r+   )r   rÀ   r¨   s     €r   r+   ÚJvpInterpreter.lowerø   s:   ø€ Ø!×4Ñ4Ó6ÐÞ!ÜÔ/°Ó6¼¹¹»ÓHÐHÜ‰w‰}‹Ðr    c                ó6   • U R                   R                  5       $ r   )r   ÚprevFwdGradModer*   s    r   rÀ   Ú!JvpInterpreter.prev_fwd_grad_modeþ   s   € Ø�z‰z×)Ñ)Ó+Ð+r    c                ót   • U R                  5       R                  U R                  5       U R                  5       4$ r   )r1   r…   r.   rÀ   r*   s    r   r5   ÚJvpInterpreter.get_state  s(   € Ø—‘“
—‘ §¡£¨t×/FÑ/FÓ/HÐIÐIr    r‡   rˆ   )rB   r   r¯   rD   rG   r°   rK   )rM   rN   rO   rP   r   r   r   rž   r&   r+   rÀ   r5   rQ   r±   r²   s   @r   r´   r´   Ü   sT   ø† ôð ó/ó ð/ðØ#ðØ-;ðà	/ôô-÷ô,÷Jò Jr    r´   c                  óP   • \ rS rSrS	S jr\S
S j5       rSS jrSS jrSS jr	Sr
g)ÚFunctionalizeInterpreteri  c                óŒ   • UR                  5       [        R                  :w  a  [        SUR                  5        35      eXl        g )Nz*expected TransformType.Functionalize, got )r1   r   ÚFunctionalizerh   ri   rj   s     r   r   Ú!FunctionalizeInterpreter.__init__  s:   € Ø�9‰9‹;œ-×5Ñ5Ó5Ü Ø<¸U¿Y¹Y»[¸MÐJóð ð �r    c                ó,   • [        U R                  5      $ r   )r	   ri   r*   s    r   r   ÚFunctionalizeInterpreter._cptr  s   € ô ,¨D¯K©KÓ8Ð8r    c                óT   • UR                   [        R                     nU" U /UQ70 UD6$ r   )rq   r   rÊ   rr   s        r   r&   Ú FunctionalizeInterpreter.process  s-   € Ø×#Ñ#¤M×$?Ñ$?Ñ@ˆÙ�dÐ,˜TÒ, VÑ,Ð,r    c                ó6   • U R                   R                  5       $ r   )r   ÚfunctionalizeAddBackViewsr*   s    r   Úfunctionalize_add_back_viewsÚ5FunctionalizeInterpreter.functionalize_add_back_views  s   € Ø�z‰z×3Ñ3Ó5Ð5r    c                óV   • U R                  5       R                  U R                  5       4$ r   )r1   r…   r.   r*   s    r   r5   Ú"FunctionalizeInterpreter.get_state  s   € Ø—‘“
—‘ §¡£Ð.Ð.r    r‡   Nrˆ   )rB   r	   rD   r°   rK   )rM   rN   rO   rP   r   r   r   r&   rÒ   r5   rQ   r"   r    r   rÈ   rÈ     s*   † ôð ó9ó ð9ô-ô6÷/r    rÈ   c                ó6  • U R                  5       nU[        R                  :X  a  [        U 5      $ U[        R                  :X  a  [        U 5      $ U[        R                  :X  a  [        U 5      $ U[        R                  :X  a  [        U 5      $ [        SU 35      e)Nz2NYI: PyDispatcher has not implemented support for )r1   r   r•   r’   rg   rd   r·   r´   rÊ   rÈ   r�   )Úcinterpreterr1   s     r   Úcoerce_cinterpreterrØ     s‡   € Ø
×
Ñ
Ó
€CØ
Œm× Ñ Ó Ü˜|Ó,Ð,Ø
Œm× Ñ Ó Ü˜|Ó,Ð,Ø
Œm×ÑÓÜ˜lÓ+Ð+Ø
Œm×)Ñ)Ó)Ü'¨Ó5Ð5Ü
ÐKÈCÈ5ÐQÓ
RÐRr    c                 ó„   • [         R                  R                  R                  5       n U c  [	        S5      e[        U 5      $ )Nzinterpreter must not be None)rU   rV   rW   rX   rh   rØ   )Úinterpreters    r   Ú&retrieve_current_functorch_interpreterrÛ   *  s7   € Ü—(‘(×%Ñ%×<Ñ<Ó>€KØÑÜÐ;Ó<Ð<Ü˜{Ó+Ð+r    c                 óž   • [         R                  R                  R                  5       n U c  / $ U  Vs/ s H  n[	        U5      PM     sn$ s  snf r   )rU   rV   rW   Úget_interpreter_stackrØ   )ÚcisÚcis     r   Ú#retrieve_all_functorch_interpretersrà   1  sB   € Ü
�(‰(×
Ñ
×
3Ñ
3Ó
5€CØ
�{Øˆ	Ù.1Ó2ªc¨Ô Ö#©cÑ2Ð2ùÒ2s   ²A
c                ó"  • [         R                  R                  R                  5       nUc  [	        U 5      S:w  d  Ub  [	        U 5      S:X  a  g[        5       n[	        U5      [	        U 5      :H  =(       a    [        S [        X 5       5       5      $ )Nr   Fc              3  óH   #   • U  H  u  pUR                  U5      v •  M     g 7fr   )r:   )Ú.0rß   r9   s      r   Ú	<genexpr>Ú*compare_functorch_state.<locals>.<genexpr>C  s"   é € ð +Ú/?¡) "ˆ�‰�u×ÐÒ/?ùs   ‚ ")rU   rV   rW   rX   Ú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                óÐ   • [        5       n[        R                  " [        R                  [        R
                  R                  R                  X45      u  pUR                  XU5      $ r   )	rÛ   r›   rœ   rU   r�   rV   rW   Úunwrap_if_deadr&   )r#   r$   r%   rÚ   s       r   Údispatch_functorchrî   H  sP   € Ü8Ó:€Kô ×'Ò'Ü�‰”e—h‘h×)Ñ)×8Ñ8¸4¸.ó�L€Dð ×Ñ˜r¨Ó0Ð0r    )rB   úGenerator[None, None, None])rB   z Generator[list[Any], None, None])r[   zlist[Any] | NonerB   rï   )rŽ   rH   rB   zIGenerator[tuple[contextlib.AbstractContextManager[Any], ...], None, None])r×   r   rB   r   )rB   r   )rB   zlist[FuncTorchInterpreter])ré   zlist[tuple[Any, ...]]rB   rL   rD   )-Ú
__future__r   r‹   Úabcr   r   Ú	functoolsr   Útypingr   r   rU   Útorch.utils._pytreeÚutilsÚ_pytreer›   Útorch._C._functorchr	   r
   r   r   r   r   r   r   r   Útorch.autograd.forward_adr   Úcollections.abcr   r   Úcontextmanagerr)   r\   rb   rd   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    