
    N j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     m/root/GenerationalWealth/GenerationalWealth/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    zz!!r    c                6    U R                   R                  5       $ r   )r   keyr*   s    r   r1   FuncTorchInterpreter.keyO   s    zz~~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hh!!88:FLL023 hh!!88:F5k$UYY[1 ee$UYY[1 es/   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'MM! ! 	&!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    99;-,,, #DUYY[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    zz##%%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    jj##%.&&&N'''N,,,5cU;<<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    99;-,,, #DUYY[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     ++LL$**//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yy.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    ,,.%--/57=?;;w}r    c                6    U R                   R                  5       $ r   )r   prevGradModer*   s    r   r   GradInterpreter.prev_grad_mode   s    zz&&((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    99;-+++ #CEIIK=!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yy.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    zz))++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:    99;-555 <UYY[MJ  r    c                ,    [        U R                  5      $ r   )r	   ri   r*   s    r   r   FunctionalizeInterpreter._cptr  s     ,DKK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_views5FunctionalizeInterpreter.functionalize_add_back_views  s    zz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
KC5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
5C
{	.12c#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{     88557DV)t/?CKSTDT
-
/Cs8s6{" s +/23/?+ ( 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 ''ehh))884.LD 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    