
    Bj                        d Z ddlZddlZddlZddlmZ ddlmZmZ ddl	m
Z ddlmZmZmZmZmZ ddlmZ dd	lmZ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z  de*fdZ+ddede(de*fdZ, ed           G d de                      Z- ed           G d de                      Z. ed           G d de                      Z/ ed           G d de                      Z0 ed           G d de                      Z1 ed           G d d e                      Z2 ed           G d! d"e                      Z3 ed           G d# d$e3                      Z4 ed           G d% d&e                      Z5 ed           G d' d(e5                      Z6 ed           G d) d*e                      Z7 ed           G d+ d,e                      Z8 ed           G d- d.e                      Z9 ed           G d/ d0e                      Z: ed           G d1 d2e                      Z; ed           G d3 d4e                      Z< ed           G d5 d6e                      Z= ed           G d7 d8e5                      Z> ed           G d9 d:e5                      Z? ed           G d; d<e                      Z@ ed           G d= d>e                      ZA G d? d@ejB                  ZC ed           G dA dBe                      ZD ed           G dC dDe                      ZE ed           G dE dFe                      ZF ed           G dG dHe                      ZG ed           G dI dJe                      ZH ed           G dK dLe                      ZI ed           G dM dNe                      ZJ G dO dPe          ZK ed           G dQ dRe                      ZL ed           G dS dTe                      ZM ed           G dU dVe                      ZN ed           G dW dXe                      ZO ed           G dY dZe                      ZP ed           G d[ d\e                      ZQ ed           G d] d^eM                      ZR ed           G d_ d`eM                      ZS ed           G da dbe                      ZT ed           G dc dde                      ZU ed           G de dfe                      ZV ed           G dg dhe                      ZW ed           G di dje                      ZX ed           G dk dleX                      ZY ed           G dm dneY                      ZZ ed           G do dpeX                      Z[ ed           G dq dre                      Z\ ed           G ds dte                      Z] ed           G du dve                      Z^ ed           G dw dxe                      Z_ ed           G dy dze                      Z` ed           G d{ d|e                      Za ed           G d} d~e                      Zb ed           G d de                      Zc ed           G d de                      Zd ed           G d de                      Ze ed           G d de                      Zfejg        dddede(de*dz  fd            Zhejg        dddede(de(fd            Ziejg        dede(fd            Zjejg        dedz  de*dz  fd            Zkejg        dede(fd            Zlejg        dede(fd            Zmejg        dedede(fd            Znejg        dede(fd            Zoejg        dede(fd            Zpejg        dede(fd            Zqejg        dede(fd            Zrejg        dede(fd            Zsejg        dede(fd            Ztejg        dede(fd            Zud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)Callable)AnyTYPE_CHECKING)device)ChainedSourcedataclass_with_cached_hashGuardGuardSourceSource   )utils)create_binary_subscrcreate_build_tuplecreate_call_function)	PyCodegensourcereturnc                     t          | t                    rdS 	 | j        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    W/var/www/html/Carbon-Document/venv/lib/python3.11/site-packages/torch/_dynamo/source.pyis_constant_sourcer   m   s`    &.)) t+"6664 7    5s   1 
>>c                 <    | dS 	 | j         S # t          $ r Y dS w xY w)Nz<unknown source>)namer   r   s    r   _get_source_debug_namer    y   s>    ~!!	&;" 	& 	& 	&%%%	&s    
Fs
apply_reprc                     |rt          |           } nt          |           } |                     dd                              dd          S )a!  
    Escapes curly brackets for format strings.
    e.g. "frozenset({0})" becomes "frozenset({{0}})".
    This is used by _name_template for example, because it's
    expected to return a format string, but we may wish to include
    strings that should not be accidentally formatted.
    {z{{}z}})reprstrreplace)r!   r"   s     r   _esc_strr)      sH      GGFF99S$''T222    T)frozenc                       e Zd ZU eed<   dZeed<   dZee         dz  ed<   dZ	eed<   dd
Z
ed	efd            Zej        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)r1   
load_derefr.   append_outputcreate_loadselfr2   s     r   reconstructzLocalSource.reconstruct   sT    ( 	Ht/////!!'"5"5do"F"FGGGGGr*   c                     t           j        S r4   )r
   LOCALr9   s    r   r   zLocalSource.guard_source   s      r*   c                 6    dt          | j        d           dS )NzL[Tr"   ]r)   r.   r=   s    r   _name_templatezLocalSource._name_template   s"    AHT_>>>AAAAr*   r2   r   r   N)__name__
__module____qualname__r'   __annotations__r/   boolr0   	frozensetr1   r:   propertyr
   r   	functoolscached_propertyrB    r*   r   r-   r-      s         OOO Hd '+Hint#***
 &+d***H H H H !k ! ! ! X! B B B B B B Br*   r-   c                   Z    e Zd ZU eed<   d	dZedefd            Zedefd            Z	dS )
TempLocalSourcer.   r2   r   r   Nc                 `    |                     |                    | j                             d S r4   r6   r7   r.   r8   s     r   r:   zTempLocalSource.reconstruct   ,    g11$/BBCCCCCr*   c                     t           j        S r4   )r
   
TEMP_LOCALr=   s    r   r   zTempLocalSource.guard_source   s    %%r*   c                      t          d          )NzhCannot create guard on TempLocalSource - this is an internal Dynamo bug. Please file an issue on GitHub.r   r=   s    r   rB   zTempLocalSource._name_template   s    !v
 
 	
r*   rC   )
rD   rE   rF   r'   rG   r:   rJ   r
   r   rB   rM   r*   r   rO   rO      s          OOOD D D D &k & & & X& 
 
 
 
 X
 
 
r*   rO   c                   d    e Zd ZU eed<   d	dZedefd            Ze	j
        defd            ZdS )
SyntheticLocalSourcer.   r2   r   r   Nc                 `    |                     |                    | j                             d S r4   rQ   r8   s     r   r:   z SyntheticLocalSource.reconstruct   rR   r*   c                     t           j        S r4   )r
   SYNTHETIC_LOCALr=   s    r   r   z!SyntheticLocalSource.guard_source   s    **r*   c                 6    dt          | j        d           dS )NzSYNTHETIC_LOCAL[Tr?   r@   rA   r=   s    r   rB   z#SyntheticLocalSource._name_template   s"    O(4?t"L"L"LOOOOr*   rC   rD   rE   rF   r'   rG   r:   rJ   r
   r   rK   rL   rB   rM   r*   r   rX   rX      s         OOOD D D D +k + + + X+ P P P P P P Pr*   rX   c                   d    e Zd ZU eed<   edefd            Zd	dZe	j
        defd            ZdS )
RandomValueSourcerandom_call_indexr   c                     t           j        S r4   )r
   RANDOM_VALUEr=   s    r   r   zRandomValueSource.guard_source   s    ''r*   r2   r   Nc                    |                     |                    |j        j        j                             |                     |                    | j                             |                     t                                 d S r4   )r6   r7   txoutputrandom_values_varcreate_load_constr`   r   r8   s     r   r:   zRandomValueSource.reconstruct   sr    g11'*2C2UVVWWWg778NOOPPP24455555r*   c                 0    dt          | j                   S )Nrandom_value_)r)   r`   r=   s    r   rB   z RandomValueSource._name_template   s    Ax(>??AAAr*   rC   )rD   rE   rF   intrG   rJ   r
   r   r:   rK   rL   r'   rB   rM   r*   r   r_   r_      s         (k ( ( ( X(6 6 6 6
 B B B B B B Br*   r_   c                   d    e Zd ZU eed<   d	dZedefd            Ze	j
        defd            ZdS )
GlobalSourceglobal_namer2   r   r   Nc                 d    |                     |                    | j        d                     d S NTaddr6   create_load_globalrm   r8   s     r   r:   zGlobalSource.reconstruct   s2    g889It8TTUUUUUr*   c                     t           j        S r4   r
   GLOBALr=   s    r   r   zGlobalSource.guard_source       !!r*   c                 6    dt          | j        d           dS )NG[Tr?   r@   r)   rm   r=   s    r   rB   zGlobalSource._name_template   s#    BHT-$???BBBBr*   rC   r]   rM   r*   r   rl   rl      s         V V V V "k " " " X" C C C C C C Cr*   rl   c                   d    e Zd ZU eed<   d	dZedefd            Ze	j
        defd            ZdS )
GlobalWeakRefSourcerm   r2   r   r   Nc                                            fd                               t          dd                     d S )Nc                  b                                               j        d                    S ro   rr   r2   r9   s   r   <lambda>z1GlobalWeakRefSource.reconstruct.<locals>.<lambda>   s0    G))**4+;*FF  r*   r   Fadd_push_nullextend_outputr   r8   s   ``r   r:   zGlobalWeakRefSource.reconstruct   s\        	
 	
 	

 	21e<<=====r*   c                     t           j        S r4   ru   r=   s    r   r   z GlobalWeakRefSource.guard_source  rw   r*   c                 6    dt          | j        d           dS )Nry   Tr?   z]()rz   r=   s    r   rB   z"GlobalWeakRefSource._name_template  s#    DHT-$???DDDDr*   rC   r]   rM   r*   r   r|   r|      s         > > > > "k " " " X" E E E E E E Er*   r|   c                   2    e Zd ZddZedefd            ZdS )WeakRefCallSourcer2   r   r   Nc                                            fd                               t          dd                     d S )Nc                  $      j                   S r4   baser   s   r   r   z/WeakRefCallSource.reconstruct.<locals>.<lambda>  s    ggdi&8&8 r*   r   Fr   r8   s   ``r   r:   zWeakRefCallSource.reconstruct  sJ    8888899921e<<=====r*   c                     dS )Nz{0}()rM   r=   s    r   rB   z WeakRefCallSource._name_template  s    wr*   rC   rD   rE   rF   r:   rJ   r'   rB   rM   r*   r   r   r     sO        > > > >     X  r*   r   c                       e Zd ZdS )CallFunctionNoArgsSourceNrD   rE   rF   rM   r*   r   r   r             Dr*   r   c                   P    e Zd ZU eed<   d	dZd
dZej        defd            Z	dS )
AttrSourcememberr   Nc                 `    | j         s
J d            d| j        vsJ d| j        d            d S )Nz9Can't construct an AttrSource without a valid base source.z,AttrSource member must not contain '.', got =. Use OutputGraph.get_chained_attr_source() for dotted paths.r   r   r=   s    r   __post_init__zAttrSource.__post_init__  sU    yUUUUUy$+%%%J4; J J J &%%%%r*   r2   r   c                      || j                    |                    |                    | j                             d S r4   r   r   create_load_attrsr   r8   s     r   r:   zAttrSource.reconstruct&  >    	g77DDEEEEEr*   c                     | j                                         sdt          | j         d           dS dt          | j                    S )Nzgetattr({0}, Tr?   ){0}.)r   isidentifierr)   r=   s    r   rB   zAttrSource._name_template*  sQ    {'')) 	ONXdkd%K%K%KNNNN/--///r*   r   NrC   
rD   rE   rF   r'   rG   r   r:   rK   rL   rB   rM   r*   r   r   r     sv         KKK
 
 
 
F F F F 0 0 0 0 0 0 0r*   r   c                   H    e Zd ZU dZ ej        d          Zeed<   ddZ	dS )	CellContentsSourcez
    Source for closure cell contents that also stores the freevar name.
    This allows guard failure messages to show which variable the closure cell refers to.
     )defaultfreevar_namer   Nc                 R    | j         s
J d            | j        dk    s
J d            d S )Nz@Can't construct a CellContentsSource without a valid base sourcecell_contentsz8CellContentsSource should only be used for cell_contentsr   r=   s    r   r   z CellContentsSource.__post_init__:  sF    y 	
 	
N	
 	
y {o---F .----r*   r   )
rD   rE   rF   __doc__dataclassesfieldr   r'   rG   r   rM   r*   r   r   r   1  sV          
 *)"555L#555
 
 
 
 
 
r*   r   c                   P    e Zd ZU eed<   d	dZd
dZej        defd            Z	dS )GenericAttrSourcer   r   Nc                 `    | j         s
J d            d| j        vsJ d| j        d            d S )Nz?Can't construct a GenericAttrSource without a valid base sourcer   z3GenericAttrSource member must not contain '.', got r   r   r=   s    r   r   zGenericAttrSource.__post_init__G  s_    y 	
 	
M	
 	
y $+%%%J$+ J J J &%%%%r*   r2   r   c                      || j                    |                    |                    | j                             d S r4   r   r8   s     r   r:   zGenericAttrSource.reconstructP  r   r*   c                 6    dt          | j        d           dS )Nzobject.__getattribute__({0}, Tr?   r   r)   r   r=   s    r   rB   z GenericAttrSource._name_templateT  s'     Xht{t.T.T.TWWW	
r*   r   rC   r   rM   r*   r   r   r   C  sv         KKK
 
 
 
F F F F 
 
 
 
 
 
 
r*   r   c                   2    e Zd ZddZedefd            ZdS )TypeDictSourcer2   r   r   Nc                 v     || j                    |                    |                    d                     d S )N__dict__r   r   r   r8   s     r   r:   zTypeDictSource.reconstruct^  <    	g77
CCDDDDDr*   c                     dS )Nzdict({0}.__dict__)rM   r=   s    r   rB   zTypeDictSource._name_templateb  s
     $#r*   rC   r   rM   r*   r   r   r   \  sS        E E E E $ $ $ $ X$ $ $r*   r   c                   2    e Zd ZddZedefd            ZdS )TypeMROSourcer2   r   r   Nc                 v     || j                    |                    |                    d                     d S )N__mro__r   r8   s     r   r:   zTypeMROSource.reconstructn  <    	g77	BBCCCCCr*   c                     dS )Nz{0}.__mro__rM   r=   s    r   rB   zTypeMROSource._name_templater  s    }r*   rC   r   rM   r*   r   r   r   l  sS        D D D D     X  r*   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.   r2   r   r   Nc                 `    |                     |                    | j                             d S r4   )r6   create_load_closurer.   r8   s     r   r:   zLocalCellSource.reconstruct  s.     	g99$/JJKKKKKr*   rC   )rD   rE   rF   r   r'   rG   r:   rM   r*   r   r   r   w  sE          
 OOOL L L L L Lr*   r   c                   2    e Zd ZddZedefd            ZdS )
CodeSourcer2   r   r   Nc                 v     || j                    |                    |                    d                     d S )N__code__r   r8   s     r   r:   zCodeSource.reconstruct  r   r*   c                     dS )Nz{0}.__code__rM   r=   s    r   rB   zCodeSource._name_template  s    ~r*   rC   r   rM   r*   r   r   r     sS        E E E E     X  r*   r   c                   2    e Zd ZddZedefd            ZdS )ClosureSourcer2   r   r   Nc                 v     || j                    |                    |                    d                     d S )N__closure__r   r8   s     r   r:   zClosureSource.reconstruct  s<    	g77FFGGGGGr*   c                     dS )Nz{0}.__closure__rM   r=   s    r   rB   zClosureSource._name_template  s      r*   rC   r   rM   r*   r   r   r     sS        H H H H ! ! ! ! X! ! !r*   r   c                   L    e Zd ZU dZeed<   d	dZej        defd            Z	dS )

GradSourcegradr   r2   r   r   Nc                      || j                    |                    |                    | j                             d S r4   r   r8   s     r   r:   zGradSource.reconstruct  r   r*   c                 0    dt          | j                   S )Nr   r   r=   s    r   rB   zGradSource._name_template  s    /--///r*   rC   )
rD   rE   rF   r   r'   rG   r:   rK   rL   rB   rM   r*   r   r   r     si         FCF F F F 0 0 0 0 0 0 0r*   r   c                   4    e Zd Zej        defd            ZdS )ParamBufferSourcer   c                 0    t           | j        j                 S r4   #_GUARD_SOURCE_SPECIALIZED_NN_MODULEr   r   r=   s    r   r   zParamBufferSource.guard_source      2493IJJr*   NrD   rE   rF   rK   rL   r
   r   rM   r*   r   r   r     sD        Kk K K K K K Kr*   r   c                       e Zd ZdS )UnspecializedParamBufferSourceNr   rM   r*   r   r   r     r   r*   r   c                       e Zd ZU dZedz  ed<   edefd            Ze	j
        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 r4   )r
   	EPHEMERALr=   s    r   r   zEphemeralSource.guard_source      $$r*   c                 N    | j         
d| j         z   nd}dt          |           dS )Nz: r   z
<ephemeral>)r   r)   )r9   r   s     r   rB   zEphemeralSource._name_template  s1    #'9#8tdib-HTNN----r*   fn.c                     t           r4   rV   r9   r   s     r   
make_guardzEphemeralSource.make_guard      !!r*   c                     dS NTrM   r=   s    r   is_ephemeralzEphemeralSource.is_ephemeral      tr*   )rD   rE   rF   r   r'   rG   rJ   r
   r   rK   rL   rB   r   r   r	   r   rH   r   rM   r*   r   r   r     s         D#*%k % % % X% . . . . ."Xc3h/ "E " " " "d      r*   r   c                   2    e Zd ZddZedefd            ZdS )SkipGuardSourcer2   r   r   Nc                 :    | j                             |           d S r4   )r   r:   r8   s     r   r:   zSkipGuardSource.reconstruct  s    	g&&&&&r*   c                     dS Nz{0}rM   r=   s    r   rB   zSkipGuardSource._name_template      ur*   rC   r   rM   r*   r   r   r     sO        ' ' ' '     X  r*   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t          |                      )Nsizestridestorage_offset
unhandled )r   SIZESTRIDESTORAGE_OFFSETAssertionErrorr)   r=   s    r   method_namezTensorProperty.method_name  sY    >&&&6^***8^222## !>htnn!>!>???r*   N)rD   rE   rF   r   r   r   r'   r   rM   r*   r   r   r     sE        DFN@S @ @ @ @ @ @r*   r   c                   d    e Zd ZU eed<   dZedz  ed<   d
dZddZe	j
        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 r4   )r   r  r   r   r  r=   s    r   r   z"TensorPropertySource.__post_init__  sH    y$$$95558#####8'''''r*   r2   r   c                                           fd             j                    j        -                                         j                                                 t           j        dndd                     d S )Nc                                            t          j        dt          j                                                             S )Ncall_)load_import_fromr   rD   r)   r  r   r   s   r   r   z2TensorPropertySource.reconstruct.<locals>.<lambda>  s=    G,, K1F1F1H1H(I(I K K  r*   r   r   F)r   r   r  r6   rg   r   r   r8   s   ``r   r:   z TensorPropertySource.reconstruct  s        	
 	
 	

 		8!!'";";DH"E"EFFF dh&:5II	
 	
 	
 	
 	
r*   c                 2   | j         t          j        u rdt          | j                   dS | j         t          j        u rdt          | j                   dS | j         t          j        u r| j        J dS t          dt          | j                              )Nz{0}.size()[r@   z{0}.stride()[z{0}.storage_offset()r   )r  r   r   r)   r  r   r   r   r=   s    r   rB   z#TensorPropertySource._name_template  s    9+++88DH#5#58888Y.///:Xdh%7%7::::Y.7778###)) !Chty.A.A!C!CDDDr*   r   rC   )rD   rE   rF   r   rG   r  rj   r   r:   rK   rL   r'   rB   rM   r*   r   r  r    s         
Ct( ( ( (
 
 
 
 	E 	E 	E 	E 	E 	E 	Er*   r  c                   P    e Zd ZU eed<   d	dZd
dZej        de	fd            Z
dS )IndexedSourcer  r   Nc                     | j         J d S r4   r   r=   s    r   r   zIndexedSource.__post_init__"      y$$$$$r*   r2   r   c                     t           r4   rV   r8   s     r   r:   zIndexedSource.reconstruct%  r   r*   c                 2    dt          | j                   dS )N(z, {0}))r)   r  r=   s    r   rB   zIndexedSource._name_template(  s    /8DH%%////r*   r   rC   )rD   rE   rF   rj   rG   r   r:   rK   rL   r'   rB   rM   r*   r   r  r    sr         	HHH% % % %" " " " 0 0 0 0 0 0 0r*   r  c                   :    e Zd ZddZd	dZedefd            ZdS )
NegateSourcer   Nc                     | j         J d S r4   r   r=   s    r   r   zNegateSource.__post_init__/  r  r*   r2   r   c                     t           r4   rV   r8   s     r   r:   zNegateSource.reconstruct2  r   r*   c                     dS )Nz{0}.__neg__()rM   r=   s    r   rB   zNegateSource._name_template5  s	     r*   r   rC   rD   rE   rF   r   r:   rJ   r'   rB   rM   r*   r   r  r  -  sc        % % % %" " " "     X  r*   r  c                   :    e Zd ZddZd	dZedefd            ZdS )
ConvertIntSourcer   Nc                     | j         J d S r4   r   r=   s    r   r   zConvertIntSource.__post_init__=  r  r*   r2   r   c                 &     || j                    d S r4   r   r8   s     r   r:   zConvertIntSource.reconstruct@      	r*   c                     dS )Nz%cast_symbool_to_symint_guardless({0})rM   r=   s    r   rB   zConvertIntSource._name_templateC  s    66r*   r   rC   r  rM   r*   r   r  r  ;  sc        % % % %    7 7 7 7 X7 7 7r*   r  c                   F    e Zd ZU eed<   d	dZd
dZedefd            Z	dS )DynamicScalarSourceis_intr   Nc                     | j         J d S r4   r   r=   s    r   r   z!DynamicScalarSource.__post_init__L  r  r*   r2   r   c                                          fd            | j                                       t          dd                     d S )Nc                  0                          dd          S )Nbuiltinsrj   r	  r2   s   r   r   z1DynamicScalarSource.reconstruct.<locals>.<lambda>T  s    g&>&>z5&Q&Q r*   r   Fr   r   r   r   r8   s    `r   r:   zDynamicScalarSource.reconstructO  sZ    
 	QQQQRRR	21e<<=====r*   c                     dS )Nzint({0})rM   r=   s    r   rB   z"DynamicScalarSource._name_templateX  s    zr*   r   rC   )
rD   rE   rF   rH   rG   r   r:   rJ   r'   rB   rM   r*   r   r  r  H  sn         LLL% % % %> > > >     X  r*   r  c                   :    e Zd ZddZd	dZedefd            ZdS )
FlattenScriptObjectSourcer   Nc                     | j         J d S r4   r   r=   s    r   r   z'FlattenScriptObjectSource.__post_init___  r  r*   r2   r   c                 &     || j                    d S r4   r   r8   s     r   r:   z%FlattenScriptObjectSource.reconstructb  r  r*   c                     dS )Nz{0}.__obj_flatten__()rM   r=   s    r   rB   z(FlattenScriptObjectSource._name_templatee  s    &&r*   r   rC   r  rM   r*   r   r*  r*  ]  sc        % % % %    ' ' ' ' X' ' 'r*   r*  c                   :    e Zd ZddZd	dZedefd            ZdS )
ScriptObjectQualifiedNameSourcer   Nc                     | j         J d S r4   r   r=   s    r   r   z-ScriptObjectQualifiedNameSource.__post_init__l  r  r*   r2   r   c                 &     || j                    d S r4   r   r8   s     r   r:   z+ScriptObjectQualifiedNameSource.reconstructo  r  r*   c                     dS )Nz{0}._type().qualified_name()rM   r=   s    r   rB   z.ScriptObjectQualifiedNameSource._name_templater  s    --r*   r   rC   r  rM   r*   r   r/  r/  j  sc        % % % %    . . . . X. . .r*   r/  c                   2    e Zd ZddZedefd            ZdS )AttrProxySourcer2   r   r   Nc                 &     || j                    d S r4   r   r8   s     r   r:   zAttrProxySource.reconstructx  r  r*   c                     dS )Nz{0}.get_base()rM   r=   s    r   rB   zAttrProxySource._name_template{  s    r*   rC   r   rM   r*   r   r4  r4  w  sO                    X     r*   r4  c                       e Zd ZU eez  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ej        defd            ZdS )DefaultsSourceidx_keyFis_kw)initr&   comparer   _namer   Nc           
      6   | j         s
J d            | j        rt          | j        t                    sJ t
                              | dd           t
                              | ddt          | j                   dt          | j                   d           d S t          | j        t                    sJ t
                              | dd           t
                              | ddt          | j                   d	t          | j                   d
           d S )Nz]Base must be a valid source in order to properly track and guard this Defaults to its origin.r   __kwdefaults__r=  r   z['z']__defaults__[r@   )
r   r:  r   r9  r'   object__setattr__r)   r   rj   r=   s    r   r   zDefaultsSource.__post_init__  s2   y 	
 	
k	
 	
y : 	dlC00000tW.>???K$*--KK$,1G1GKKK     dlC00000tWn===gX(<(<XXx?U?UXXX    r*   r2   r   c                     || j                    |                    |                    | j                             |                    |                    | j                             |                    t                                 d S r4   )r   r   r   r   r6   rg   r9  r   r8   s     r   r:   zDefaultsSource.reconstruct  s}    	g77
CCDDDg77EEFFF24455555r*   c                     | j         S r4   )r=  r=   s    r   rB   zDefaultsSource._name_template  s
    zr*   r   rC   )rD   rE   rF   rj   r'   rG   r:  rH   r   r   r=  r   r:   rK   rL   rB   rM   r*   r   r8  r8    s         3YE4""E5IIIE3III""E5IIIE3III   &6 6 6 6       r*   r8  c                   t     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
ej        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 )NrH  rI  T)r   r   rH  slicesuperrC  
__reduce__)r9   	__class__s    r   r   zGetItemSource.__post_init__  sx    y$$$dj%(( 	8GG)>)>)@)@AAAGG 0$77777	8 	8r*   r2   r   c                 F    || j                    | j        r;|                    |                    |                                                      n-|                    |                    | j                             |                    t                                 d S r4   )r   rI  r6   rg   unpack_slicerH  r   r8   s     r   r:   zGetItemSource.reconstruct  s    	 	I!!'";";D<M<M<O<O"P"PQQQQ!!'";";DJ"G"GHHH24455555r*   c                 2    | j         sJ | j        \  }} || S r4   )rI  rH  )r9   slice_class
slice_argss      r   rP  zGetItemSource.unpack_slice  s*    """""&*Z{J''r*   c                     t          | j        t                    rJ | j        r'dt	          |                                 d           dS dt	          | j        d           dS )N{0}[Tr?   r@   )r   rH  r   rI  r)   rP  r=   s    r   rB   zGetItemSource._name_template  sr    
 dj&11111 	EMHT%6%6%8%8TJJJMMMMDHTZDAAADDDDr*   r   rC   )rD   rE   rF   r   rG   rI  rH   r   r:   rK  rP  rK   rL   r'   rB   __classcell__)rN  s   @r   rG  rG    s         JJJ ND   8 8 8 8 8 86 6 6 6(e ( ( ( (
 E E E E E E E E Er*   rG  c                   T    e Zd ZU eed<   d	dZej        defd            Z	de
fdZdS )
ConstDictKeySourcerH  r2   r   r   Nc                                          fd            | j                                                           | j                                                 t          dd                     d S )Nc                  D                          t          j        d          S )Ndict_keys_getitemr	  r   rD   r&  s   r   r   z0ConstDictKeySource.reconstruct.<locals>.<lambda>  s    G,,U^=PQQ r*   r   Fr   r   r6   rg   rH  r   r   r8   s    `r   r:   zConstDictKeySource.reconstruct  s    QQQQ	
 	
 	
 		g77
CCDDD21e<<=====r*   c                 6    dt          | j        d           dS )Nzlist(dict.keys({0}))[Tr?   r@   r)   rH  r=   s    r   rB   z!ConstDictKeySource._name_template  s%     R$*)N)N)NQQQQr*   c                     dS r   rM   r=   s    r   is_dict_keyzConstDictKeySource.is_dict_key  r   r*   rC   )rD   rE   rF   r   rG   r:   rK   rL   r'   rB   rH   ra  rM   r*   r   rX  rX    s~         JJJ> > > > R R R R RT      r*   rX  c                   \    e Zd ZU eed<   d
dZddZej        de	fd            Z
defd	ZdS )NonSerializableSetGetItemSourcerH  r   Nc                 J    ddl m} |                    | j                  sJ d S Nr   )ConstantVariable)	variablesrf  
is_literalrH  r9   rf  s     r   r   z-NonSerializableSetGetItemSource.__post_init__  s6    //////**4:6666666r*   r2   r   c                                          fd            | j                                                           | j                                                 t          dd                     d S )Nc                  D                          t          j        d          S )Nset_getitemr\  r&  s   r   r   z=NonSerializableSetGetItemSource.reconstruct.<locals>.<lambda>  s    G,,U^]KK r*   r   Fr]  r8   s    `r   r:   z+NonSerializableSetGetItemSource.reconstruct  s    KKKK	
 	
 	
 		g77
CCDDD21e<<=====r*   c                 6    dt          | j        d           dS )Nz
list({0})[Tr?   r@   r_  r=   s    r   rB   z.NonSerializableSetGetItemSource._name_template  s%     GhtzdCCCFFFFr*   c                     dS )NFrM   r=   s    r   ra  z+NonSerializableSetGetItemSource.is_dict_key  s    ur*   r   rC   )rD   rE   rF   rj   rG   r   r:   rK   rL   r'   rB   rH   ra  rM   r*   r   rc  rc    s         JJJ7 7 7 7
> > > > G G G G GT      r*   rc  c                   P    e Zd ZU eed<   d	dZd
dZej        de	fd            Z
dS )DictGetItemSourcerH  r   Nc                     ddl m} t          | j        t                    s|                    | j                  sJ d S d S re  rg  rf  r   rH  rX  rh  ri  s     r   r   zDictGetItemSource.__post_init__  d    //////J*
 
 	5((44	5 	5 5 	5 	5 	5 	5r*   r2   r   c                     || j                    t          | j        t                    r || j                   n-|                    |                    | j                             |                    t                                 d S r4   )r   r   rH  r   r6   rg   r   r8   s     r   r:   zDictGetItemSource.reconstruct  s    	 dj&)) 	IGDJ!!'";";DJ"G"GHHH24455555r*   c                     t          | j        t                    rdt          | j        j                   dS dt          | j        d           dS )NrU  r@   Tr?   r   rH  rX  r)   r   r=   s    r   rB   z DictGetItemSource._name_template  sU    dj"455 	E8HTZ_558888DHTZDAAADDDDr*   r   rC   rD   rE   rF   r   rG   r   r:   rK   rL   r'   rB   rM   r*   r   rp  rp    s{         
 JJJ5 5 5 5	6 	6 	6 	6 E E E E E E Er*   rp  c                   P    e Zd ZU eed<   d	dZd
dZej        de	fd            Z
dS )DictSubclassGetItemSourcerH  r   Nc                     ddl m} t          | j        t                    s|                    | j                  sJ d S d S re  rr  ri  s     r   r   z'DictSubclassGetItemSource.__post_init__$  rs  r*   r2   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_getitemr\  r&  s   r   r   z7DictSubclassGetItemSource.reconstruct.<locals>.<lambda>0      G,,U^^LL r*   r   F)	r   r   r   rH  r   r6   rg   r   r   r8   s    `r   r:   z%DictSubclassGetItemSource.reconstruct+  s     	LLLL	
 	
 	

 		 dj&)) 	IGDJ!!'";";DJ"G"GHHH21e<<=====r*   c                     t          | j        t                    rdt          | j        j                   dS dt          | j        d           dS )Nzdict.__getitem__({0}, r   rU  Tr?   r@   rv  r=   s    r   rB   z(DictSubclassGetItemSource._name_template>  sU    dj"455 	EJhtz.G.GJJJJDHTZDAAADDDDr*   r   rC   rw  rM   r*   r   ry  ry    s{         
 JJJ5 5 5 5> > > >& E E E E E E Er*   ry  c                   @    e Zd ZdZddZej        defd            ZdS )	ListGetItemSourcezY
    Same as GetItemSource with reconstruct and name overridden to be list specific.
    r2   r   r   Nc                 $                        fd            | j                   | j        rt          d                                                  | j                                                 t          dd                     d S )Nc                  D                          t          j        d          S )Nlist_getitemr\  r&  s   r   r   z/ListGetItemSource.reconstruct.<locals>.<lambda>R  r~  r*   >List[slice] is a temporary object and should not have a sourcer   F)	r   r   rI  RuntimeErrorr6   rg   rH  r   r   r8   s    `r   r:   zListGetItemSource.reconstructL  s    
 	LLLL	
 	
 	

 		  	IP   !!'";";DJ"G"GHHH21e<<=====r*   c                     t          | j        t                    rJ | j        rt	          d          dt          | j        d           dS )Nr  zlist.__getitem__({0}, Tr?   r   )r   rH  r   rI  r  r)   r=   s    r   rB   z ListGetItemSource._name_templateb  s`    
 dj&11111 	WP   Whtzd.S.S.SVVVVr*   rC   )	rD   rE   rF   r   r:   rK   rL   r'   rB   rM   r*   r   r  r  F  sd         > > > >, 
W 
W 
W 
W 
W 
W 
Wr*   r  c                   <    e Zd ZddZej        defd            ZdS )TupleIteratorGetItemSourcer2   r   r   Nc                                          fd            | j                                                           | j                                                 t          dd                     d S )Nc                  D                          t          j        d          S )Ntuple_iterator_getitemr\  r&  s   r   r   z8TupleIteratorGetItemSource.reconstruct.<locals>.<lambda>t  s    G,,U^=UVV r*   r   Fr]  r8   s    `r   r:   z&TupleIteratorGetItemSource.reconstructr  s    VVVV	
 	
 	
 		g77
CCDDD21e<<=====r*   c                 6    dt          | j        d           dS )Nz___tuple_iterator_getitem({0}, Tr?   r   r_  r=   s    r   rB   z)TupleIteratorGetItemSource._name_templatez  s(     YPT0U0U0UXXX	
r*   rC   )rD   rE   rF   r:   rK   rL   r'   rB   rM   r*   r   r  r  p  sS        > > > > 
 
 
 
 
 
 
r*   r  c                   2    e Zd ZddZedefd            ZdS )NamedTupleFieldsSourcer2   r   r   Nc                 v     || j                    |                    |                    d                     d S )N_fieldsr   r8   s     r   r:   z"NamedTupleFieldsSource.reconstruct  r   r*   c                     dS )Nz___namedtuple_fields({0})rM   r=   s    r   rB   z%NamedTupleFieldsSource._name_template  s    **r*   rC   r   rM   r*   r   r  r    sS        D D D D + + + + X+ + +r*   r  c                   2    e Zd ZddZedefd            ZdS )DataclassFieldsSourcer2   r   r   Nc                                          fd            | j                                       t          dd                     d S )Nc                  D                          t          j        d          S )Ndataclass_fieldsr\  r&  s   r   r   z3DataclassFieldsSource.reconstruct.<locals>.<lambda>  s    G,,U^=OPP r*   r   Fr'  r8   s    `r   r:   z!DataclassFieldsSource.reconstruct  s`    PPPP	
 	
 	
 		21e<<=====r*   c                     dS )Nz___dataclass_fields({0})rM   r=   s    r   rB   z$DataclassFieldsSource._name_template  s    ))r*   rC   r   rM   r*   r   r  r    sO        > > > > * * * * X* * *r*   r  c                   :    e Zd ZddZd	dZedefd            ZdS )

TypeSourcer   Nc                     | j         J d S r4   r   r=   s    r   r   zTypeSource.__post_init__  r  r*   r2   r   c                                          fd            | j                                       t          dd                     d S )Nc                  0                          dd          S )Nr$  typer%  r&  s   r   r   z(TypeSource.reconstruct.<locals>.<lambda>  s    g&>&>z6&R&R r*   r   Fr'  r8   s    `r   r:   zTypeSource.reconstruct  sX    RRRRSSS	21e<<=====r*   c                     dS )Nz	type({0})rM   r=   s    r   rB   zTypeSource._name_template  s    {r*   r   rC   r  rM   r*   r   r  r    sc        % % % %> > > >
     X  r*   r  c                   2    e Zd ZddZedefd            ZdS )OptimizerSourcer2   r   r   Nc                 &     || j                    d S r4   r   r8   s     r   r:   zOptimizerSource.reconstruct  r  r*   c                     dS r   rM   r=   s    r   rB   zOptimizerSource._name_template  r   r*   rC   r   rM   r*   r   r  r    sO                X  r*   r  c                   X    e Zd ZddZej        defd            Zede	fd            Z
dS )	NNModuleSourcer2   r   r   Nc                 &     || j                    d S r4   r   r8   s     r   r:   zNNModuleSource.reconstruct  r  r*   c                 0    t           | j        j                 S r4   r   r=   s    r   r   zNNModuleSource.guard_source  r   r*   c                     dS r   rM   r=   s    r   rB   zNNModuleSource._name_template  r   r*   rC   )rD   rE   rF   r:   rK   rL   r
   r   rJ   r'   rB   rM   r*   r   r  r    s            Kk K K K K     X  r*   r  c                   4    e Zd Zej        defd            ZdS )UnspecializedNNModuleSourcer   c                 0    t           | j        j                 S r4   )%_GUARD_SOURCE_UNSPECIALIZED_NN_MODULEr   r   r=   s    r   r   z(UnspecializedNNModuleSource.guard_source  s    4TY5KLLr*   Nr   rM   r*   r   r  r    sD        Mk M M M M M Mr*   r  c                   4    e Zd Zej        defd            ZdS )"UnspecializedBuiltinNNModuleSourcer   c                 0    t           | j        j                 S r4   )-_GUARD_SOURCE_UNSPECIALIZED_BUILTIN_NN_MODULEr   r   r=   s    r   r   z/UnspecializedBuiltinNNModuleSource.guard_source  s    <TY=STTr*   Nr   rM   r*   r   r  r    sD        Uk U U U U U Ur*   r  c                   4    e Zd Zej        defd            ZdS )FSDPNNModuleSourcer   c                 0    t           | j        j                 S r4   )_GUARD_SOURCE_FSDP_MODULEr   r   r=   s    r   r   zFSDPNNModuleSource.guard_source  s    ()?@@r*   Nr   rM   r*   r   r  r    sD        Ak A A A A A Ar*   r  c                   F    e Zd Zedefd            Zedefd            ZdS )GlobalStateSourcer   c                     dS Nr   rM   r=   s    r   rB   z GlobalStateSource._name_template      rr*   c                     t           j        S r4   ru   r=   s    r   r   zGlobalStateSource.guard_source  rw   r*   NrD   rE   rF   rJ   r'   rB   r
   r   rM   r*   r   r  r    s`            X "k " " " X" " "r*   r  c                   p    e Zd ZU dZeed<   ddZej        defd            Z	dd	Z
edefd
            ZdS )ImportSourcezPoints to an imported module - used instead of GlobalSource
    in case the user has overridden the module name in their local namespacemodule_namer   Nc                 \    ddl m}m}  ||                     |j                             d S )Nr   )GuardBuilderinstall_guard)guardsr  r  r   ID_MATCH)r9   r  r  s      r   r   zImportSource.__post_init__  s?    77777777dool&;<<=====r*   c                     d| j          dS )Nz__import__('z'))r  r=   s    r   rB   zImportSource._name_template  s    2d.2222r*   r2   r   c                     |                     |                    d          t          d          |                    | j                  g           d S )Nr   )r   rg   r   create_import_namer  r8   s     r   r:   zImportSource.reconstruct  sY    ))!,,"1%%**4+;<<	
 	
 	
 	
 	
r*   c                     t           j        S r4   ru   r=   s    r   r   zImportSource.guard_source  rw   r*   r   rC   )rD   rE   rF   r   r'   rG   r   rK   rL   rB   r:   rJ   r
   r   rM   r*   r   r  r    s         P P > > > >
 3 3 3 3 3
 
 
 
 "k " " " X" " "r*   r  c                   p    e Zd ZU eed<   ej        defd            ZdefdZ	d
dZ
edefd	            ZdS )TorchFunctionModeStackSourceindr   c                 L    dt          |                                            dS )Nz$___get_torch_function_mode_stack_at(r   )r)   
_get_indexr=   s    r   rB   z+TorchFunctionModeStackSource._name_template  s%    Tht?P?P6Q6QTTTTr*   c                 B    ddl m} |                    | j                  S )Nr   )TorchFunctionModeStackVariable)variables.torch_functionr  get_mode_indexr  )r9   r  s     r   r  z'TorchFunctionModeStackSource._get_index  s*    LLLLLL-<<TXFFFr*   r2   r   Nc                                          fd                                                   |                                           g                               t	          dd                     d S )Nc                  D                          t          j        d          S )N get_torch_function_mode_stack_atr\  r&  s   r   r   z:TorchFunctionModeStackSource.reconstruct.<locals>.<lambda>  s    G,, B  r*   r   F)r   r   rg   r  r   r8   s    `r   r:   z(TorchFunctionModeStackSource.reconstruct  s       	
 	
 	

 	w889J9JKKLMMM21e<<=====r*   c                     t           j        S r4   ru   r=   s    r   r   z)TorchFunctionModeStackSource.guard_source  rw   r*   rC   )rD   rE   rF   rj   rG   rK   rL   r'   rB   r  r:   rJ   r
   r   rM   r*   r   r  r    s         	HHHU U U U UGC G G G G
> > > > "k " " " X" " "r*   r  c                   t    e Zd ZU eed<   ddZedefd            Ze	j
        defd            Zd	edefd
ZdS )r   source_namer2   r   r   Nc                 d    |                     |                    | j        d                     d S )NFrp   )r6   rs   r  r8   s     r   r:   zConstantSource.reconstruct  s2    g889Iu8UUVVVVVr*   c                     t           j        S r4   )r
   r   r=   s    r   r   zConstantSource.guard_source!  s    ##r*   c                     | j         S r4   )r  r=   s    r   rB   zConstantSource._name_template%  s    r*   r   c                     t           r4   rV   r   s     r   r   zConstantSource.make_guard)  r   r*   rC   )rD   rE   rF   r'   rG   r:   rJ   r
   r   rK   rL   rB   r   r   rM   r*   r   r   r     s         W W W W $k $ $ $ X$          "S "S " " " " " "r*   r   c                   2    e Zd Zedefd            ZddZdS )NumpyTensorSourcer   c                     dS )Nz___from_numpy({0})rM   r=   s    r   rB   z NumpyTensorSource._name_template/  s    ##r*   r2   r   Nc                                          fd            | j                                       t          dd                     d S )Nc                  0                          dd          S )Ntorch	as_tensorr%  r&  s   r   r   z/NumpyTensorSource.reconstruct.<locals>.<lambda>4  s    g&>&>w&T&T r*   r   Fr'  r8   s    `r   r:   zNumpyTensorSource.reconstruct3  sX    TTTTUUU	21e<<=====r*   rC   )rD   rE   rF   rJ   r'   rB   r:   rM   r*   r   r  r  -  sM        $ $ $ $ X$> > > > > >r*   r  c                   *    e Zd Zedefd            ZdS )SubclassAttrListSourcer   c                     dS )Nz{0}.__tensor_flatten__()[0]rM   r=   s    r   rB   z%SubclassAttrListSource._name_template;  s    ,,r*   NrD   rE   rF   rJ   r'   rB   rM   r*   r   r  r  9  s9        - - - - X- - -r*   r  c                   *    e Zd Zedefd            ZdS )FloatTensorSourcer   c                     dS )Nz___as_tensor({0})rM   r=   s    r   rB   z FloatTensorSource._name_templateD  s    ""r*   Nr  rM   r*   r   r  r  B  s9        # # # # X# # #r*   r  c                   *    e Zd Zedefd            ZdS )CallMethodItemSourcer   c                     dS )Nz
{0}.item()rM   r=   s    r   rB   z#CallMethodItemSource._name_templateK  s    |r*   Nr  rM   r*   r   r  r  I  s9            X  r*   r  c                   F    e Zd Zedefd            Zedefd            ZdS )ShapeEnvSourcer   c                     dS r  rM   r=   s    r   rB   zShapeEnvSource._name_templateU  r  r*   c                     t           j        S r4   )r
   	SHAPE_ENVr=   s    r   r   zShapeEnvSource.guard_sourceY  r   r*   Nr  rM   r*   r   r  r  S  s`            X %k % % % X% % %r*   r  c                   d    e Zd ZU eed<   ej        defd            Zd	dZ	e
defd            ZdS )
CurrentStreamSourcer   r   c                 p    dt          | j        j                   dt          | j        j                   dS )Nz$___get_current_stream(torch.device('z', z)))r)   r   r  rH  r=   s    r   rB   z"CurrentStreamSource._name_templateb  s8    tht{?O6P6PttU]^b^i^oUpUpttttr*   r2   r   Nc                    d}                     fd                                fd                                                   | j        j                  g           | j        j        8|dz  }                                        | j        j                  g                               t          |d                                         t          dd                     d S )Nr   c                  D                          t          j        d          S )Nget_current_streamr\  r&  s   r   r   z1CurrentStreamSource.reconstruct.<locals>.<lambda>i  s    G,,U^=QRR r*   c                  0                          dd          S )Nr  r   r%  r&  s   r   r   z1CurrentStreamSource.reconstruct.<locals>.<lambda>k  s    g&>&>w&Q&Q r*   F)r   r   rg   r   r  rH  r   )r9   r2   num_argss    ` r   r:   zCurrentStreamSource.reconstructf  s    RRRR	
 	
 	
 	QQQQRRRw889IJJKLLL;(MH!!7#<#<T[=N#O#O"PQQQ28UCCDDD21e<<=====r*   c                     t           j        S r4   ru   r=   s    r   r   z CurrentStreamSource.guard_sources  rw   r*   rC   )rD   rE   rF   device_typerG   rK   rL   r'   rB   r:   rJ   r
   r   rM   r*   r   r  r  ^  s         u u u u u> > > > "k " " " X" " "r*   r  c                   F    e Zd Zedefd            Zedefd            ZdS )BackwardStateSourcer   c                     dS r  rM   r=   s    r   rB   z"BackwardStateSource._name_templatez  r  r*   c                     t           j        S r4   )r
   BACKWARD_STATEr=   s    r   r   z BackwardStateSource.guard_source~  s    ))r*   Nr  rM   r*   r   r  r  x  s`            X *k * * * X* * *r*   r  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_namer   r-   r/   r.   r   r  s     r   r  r    sc     &-(( U$V[CSTTTTfk** t  tr*   c                (    t          | |          d uS r  )r  r  s     r   is_from_local_sourcer    s     :JKKKSWWWr*   c                 $    t          |           d uS r4   )get_global_source_namer   s    r   is_from_global_sourcer
    s    !&))55r*   c                     t          | t                    rt          | j                  S t          | t                    sd S | j        S r4   )r   r   r	  r   rl   rm   r   s    r   r	  r	    sD    &-(( 3%fk222fl++ tr*   c                     t          | t                    rt          | j                  S t          | t                    o| j        o| j         S r4   )r   r   is_from_nonlocal_sourcer   r-   r1   r/   r   s    r   r  r    sN    &-(( 4&v{3336;'' 	 +	 r*   c                     t          | t                    rdS t          | t                    rt          | j                  S dS r   )r   r   r   is_from_closure_sourcer   r   s    r   r  r    s@    &-(( t&-(( 3%fk2225r*   targetc                 j    | |k    rdS t          | t                    rt          | j        |          S dS r   )r   r   is_from_sourcer   )r   r  s     r   r  r    s;    t&-(( 3fk62225r*   c                     t          | t                    rdS t          | t                    rt          | j                  S dS r   )r   r  r   &is_from_unspecialized_nn_module_sourcer   r   s    r   r  r    sB    &566 t&-(( C5fkBBB5r*   c                     t          | t                    rdS t          | t                    rt          | j                  S dS r   )r   r  r   .is_from_unspecialized_builtin_nn_module_sourcer   r   s    r   r  r    sB    &<== t&-(( K=fkJJJ5r*   c                     t          | t                    rdS t          | t                    rt          | j                  S dS r   )r   r   r   )is_from_unspecialized_param_buffer_sourcer   r   s    r   r  r    sB    &899 t&-(( F8EEE5r*   c                     t          | t                    rdS t          | t                    rt          | j                  S dS r   )r   r*  r   $is_from_flatten_script_object_sourcer   r   s    r   r  r    sC    &344 At	FM	*	* A3FK@@@5r*   c                     t          | t                    rdS t          | t                    rt          | j                  S dS r   )r   r  r   is_from_optimizer_sourcer   r   s    r   r  r    s@    &/** t&-(( 5'4445r*   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 )NTr?  r@  F)	r   r8  rp  r   r   r   rG  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&-(( -,,,5r*   c                     t          | t                    rdS t          | t                    rt          | j                  S dS r   )r   r   r   is_from_skip_guard_sourcer   r   s    r   r   r   	  s@    &/** t&-(( 6(5555r*   )F)vr   r   enumrK   collections.abcr   typingr   r   r  r   r  torch._guardsr   r   r	   r
   r   r   r   bytecode_transformationr   r   r   r2   r   r<   LOCAL_SPECIALIZED_NN_MODULErv   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  rH   r   r'   r    r)   r-   rO   rX   r_   rl   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Enumr   r  r  r  r  r  r*  r/  r4  r8  rG  rX  rc  rp  ry  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  r  r  r  r  r  r   rM   r*   r   <module>r0     s*   &          $ $ $ $ $ $ % % % % % % % % ' ' ' ' ' '                              #"""""" {>@+[-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 	$ 	 	 	 	&6D= &S & & & &3 3 3 3# 3 3 3 3 4(((B B B B B& B B )(B< 4(((
 
 
 
 
f 
 
 )(
$ 4(((P P P P P6 P P )(P 4(((B B B B B B B )(B" 4(((C C C C C6 C C )(C 4(((E E E E E& E E )(E( 4(((       )( 4(((	 	 	 	 	0 	 	 )(	 4(((0 0 0 0 0 0 0 )(0* 4(((
 
 
 
 
 
 
 )(
" 4(((
 
 
 
 
 
 
 )(
0 4((($ $ $ $ $] $ $ )($ 4(((    M   )( 4(((L L L L Lf L L )(L& 4(((       )( 4(((! ! ! ! !M ! ! )(! 4(((	0 	0 	0 	0 	0 	0 	0 )(	0 4(((K K K K K
 K K )(K 4(((	 	 	 	 	Z 	 	 )(	 4(((    f   )(& 4(((    m   )(@ @ @ @ @TY @ @ @  4(((#E #E #E #E #E= #E #E )(#EL 4(((0 0 0 0 0M 0 0 )(0 4(((
 
 
 
 
= 
 
 )(
 4(((	7 	7 	7 	7 	7} 	7 	7 )(	7 4(((    -   )(( 4(((	' 	' 	' 	' 	' 	' 	' )(	' 4(((	. 	. 	. 	. 	.m 	. 	. )(	.         m       4(((! ! ! ! !] ! ! )(!H 4(((!E !E !E !E !EM !E !E )(!EH 4(((       )(( 4(((    m   )(4 4(((E E E E E E E )(ED 4(((%E %E %E %E %E %E %E )(%EP 4(((&W &W &W &W &W &W &W )(&WR 4(((
 
 
 
 
 
 
 )(
  4(((+ + + + +] + + )(+ 4(((
* 
* 
* 
* 
*M 
* 
* )(
* 4(((       )( 4(((    m   )( 4(((
 
 
 
 
] 
 
 )(
 4(((M M M M M. M M )(M 4(((U U U U U)D U U )(U 4(((A A A A A A A )(A 4(((" " " " " " " )(" 4(((" " " " "6 " " )(": 4(((" " " " "6 " " )("4 4(((" " " " "V " " )("$ 4(((> > > > > > > )(> 4(((- - - - -] - - )(- 4(((# # # # # # # )(# 4(((    =   )( 4(((% % % % %V % % )(% 4(((" " " " "& " " )("2 4(((* * * * *& * * )(* 05	 	 		)-	4Z	 	 	 	 EJ X X X Xd Xt X X X X 6& 6T 6 6 6 6 6D= S4Z     F t     6 d     6 6 d     6 d     6 d     f       D     V      V     2 f       r*   