
    %Vji                     8   d Z ddlZddlZddlZddlmZmZmZmZm	Z	 ddl
mZmZmZmZ ddlmZ ddlmZmZ erddlmZ ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        i
Z ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        i
Z!ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        i
Z"ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        i
Z#d	ed
e$fdZ%d	ed
e&fdZ' ej(        d           G d de                      Z) ej(        d           G d de                      Z* ej(        d           G d de                      Z+ ej(        d           G d de                      Z, ej(        d           G d de                      Z- ej(        d           G d de                      Z. ej(        d           G d de.                      Z/ ej(        d           G d de                      Z0 ej(        d           G d d e                      Z1 ej(        d           G d! d"e                      Z2 ej(        d           G d# d$e                      Z3 ej(        d           G d% d&e                      Z4 ej(        d           G d' d(e                      Z5 ej(        d           G d) d*e                      Z6 ej(        d           G d+ d,e                      Z7 ej(        d           G d- d.e0                      Z8 ej(        d           G d/ d0e0                      Z9 ej(        d           G d1 d2e                      Z: ej(        d           G d3 d4e                      Z; G d5 d6ej<                  Z= ej(        d           G d7 d8e                      Z> ej(        d           G d9 d:e                      Z? ej(        d           G d; d<e                      Z@ ej(        d           G d= d>e                      ZA ej(        d           G d? d@e                      ZB ej(        d           G dA dBe                      ZC G dC dDe          ZD ej(        d           G dE dFe                      ZE ej(        d           G dG dHe                      ZF ej(        d           G dI dJe                      ZG ej(        d           G dK dLe                      ZH ej(        d           G dM dNe                      ZI ej(        d           G dO dPe                      ZJ ej(        d           G dQ dReF                      ZK ej(        d           G dS dTeF                      ZL ej(        d           G dU dVe                      ZM ej(        d           G dW dXe                      ZN ej(        d           G dY dZe                      ZO ej(        d           G d[ d\e                      ZP ej(        d           G d] d^e                      ZQ ej(        d           G d_ d`eQ                      ZR ej(        d           G da dbeR                      ZS ej(        d           G dc ddeQ                      ZT ej(        d           G de dfe                      ZU ej(        d           G dg dhe                      ZV ej(        d           G di dje                      ZW ej(        d           G dk dle                      ZX ej(        d           G dm dne                      ZY ej(        d           G do dpe                      ZZ ej(        d           G dq dre                      Z[ ej(        d           G ds dte                      Z\ ej(        d           G du dve                      Z] ej(        d           G dw dxe                      Z^dydzd	ed{e$d
ee&         fd|Z_dydzd	ed{e$d
e$fd}Z`d	ed
e$fd~Zad	ed
ee&         fdZbd	ed
e$fdZcd	ed
e$fdZdd	eded
e$fdZeejf        d	ed
e$fd            Zgejf        d	ed
e$fd            Zhejf        d	ed
e$fd            Ziejf        d	ed
e$fd            Zjejf        d	ed
e$fd            Zkejf        d	ed
e$fd            Zlejf        d	ed
e$fd            ZmdS )a  
This module provides Source classes that track the origins of values in PyTorch Dynamo.
Sources represent where values come from (e.g. local variables, globals, attributes) and
are used for guard generation and code reconstruction during compilation.

The module includes specialized sources for:
- Local variables and synthetic locals
- Global variables and constants
- Object attributes and method calls
- NN module specialization (specialized vs unspecialized)
- Random values and tensor properties
- Default argument handling
- FSDP (Fully Sharded Data Parallel) modules

Sources play a key role in Dynamo's guard system by tracking value origins for
guard generation, and in code reconstruction by providing methods to rebuild
the code needed to recreate values.
    N)AnyCallableOptionalTYPE_CHECKINGUnion)ChainedSourceGuardGuardSourceSource   )utils)create_call_functioncreate_instruction)	PyCodegensourcereturnc                     t          | t                    rdS 	 |                                 t          j        k    rdS n# t
          $ r Y nw xY wdS NTF)
isinstanceConstantSourceguard_sourcer
   CONSTANTNotImplementedErrorr   s    N/root/voice-cloning/.venv/lib/python3.11/site-packages/torch/_dynamo/source.pyis_constant_sourcer   a   si    &.)) t  K$8884 9    5s   "> 
A
Ac                 N    	 |                                  S # t          $ r Y dS w xY w)Nz<unknown source>)namer   r   s    r   _get_source_debug_namer   m   s9    "{{}} " " "!!!"s    
$$T)frozenc                   |    e Zd ZU eed<   dZeed<   dZee	e                  ed<   dZ
eed<   dd
Zd	efdZd	efdZdS )LocalSource
local_nameFis_inputNdynamismis_derefed_cell_contentscodegenr   r   c                     | j         r|                    | j                   d S |                    |                    | j                             d S N)r&   
load_derefr#   append_outputcreate_loadselfr'   s     r   reconstructzLocalSource.reconstruct   sT    ( 	Ht/////!!'"5"5do"F"FGGGGG    c                     t           j        S r)   )r
   LOCALr.   s    r   r   zLocalSource.guard_source   s      r0   c                 2    dt          | j                   dS )NzL[])reprr#   r3   s    r   r   zLocalSource.name   s    ,D)),,,,r0   r'   r   r   N)__name__
__module____qualname__str__annotations__r$   boolr%   r   	frozensetr&   r/   r
   r   r    r0   r   r"   r"   t   s         OOO Hd *.Hhy~&---
 &+d***H H H H!k ! ! ! !-c - - - - - -r0   r"   c                   :    e Zd ZU eed<   d	dZdefdZdefdZdS )
SyntheticLocalSourcer#   r'   r   r   Nc                 `    |                     |                    | j                             d S r)   )r+   r,   r#   r-   s     r   r/   z SyntheticLocalSource.reconstruct   s,    g11$/BBCCCCCr0   c                     t           j        S r)   )r
   SYNTHETIC_LOCALr3   s    r   r   z!SyntheticLocalSource.guard_source   s    **r0   c                     d| j         dS )NzSYNTHETIC_LOCAL[r5   )r#   r3   s    r   r   zSyntheticLocalSource.name   s    6$/6666r0   r7   	r8   r9   r:   r;   r<   r/   r
   r   r   r?   r0   r   rA   rA      sm         OOOD D D D+k + + + +7c 7 7 7 7 7 7r0   rA   c                   :    e Zd ZU eed<   defdZd	dZdefdZ	dS )
RandomValueSourcerandom_call_indexr   c                     t           j        S r)   )r
   RANDOM_VALUEr3   s    r   r   zRandomValueSource.guard_source   s    ''r0   r'   r   Nc                    |                     |                    |j        j        j                             |                     |                    | j                             |                     t          d                     d S NBINARY_SUBSCR)r+   r,   txoutputrandom_values_varcreate_load_constrI   r   r-   s     r   r/   zRandomValueSource.reconstruct   st    g11'*2C2UVVWWWg778NOOPPP0AABBBBBr0   c                     d| j          S )Nrandom_value_)rI   r3   s    r   r   zRandomValueSource.name   s    7t5777r0   r7   )
r8   r9   r:   intr<   r
   r   r/   r;   r   r?   r0   r   rH   rH      sp         (k ( ( ( (C C C C
8c 8 8 8 8 8 8r0   rH   c                   :    e Zd ZU eed<   d	dZdefdZdefdZdS )
GlobalSourceglobal_namer'   r   r   Nc                 d    |                     |                    | j        d                     d S NTaddr+   create_load_globalrX   r-   s     r   r/   zGlobalSource.reconstruct   s2    g889It8TTUUUUUr0   c                     t           j        S r)   r
   GLOBALr3   s    r   r   zGlobalSource.guard_source       !!r0   c                 2    dt          | j                   dS )NG[r5   r6   rX   r3   s    r   r   zGlobalSource.name   s    -D)**----r0   r7   rF   r?   r0   r   rW   rW      sp         V V V V"k " " " ".c . . . . . .r0   rW   c                   :    e Zd ZU eed<   d	dZdefdZdefdZdS )
GlobalWeakRefSourcerX   r'   r   r   Nc                                            fd                               t          dd                     d S )Nc                  b                                               j        d                    S rZ   r]   r'   r.   s   r   <lambda>z1GlobalWeakRefSource.reconstruct.<locals>.<lambda>   s0    G))**4+;*FF  r0   r   Fadd_push_nullextend_outputr   r-   s   ``r   r/   zGlobalWeakRefSource.reconstruct   s\        	
 	
 	

 	21e<<=====r0   c                     t           j        S r)   r`   r3   s    r   r   z GlobalWeakRefSource.guard_source   rb   r0   c                 2    dt          | j                   dS )Nrd   z]()re   r3   s    r   r   zGlobalWeakRefSource.name   s    /D)**////r0   r7   rF   r?   r0   r   rg   rg      sl         > > > >"k " " " "0c 0 0 0 0 0 0r0   rg   c                   .    e Zd ZddZdefdZdefdZdS )	WeakRefCallSourcer'   r   r   Nc                                            fd                               t          dd                     d S )Nc                  $      j                   S r)   baserj   s   r   rk   z/WeakRefCallSource.reconstruct.<locals>.<lambda>   s    ggdi&8&8 r0   r   Frl   r-   s   ``r   r/   zWeakRefCallSource.reconstruct   sJ    8888899921e<<=====r0   c                 4    | j                                         S r)   rv   r   r3   s    r   r   zWeakRefCallSource.guard_source       y%%'''r0   c                 :    | j                                          dS )Nz()rv   r   r3   s    r   r   zWeakRefCallSource.name   s    )..""&&&&r0   r7   r8   r9   r:   r/   r
   r   r;   r   r?   r0   r   rr   rr      s^        > > > >(k ( ( ( ('c ' ' ' ' ' 'r0   rr   c                       e Zd ZdS )CallFunctionNoArgsSourceNr8   r9   r:   r?   r0   r   r~   r~              Dr0   r~   c                   B    e Zd ZU eed<   d
dZddZdefdZdefd	Z	dS )
AttrSourcememberr   Nc                 J   | j         s
J d            d| j        v r| j                            d          }t                              | dt          | j         d                    |d d                                        t                              | d|d                    d S d S Nz9Can't construct an AttrSource without a valid base source.rv   r   rv   r   splitobject__setattr__r   joinr.   member_partss     r   __post_init__zAttrSource.__post_init__       yUUUUUy$+;,,S11LfjCHH\#2#=N4O4OPP   tX|B/?@@@@@ r0   r'   r   c                      || j                    |                    |                    | j                             d S r)   rv   rn   create_load_attrsr   r-   s     r   r/   zAttrSource.reconstruct   >    	g77DDEEEEEr0   c                 4    | j                                         S r)   rx   r3   s    r   r   zAttrSource.guard_source   ry   r0   c                     | j                                         s%d| j                                         d| j         dS | j                                         d| j          S )Nzgetattr(, )r   )r   isidentifierrv   r   r3   s    r   r   zAttrSource.name   sb    {'')) 	CBdinn..BB$+BBBB)..""22T[222r0   r   Nr7   
r8   r9   r:   r;   r<   r   r/   r
   r   r   r?   r0   r   r   r      s         KKKA A A AF F F F(k ( ( ( (3c 3 3 3 3 3 3r0   r   c                   B    e Zd ZU eed<   d
dZddZdefdZdefd	Z	dS )GenericAttrSourcer   r   Nc                 J   | j         s
J d            d| j        v r| j                            d          }t                              | dt          | j         d                    |d d                                        t                              | d|d                    d S d S r   r   r   s     r   r   zGenericAttrSource.__post_init__   r   r0   r'   r   c                      || j                    |                    |                    | j                             d S r)   r   r-   s     r   r/   zGenericAttrSource.reconstruct	  r   r0   c                 4    | j                                         S r)   rx   r3   s    r   r   zGenericAttrSource.guard_source  ry   r0   c                 L    d| j                                          d| j        dS )Nzobject.__getattribute__(r   r   rv   r   r   r3   s    r   r   zGenericAttrSource.name  s)    N$)..*:*:NNdkNNNNr0   r   r7   r   r?   r0   r   r   r      s         KKKA A A AF F F F(k ( ( ( (Oc O O O O O Or0   r   c                   .    e Zd ZddZdefdZdefdZdS )	TypeDictSourcer'   r   r   Nc                 v     || j                    |                    |                    d                     d S )N__dict__rv   rn   r   r-   s     r   r/   zTypeDictSource.reconstruct  <    	g77
CCDDDDDr0   c                 4    | j                                         S r)   rx   r3   s    r   r   zTypeDictSource.guard_source  ry   r0   c                 <    d| j                                          dS )Nzdict(z
.__dict__)r{   r3   s    r   r   zTypeDictSource.name  s!    
 4ty~~''3333r0   r7   r|   r?   r0   r   r   r     sb        E E E E(k ( ( ( (4c 4 4 4 4 4 4r0   r   c                   .    e Zd ZddZdefdZdefdZdS )	TypeMROSourcer'   r   r   Nc                 v     || j                    |                    |                    d                     d S )N__mro__r   r-   s     r   r/   zTypeMROSource.reconstruct)  <    	g77	BBCCCCCr0   c                 4    | j                                         S r)   rx   r3   s    r   r   zTypeMROSource.guard_source-  ry   r0   c                 :    | j                                          dS )Nz.__mro__r{   r3   s    r   r   zTypeMROSource.name0  s    ).."",,,,r0   r7   r|   r?   r0   r   r   r   '  sb        D D D D(k ( ( ( (-c - - - - - -r0   r   c                   &    e Zd ZU dZeed<   ddZdS )	LocalCellSourcez
    Conceptually, this class is `LocalSource` for cell objects implicitly
    generated by Python (e.g., captured variables).
    r#   r'   r   r   Nc                 `    |                     |                    | j                             d S r)   )r+   create_load_closurer#   r-   s     r   r/   zLocalCellSource.reconstruct=  s.     	g99$/JJKKKKKr0   r7   )r8   r9   r:   __doc__r;   r<   r/   r?   r0   r   r   r   4  sE          
 OOOL L L L L Lr0   r   c                   .    e Zd ZddZdefdZdefdZdS )	
CodeSourcer'   r   r   Nc                 v     || j                    |                    |                    d                     d S )N__code__r   r-   s     r   r/   zCodeSource.reconstructJ  r   r0   c                 4    | j                                         S r)   rx   r3   s    r   r   zCodeSource.guard_sourceN  ry   r0   c                 :    | j                                          dS )Nz	.__code__r{   r3   s    r   r   zCodeSource.nameQ  s    )..""----r0   r7   r|   r?   r0   r   r   r   H  sb        E E E E(k ( ( ( (.c . . . . . .r0   r   c                   .    e Zd ZddZdefdZdefdZdS )	ClosureSourcer'   r   r   Nc                 v     || j                    |                    |                    d                     d S )N__closure__r   r-   s     r   r/   zClosureSource.reconstructX  s<    	g77FFGGGGGr0   c                 4    | j                                         S r)   rx   r3   s    r   r   zClosureSource.guard_source\  ry   r0   c                 :    | j                                          dS )Nz.__closure__r{   r3   s    r   r   zClosureSource.name_  s    )..""0000r0   r7   r|   r?   r0   r   r   r   V  sb        H H H H(k ( ( ( (1c 1 1 1 1 1 1r0   r   c                   >    e Zd ZU dZeed<   d
dZdefdZdefd	Z	dS )
GradSourcegradr   r'   r   r   Nc                      || j                    |                    |                    | j                             d S r)   r   r-   s     r   r/   zGradSource.reconstructk  r   r0   c                 4    | j                                         S r)   rx   r3   s    r   r   zGradSource.guard_sourceo  ry   r0   c                 H    | j                                          d| j         S )Nr   r   r3   s    r   r   zGradSource.namer  s$    )..""22T[222r0   r7   )
r8   r9   r:   r   r;   r<   r/   r
   r   r   r?   r0   r   r   r   g  st         FCF F F F(k ( ( ( (3c 3 3 3 3 3 3r0   r   c                       e Zd ZdefdZdS )ParamBufferSourcer   c                 J    t           | j                                                 S r)   #_GUARD_SOURCE_SPECIALIZED_NN_MODULErv   r   r3   s    r   r   zParamBufferSource.guard_sourcex      2493I3I3K3KLLr0   Nr8   r9   r:   r
   r   r?   r0   r   r   r   v  s6        Mk M M M M M Mr0   r   c                       e Zd ZdS )UnspecializedParamBufferSourceNr   r?   r0   r   r   r   }  r   r0   r   c                   n    e Zd ZU dZee         ed<   defdZdefdZ	de
def         defdZdefd	ZdS )
EphemeralSourceNdescr   c                     t           j        S r)   )r
   	EPHEMERALr3   s    r   r   zEphemeralSource.guard_source      $$r0   c                 0    d| j         
d| j         z   nd dS )Nz
<ephemeralz:  >)r   r3   s    r   r   zEphemeralSource.name  s&    P	0ED49,,2PPPPr0   fn.c                     t           r)   r   r.   r   s     r   
make_guardzEphemeralSource.make_guard      !!r0   c                     dS NTr?   r3   s    r   is_ephemeralzEphemeralSource.is_ephemeral      tr0   )r8   r9   r:   r   r   r;   r<   r
   r   r   r   r   r	   r   r=   r   r?   r0   r   r   r     s         D(3-%k % % % %Qc Q Q Q Q"Xc3h/ "E " " " "d      r0   r   c                   .    e Zd ZddZdefdZdefdZdS )	SkipGuardSourcer'   r   r   Nc                 :    | j                             |           d S r)   )rv   r/   r-   s     r   r/   zSkipGuardSource.reconstruct  s    	g&&&&&r0   c                 4    | j                                         S r)   rx   r3   s    r   r   zSkipGuardSource.guard_source  ry   r0   c                 4    | j                                         S r)   r{   r3   s    r   r   zSkipGuardSource.name      y~~r0   r7   r|   r?   r0   r   r   r     s^        ' ' ' '(k ( ( ( ( c            r0   r   c                   &    e Zd ZdZdZdZdefdZdS )TensorPropertyr   r      r   c                     | t           j        u rdS | t           j        u rdS | t           j        u rdS t	          d|            )Nsizestridestorage_offset
unhandled )r   SIZESTRIDESTORAGE_OFFSETAssertionErrorr3   s    r   method_namezTensorProperty.method_name  sS    >&&&6^***8^222## !4d!4!4555r0   N)r8   r9   r:   r   r   r   r;   r   r?   r0   r   r   r     s>        DFN6S 6 6 6 6 6 6r0   r   c                   \    e Zd ZU eed<   dZee         ed<   ddZddZ	de
fd	Zdefd
ZdS )TensorPropertySourcepropNidxr   c                 f    | j         J | j        t          j        u r| j        J d S | j        J d S r)   )rv   r   r   r   r   r3   s    r   r   z"TensorPropertySource.__post_init__  sH    y$$$95558#####8'''''r0   r'   r   c                                           fd             j                    j        -                                         j                                                 t           j        dndd                     d S )Nc                  x                          t          j        dj                                                   S )Ncall_)load_import_fromr   r8   r   r   rj   s   r   rk   z2TensorPropertySource.reconstruct.<locals>.<lambda>  s5    G,, A	(=(=(?(? A A  r0   r   r   F)rm   rv   r   r+   rR   rn   r   r-   s   ``r   r/   z TensorPropertySource.reconstruct  s        	
 	
 	

 		8!!'";";DH"E"EFFF dh&:5II	
 	
 	
 	
 	
r0   c                 4    | j                                         S r)   rx   r3   s    r   r   z!TensorPropertySource.guard_source  ry   r0   c                 |   | j         t          j        u r$| j                                         d| j         dS | j         t          j        u r$| j                                         d| j         dS | j         t          j        u r%| j        J | j                                         dS t          d| j                    )Nz.size()[r5   z
.stride()[z.storage_offset()r   )	r   r   r   rv   r   r   r   r   r   r3   s    r   r   zTensorPropertySource.name  s    9+++inn&&;;;;;;Y.///inn&&==$(====Y.7778###inn&&9999 !9di!9!9:::r0   r   r7   )r8   r9   r:   r   r<   r   r   rU   r   r/   r
   r   r;   r   r?   r0   r   r   r     s         
C#( ( ( (
 
 
 
(k ( ( ( (	;c 	; 	; 	; 	; 	; 	;r0   r   c                   B    e Zd ZU eed<   d
dZddZdefdZde	fd	Z
dS )IndexedSourcer   r   Nc                     | j         J d S r)   ru   r3   s    r   r   zIndexedSource.__post_init__      y$$$$$r0   r'   r   c                     t           r)   r   r-   s     r   r/   zIndexedSource.reconstruct  r   r0   c                 4    | j                                         S r)   rx   r3   s    r   r   zIndexedSource.guard_source  ry   r0   c                 L    d| j          d| j                                         dS )N(r   r   )r   rv   r   r3   s    r   r   zIndexedSource.name  s)    24822ty~~//2222r0   r   r7   )r8   r9   r:   rU   r<   r   r/   r
   r   r;   r   r?   r0   r   r  r    s}         	HHH% % % %" " " "(k ( ( ( (3c 3 3 3 3 3 3r0   r  c                   6    e Zd Zd	dZd
dZdefdZdefdZdS )NegateSourcer   Nc                     | j         J d S r)   ru   r3   s    r   r   zNegateSource.__post_init__  r  r0   r'   r   c                     t           r)   r   r-   s     r   r/   zNegateSource.reconstruct  r   r0   c                 4    | j                                         S r)   rx   r3   s    r   r   zNegateSource.guard_source  ry   r0   c                 :    | j                                          dS )Nz
.__neg__()r{   r3   s    r   r   zNegateSource.name  s    )..""....r0   r   r7   	r8   r9   r:   r   r/   r
   r   r;   r   r?   r0   r   r  r    sr        % % % %" " " "(k ( ( ( (/c / / / / / /r0   r  c                   6    e Zd Zd	dZd
dZdefdZdefdZdS )ConvertIntSourcer   Nc                     | j         J d S r)   ru   r3   s    r   r   zConvertIntSource.__post_init__  r  r0   r'   r   c                 &     || j                    d S r)   ru   r-   s     r   r/   zConvertIntSource.reconstruct      	r0   c                 4    | j                                         S r)   rx   r3   s    r   r   zConvertIntSource.guard_source
  ry   r0   c                 <    d| j                                          dS )Nz!cast_symbool_to_symint_guardless(r   r{   r3   s    r   r   zConvertIntSource.name  s    F49>>3C3CFFFFr0   r   r7   r  r?   r0   r   r  r    sy        % % % %   (k ( ( ( (Gc G G G G G Gr0   r  c                   6    e Zd Zd	dZd
dZdefdZdefdZdS )FlattenScriptObjectSourcer   Nc                     | j         J d S r)   ru   r3   s    r   r   z'FlattenScriptObjectSource.__post_init__  r  r0   r'   r   c                 &     || j                    d S r)   ru   r-   s     r   r/   z%FlattenScriptObjectSource.reconstruct  r  r0   c                 4    | j                                         S r)   rx   r3   s    r   r   z&FlattenScriptObjectSource.guard_source  ry   r0   c                 :    | j                                          dS )Nz.__obj_flatten__()r{   r3   s    r   r   zFlattenScriptObjectSource.name  s    )..""6666r0   r   r7   r  r?   r0   r   r  r    sr        % % % %   (k ( ( ( (7c 7 7 7 7 7 7r0   r  c                   6    e Zd Zd	dZd
dZdefdZdefdZdS )ScriptObjectQualifiedNameSourcer   Nc                     | j         J d S r)   ru   r3   s    r   r   z-ScriptObjectQualifiedNameSource.__post_init__"  r  r0   r'   r   c                 &     || j                    d S r)   ru   r-   s     r   r/   z+ScriptObjectQualifiedNameSource.reconstruct%  r  r0   c                 4    | j                                         S r)   rx   r3   s    r   r   z,ScriptObjectQualifiedNameSource.guard_source(  ry   r0   c                 :    | j                                          dS )Nz._type().qualified_name()r{   r3   s    r   r   z$ScriptObjectQualifiedNameSource.name+  s    )..""====r0   r   r7   r  r?   r0   r   r   r      sr        % % % %   (k ( ( ( (>c > > > > > >r0   r   c                   .    e Zd ZddZdefdZdefdZdS )	AttrProxySourcer'   r   r   Nc                 &     || j                    d S r)   ru   r-   s     r   r/   zAttrProxySource.reconstruct0  r  r0   c                 4    | j                                         S r)   rx   r3   s    r   r   zAttrProxySource.guard_source3  ry   r0   c                 :    | j                                          dS )Nz.get_base()r{   r3   s    r   r   zAttrProxySource.name6  s    )..""////r0   r7   r|   r?   r0   r   r&  r&  /  s^           (k ( ( ( (0c 0 0 0 0 0 0r0   r&  c                       e Zd ZU eeef         ed<   dZeed<    e	j
        ddd          Z
eed<    e	j
        ddd          Zeed<   dd	ZddZdefdZdefdZdS )DefaultsSourceidx_keyFis_kw)initr6   comparefield_namer   Nc           
      2   | j         s
J d            | j        rt          | j        t                    sJ t
                              | dd           t
                              | d| j                                          d| j         d| j         d           d S t          | j        t                    sJ t
                              | dd           t
                              | d| j                                          d| j         d	| j         d
           d S )Nz]Base must be a valid source in order to properly track and guard this Defaults to its origin.r0  __kwdefaults__r1  r   z['z']__defaults__[r5   )
rv   r-  r   r,  r;   r   r   r   r0  rU   r3   s    r   r   zDefaultsSource.__post_init__A  s3   y 	
 	
k	
 	
y : 	dlC00000tW.>???g$).."2"2SSTZSS4<SSS     dlC00000tWn===g$).."2"2QQTZQQ$,QQQ    r0   r'   r   c                     || j                    |                    |                    | j                             |                    |                    | j                             |                    t          d                     d S rM   )rv   rn   r   r0  r+   rR   r,  r   r-   s     r   r/   zDefaultsSource.reconstructR  s    	g77
CCDDDg77EEFFF0AABBBBBr0   c                 4    | j                                         S r)   rx   r3   s    r   r   zDefaultsSource.guard_sourceX  ry   r0   c                     | j         S r)   )r1  r3   s    r   r   zDefaultsSource.name[  s
    zr0   r   r7   )r8   r9   r:   r   rU   r;   r<   r-  r=   dataclassesr0  r1  r   r/   r
   r   r   r?   r0   r   r+  r+  :  s         38_E4""E5IIIE3III""E5IIIE3III   "C C C C(k ( ( ( (c      r0   r+  c                   f     e Zd ZU eed<   dZeed<   d fdZdd	Zde	fd
Z
defdZdefdZ xZS )GetItemSourceindexFindex_is_slicer   Nc                    | j         J t          | j        t                    r]t	                                          d| j                                                   t	                                          dd           d S d S )Nr<  r=  T)rv   r   r<  slicesuperr   
__reduce__)r.   	__class__s    r   r   zGetItemSource.__post_init__d  sx    y$$$dj%(( 	8GG)>)>)@)@AAAGG 0$77777	8 	8r0   r'   r   c                 H    || j                    | j        r;|                    |                    |                                                      n-|                    |                    | j                             |                    t          d                     d S rM   )rv   r=  r+   rR   unpack_slicer<  r   r-   s     r   r/   zGetItemSource.reconstructk  s    	 	I!!'";";D<M<M<O<O"P"PQQQQ!!'";";DJ"G"GHHH0AABBBBBr0   c                 4    | j                                         S r)   rx   r3   s    r   r   zGetItemSource.guard_sources  ry   r0   c                 2    | j         sJ | j        \  }} || S r)   )r=  r<  )r.   slice_class
slice_argss      r   rD  zGetItemSource.unpack_slicev  s*    """""&*Z{J''r0   c                     t          | j        t                    rJ | j        r1| j                                         d|                                 dS | j                                         d| j        dS Nr5  r5   )r   r<  r   r=  rv   r   rD  r3   s    r   r   zGetItemSource.name{  s{     dj&11111 	9inn&&AA):):)<)<AAAAinn&&888888r0   r   r7   )r8   r9   r:   r   r<   r=  r=   r   r/   r
   r   r?  rD  r;   r   __classcell__rB  s   @r   r;  r;  _  s         JJJ ND   8 8 8 8 8 8C C C C(k ( ( ( ((e ( ( ( (
9c 9 9 9 9 9 9 9 9r0   r;  c                   F    e Zd ZU eed<   defdZd
dZdefdZ	de
fd	ZdS )ConstDictKeySourcer<  r   c                 4    | j                                         S r)   rx   r3   s    r   r   zConstDictKeySource.guard_source  ry   r0   r'   r   Nc                                          fd            | j                                                           | j                                                 t          dd                     d S )Nc                  D                          t          j        d          S )Ndict_keys_getitemr   r   r8   r'   s   r   rk   z0ConstDictKeySource.reconstruct.<locals>.<lambda>  s    G,,U^=PQQ r0   r   Frm   rv   r+   rR   r<  rn   r   r-   s    `r   r/   zConstDictKeySource.reconstruct  s    QQQQ	
 	
 	
 		g77
CCDDD21e<<=====r0   c                 L    d| j                                          d| j        dS )Nzlist(dict.keys(z))[r5   rv   r   r<  r3   s    r   r   zConstDictKeySource.name  s)    E!1!1EEdjEEEEr0   c                     dS r   r?   r3   s    r   is_dict_keyzConstDictKeySource.is_dict_key  r   r0   r7   )r8   r9   r:   r   r<   r
   r   r/   r;   r   r=   rY  r?   r0   r   rN  rN    s         JJJ(k ( ( ( (> > > >Fc F F F FT      r0   rN  c                   N    e Zd ZU eed<   ddZdefdZddZde	fd	Z
defd
ZdS )NonSerializableSetGetItemSourcer<  r   Nc                 J    ddl m} |                    | j                  sJ d S Nr   )ConstantVariable)	variablesr^  
is_literalr<  r.   r^  s     r   r   z-NonSerializableSetGetItemSource.__post_init__  s6    //////**4:6666666r0   c                 4    | j                                         S r)   rx   r3   s    r   r   z,NonSerializableSetGetItemSource.guard_source  ry   r0   r'   r   c                                          fd            | j                                                           | j                                                 t          dd                     d S )Nc                  D                          t          j        d          S )Nset_getitemrS  rT  s   r   rk   z=NonSerializableSetGetItemSource.reconstruct.<locals>.<lambda>  s    G,,U^]KK r0   r   FrU  r-   s    `r   r/   z+NonSerializableSetGetItemSource.reconstruct  s    KKKK	
 	
 	
 		g77
CCDDD21e<<=====r0   c                 L    d| j                                          d| j        dS )Nzlist(z)[r5   rW  r3   s    r   r   z$NonSerializableSetGetItemSource.name  s)    :ty~~''::4:::::r0   c                     dS )NFr?   r3   s    r   rY  z+NonSerializableSetGetItemSource.is_dict_key  s    ur0   r   r7   )r8   r9   r:   rU   r<   r   r
   r   r/   r;   r   r=   rY  r?   r0   r   r[  r[    s         JJJ7 7 7 7
(k ( ( ( (> > > >;c ; ; ; ;T      r0   r[  c                   B    e Zd ZU eed<   d
dZdefdZddZde	fd	Z
dS )DictGetItemSourcer<  r   Nc                     ddl m} t          | j        t                    s|                    | j                  sJ d S d S r]  r_  r^  r   r<  rN  r`  ra  s     r   r   zDictGetItemSource.__post_init__  d    //////J*
 
 	5((44	5 	5 5 	5 	5 	5 	5r0   c                 4    | j                                         S r)   rx   r3   s    r   r   zDictGetItemSource.guard_source  ry   r0   r'   r   c                     || j                    t          | j        t                    r || j                   n-|                    |                    | j                             |                    t          d                     d S rM   )rv   r   r<  r   r+   rR   r   r-   s     r   r/   zDictGetItemSource.reconstruct  s    	 dj&)) 	IGDJ!!'";";DJ"G"GHHH0AABBBBBr0   c                     t          | j        t                    r6| j                                         d| j                                         dS | j                                         d| j        dS rJ  r   r<  rN  rv   r   r3   s    r   r   zDictGetItemSource.name  sk    dj"455 	9inn&&==):):====inn&&888888r0   r   r7   r8   r9   r:   r   r<   r   r
   r   r/   r;   r   r?   r0   r   ri  ri    s         
 JJJ5 5 5 5(k ( ( ( (	C 	C 	C 	C9c 9 9 9 9 9 9r0   ri  c                   B    e Zd ZU eed<   d
dZdefdZddZde	fd	Z
dS )DictSubclassGetItemSourcer<  r   Nc                     ddl m} t          | j        t                    s|                    | j                  sJ d S d S r]  rk  ra  s     r   r   z'DictSubclassGetItemSource.__post_init__  rl  r0   c                 4    | j                                         S r)   rx   r3   s    r   r   z&DictSubclassGetItemSource.guard_source  ry   r0   r'   r   c                 N                        fd            | j                   t          | j        t                    r | j                   n-                                        | j                                                 t          dd                     d S )Nc                  D                          t          j        d          S )Ndict_getitemrS  rT  s   r   rk   z7DictSubclassGetItemSource.reconstruct.<locals>.<lambda>      G,,U^^LL r0   r   F)	rm   rv   r   r<  r   r+   rR   rn   r   r-   s    `r   r/   z%DictSubclassGetItemSource.reconstruct  s     	LLLL	
 	
 	

 		 dj&)) 	IGDJ!!'";";DJ"G"GHHH21e<<=====r0   c                     t          | j        t                    r7d| j                                         d| j                                         dS | j                                         d| j        dS )Nzdict.__getitem__(r   r   r5  r5   rp  r3   s    r   r   zDictSubclassGetItemSource.name  sm    dj"455 	9Oty~~'7'7OO4:??;L;LOOOOinn&&888888r0   r   r7   rq  r?   r0   r   rs  rs    s         
 JJJ5 5 5 5(k ( ( ( (> > > >&9c 9 9 9 9 9 9r0   rs  c                   &    e Zd ZdZddZdefdZdS )	ListGetItemSourcezY
    Same as GetItemSource with reconstruct and name overridden to be list specific.
    r'   r   r   Nc                 $                        fd            | j                   | j        rt          d                                                  | j                                                 t          dd                     d S )Nc                  D                          t          j        d          S )Nlist_getitemrS  rT  s   r   rk   z/ListGetItemSource.reconstruct.<locals>.<lambda>  ry  r0   >List[slice] is a temporary object and should not have a sourcer   F)	rm   rv   r=  RuntimeErrorr+   rR   r<  rn   r   r-   s    `r   r/   zListGetItemSource.reconstruct  s    
 	LLLL	
 	
 	

 		  	IP   !!'";";DJ"G"GHHH21e<<=====r0   c                     t          | j        t                    rJ | j        rt	          d          d| j                                         d| j        dS )Nr  zlist.__getitem__(r   r   )r   r<  r   r=  r  rv   r   r3   s    r   r   zListGetItemSource.name&  sg     dj&11111 	KP   Kty~~'7'7JJ4:JJJJr0   r7   )r8   r9   r:   r   r/   r;   r   r?   r0   r   r|  r|  
  sT         > > > >,
Kc 
K 
K 
K 
K 
K 
Kr0   r|  c                   "    e Zd ZddZdefdZdS )TupleIteratorGetItemSourcer'   r   r   Nc                                          fd            | j                                                           | j                                                 t          dd                     d S )Nc                  D                          t          j        d          S )Ntuple_iterator_getitemrS  rT  s   r   rk   z8TupleIteratorGetItemSource.reconstruct.<locals>.<lambda>7  s    G,,U^=UVV r0   r   FrU  r-   s    `r   r/   z&TupleIteratorGetItemSource.reconstruct5  s    VVVV	
 	
 	
 		g77
CCDDD21e<<=====r0   c                 L    d| j                                          d| j        dS )Nz___tuple_iterator_getitem(r   r   rW  r3   s    r   r   zTupleIteratorGetItemSource.name=  s)    ODINN,<,<OO
OOOOr0   r7   )r8   r9   r:   r/   r;   r   r?   r0   r   r  r  3  sJ        > > > >Pc P P P P P Pr0   r  c                   .    e Zd ZddZdefdZdefdZdS )	NamedTupleFieldsSourcer'   r   r   Nc                 v     || j                    |                    |                    d                     d S )N_fieldsr   r-   s     r   r/   z"NamedTupleFieldsSource.reconstructC  r   r0   c                 4    | j                                         S r)   rx   r3   s    r   r   z#NamedTupleFieldsSource.guard_sourceG  ry   r0   c                 <    d| j                                          dS )Nz___namedtuple_fields(r   r{   r3   s    r   r   zNamedTupleFieldsSource.nameJ  s    :ty~~'7'7::::r0   r7   r|   r?   r0   r   r  r  A  sb        D D D D(k ( ( ( (;c ; ; ; ; ; ;r0   r  c                   .    e Zd ZddZdefdZdefdZdS )	DataclassFieldsSourcer'   r   r   Nc                                          fd            | j                                       t          dd                     d S )Nc                  D                          t          j        d          S )Ndataclass_fieldsrS  rT  s   r   rk   z3DataclassFieldsSource.reconstruct.<locals>.<lambda>R  s    G,,U^=OPP r0   r   Frm   rv   rn   r   r-   s    `r   r/   z!DataclassFieldsSource.reconstructP  s`    PPPP	
 	
 	
 		21e<<=====r0   c                 4    | j                                         S r)   rx   r3   s    r   r   z"DataclassFieldsSource.guard_sourceW  ry   r0   c                 <    d| j                                          dS )Nz___dataclass_fields(r   r{   r3   s    r   r   zDataclassFieldsSource.nameZ  s    9dinn&6&69999r0   r7   r|   r?   r0   r   r  r  N  s^        > > > >(k ( ( ( (:c : : : : : :r0   r  c                   6    e Zd Zd	dZd
dZdefdZdefdZdS )
TypeSourcer   Nc                     | j         J d S r)   ru   r3   s    r   r   zTypeSource.__post_init__`  r  r0   r'   r   c                                          fd            | j                                       t          dd                     d S )Nc                  0                          dd          S )Nbuiltinstyper   rT  s   r   rk   z(TypeSource.reconstruct.<locals>.<lambda>d  s    g&>&>z6&R&R r0   r   Fr  r-   s    `r   r/   zTypeSource.reconstructc  sX    RRRRSSS	21e<<=====r0   c                 4    | j                                         S r)   rx   r3   s    r   r   zTypeSource.guard_sourceh  ry   r0   c                 <    d| j                                          dS )Nztype(r   r{   r3   s    r   r   zTypeSource.namek  s    *ty~~''****r0   r   r7   r  r?   r0   r   r  r  ^  sr        % % % %> > > >
(k ( ( ( (+c + + + + + +r0   r  c                   .    e Zd ZddZdefdZdefdZdS )	OptimizerSourcer'   r   r   Nc                 &     || j                    d S r)   ru   r-   s     r   r/   zOptimizerSource.reconstructq  r  r0   c                 4    | j                                         S r)   rx   r3   s    r   r   zOptimizerSource.guard_sourcet  ry   r0   c                 4    | j                                         S r)   r{   r3   s    r   r   zOptimizerSource.namew  r   r0   r7   r|   r?   r0   r   r  r  o  s^           (k ( ( ( ( c            r0   r  c                   .    e Zd ZddZdefdZdefdZdS )	NNModuleSourcer'   r   r   Nc                 &     || j                    d S r)   ru   r-   s     r   r/   zNNModuleSource.reconstruct}  r  r0   c                 J    t           | j                                                 S r)   r   r3   s    r   r   zNNModuleSource.guard_source  r   r0   c                 4    | j                                         S r)   r{   r3   s    r   r   zNNModuleSource.name  r   r0   r7   r|   r?   r0   r   r  r  {  sc           Mk M M M M c            r0   r  c                       e Zd ZdefdZdS )UnspecializedNNModuleSourcer   c                 J    t           | j                                                 S r)   )%_GUARD_SOURCE_UNSPECIALIZED_NN_MODULErv   r   r3   s    r   r   z(UnspecializedNNModuleSource.guard_source  s    4TY5K5K5M5MNNr0   Nr   r?   r0   r   r  r    s6        Ok O O O O O Or0   r  c                       e Zd ZdefdZdS )"UnspecializedBuiltinNNModuleSourcer   c                 J    t           | j                                                 S r)   )-_GUARD_SOURCE_UNSPECIALIZED_BUILTIN_NN_MODULErv   r   r3   s    r   r   z/UnspecializedBuiltinNNModuleSource.guard_source  s    <TY=S=S=U=UVVr0   Nr   r?   r0   r   r  r    s6        Wk W W W W W Wr0   r  c                       e Zd ZdefdZdS )FSDPNNModuleSourcer   c                 J    t           | j                                                 S r)   )_GUARD_SOURCE_FSDP_MODULErv   r   r3   s    r   r   zFSDPNNModuleSource.guard_source  s    ()?)?)A)ABBr0   Nr   r?   r0   r   r  r    s6        Ck C C C C C Cr0   r  c                   &    e Zd ZdefdZdefdZdS )GlobalStateSourcer   c                     dS Nr   r?   r3   s    r   r   zGlobalStateSource.name      rr0   c                     t           j        S r)   r`   r3   s    r   r   zGlobalStateSource.guard_source  rb   r0   Nr8   r9   r:   r;   r   r
   r   r?   r0   r   r  r    sJ        c    "k " " " " " "r0   r  c                   P     e Zd ZdZdededdf fdZdefdZdd
Zde	fdZ
 xZS )TorchSourcezPoints to the actual `torch` module - used instead of GlobalSource
    in case the user has overridden `torch` in their local namespaceargskwargsr   Nc                      t                      j        |i | ddlm}m}  ||                     |j                             d S )Nr   )GuardBuilderinstall_guard)r@  __init__guardsr  r  r   ID_MATCH)r.   r  r  r  r  rB  s        r   r  zTorchSource.__init__  s\    $)&)))77777777dool&;<<=====r0   c                     dS )Nz__import__('torch')r?   r3   s    r   r   zTorchSource.name  s    $$r0   r'   r   c                     |                     |                    d          t          dd          |                    d          g           d S )Nr   BUILD_TUPLE)argtorch)rn   rR   r   create_import_namer-   s     r   r/   zTorchSource.reconstruct  s[    ))!,,"=a888**733	
 	
 	
 	
 	
r0   c                     t           j        S r)   r`   r3   s    r   r   zTorchSource.guard_source  rb   r0   r7   )r8   r9   r:   r   r   r  r;   r   r/   r
   r   rK  rL  s   @r   r  r    s        H H>c >S >T > > > > > >%c % % % %
 
 
 
"k " " " " " " " "r0   r  c                   F    e Zd ZU eed<   defdZdefdZd
dZde	fd	Z
dS )TorchFunctionModeStackSourceindr   c                 2    d|                                   dS )Nz$___get_torch_function_mode_stack_at(r   )
_get_indexr3   s    r   r   z!TorchFunctionModeStackSource.name  s    Jdoo6G6GJJJJr0   c                 B    ddl m} |                    | j                  S )Nr   )TorchFunctionModeStackVariable)variables.torch_functionr  get_mode_indexr  )r.   r  s     r   r  z'TorchFunctionModeStackSource._get_index  s*    LLLLLL-<<TXFFFr0   r'   r   Nc                                          fd                                                   |                                           g                               t	          dd                     d S )Nc                  D                          t          j        d          S )N get_torch_function_mode_stack_atrS  rT  s   r   rk   z:TorchFunctionModeStackSource.reconstruct.<locals>.<lambda>  s    G,, B  r0   r   F)rm   rn   rR   r  r   r-   s    `r   r/   z(TorchFunctionModeStackSource.reconstruct  s       	
 	
 	

 	w889J9JKKLMMM21e<<=====r0   c                     t           j        S r)   r`   r3   s    r   r   z)TorchFunctionModeStackSource.guard_source  rb   r0   r7   )r8   r9   r:   rU   r<   r;   r   r  r/   r
   r   r?   r0   r   r  r    s         	HHHKc K K K KGC G G G G
> > > >"k " " " " " "r0   r  c                   J    e Zd ZU eed<   ddZdefdZdefdZd	e	de	fd
Z
dS )r   source_namer'   r   r   Nc                 d    |                     |                    | j        d                     d S )NFr[   )r+   r^   r  r-   s     r   r/   zConstantSource.reconstruct  s2    g889Iu8UUVVVVVr0   c                     t           j        S r)   )r
   r   r3   s    r   r   zConstantSource.guard_source  s    ##r0   c                     | j         S r)   )r  r3   s    r   r   zConstantSource.name  s    r0   r   c                     t           r)   r   r   s     r   r   zConstantSource.make_guard  r   r0   r7   )r8   r9   r:   r;   r<   r/   r
   r   r   r   r   r?   r0   r   r   r     s         W W W W$k $ $ $ $ c        "S "S " " " " " "r0   r   c                   .    e Zd ZdefdZdefdZddZdS )	NumpyTensorSourcer   c                 <    d| j                                          dS )Nz___from_numpy(r   r{   r3   s    r   r   zNumpyTensorSource.name  s    3	 0 03333r0   c                 4    | j                                         S r)   rx   r3   s    r   r   zNumpyTensorSource.guard_source  ry   r0   r'   r   Nc                                          fd            | j                                       t          dd                     d S )Nc                  0                          dd          S )Nr  	as_tensorr  rT  s   r   rk   z/NumpyTensorSource.reconstruct.<locals>.<lambda>  s    g&>&>w&T&T r0   r   Fr  r-   s    `r   r/   zNumpyTensorSource.reconstruct  sX    TTTTUUU	21e<<=====r0   r7   )r8   r9   r:   r;   r   r
   r   r/   r?   r0   r   r  r    s^        4c 4 4 4 4(k ( ( ( (> > > > > >r0   r  c                   &    e Zd ZdefdZdefdZdS )SubclassAttrListSourcer   c                 :    | j                                          dS )Nz.__tensor_flatten__()[0]r{   r3   s    r   r   zSubclassAttrListSource.name  s    )..""<<<<r0   c                 4    | j                                         S r)   rx   r3   s    r   r   z#SubclassAttrListSource.guard_source  ry   r0   Nr  r?   r0   r   r  r    sJ        =c = = = =(k ( ( ( ( ( (r0   r  c                   &    e Zd ZdefdZdefdZdS )FloatTensorSourcer   c                 <    d| j                                          dS )Nz___as_tensor(r   r{   r3   s    r   r   zFloatTensorSource.name  s    2ty~~//2222r0   c                 4    | j                                         S r)   rx   r3   s    r   r   zFloatTensorSource.guard_source  ry   r0   Nr  r?   r0   r   r  r     sJ        3c 3 3 3 3(k ( ( ( ( ( (r0   r  c                   &    e Zd ZdefdZdefdZdS )CallMethodItemSourcer   c                 :    | j                                          dS )Nz.item()r{   r3   s    r   r   zCallMethodItemSource.name  s    )..""++++r0   c                 4    | j                                         S r)   rx   r3   s    r   r   z!CallMethodItemSource.guard_source  ry   r0   Nr  r?   r0   r   r  r  	  sJ        ,c , , , ,(k ( ( ( ( ( (r0   r  c                   &    e Zd ZdefdZdefdZdS )ShapeEnvSourcer   c                     dS r  r?   r3   s    r   r   zShapeEnvSource.name  r  r0   c                     t           j        S r)   )r
   	SHAPE_ENVr3   s    r   r   zShapeEnvSource.guard_source  r   r0   Nr  r?   r0   r   r  r    sJ        c    %k % % % % % %r0   r  c                   &    e Zd ZdefdZdefdZdS )BackwardStateSourcer   c                     dS r  r?   r3   s    r   r   zBackwardStateSource.name   r  r0   c                     t           j        S r)   )r
   BACKWARD_STATEr3   s    r   r   z BackwardStateSource.guard_source#  s    ))r0   Nr  r?   r0   r   r  r    sJ        c    *k * * * * * *r0   r  Fonly_allow_inputr   c                    t          | t                    rt          | j        |          S t          | t                    sd S |r	| j        sd S | j        S Nr  )r   r   get_local_source_namerv   r"   r$   r#   r   r   s     r   r  r  '  sc     &-(( U$V[CSTTTTfk** t  tr0   c                (    t          | |          d uS r  )r  r  s     r   is_from_local_sourcer  3  s     :JKKKSWWWr0   c                 $    t          |           d uS r)   )get_global_source_namer   s    r   is_from_global_sourcer	  7  s    !&))55r0   c                     t          | t                    rt          | j                  S t          | t                    sd S | j        S r)   )r   r   r  rv   rW   rX   r   s    r   r  r  ;  sD    &-(( 3%fk222fl++ tr0   c                     t          | t                    rt          | j                  S t          | t                    o| j        o| j         S r)   )r   r   is_from_nonlocal_sourcerv   r"   r&   r$   r   s    r   r  r  C  sN    &-(( 4&v{3336;'' 	 +	 r0   c                     t          | t                    rdS t          | t                    rt          | j                  S dS r   )r   r   r   is_from_closure_sourcerv   r   s    r   r  r  M  s@    &-(( t&-(( 3%fk2225r0   targetc                 b    t          | t                    rt          | j        |          S | |k    S r)   )r   r   is_from_sourcerv   )r   r  s     r   r  r  U  s1    &-(( 3fk6222Vr0   c                     t          | t                    rdS t          | t                    rt          | j                  S dS r   )r   r  r   &is_from_unspecialized_nn_module_sourcerv   r   s    r   r  r  [  sB    &566 t&-(( C5fkBBB5r0   c                     t          | t                    rdS t          | t                    rt          | j                  S dS r   )r   r  r   .is_from_unspecialized_builtin_nn_module_sourcerv   r   s    r   r  r  d  sB    &<== t&-(( K=fkJJJ5r0   c                     t          | t                    rdS t          | t                    rt          | j                  S dS r   )r   r   r   )is_from_unspecialized_param_buffer_sourcerv   r   s    r   r  r  m  sB    &899 t&-(( F8EEE5r0   c                     t          | t                    rdS t          | t                    rt          | j                  S dS r   )r   r  r   $is_from_flatten_script_object_sourcerv   r   s    r   r  r  v  sC    &344 At	FM	*	* A3FK@@@5r0   c                     t          | t                    rdS t          | t                    rt          | j                  S dS r   )r   r  r   is_from_optimizer_sourcerv   r   s    r   r  r    s@    &/** t&-(( 5'4445r0   c                    t          | t                    rdS t          | t                    r,t          | j        t                    r| j        j        dk    rdS t          | t                    r,t          | j        t                    r| j        j        dk    rdS t          | t                    rt          | j                  S dS )NTr3  r4  F)	r   r+  ri  rv   r   r   r;  r   is_from_defaultsr   s    r   r  r    s    &.)) t 	6,--v{J// K"222t 	6=))v{J// K.00t&-(( -,,,5r0   c                     t          | t                    rdS t          | t                    rt          | j                  S dS r   )r   r   r   is_from_skip_guard_sourcerv   r   s    r   r  r    s@    &/** t&-(( 6(5555r0   )nr   r9  enum	functoolstypingr   r   r   r   r   torch._guardsr   r	   r
   r   r   r   bytecode_transformationr   r   r'   r   r2   LOCAL_SPECIALIZED_NN_MODULEra   GLOBAL_SPECIALIZED_NN_MODULELOCAL_UNSPECIALIZED_NN_MODULEGLOBAL_UNSPECIALIZED_NN_MODULE%LOCAL_UNSPECIALIZED_BUILTIN_NN_MODULE&GLOBAL_UNSPECIALIZED_BUILTIN_NN_MODULELOCAL_FSDP_MODULEGLOBAL_FSDP_MODULEr   r  r  r  r=   r   r;   r   	dataclassr"   rA   rH   rW   rg   rr   r~   r   r   r   r   r   r   r   r   r   r   r   r   Enumr   r   r  r  r  r  r   r&  r+  r;  rN  r[  ri  rs  r|  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r	  r  r  r  r  	lru_cacher  r  r  r  r  r  r  r?   r0   r   <module>r0     sT   &          @ @ @ @ @ @ @ @ @ @ @ @ @ @ C C C C C C C C C C C C       M M M M M M M M  #"""""" {>@+[-T,k.V-{/X.0Z5{7h68j!;#@"K$B' #  {@B-{/X.0Z+[-V,k.X5{7h68j!;#@"K$B) %" {HJ-{/`.0b+[-^,k.`5{7h68j!;#@"K$B1 - {46+[-J,k.L!;#@"K$B-{/L.0N5{7T68V 	v 	$ 	 	 	 	"6 "c " " " " d###- - - - -& - - $#-8 d###
7 
7 
7 
7 
76 
7 
7 $#
7 d###8 8 8 8 8 8 8 $#8 d###
. 
. 
. 
. 
.6 
. 
. $#
. d###0 0 0 0 0& 0 0 $#0$ d###	' 	' 	' 	' 	' 	' 	' $#	' d###	 	 	 	 	0 	 	 $#	 d###3 3 3 3 3 3 3 $#32 d###O O O O O O O $#O0 d###4 4 4 4 4] 4 4 $#4" d###	- 	- 	- 	- 	-M 	- 	- $#	- d###L L L L Lf L L $#L& d###	. 	. 	. 	. 	. 	. 	. $#	. d###	1 	1 	1 	1 	1M 	1 	1 $#	1  d###3 3 3 3 3 3 3 $#3 d###M M M M M
 M M $#M d###	 	 	 	 	Z 	 	 $#	 d###    f   $#  d###         m     $# 6 6 6 6 6TY 6 6 6  d###%; %; %; %; %;= %; %; $#%;P d###3 3 3 3 3M 3 3 $#3  d###/ / / / /= / / $#/ d###G G G G G} G G $#G d###7 7 7 7 7 7 7 $#7 d###> > > > >m > > $#>0 0 0 0 0m 0 0 0 d###! ! ! ! !] ! ! $#!H d####9 #9 #9 #9 #9M #9 #9 $##9L d###       $#, d###    m   $#8 d###9 9 9 9 9 9 9 $#9H d###'9 '9 '9 '9 '9 '9 '9 $#'9T d###%K %K %K %K %K %K %K $#%KP d###
P 
P 
P 
P 
P 
P 
P $#
P d###	; 	; 	; 	; 	;] 	; 	; $#	; d###: : : : :M : : $#: d###+ + + + + + + $#+  d###         m     $#  d###         ]     $#  d###O O O O O. O O $#O
 d###W W W W W)D W W $#W
 d###C C C C C C C $#C
 d###" " " " " " " $#" d###" " " " "& " " $#"4 d###" " " " "6 " " $#"0 d###" " " " "V " " $#"  d###
> 
> 
> 
> 
> 
> 
> $#
> d###( ( ( ( (] ( ( $#( d###( ( ( ( ( ( ( $#( d###( ( ( ( (= ( ( $#( d###% % % % %V % % $#% d###* * * * *& * * $#* 16	 	 		)-	c]	 	 	 	 FK X X X Xd Xt X X X X6& 6T 6 6 6 66 hsm    F t    6 d    6 6 d     6 d     6 d     f       D     V      V     2 f       r0   