
    %Vji)                        d dl Z d dlmZmZ d dlmZ d dl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 	  G d de          Ze j        d	             Ze j        d
             Ze j        d             Z G d de          Ze j        d             Z G d de          Z  G d de          Z! G d de          Z"dedefdZ#defdZ$de%e         fdZ&de%e'edf                  de(fdZ)d Z*dS )    N)ABCabstractmethod)cached_property)Any)	CFunctionalizeInterpreterPtrCGradInterpreterPtrCInterpreterCJvpInterpreterPtrCVmapInterpreterPtrpop_dynamic_layer_stackpush_dynamic_layer_stackRandomnessTypeTransformType)_set_fwd_grad_enabledc                   T    e Zd ZdefdZed             Zd Zd Zd Z	d Z
d Zd	 Zd
S )FuncTorchInterpretercptrc                     || _         d S N)_cptr)selfr   s     V/root/voice-cloning/.venv/lib/python3.11/site-packages/torch/_functorch/pyfunctorch.py__init__zFuncTorchInterpreter.__init__8   s    


    c                     d S r    )r   opargskwargss       r   processzFuncTorchInterpreter.process=   s    r   c                     t                      S r   )!temporarily_pop_interpreter_stackr   s    r   lowerzFuncTorchInterpreter.lowerD   s    0222r   c                 4    | j                                         S r   )r   levelr#   s    r   r&   zFuncTorchInterpreter.levelG   s    z!!!r   c                 4    | j                                         S r   )r   keyr#   s    r   r(   zFuncTorchInterpreter.keyJ   s    z~~r   c                     t           r   )NotImplementedErrorr#   s    r   	get_statezFuncTorchInterpreter.get_stateM   s    !!r   c                 2    ||                                  k    S r   )r+   r   states     r   check_statez FuncTorchInterpreter.check_stateP   s    ((((r   c                 d    | j                                         }|                    dd            |S )Nr   )__dict__copypopr-   s     r   __getstate__z!FuncTorchInterpreter.__getstate__S   s.    ""$$		'4   r   N)__name__
__module____qualname__r   r   r   r    r$   r&   r(   r+   r/   r4   r   r   r   r   r   7   s        S    
   ^3 3 3" " "     " " ") ) )    r   r   c               #   v   K   	 t                      } d V  t          |            d S # t          |            w xY wr   )r   r   )saveds    r   r"   r"   Y   sH      (')) ''''' ''''s   ' 8c               #     K   g } 	 t           j        j                                        D|                     t                                 t           j        j                                        Dt          |           V  | r%t          |                                            | #d S d S # | r#t          |                                            | #w xY wr   )	torch_C
_functorchpeek_interpreter_stackappendr   listr   r3   )stacks    r   #temporarily_clear_interpreter_stackrB   b   s      E2h!88::FLL022333 h!88::F5kk 	2$UYY[[111  	2 	2 	2 	2 	2e 	2$UYY[[111  	2 	2 	2 	2 	2s   A8B' ''Cc              #     K   g }	 t          |           D ]&}t          |           |                    |           'd V  t          |          D ]}t                       d S # t          |          D ]}t                       w xY wr   )reversedr   r?   r   )rA   pushedss      r   %temporarily_restore_interpreter_stackrG   n   s      F	&% 	 	A$Q'''MM!&!! 	& 	&A $%%%%	& 	&&!! 	& 	&A $%%%%	&s   :A" ""Bc                   H    e Zd ZdefdZed             Zd Zd Zd Z	d Z
dS )	VmapInterpretercdatac                 \    |                                 t          j        k    sJ || _        d S r   )r(   r   Vmap_cdatar   rJ   s     r   r   zVmapInterpreter.__init__~   s+    yy{{m00000 r   c                 *    t          | j                  S r   )r   rM   r#   s    r   r   zVmapInterpreter._cptr       "4;///r   c                 H    |j         t          j                 } || g|R i |S r   )functorch_tabler   rL   r   r   r   r   kernels        r   r    zVmapInterpreter.process   s2    #M$67vd,T,,,V,,,r   c                 4    | j                                         S r   )r   	batchSizer#   s    r   
batch_sizezVmapInterpreter.batch_size   s    z##%%%r   c                     | j                                         }|t          j        k    rdS |t          j        k    rdS |t          j        k    rdS t          d|           )Nerrorsame	differentzUnknown RandomnessType: )r   
randomnessr   ErrorSame	DifferentRuntimeError)r   typs     r   r\   zVmapInterpreter.randomness   se    j##%%.&&&7N'''6N,,,;;c;;<<<r   c                     |                                  j        |                                 |                                 fS r   )r(   namer&   r\   r#   s    r   r+   zVmapInterpreter.get_state   s+    

t/@/@AAr   N)r5   r6   r7   r	   r   r   r   r    rW   r\   r+   r   r   r   rI   rI   }   s        l     0 0 _0- - -& & &= = =B B B B Br   rI   c               '      K   t          j                    5 }| D ]}|                    |           | V  d d d            d S # 1 swxY w Y   d S r   )
contextlib	ExitStackenter_context)contextsrA   ctxs      r   nestedrj      s      				 5 	% 	%C$$$$                 s   AA	Ac                   X     e Zd ZdefdZed             Zd Zd Z fdZ	d Z
d Z xZS )	GradInterpreterrJ   c                 \    |                                 t          j        k    sJ || _        d S r   )r(   r   GradrM   rN   s     r   r   zGradInterpreter.__init__   s)    yy{{m00000r   c                 *    t          | j                  S r   )r   rM   r#   s    r   r   zGradInterpreter._cptr   rP   r   c                 h    t          j        t          j        | j        j        ||g          \  }}||fS r   pytreetree_map_onlyr;   Tensorr   liftr   r   r   s      r   ru   zGradInterpreter.lift   5    +L$*/D&>
 
f V|r   c                 z    |j         t          j                 }|                     ||          \  }} || g|R i |S r   )rR   r   rn   ru   rS   s        r   r    zGradInterpreter.process   sI    #M$67yyv..fvd,T,,,V,,,r   c                     |                                  }|s?t          t          j                    t	                                                                S t	                                                      S r   )prev_grad_moderj   r;   no_gradsuperr$   )r   rz   	__class__s     r   r$   zGradInterpreter.lower   sP    ,,.. 	<%-//577==??;;;ww}}r   c                 4    | j                                         S r   )r   prevGradModer#   s    r   rz   zGradInterpreter.prev_grad_mode   s    z&&(((r   c                     |                                  j        |                                 |                                 fS r   )r(   rc   r&   rz   r#   s    r   r+   zGradInterpreter.get_state   s-    

t/B/B/D/DEEr   )r5   r6   r7   r	   r   r   r   ru   r    r$   rz   r+   __classcell__r}   s   @r   rl   rl      s        l    
 0 0 _0  - - -    ) ) )F F F F F F Fr   rl   c                   X     e Zd ZdefdZed             Zd Zd Z fdZ	d Z
d Z xZS )	JvpInterpreterrJ   c                 \    |                                 t          j        k    sJ || _        d S r   )r(   r   JvprM   rN   s     r   r   zJvpInterpreter.__init__   s)    yy{{m/////r   c                 *    t          | j                  S r   )r
   rM   r#   s    r   r   zJvpInterpreter._cptr   s    !$+...r   c                 h    t          j        t          j        | j        j        ||g          \  }}||fS r   rq   rv   s      r   ru   zJvpInterpreter.lift   rw   r   c                 z    |j         t          j                 }|                     ||          \  }} || g|R i |S r   )rR   r   r   ru   rS   s        r   r    zJvpInterpreter.process   sI    #M$56yyv..fvd,T,,,V,,,r   c                     |                                  }|s;t          t          d          t                                                                S t                                                      S )NF)prev_fwd_grad_moderj   r   r|   r$   )r   r   r}   s     r   r$   zJvpInterpreter.lower   sU    !4466! 	I/66HHHww}}r   c                 4    | j                                         S r   )r   prevFwdGradModer#   s    r   r   z!JvpInterpreter.prev_fwd_grad_mode   s    z))+++r   c                     |                                  j        |                                 |                                 fS r   )r(   rc   r&   r   r#   s    r   r+   zJvpInterpreter.get_state   s-    

t/F/F/H/HIIr   )r5   r6   r7   r	   r   r   r   ru   r    r$   r   r+   r   r   s   @r   r   r      s        l    
 / / _/  - - -    , , ,J J J J J J Jr   r   c                   B    e Zd ZdefdZed             Zd Zd Zd Z	dS )FunctionalizeInterpreterrJ   c                 \    |                                 t          j        k    sJ || _        d S r   )r(   r   FunctionalizerM   rN   s     r   r   z!FunctionalizeInterpreter.__init__   s)    yy{{m99999r   c                 *    t          | j                  S r   )r   rM   r#   s    r   r   zFunctionalizeInterpreter._cptr   s    +DK888r   c                 H    |j         t          j                 } || g|R i |S r   )rR   r   r   rS   s        r   r    z FunctionalizeInterpreter.process   s2    #M$?@vd,T,,,V,,,r   c                 4    | j                                         S r   )r   functionalizeAddBackViewsr#   s    r   functionalize_add_back_viewsz5FunctionalizeInterpreter.functionalize_add_back_views   s    z33555r   c                 \    |                                  j        |                                 fS r   )r(   rc   r&   r#   s    r   r+   z"FunctionalizeInterpreter.get_state   s    

..r   N)
r5   r6   r7   r	   r   r   r   r    r   r+   r   r   r   r   r      sw        l     9 9 _9- - -6 6 6/ / / / /r   r   cinterpreterreturnc                 F   |                                  }|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   rn   rl   rL   rI   r   r   r   r   r`   )r   r(   s     r   coerce_cinterpreterr     s    




C
m   |,,,
m   |,,,
ml+++
m)))'555
QCQQ
R
RRr   c                  n    t           j        j                                        } | J t	          |           S r   )r;   r<   r=   r>   r   )interpreters    r   &retrieve_current_functorch_interpreterr     s2    (%<<>>K"""{+++r   c                  h    t           j        j                                        } | g S d | D             S )Nc                 ,    g | ]}t          |          S r   )r   ).0cis     r   
<listcomp>z7retrieve_all_functorch_interpreters.<locals>.<listcomp>  s!    222##222r   )r;   r<   r=   get_interpreter_stack)ciss    r   #retrieve_all_functorch_interpretersr     s6    
(

3
3
5
5C
{	22c2222r   states.c                 J   t           j        j                                        }|t	          |           dk    s|t	          |           dk    rdS t                      }t	          |          t	          |           k    o&t          d t          ||           D                       S )Nr   Fc              3   F   K   | ]\  }}|                     |          V  d S r   )r/   )r   r   r.   s      r   	<genexpr>z*compare_functorch_state.<locals>.<genexpr>)  sC       + +"+"eu+ + + + + +r   )r;   r<   r=   r>   lenr   allzip)r   peekr   s      r   compare_functorch_stater     s     85577DV))t/?CKKSTDTDTu
-
/
/Cs88s6{{" s + +/23/?/?+ + + ( ( r   c                     t                      }t          j        t          j        t          j        j        j        ||f          \  }}|                    | ||          S r   )	r   rr   rs   r;   rt   r<   r=   unwrap_if_deadr    )r   r   r   r   s       r   dispatch_functorchr   .  sT    8::K 'eh)84. LD& r4000r   )+re   abcr   r   	functoolsr   typingr   r;   torch.utils._pytreeutils_pytreerr   torch._C._functorchr   r   r	   r
   r   r   r   r   r   torch.autograd.forward_adr   r   contextmanagerr"   rB   rG   rI   rj   rl   r   r   r   r   r@   r   tupleboolr   r   r   r   r   <module>r      s       # # # # # # # # % % % % % %        $ $ $ $ $ $ $ $ $
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 < ; ; ; ; ;@    3   D ( ( ( 2 2 2 & & &B B B B B* B B BB   "F "F "F "F "F* "F "F "FJ"J "J "J "J "J) "J "J "JJ/ / / / /3 / / /(
Sl 
S7K 
S 
S 
S 
S,0D , , , ,3T2F-G 3 3 3 3DsCx$9 d     
1 
1 
1 
1 
1r   