
    קga                        d dl Z d dlZd dlZd dlmZmZmZ d dlmZm	Z	m
Z
 ddlmZ ddlmZmZ 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        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        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        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 Zd	ed
         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                      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, G d$ d%ej-                  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 G d0 d1e          Z4 ej!        d           G d2 d3e                      Z5 ej!        d           G d4 d5e                      Z6 ej!        d           G d6 d7e6                      Z7 ej!        d           G d8 d9e6                      Z8 ej!        d           G d: d;e                      Z9 ej!        d           G d< d=e                      Z: ej!        d           G d> d?e                      Z; ej!        d           G d@ dAe                      Z< ej!        d           G dB dCe<                      Z= ej!        d           G dD dEe=                      Z> ej!        d           G dF dGe<                      Z? ej!        d           G dH dIe
                      Z@ ej!        d           G dJ dKe
                      ZA ej!        d           G dL dMe
                      ZB ej!        d           G dN dOe                      ZC ej!        d           G dP dQe                      ZD ej!        d           G dR dSe                      ZE ej!        d           G dT dUe                      ZF ej!        d           G dV dWe
                      ZG ej!        d           G dX dYe
                      ZHddZd	e
fd[ZId	e
fd\ZJd	e
fd]ZKd	e
fd^ZLd	e
fd_ZMd	e
fd`ZNdS )a    N)AnyOptionalUnion)ChainedSourceGuardSourceSource   )utils)create_call_functioncreate_instruction)	enum_reprc                     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sources    P/var/www/html/ai-engine/env/lib/python3.11/site-packages/torch/_dynamo/source.pyis_constant_sourcer   G   si    &.)) t  K$8884 9    5s   "> 
A
Ar   )GetItemSourceODictGetItemSourcec                    | j                             |           t          | j        t                    r| j                            |           d S |rSt          | t
                    sJ |                    |                    |                                                      d S |                    |                    | j                             d S N)	basereconstructr   indexr   r   append_outputcreate_load_constunpack_slice)r   codegenindex_is_slices      r   reconstruct_getitemr%   S   s     KG$$$&,'' K  ))))) 	Kfm44444!!'";";F<O<O<Q<Q"R"RSSSSS!!'";";FL"I"IJJJJJ    T)frozenc                   :    e Zd ZU eed<   dZeed<   d Zd Zd Z	dS )LocalSource
local_nameFcell_or_freevarc                 `    |                     |                    | j                             d S r   r    create_loadr*   selfr#   s     r   r   zLocalSource.reconstructf   ,    g11$/BBCCCCCr&   c                     t           j        S r   )r   LOCALr0   s    r   r   zLocalSource.guard_sourcei   s      r&   c                 2    dt          | j                   dS )NzL[])reprr*   r4   s    r   namezLocalSource.namel   s    ,D)),,,,r&   N)
__name__
__module____qualname__str__annotations__r+   boolr   r   r8    r&   r   r)   r)   a   s_         OOO!OT!!!D D D! ! !- - - - -r&   r)   c                   ,    e Zd ZU eed<   d Zd Zd ZdS )SyntheticLocalSourcer*   c                 `    |                     |                    | j                             d S r   r-   r/   s     r   r   z SyntheticLocalSource.reconstructt   r1   r&   c                     t           j        S r   )r   SYNTHETIC_LOCALr4   s    r   r   z!SyntheticLocalSource.guard_sourcew   s    **r&   c                     d| j         dS )NzSYNTHETIC_LOCAL[r6   )r*   r4   s    r   r8   zSyntheticLocalSource.namez   s    6$/6666r&   Nr9   r:   r;   r<   r=   r   r   r8   r?   r&   r   rA   rA   p   sO         OOOD D D+ + +7 7 7 7 7r&   rA   c                   ,    e Zd ZU eed<   d Zd Zd ZdS )RandomValueSourcerandom_call_indexc                     t           j        S r   )r   RANDOM_VALUEr4   s    r   r   zRandomValueSource.guard_source   s    ''r&   c                    |                     |                    |j        j        j                             |                     |                    | j                             |                     t          d                     d S NBINARY_SUBSCR)r    r.   txoutputrandom_values_varr!   rI   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Br&   c                     d| j          S )Nrandom_value_)rI   r4   s    r   r8   zRandomValueSource.name   s    7t5777r&   N)r9   r:   r;   intr=   r   r   r8   r?   r&   r   rH   rH   ~   sR         ( ( (C C C
8 8 8 8 8r&   rH   c                   ,    e Zd ZU eed<   d Zd Zd ZdS )GlobalSourceglobal_namec                 d    |                     |                    | j        d                     d S NTaddr    create_load_globalrW   r/   s     r   r   zGlobalSource.reconstruct   s2    g889It8TTUUUUUr&   c                     t           j        S r   r   GLOBALr4   s    r   r   zGlobalSource.guard_source       !!r&   c                 2    dt          | j                   dS )NG[r6   r7   rW   r4   s    r   r8   zGlobalSource.name   s    -D)**----r&   NrF   r?   r&   r   rV   rV      sR         V V V" " ". . . . .r&   rV   c                   ,    e Zd ZU eed<   d Zd Zd ZdS )GlobalWeakRefSourcerW   c                                            fd                               t          dd                     d S )Nc                  b                                               j        d                    S rY   r\   r#   r0   s   r   <lambda>z1GlobalWeakRefSource.reconstruct.<locals>.<lambda>   s0    G))**4+;*FF  r&   r   Fadd_push_nullextend_outputr   r/   s   ``r   r   zGlobalWeakRefSource.reconstruct   s\        	
 	
 	

 	21e<<=====r&   c                     t           j        S r   r_   r4   s    r   r   z GlobalWeakRefSource.guard_source   ra   r&   c                 2    dt          | j                   dS )Nrc   z]()rd   r4   s    r   r8   zGlobalWeakRefSource.name   s    /D)**////r&   NrF   r?   r&   r   rf   rf      sO         > > >" " "0 0 0 0 0r&   rf   c                        e Zd Zd Zd Zd ZdS )WeakRefCallSourcec                                            fd                               t          dd                     d S )Nc                  8    j                                        S r   r   r   ri   s   r   rj   z/WeakRefCallSource.reconstruct.<locals>.<lambda>   s    di&;&;G&D&D r&   r   Frk   r/   s   ``r   r   zWeakRefCallSource.reconstruct   sJ    DDDDDEEE21e<<=====r&   c                 4    | j                                         S r   r   r   r4   s    r   r   zWeakRefCallSource.guard_source       y%%'''r&   c                 :    | j                                          dS )Nz()r   r8   r4   s    r   r8   zWeakRefCallSource.name   s    )..""&&&&r&   Nr9   r:   r;   r   r   r8   r?   r&   r   rq   rq      sA        > > >( ( (' ' ' ' 'r&   rq   c                   2    e Zd ZU eed<   d Zd Zd Zd ZdS )
AttrSourcememberc                 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.r   r}   )r   r}   splitobject__setattr__r|   join)r0   member_partss     r   __post_init__zAttrSource.__post_init__   s    yUUUUUU$+;,,S11LfjCHH\#2#=N4O4OPP   tX|B/?@@@@@ r&   c                     | j                             |           |                    |                    | j                             d S r   r   r   rm   create_load_attrsr}   r/   s     r   r   zAttrSource.reconstruct   B    	g&&&g77DDEEEEEr&   c                 4    | j                                         S r   rv   r4   s    r   r   zAttrSource.guard_source   rw   r&   c                     | j                                         s%d| j                                         d| j         dS | j                                         d| j          S )Nzgetattr(, )r   )r}   isidentifierr   r8   r4   s    r   r8   zAttrSource.name   sb    {'')) 	CBdinn..BB$+BBBB)..""22T[222r&   N)	r9   r:   r;   r<   r=   r   r   r   r8   r?   r&   r   r|   r|      sa         KKKA A AF F F( ( (3 3 3 3 3r&   r|   c                   0    e Zd ZU dZeed<   d Zd Zd ZdS )
GradSourcegradr}   c                     | j                             |           |                    |                    | j                             d S r   r   r/   s     r   r   zGradSource.reconstruct   r   r&   c                 4    | j                                         S r   rv   r4   s    r   r   zGradSource.guard_source   rw   r&   c                 H    | j                                          d| j         S )Nr   )r   r8   r}   r4   s    r   r8   zGradSource.name   s$    )..""22T[222r&   N)	r9   r:   r;   r}   r<   r=   r   r   r8   r?   r&   r   r   r      sV         FCF F F( ( (3 3 3 3 3r&   r   c                       e Zd Zd ZdS )ParamBufferSourcec                 J    t           | j                                                 S r   #_GUARD_SOURCE_SPECIALIZED_NN_MODULEr   r   r4   s    r   r   zParamBufferSource.guard_source       2493I3I3K3KLLr&   Nr9   r:   r;   r   r?   r&   r   r   r      s(        M M M M Mr&   r   c                       e Zd ZdS )UnspecializedParamBufferSourceN)r9   r:   r;   r?   r&   r   r   r      s        Dr&   r   c                   B    e Zd ZU dZee         ed<   d Zd Zd Z	d Z
dS )EphemeralSourceNdescc                     t           j        S r   )r   	EPHEMERALr4   s    r   r   zEphemeralSource.guard_source      $$r&   c                 0    d| j         
d| j         z   nd dS )Nz
<ephemeralz:  >)r   r4   s    r   r8   zEphemeralSource.name  s&    P	0ED49,,2PPPPr&   c                     t           r   r   r4   s    r   
make_guardzEphemeralSource.make_guard      !!r&   c                     dS NTr?   r4   s    r   is_ephemeralzEphemeralSource.is_ephemeral      tr&   )r9   r:   r;   r   r   r<   r=   r   r8   r   r   r?   r&   r   r   r      si         D(3-% % %Q Q Q" " "    r&   r   c                        e Zd ZdZdZdZd ZdS )TensorPropertyr   r	      c                 f    | t           j        u rdS | t           j        u rdS | t           j        u rdS d S )Nsizestridestorage_offset)r   SIZESTRIDESTORAGE_OFFSETr4   s    r   method_namezTensorProperty.method_name  sD    >&&&6^***8^222## 32r&   N)r9   r:   r;   r   r   r   r   r?   r&   r   r   r     s2        DFN$ $ $ $ $r&   r   c                   L    e Zd ZU eed<   dZee         ed<   d Zd Z	d Z
d ZdS )TensorPropertySourcepropNidxc                 f    | j         J | j        t          j        u r| j        J d S | j        J d S r   )r   r   r   r   r   r4   s    r   r   z"TensorPropertySource.__post_init__"  sH    y$$$95558#####8'''''r&   c                       fd}                     |            j        -                                         j                                                 t           j        dndd                     d S )Nc                      j                                                                                   j                                                             d S r   )r   r   r    create_load_attrr   r   ri   s   r   gen_fnz0TensorPropertySource.reconstruct.<locals>.gen_fn*  sO    I!!'***!!'":":49;P;P;R;R"S"STTTTTr&   r	   r   F)rl   r   r    r!   rm   r   )r0   r#   r   s   `` r   r   z TensorPropertySource.reconstruct)  s    	U 	U 	U 	U 	U 	U 	f%%%8!!'";";DH"E"EFFF dh&:5II	
 	
 	
 	
 	
r&   c                 4    | j                                         S r   rv   r4   s    r   r   z!TensorPropertySource.guard_source5  rw   r&   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()[r6   z
.stride()[z.storage_offset()z
unhandled )	r   r   r   r   r8   r   r   r   AssertionErrorr4   s    r   r8   zTensorPropertySource.name8  s    9+++inn&&;;;;;;Y.///inn&&==$(====Y.7778###inn&&9999 !9di!9!9:::r&   )r9   r:   r;   r   r=   r   r   rT   r   r   r   r8   r?   r&   r   r   r     sr         
C#( ( (

 

 

( ( (	; 	; 	; 	; 	;r&   r   c                   &    e Zd Zd Zd Zd Zd ZdS )NegateSourcec                     | j         J d S r   r   r4   s    r   r   zNegateSource.__post_init__F      y$$$$$r&   c                     t           r   r   r/   s     r   r   zNegateSource.reconstructI  r   r&   c                 4    | j                                         S r   rv   r4   s    r   r   zNegateSource.guard_sourceL  rw   r&   c                 :    | j                                          dS )Nz
.__neg__()ry   r4   s    r   r8   zNegateSource.nameO  s    )..""....r&   Nr9   r:   r;   r   r   r   r8   r?   r&   r   r   r   D  sP        % % %" " "( ( (/ / / / /r&   r   c                   &    e Zd Zd Zd Zd Zd ZdS )ConvertIntSourcec                     | j         J d S r   r   r4   s    r   r   zConvertIntSource.__post_init__V  r   r&   c                 :    | j                             |           d S r   rt   r/   s     r   r   zConvertIntSource.reconstructY      	g&&&&&r&   c                 4    | j                                         S r   rv   r4   s    r   r   zConvertIntSource.guard_source\  rw   r&   c                 <    d| j                                          dS )Nz!cast_symbool_to_symint_guardless(r   ry   r4   s    r   r8   zConvertIntSource.name_  s    F49>>3C3CFFFFr&   Nr   r?   r&   r   r   r   T  sU        % % %' ' '( ( (G G G G Gr&   r   c                   &    e Zd Zd Zd Zd Zd ZdS )FlattenScriptObjectSourcec                     | j         J d S r   r   r4   s    r   r   z'FlattenScriptObjectSource.__post_init__e  r   r&   c                 :    | j                             |           d S r   rt   r/   s     r   r   z%FlattenScriptObjectSource.reconstructh  r   r&   c                 4    | j                                         S r   rv   r4   s    r   r   z&FlattenScriptObjectSource.guard_sourcek  rw   r&   c                 :    | j                                          dS )Nz.__obj_flatten__()ry   r4   s    r   r8   zFlattenScriptObjectSource.namen  s    )..""6666r&   Nr   r?   r&   r   r   r   c  sP        % % %' ' '( ( (7 7 7 7 7r&   r   c                   &    e Zd Zd Zd Zd Zd ZdS )ScriptObjectQualifiedNameSourcec                     | j         J d S r   r   r4   s    r   r   z-ScriptObjectQualifiedNameSource.__post_init__t  r   r&   c                 :    | j                             |           d S r   rt   r/   s     r   r   z+ScriptObjectQualifiedNameSource.reconstructw  r   r&   c                 4    | j                                         S r   rv   r4   s    r   r   z,ScriptObjectQualifiedNameSource.guard_sourcez  rw   r&   c                 :    | j                                          dS )Nz._type().qualified_name()ry   r4   s    r   r8   z$ScriptObjectQualifiedNameSource.name}  s    )..""====r&   Nr   r?   r&   r   r   r   r  sP        % % %' ' '( ( (> > > > >r&   r   c                        e Zd Zd Zd Zd ZdS )AttrProxySourcec                 :    | j                             |           d S r   rt   r/   s     r   r   zAttrProxySource.reconstruct  r   r&   c                 4    | j                                         S r   rv   r4   s    r   r   zAttrProxySource.guard_source  rw   r&   c                 :    | j                                          dS )Nz.get_base()ry   r4   s    r   r8   zAttrProxySource.name  s    )..""////r&   Nrz   r?   r&   r   r   r     sA        ' ' '( ( (0 0 0 0 0r&   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 Zd Zd	 Zd
 ZdS )DefaultsSourceidx_keyFis_kw)initr7   comparefield_namec           
      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.r   __kwdefaults__r   r   z['z']__defaults__[r6   )
r   r   r   r   r<   r   r   r8   r   rT   r4   s    r   r   zDefaultsSource.__post_init__  s;   I	k 	kj	k 	k 	k : 	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    r&   c                 2   | j                             |           |                    |                    | j                             |                    |                    | j                             |                    t          d                     d S rM   )	r   r   rm   r   r   r    r!   r   r   r/   s     r   r   zDefaultsSource.reconstruct  s    	g&&&g77
CCDDDg77EEFFF0AABBBBBr&   c                 4    | j                                         S r   rv   r4   s    r   r   zDefaultsSource.guard_source  rw   r&   c                     | j         S r   )r   r4   s    r   r8   zDefaultsSource.name  s
    zr&   N)r9   r:   r;   r   rT   r<   r=   r   r>   dataclassesr   r   r   r   r   r8   r?   r&   r   r   r     s         38_E4""E5IIIE3III""E5IIIE3III  "C C C( ( (    r&   r   c                   P     e Zd ZU eed<   dZeed<    fdZd Zd Z	d Z
d Z xZS )	r   r   Fr$   c                    | j         J t          | j        t                    r]t	                                          d| j                                                   t	                                          dd           d S d S )Nr   r$   T)r   r   r   slicesuperr   
__reduce__)r0   	__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&   c                 x    t          | || j                   |                    t          d                     d S )Nr$   rN   )r%   r$   r    r   r/   s     r   r   zGetItemSource.reconstruct  s=    D'$:MNNNN0AABBBBBr&   c                 4    | j                                         S r   rv   r4   s    r   r   zGetItemSource.guard_source  rw   r&   c                 2    | j         sJ | j        \  }} || S r   )r$   r   )r0   slice_class
slice_argss      r   r"   zGetItemSource.unpack_slice  s*    """""&*Z{J''r&   c                    t          | j        t                    r_t          | j        t                    st	          d          | j                                         d| j                                         dS | j        r1| j                                         d|                                 dS t          | j        t          j
                  rV| j                                         dt          | j        |                                                                            dS | j                                         d| j        dS )NzBGetItemSource index must be a constant, enum or ConstDictKeySourcer   r6   )r   r   r   ConstDictKeySource
ValueErrorr   r8   r$   r"   enumEnumr   r   is_localr4   s    r   r8   zGetItemSource.name  s/    dj&)) 	9dj*<==  X   inn&&==):):====  	9inn&&AA):):)<)<AAAA
DI.. 	9inn&&aa4:t?P?P?R?R?[?[?]?])^)^aaaainn&&888888r&   )r9   r:   r;   r   r=   r$   r>   r   r   r   r"   r8   __classcell__)r   s   @r   r   r     s         JJJ ND   8 8 8 8 8C C C( ( (( ( (
9 9 9 9 9 9 9r&   r   c                        e Zd Zd Zd Zd ZdS )r  c                     dS r   r?   r4   s    r   is_dict_keyzConstDictKeySource.is_dict_key  r   r&   c                                         fd           | j                                                                               | j                                                 t          dd                     d S )Nc                  D                          t          j        d          S )Ndict_keys_getitemload_import_fromr
   r9   r#   s   r   rj   z0ConstDictKeySource.reconstruct.<locals>.<lambda>  s    G,,U^=PQQ r&   r   Frl   r   r   r    r!   r   rm   r   r/   s    `r   r   zConstDictKeySource.reconstruct  s    QQQQ	
 	
 	
 		g&&&g77
CCDDD21e<<=====r&   c                 L    d| j                                          d| j        dS )Nzlist(z	.keys())[r6   r   r8   r   r4   s    r   r8   zConstDictKeySource.name  s)    Aty~~''AA$*AAAAr&   N)r9   r:   r;   r  r   r8   r?   r&   r   r  r    sF          > > >B B B B Br&   r  c                       e Zd Zd Zd ZdS )TupleIteratorGetItemSourcec                                         fd           | j                                                                               | j                                                 t          dd                     d S )Nc                  D                          t          j        d          S )Ntuple_iterator_getitemr  r  s   r   rj   z8TupleIteratorGetItemSource.reconstruct.<locals>.<lambda>  s    G,,U^=UVV r&   r   Fr  r/   s    `r   r   z&TupleIteratorGetItemSource.reconstruct  s    VVVV	
 	
 	
 		g&&&g77
CCDDD21e<<=====r&   c                 L    d| j                                          d| j        dS )Nz___tuple_iterator_getitem(r   r   r  r4   s    r   r8   zTupleIteratorGetItemSource.name  s)    ODINN,<,<OO
OOOOr&   N)r9   r:   r;   r   r8   r?   r&   r   r  r    s7        > > >P P P P Pr&   r  c                   &    e Zd Zd Zd Zd Zd ZdS )
TypeSourcec                     | j         J d S r   r   r4   s    r   r   zTypeSource.__post_init__  r   r&   c                                          fd           | j                                                           t	          dd                     d S )Nc                  0                          dd          S )Nbuiltinstyper  r  s   r   rj   z(TypeSource.reconstruct.<locals>.<lambda>  s    g&>&>z6&R&R r&   r	   Frl   r   r   rm   r   r/   s    `r   r   zTypeSource.reconstruct  s\    RRRRSSS	g&&&21e<<=====r&   c                 4    | j                                         S r   rv   r4   s    r   r   zTypeSource.guard_source  rw   r&   c                 <    d| j                                          dS )Nztype(r   ry   r4   s    r   r8   zTypeSource.name
  s    *ty~~''****r&   Nr   r?   r&   r   r  r    sP        % % %> > >
( ( (+ + + + +r&   r  c                   2    e Zd ZU eed<   d Zd Zd Zd ZdS )r   r   c                     | j         J d S r   r   r4   s    r   r   z ODictGetItemSource.__post_init__  r   r&   c                                          fd           t          | d                               t          dd                     d S )Nc                  r                                               t          j        j                            S r   )r    _create_load_constcollectionsOrderedDict__getitem__r  s   r   rj   z0ODictGetItemSource.reconstruct.<locals>.<lambda>  s.    G))**;+B+NOO  r&   Fr   r   )rl   r%   rm   r   r/   s    `r   r   zODictGetItemSource.reconstruct  sk       	
 	
 	

 	D'%@@@@21e<<=====r&   c                 4    | j                                         S r   rv   r4   s    r   r   zODictGetItemSource.guard_source  rw   r&   c                    t          | j        t                    r<d| j        j         d| j        j         }d| j                                         d| dS t          | j        t                    r7d| j                                         d| j                                         dS d| j                                         d| j        dS )Nz__load_module("z").z___odict_getitem(r   r   )r   r   r#  r:   r;   r   r8   r   )r0   reps     r   r8   zODictGetItemSource.name!  s    dj$'' 	KWDJ$9WWdj>UWWCAty~~'7'7AA3AAAA
F++ 	KOty~~'7'7OO4:??;L;LOOOOJty~~'7'7JJ4:JJJJr&   N)	r9   r:   r;   r   r=   r   r   r   r8   r?   r&   r   r   r     s`         JJJ% % %> > >( ( (K K K K Kr&   r   c                        e Zd Zd Zd Zd ZdS )OptimizerSourcec                 :    | j                             |           d S r   rt   r/   s     r   r   zOptimizerSource.reconstruct-  r   r&   c                 4    | j                                         S r   rv   r4   s    r   r   zOptimizerSource.guard_source0  rw   r&   c                 4    | j                                         S r   ry   r4   s    r   r8   zOptimizerSource.name3      y~~r&   Nrz   r?   r&   r   r4  r4  +  sA        ' ' '( ( (         r&   r4  c                        e Zd Zd Zd Zd ZdS )NNModuleSourcec                 :    | j                             |           d S r   rt   r/   s     r   r   zNNModuleSource.reconstruct9  r   r&   c                 J    t           | j                                                 S r   r   r4   s    r   r   zNNModuleSource.guard_source<  r   r&   c                 4    | j                                         S r   ry   r4   s    r   r8   zNNModuleSource.name?  r8  r&   Nrz   r?   r&   r   r:  r:  7  sD        ' ' 'M M M         r&   r:  c                       e Zd Zd ZdS )UnspecializedNNModuleSourcec                 J    t           | j                                                 S r   )%_GUARD_SOURCE_UNSPECIALIZED_NN_MODULEr   r   r4   s    r   r   z(UnspecializedNNModuleSource.guard_sourceE  s    4TY5K5K5M5MNNr&   Nr   r?   r&   r   r?  r?  C  s(        O O O O Or&   r?  c                       e Zd Zd ZdS )"UnspecializedBuiltinNNModuleSourcec                 J    t           | j                                                 S r   )-_GUARD_SOURCE_UNSPECIALIZED_BUILTIN_NN_MODULEr   r   r4   s    r   r   z/UnspecializedBuiltinNNModuleSource.guard_sourceK  s    <TY=S=S=U=UVVr&   Nr   r?   r&   r   rC  rC  I  s(        W W W W Wr&   rC  c                       e Zd Zd ZdS )FSDPNNModuleSourcec                 J    t           | j                                                 S r   )_GUARD_SOURCE_FSDP_MODULEr   r   r4   s    r   r   zFSDPNNModuleSource.guard_sourceQ  s    ()?)?)A)ABBr&   Nr   r?   r&   r   rG  rG  O  s(        C C C C Cr&   rG  c                       e Zd Zd Zd ZdS )GlobalStateSourcec                     dS Nr   r?   r4   s    r   r8   zGlobalStateSource.nameW      rr&   c                     t           j        S r   r_   r4   s    r   r   zGlobalStateSource.guard_sourceZ  ra   r&   Nr9   r:   r;   r8   r   r?   r&   r   rK  rK  U  s2          " " " " "r&   rK  c                   2    e Zd ZU eed<   d Zd Zd Zd ZdS )TorchFunctionModeStackSourceindc                     dS rM  r?   r4   s    r   r8   z!TorchFunctionModeStackSource.nameb  rN  r&   c                 B    ddl m} |                    | j                  S )Nr	   )TorchFunctionModeStackVariable)variables.torch_functionrV  get_mode_indexrS  )r0   rV  s     r   
_get_indexz'TorchFunctionModeStackSource._get_indexe  s*    LLLLLL-<<TXFFFr&   c                                          fd                                                   |                                           g                               t	          dd                     d S )Nc                  D                          t          j        d          S )N get_torch_function_mode_stack_atr  r  s   r   rj   z:TorchFunctionModeStackSource.reconstruct.<locals>.<lambda>l  s    G,, B  r&   r	   F)rl   rm   r!   rY  r   r/   s    `r   r   z(TorchFunctionModeStackSource.reconstructj  s       	
 	
 	

 	w889J9JKKLMMM21e<<=====r&   c                     t           j        S r   r_   r4   s    r   r   z)TorchFunctionModeStackSource.guard_sources  ra   r&   N)	r9   r:   r;   rT   r=   r8   rY  r   r   r?   r&   r   rR  rR  ^  s^         	HHH  G G G
> > >" " " " "r&   rR  c                   2    e Zd ZU eed<   d Zd Zd Zd ZdS )r   source_namec                 d    |                     |                    | j        d                     d S )NFrZ   )r    r]   r_  r/   s     r   r   zConstantSource.reconstruct{  s2    g889Iu8UUVVVVVr&   c                     t           j        S r   )r   r   r4   s    r   r   zConstantSource.guard_source~  s    ##r&   c                     | j         S r   )r_  r4   s    r   r8   zConstantSource.name  s    r&   c                     t           r   r   )r0   fns     r   r   zConstantSource.make_guard  r   r&   N)	r9   r:   r;   r<   r=   r   r   r8   r   r?   r&   r   r   r   w  sa         W W W$ $ $     " " " " "r&   r   c                   &    e Zd ZdefdZd Zd ZdS )NumpyTensorSourcereturnc                 <    d| j                                          dS )Nz___from_numpy(r   ry   r4   s    r   r8   zNumpyTensorSource.name  s    3	 0 03333r&   c                 4    | j                                         S r   rv   r4   s    r   r   zNumpyTensorSource.guard_source  rw   r&   c                                          fd           | j                                                           t	          dd                     d S )Nc                  0                          dd          S )Ntorch	as_tensorr$  r  s   r   rj   z/NumpyTensorSource.reconstruct.<locals>.<lambda>  s    g&>&>w&T&T r&   r	   Fr%  r/   s    `r   r   zNumpyTensorSource.reconstruct  s\    TTTTUUU	g&&&21e<<=====r&   N)r9   r:   r;   r<   r8   r   r   r?   r&   r   rf  rf    sM        4c 4 4 4 4( ( (> > > > >r&   rf  c                        e Zd ZdefdZd ZdS )SubclassAttrListSourcerg  c                 :    | j                                          dS )Nz.__tensor_flatten__()[0]ry   r4   s    r   r8   zSubclassAttrListSource.name  s    )..""<<<<r&   c                 4    | j                                         S r   rv   r4   s    r   r   z#SubclassAttrListSource.guard_source  rw   r&   Nr9   r:   r;   r<   r8   r   r?   r&   r   ro  ro    s>        =c = = = =( ( ( ( (r&   ro  c                        e Zd ZdefdZd ZdS )FloatTensorSourcerg  c                 <    d| j                                          dS )Nz___as_tensor(r   ry   r4   s    r   r8   zFloatTensorSource.name  s    2ty~~//2222r&   c                 4    | j                                         S r   rv   r4   s    r   r   zFloatTensorSource.guard_source  rw   r&   Nrr  r?   r&   r   rt  rt    s>        3c 3 3 3 3( ( ( ( (r&   rt  c                        e Zd ZdefdZd ZdS )CallMethodItemSourcerg  c                 :    | j                                          dS )Nz.item()ry   r4   s    r   r8   zCallMethodItemSource.name  s    )..""++++r&   c                 4    | j                                         S r   rv   r4   s    r   r   z!CallMethodItemSource.guard_source  rw   r&   Nrr  r?   r&   r   rx  rx    s>        ,c , , , ,( ( ( ( (r&   rx  c                       e Zd Zd Zd ZdS )ShapeEnvSourcec                     dS rM  r?   r4   s    r   r8   zShapeEnvSource.name  rN  r&   c                     t           j        S r   )r   	SHAPE_ENVr4   s    r   r   zShapeEnvSource.guard_source  r   r&   NrP  r?   r&   r   r|  r|    s2          % % % % %r&   r|  c                       e Zd Zd Zd ZdS )BackwardStateSourcec                     dS rM  r?   r4   s    r   r8   zBackwardStateSource.name  rN  r&   c                     t           j        S r   )r   BACKWARD_STATEr4   s    r   r   z BackwardStateSource.guard_source  s    ))r&   NrP  r?   r&   r   r  r    s2          * * * * *r&   r  allow_cell_or_freevarc                    t          | t                    rt          | j        |          S t          | t                    sdS |s	| j        rdS dS )Nr  FT)r   r   is_from_local_sourcer   r)   r+   )r   r  s     r   r  r    sh    &-(( 
#K/D
 
 
 	
 fk** u  V%; u4r&   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   r4  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                  S dS r   )r   r   r   is_from_defaultsr   r   s    r   r  r    s@    &.)) t&-(( -,,,5r&   c                 B    t          | t                    o
| j        dk    S )Ncell_contents)r   r|   r}   r   s    r   is_cell_contentsr    s    fj))Nfm.NNr&   )Or-  r   r  typingr   r   r   torch._guardsr   r   r   r   r
   bytecode_transformationr   r   r   r3   LOCAL_SPECIALIZED_NN_MODULEr`   GLOBAL_SPECIALIZED_NN_MODULELOCAL_UNSPECIALIZED_NN_MODULEGLOBAL_UNSPECIALIZED_NN_MODULE%LOCAL_UNSPECIALIZED_BUILTIN_NN_MODULE&GLOBAL_UNSPECIALIZED_BUILTIN_NN_MODULEr   rA  rE  LOCAL_FSDP_MODULEGLOBAL_FSDP_MODULErI  r   r%   	dataclassr)   rA   rH   rV   rf   rq   r|   r   r   r   r   r  r   r   r   r   r   r   r   r   r   r  r  r  r   r4  r:  r?  rC  rG  rK  rR  r   rf  ro  rt  rx  r|  r  r  r  r  r  r  r  r?   r&   r   <module>r     s            ' ' ' ' ' ' ' ' ' ' < < < < < < < < < <       M M M M M M M M       {>@+[-T,k.V-{/X.0Z5{7h68j
' # {@B-{/X.0Z+[-V,k.X5{7h68j) % {HJ-{/`.0b+[-^,k.`5{7h68j
1 - {46+[-J,k.L!;#@"K$B-{/L.0N5{7T68V 	 	 	K78K K K K d###- - - - -& - - $#- 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###3 3 3 3 3 3 3 $#3: d###3 3 3 3 3 3 3 $#3 d###M M M M M
 M M $#M d###	 	 	 	 	Z 	 	 $#	 d###    f   $# $ $ $ $ $TY $ $ $ d####; #; #; #; #;= #; #; $##;L 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 $#(9V d###B B B B B B B $#B" d###
P 
P 
P 
P 
P 
P 
P $#
P d###+ + + + + + + $#+  d###K K K K K K K $#K8 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###" " " " "6 " " $#"0 d###" " " " "V " " $#"  d###
> 
> 
> 
> 
> 
> 
> $#
> d###( ( ( ( (] ( ( $#( d###( ( ( ( ( ( ( $#( d###( ( ( ( (= ( ( $#( d###% % % % %V % % $#% d###* * * * *& * * $#* CG 	 	 	 	 	 	 	f        V    V    OV O O O O O Or&   