
    shj(                        S SK r S SKJrJr  S SK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    " S S\5      r\ R0                  S 5       r\ R0                  S	 5       r\ R0                  S
 5       r " S S\5      r\ R0                  S 5       r " S S\5      r " S S\5      r " S S\5      r S\S\4S jr!S\4S jr"S\#\   4S jr$S\#\%\S4      S\&4S jr'S r(g)    N)ABCabstractmethod)Any)	CFunctionalizeInterpreterPtrCGradInterpreterPtrCInterpreterCJvpInterpreterPtrCVmapInterpreterPtrpop_dynamic_layer_stackpush_dynamic_layer_stackRandomnessTypeTransformType)_set_fwd_grad_enabledc                   P    \ rS rSrS\4S jr\S 5       rS rS r	S r
S rS	 rS
rg)FuncTorchInterpreter6   cptrc                     Xl         g N_cptr)selfr   s     p/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/torch/_functorch/pyfunctorch.py__init__FuncTorchInterpreter.__init__7   s    
    c                     g r    )r   opargskwargss       r   processFuncTorchInterpreter.process<   s    r   c                     [        5       $ r   )!temporarily_pop_interpreter_stackr   s    r   lowerFuncTorchInterpreter.lowerC   s    022r   c                 6    U R                   R                  5       $ r   )r   levelr&   s    r   r*   FuncTorchInterpreter.levelF   s    zz!!r   c                 6    U R                   R                  5       $ r   )r   keyr&   s    r   r-   FuncTorchInterpreter.keyI   s    zz~~r   c                     [         er   )NotImplementedErrorr&   s    r   	get_stateFuncTorchInterpreter.get_stateL   s    !!r   c                 &    XR                  5       :H  $ r   )r1   )r   states     r   check_state FuncTorchInterpreter.check_stateO   s    (((r   r   N)__name__
__module____qualname____firstlineno__r   r   r   r"   r'   r*   r-   r1   r5   __static_attributes__r   r   r   r   r   6   s;    S 
  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&     (') ' '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   pop)stacks    r   #temporarily_clear_interpreter_stackrG   \   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 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   rC   r   )rF   pushedss      r   %temporarily_restore_interpreter_stackrL   h   sd     F	&%A$Q'MM! ! 	&!A $% "&!A $% "s   A62A A6A33A6c                   :    \ rS rSrS\4S jrS rS rS rS r	Sr
g	)
VmapInterpreterw   cdatac                 x    UR                  5       [        R                  :X  d   eXl        [	        U5      U l        g r   )r-   r   Vmap_cdatar
   r   r   rP   s     r   r   VmapInterpreter.__init__x   s/    yy{m00000 (/
r   c                 T    UR                   [        R                     nU" U /UQ70 UD6$ r   )functorch_tabler   rR   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   rc   VmapInterpreter.randomness   sZ    jj##%.&&&N'''N,,,5cU;<<r   c                 t    U R                  5       R                  U R                  5       U R                  5       4$ r   )r-   namer*   rc   r&   s    r   r1   VmapInterpreter.get_state   s&    
t/@AAr   rS   r   N)r7   r8   r9   r:   r   r   r"   r]   rc   r1   r;   r   r   r   rN   rN   w   s#    0l 0-&=Br   rN   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)contextsrF   ctxs      r   nestedrt      s;     				5C$  
 		s   AA 	A 
A
Ac                   N   ^  \ rS rSrS\4S jrS rS rU 4S jrS r	S r
S	rU =r$ )
GradInterpreter   rP   c                 x    UR                  5       [        R                  :X  d   eXl        [	        U5      U l        g r   )r-   r   GradrS   r   r   rT   s     r   r   GradInterpreter.__init__   s-    yy{m00000(/
r   c                     [         R                  " [        R                  U R                  R
                  X/5      u  pX4$ r   pytreetree_map_onlyr?   Tensorr   liftr   r    r!   s      r   r   GradInterpreter.lift   3    ++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   )rW   r   ry   r   rX   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_modert   r?   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   )r-   rk   r*   r   r&   s    r   r1   GradInterpreter.get_state   s(    
t/B/B/DEEr   rm   )r7   r8   r9   r:   r   r   r   r"   r'   r   r1   r;   __classcell__r   s   @r   rv   rv      s/    0l 0-)F Fr   rv   c                   N   ^  \ rS rSrS\4S jrS rS rU 4S jrS r	S r
S	rU =r$ )
JvpInterpreter   rP   c                 x    UR                  5       [        R                  :X  d   eXl        [	        U5      U l        g r   )r-   r   JvprS   r	   r   rT   s     r   r   JvpInterpreter.__init__   s-    yy{m/////'.
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   )rW   r   r   r   rX   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_modert   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   )r-   rk   r*   r   r&   s    r   r1   JvpInterpreter.get_state   s(    
t/F/F/HIIr   rm   )r7   r8   r9   r:   r   r   r   r"   r'   r   r1   r;   r   r   s   @r   r   r      s/    /l /-,J Jr   r   c                   4    \ rS rSrS\4S jrS rS rS rSr	g)	FunctionalizeInterpreter   rP   c                 x    UR                  5       [        R                  :X  d   eXl        [	        U5      U l        g r   )r-   r   FunctionalizerS   r   r   rT   s     r   r   !FunctionalizeInterpreter.__init__   s-    yy{m999991%8
r   c                 T    UR                   [        R                     nU" U /UQ70 UD6$ r   )rW   r   r   rX   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   )r-   rk   r*   r&   s    r   r1   "FunctionalizeInterpreter.get_state   s    
..r   rm   N)
r7   r8   r9   r:   r   r   r"   r   r1   r;   r   r   r   r   r      s    9l 9
-6/r   r   cinterpreterreturnc                 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 )r-   r   ry   rv   rR   rN   r   r   r   r   rg   )r   r-   s     r   coerce_cinterpreterr      s    



C
m   |,,
m   |,,
ml++
m)))'55
KC5Q
RRr   c                  r    [         R                  R                  R                  5       n U c   e[	        U 5      $ r   )r?   r@   rA   rB   r   )interpreters    r   &retrieve_current_functorch_interpreterr      s1    ((%%<<>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   )r?   r@   rA   get_interpreter_stackr   )ciscis     r   #retrieve_all_functorch_interpretersr     sB    
((


3
3
5C
{	.12c#c222s   A
states.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   )r5   ).0r   r4   s      r   	<genexpr>*compare_functorch_state.<locals>.<genexpr>  s"      +/?)"u/?s    ")r?   r@   rA   rB   lenr   allzip)r   peekr   s      r   compare_functorch_stater     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~   r?   r   r@   rA   unwrap_if_deadr"   )r   r    r!   r   s       r   dispatch_functorchr     sP    8:K ''ehh))884.LD r00r   ))ro   abcr   r   typingr   r?   torch.utils._pytreeutils_pytreer}   torch._C._functorchr   r   r   r	   r
   r   r   r   r   torch.autograd.forward_adr   r   contextmanagerr%   rG   rL   rN   rt   rv   r   r   r   r   rD   r   tupleboolr   r   r   r   r   <module>r      s<    #   $ $
 
 
 <@)3 ): ( ( 2 2 & &B* B<  F* FDJ) JD/3 /"
Sl 
S7K 
S,0D ,3T2F-G 3DsCx$9 d  
1r   