
    ɯwga                     B   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	j0                  e	j0                  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	j0                  e	j0                  iZe	j"                  e	j.                  e	j&                  e	j0                  e	j*                  e	j.                  e	j,                  e	j0                  e	j$                  e	j.                  e	j(                  e	j0                  e	j.                  e	j.                  e	j0                  e	j0                  iZe	j"                  e	j8                  e	j&                  e	j:                  e	j$                  e	j8                  e	j(                  e	j:                  e	j8                  e	j8                  e	j:                  e	j:                  e	j*                  e	j8                  e	j,                  e	j:                  e	j.                  e	j8                  e	j0                  e	j:                  i
Zd Zd	ed
   fdZ  ejB                  d       G d de
             Z" ejB                  d       G d de
             Z# ejB                  d       G d de
             Z$ ejB                  d       G d de
             Z% ejB                  d       G d de
             Z& ejB                  d       G d de             Z' ejB                  d       G d de             Z( ejB                  d       G d de             Z) ejB                  d       G d de(             Z* ejB                  d       G d  d!e(             Z+ ejB                  d       G d" d#e
             Z, G d$ d%ejZ                        Z. ejB                  d       G d& d'e             Z/ ejB                  d       G d( d)e             Z0 ejB                  d       G d* d+e             Z1 ejB                  d       G d, d-e             Z2 ejB                  d       G d. d/e             Z3 G d0 d1e      Z4 ejB                  d       G d2 d3e             Z5 ejB                  d       G d4 d5e             Z6 ejB                  d       G d6 d7e6             Z7 ejB                  d       G d8 d9e6             Z8 ejB                  d       G d: d;e             Z9 ejB                  d       G d< d=e             Z: ejB                  d       G d> d?e             Z; ejB                  d       G d@ dAe             Z< ejB                  d       G dB dCe<             Z= ejB                  d       G dD dEe=             Z> ejB                  d       G dF dGe<             Z? ejB                  d       G dH dIe
             Z@ ejB                  d       G dJ dKe
             ZA ejB                  d       G dL dMe
             ZB ejB                  d       G dN dOe             ZC ejB                  d       G dP dQe             ZD ejB                  d       G dR dSe             ZE ejB                  d       G dT dUe             ZF ejB                  d       G dV dWe
             ZG ejB                  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`ZNy)a    N)AnyOptionalUnion)ChainedSourceGuardSourceSource   )utils)create_call_functioncreate_instruction)	enum_reprc                     t        | t              ry	 | j                         t        j                  k(  ry	 y# t
        $ r Y yw xY wNTF)
isinstanceConstantSourceguard_sourcer   CONSTANTNotImplementedErrorsources    Y/home/mcse/projects/flask/flask-venv/lib/python3.12/site-packages/torch/_dynamo/source.pyis_constant_sourcer   G   sO    &.) K$8$88 9
   s   !7 	AAr   )GetItemSourceODictGetItemSourcec                    | j                   j                  |       t        | j                  t              r| j                  j                  |       y |rAt        | t
              sJ |j                  |j                  | j                                      y |j                  |j                  | j                               y N)	basereconstructr   indexr   r   append_outputcreate_load_constunpack_slice)r   codegenindex_is_slices      r   reconstruct_getitemr%   S   s     KKG$&,,'  )fm444!!'";";F<O<O<Q"RS!!'";";FLL"IJ    T)frozenc                   8    e Zd ZU eed<   dZeed<   d Zd Zd Z	y)LocalSource
local_nameFcell_or_freevarc                 X    |j                  |j                  | j                               y r   r    create_loadr*   selfr#   s     r   r   zLocalSource.reconstructf       g11$//BCr&   c                 "    t         j                  S r   )r   LOCALr0   s    r   r   zLocalSource.guard_sourcei   s       r&   c                 4    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!    O!OT!D!-r&   r)   c                   *    e Zd ZU eed<   d Zd Zd Zy)SyntheticLocalSourcer*   c                 X    |j                  |j                  | j                               y 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    !$//!4A66r&   Nr9   r:   r;   r<   r=   r   r   r8   r?   r&   r   rA   rA   p   s    OD+7r&   rA   c                   *    e Zd ZU eed<   d Zd Zd Zy)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                  j                               |j                  |j                  | j                               |j                  t        d             y NBINARY_SUBSCR)r    r.   txoutputrandom_values_varr!   rI   r   r/   s     r   r   zRandomValueSource.reconstruct   s^    g11'**2C2C2U2UVWg778N8NOP0ABr&   c                      d| j                    S )Nrandom_value_)rI   r4   s    r   r8   zRandomValueSource.name   s    t55677r&   N)r9   r:   r;   intr=   r   r   r8   r?   r&   r   rH   rH   ~   s    (C
8r&   rH   c                   *    e Zd ZU eed<   d Zd Zd Zy)GlobalSourceglobal_namec                 \    |j                  |j                  | j                  d             y NTaddr    create_load_globalrW   r/   s     r   r   zGlobalSource.reconstruct   s&    g889I9It8TUr&   c                 "    t         j                  S r   r   GLOBALr4   s    r   r   zGlobalSource.guard_source       !!!r&   c                 4    dt        | j                         dS )NG[r6   r7   rW   r4   s    r   r8   zGlobalSource.name   s    D))*+1--r&   NrF   r?   r&   r   rV   rV      s    V".r&   rV   c                   *    e Zd ZU eed<   d Zd Zd Zy)GlobalWeakRefSourcerW   c                 h     j                   fd       j                  t        dd             y )Nc                  \     j                   j                  j                  d            S rY   r\   r#   r0   s   r   <lambda>z1GlobalWeakRefSource.reconstruct.<locals>.<lambda>   s+    G))**4+;+;*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                 4    dt        | j                         dS )Nrc   z]()rd   r4   s    r   r8   zGlobalWeakRefSource.name   s    D))*+3//r&   NrF   r?   r&   r   rf   rf      s    >"0r&   rf   c                       e Zd Zd Zd Zd Zy)WeakRefCallSourcec                 h     j                   fd       j                  t        dd             y )Nc                  :    j                   j                         S r   r   r   ri   s   r   rj   z/WeakRefCallSource.reconstruct.<locals>.<lambda>   s    dii&;&;G&D r&   r   Frk   r/   s   ``r   r   zWeakRefCallSource.reconstruct   s(    DE21e<=r&   c                 6    | j                   j                         S r   r   r   r4   s    r   r   zWeakRefCallSource.guard_source       yy%%''r&   c                 <    | j                   j                          dS )Nz()r   r8   r4   s    r   r8   zWeakRefCallSource.name   s    )).."#2&&r&   Nr9   r:   r;   r   r   r8   r?   r&   r   rq   rq      s    >('r&   rq   c                   0    e Zd ZU eed<   d Zd Zd Zd Zy)
AttrSourcememberc                 ,   | j                   sJ d       d| j                  v rs| j                  j                  d      }t        j	                  | dt        | j                   dj                  |d d                    t        j	                  | d|d          y y )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    yyUUUy$++;;,,S1LfjCHH\#2=N4OP tX|B/?@ r&   c                     | j                   j                  |       |j                  |j                  | j                               y r   r   r   rm   create_load_attrsr}   r/   s     r   r   zAttrSource.reconstruct   1    		g&g77DEr&   c                 6    | j                   j                         S r   rv   r4   s    r   r   zAttrSource.guard_source   rw   r&   c                     | j                   j                         s+d| j                  j                          d| j                   dS | j                  j                          d| j                    S )Nzgetattr(, )r   )r}   isidentifierr   r8   r4   s    r   r8   zAttrSource.name   sX    {{'')diinn./r$++BB)).."#1T[[M22r&   N)	r9   r:   r;   r<   r=   r   r   r   r8   r?   r&   r   r|   r|      s    KAF(3r&   r|   c                   .    e Zd ZU dZeed<   d Zd Zd Zy)
GradSourcegradr}   c                     | j                   j                  |       |j                  |j                  | j                               y r   r   r/   s     r   r   zGradSource.reconstruct   r   r&   c                 6    | j                   j                         S r   rv   r4   s    r   r   zGradSource.guard_source   rw   r&   c                 T    | j                   j                          d| j                   S )Nr   )r   r8   r}   r4   s    r   r8   zGradSource.name   s#    )).."#1T[[M22r&   N)	r9   r:   r;   r}   r<   r=   r   r   r8   r?   r&   r   r   r      s    FCF(3r&   r   c                       e Zd Zd Zy)ParamBufferSourcec                 D    t         | j                  j                            S r   #_GUARD_SOURCE_SPECIALIZED_NN_MODULEr   r   r4   s    r   r   zParamBufferSource.guard_source       24993I3I3KLLr&   Nr9   r:   r;   r   r?   r&   r   r   r      s    Mr&   r   c                       e Zd Zy)UnspecializedParamBufferSourceN)r9   r:   r;   r?   r&   r   r   r      s    r&   r   c                   :    e Zd ZU dZee   ed<   d Zd Zd Z	d Z
y)EphemeralSourceNdescc                 "    t         j                  S r   )r   	EPHEMERALr4   s    r   r   zEphemeralSource.guard_source      $$$r&   c                 J    d| j                   d| j                   z    dS d dS )Nz
<ephemeralz:  >)r   r4   s    r   r8   zEphemeralSource.name  s1    		0ED499,NaPP2NaPPr&   c                     t         r   r   r4   s    r   
make_guardzEphemeralSource.make_guard      !!r&   c                      yNTr?   r4   s    r   is_ephemeralzEphemeralSource.is_ephemeral      r&   )r9   r:   r;   r   r   r<   r=   r   r8   r   r   r?   r&   r   r   r      s%    D(3-%Q"r&   r   c                       e Zd ZdZdZdZd Zy)TensorPropertyr   r	      c                 v    | t         j                  u ry| t         j                  u ry| t         j                  u ryy )Nsizestridestorage_offset)r   SIZESTRIDESTORAGE_OFFSETr4   s    r   method_namezTensorProperty.method_name  s:    >&&&^***^222# 3r&   N)r9   r:   r;   r   r   r   r   r?   r&   r   r   r     s    DFN$r&   r   c                   D    e Zd ZU eed<   dZee   ed<   d Zd Z	d Z
d Zy)TensorPropertySourcepropNidxc                     | j                   J | j                  t        j                  u r| j                  J y | j                  J y r   )r   r   r   r   r   r4   s    r   r   z"TensorPropertySource.__post_init__"  sD    yy$$$9955588###88'''r&   c                       fd}j                  |        j                  *j                  j                   j                               j	                  t         j                  dndd             y )Nc                      j                   j                           j                   j                  j                  j                                      y r   )r   r   r    create_load_attrr   r   ri   s   r   gen_fnz0TensorPropertySource.reconstruct.<locals>.gen_fn*  s;    II!!'*!!'":":499;P;P;R"STr&   r	   r   F)rl   r   r    r!   rm   r   )r0   r#   r   s   `` r   r   z TensorPropertySource.reconstruct)  sc    	U 	f%88!!'";";DHH"EF dhh&:5I	
r&   c                 6    | j                   j                         S r   rv   r4   s    r   r   z!TensorPropertySource.guard_source5  rw   r&   c                    | j                   t        j                  u r*| j                  j	                          d| j
                   dS | j                   t        j                  u r*| j                  j	                          d| j
                   dS | j                   t        j                  u r+| j
                  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    99+++iinn&'xz;;YY.///iinn&'z$((1==YY.77788###iinn&''899 :dii[!9::r&   )r9   r:   r;   r   r=   r   r   rT   r   r   r   r8   r?   r&   r   r   r     s*    
C#(

(	;r&   r   c                   $    e Zd Zd Zd Zd Zd Zy)NegateSourcec                      | j                   J y r   r   r4   s    r   r   zNegateSource.__post_init__F      yy$$$r&   c                     t         r   r   r/   s     r   r   zNegateSource.reconstructI  r   r&   c                 6    | j                   j                         S r   rv   r4   s    r   r   zNegateSource.guard_sourceL  rw   r&   c                 <    | j                   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  s    %"(/r&   r   c                   $    e Zd Zd Zd Zd Zd Zy)ConvertIntSourcec                      | j                   J y r   r   r4   s    r   r   zConvertIntSource.__post_init__V  r   r&   c                 :    | j                   j                  |       y r   rt   r/   s     r   r   zConvertIntSource.reconstructY      		g&r&   c                 6    | j                   j                         S r   rv   r4   s    r   r   zConvertIntSource.guard_source\  rw   r&   c                 >    d| j                   j                          dS )Nz!cast_symbool_to_symint_guardless(r   ry   r4   s    r   r8   zConvertIntSource.name_  s    2499>>3C2DAFFr&   Nr   r?   r&   r   r   r   T  s    %'(Gr&   r   c                   $    e Zd Zd Zd Zd Zd Zy)FlattenScriptObjectSourcec                      | j                   J y r   r   r4   s    r   r   z'FlattenScriptObjectSource.__post_init__e  r   r&   c                 :    | j                   j                  |       y r   rt   r/   s     r   r   z%FlattenScriptObjectSource.reconstructh  r   r&   c                 6    | j                   j                         S r   rv   r4   s    r   r   z&FlattenScriptObjectSource.guard_sourcek  rw   r&   c                 <    | j                   j                          dS )Nz.__obj_flatten__()ry   r4   s    r   r8   zFlattenScriptObjectSource.namen  s    )).."##566r&   Nr   r?   r&   r   r   r   c  s    %'(7r&   r   c                   $    e Zd Zd Zd Zd Zd Zy)ScriptObjectQualifiedNameSourcec                      | j                   J y r   r   r4   s    r   r   z-ScriptObjectQualifiedNameSource.__post_init__t  r   r&   c                 :    | j                   j                  |       y r   rt   r/   s     r   r   z+ScriptObjectQualifiedNameSource.reconstructw  r   r&   c                 6    | j                   j                         S r   rv   r4   s    r   r   z,ScriptObjectQualifiedNameSource.guard_sourcez  rw   r&   c                 <    | j                   j                          dS )Nz._type().qualified_name()ry   r4   s    r   r8   z$ScriptObjectQualifiedNameSource.name}  s    )).."##<==r&   Nr   r?   r&   r   r   r   r  s    %'(>r&   r   c                       e Zd Zd Zd Zd Zy)AttrProxySourcec                 :    | j                   j                  |       y r   rt   r/   s     r   r   zAttrProxySource.reconstruct  r   r&   c                 6    | j                   j                         S r   rv   r4   s    r   r   zAttrProxySource.guard_source  rw   r&   c                 <    | j                   j                          dS )Nz.get_base()ry   r4   s    r   r8   zAttrProxySource.name  s    )).."#;//r&   Nrz   r?   r&   r   r   r     s    '(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y)DefaultsSourceidx_keyFis_kw)initr7   comparefield_namec           
      @   | j                   sJ d       | j                  rt        | j                  t              sJ t
        j                  | dd       t
        j                  | d| j                   j                          d| j                   d| j                   d       y t        | j                  t              sJ t
        j                  | dd       t
        j                  | d| j                   j                          d| j                   d	| j                   d
       y )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    II	kj	k::dllC000tW.>?g$)).."2!31TZZL4<<.PRS dllC000tWn=g$)).."2!31TZZL$,,qQr&   c                    | j                   j                  |       |j                  |j                  | j                               |j                  |j                  | j                               |j                  t        d             y rM   )	r   r   rm   r   r   r    r!   r   r   r/   s     r   r   zDefaultsSource.reconstruct  sb    		g&g77

CDg77EF0ABr&   c                 6    | j                   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    zzr&   N)r9   r:   r;   r   rT   r<   r=   r   r>   dataclassesr   r   r   r   r   r8   r?   r&   r   r   r     se    38_E4"""E5IE3I"""E5IE3I"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              r9t        |   d| j                  j                                t        |   dd       y y )Nr   r$   T)r   r   r   slicesuperr   
__reduce__)r0   	__class__s    r   r   zGetItemSource.__post_init__  sR    yy$$$djj%(G)>)>)@AG 0$7 )r&   c                 h    t        | || j                         |j                  t        d             y )Nr$   rN   )r%   r$   r    r   r/   s     r   r   zGetItemSource.reconstruct  s(    D'$:M:MN0ABr&   c                 6    | j                   j                         S r   rv   r4   s    r   r   zGetItemSource.guard_source  rw   r&   c                 F    | 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
                  j                          d| j                  j                          dS | j                  r.| j
                  j                          d| j                         dS t        | j                  t        j                        rP| j
                  j                          dt        | j                  | j                         j                                dS | j
                  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    djj&)djj*<= X  iinn&'q):(;1==  iinn&'q):):)<(?qAA

DII.iinn&'q4::t?P?P?R?[?[?])^(__`aaiinn&'qa88r&   )r9   r:   r;   r   r=   r$   r>   r   r   r   r"   r8   __classcell__)r   s   @r   r   r     s,    J ND 8C((
9r&   r   c                       e Zd Zd Zd Zd Zy)r  c                      yr   r?   r4   s    r   is_dict_keyzConstDictKeySource.is_dict_key  r   r&   c                     j                  fd       | j                  j                         j                  j	                  | j
                               j                  t        dd             y )Nc                  D     j                  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 r&   r   Frl   r   r   r    r!   r   rm   r   r/   s    `r   r   zConstDictKeySource.reconstruct  s[    Q	
 			g&g77

CD21e<=r&   c                 X    d| j                   j                          d| j                  dS )Nzlist(z	.keys())[r6   r   r8   r   r4   s    r   r8   zConstDictKeySource.name  s'    tyy~~'(	$**qAAr&   N)r9   r:   r;   r  r   r8   r?   r&   r   r  r    s    >Br&   r  c                       e Zd Zd Zd Zy)TupleIteratorGetItemSourcec                     j                  fd       | j                  j                         j                  j	                  | j
                               j                  t        dd             y )Nc                  D     j                  t        j                  d      S )Ntuple_iterator_getitemr  r  s   r   rj   z8TupleIteratorGetItemSource.reconstruct.<locals>.<lambda>  s    G,,U^^=UV r&   r   Fr  r/   s    `r   r   z&TupleIteratorGetItemSource.reconstruct  s[    V	
 			g&g77

CD21e<=r&   c                 X    d| j                   j                          d| j                  dS )Nz___tuple_iterator_getitem(r   r   r  r4   s    r   r8   zTupleIteratorGetItemSource.name  s'    +DIINN,<+=R

~QOOr&   N)r9   r:   r;   r   r8   r?   r&   r   r  r    s    >Pr&   r  c                   $    e Zd Zd Zd Zd Zd Zy)
TypeSourcec                      | j                   J y r   r   r4   s    r   r   zTypeSource.__post_init__  r   r&   c                     j                  fd       | j                  j                         j                  t	        dd             y )Nc                  (     j                  dd      S )Nbuiltinstyper  r  s   r   rj   z(TypeSource.reconstruct.<locals>.<lambda>  s    g&>&>z6&R r&   r	   Frl   r   r   rm   r   r/   s    `r   r   zTypeSource.reconstruct  s:    RS		g&21e<=r&   c                 6    | j                   j                         S r   rv   r4   s    r   r   zTypeSource.guard_source  rw   r&   c                 >    d| j                   j                          dS )Nztype(r   ry   r4   s    r   r8   zTypeSource.name
  s    tyy~~'(**r&   Nr   r?   r&   r   r  r    s    %>
(+r&   r  c                   0    e Zd ZU eed<   d Zd Zd Zd Zy)r   r   c                      | j                   J y r   r   r4   s    r   r   z ODictGetItemSource.__post_init__  r   r&   c                     j                  fd       t        | d       j                  t        dd             y )Nc                  t     j                   j                  t        j                  j                              S r   )r    _create_load_constcollectionsOrderedDict__getitem__r  s   r   rj   z0ODictGetItemSource.reconstruct.<locals>.<lambda>  s,    G))**;+B+B+N+NO r&   Fr   r   )rl   r%   rm   r   r/   s    `r   r   zODictGetItemSource.reconstruct  s:    	

 	D'%@21e<=r&   c                 6    | j                   j                         S r   rv   r4   s    r   r   zODictGetItemSource.guard_source  rw   r&   c                    t        | j                  t              rQd| j                  j                   d| j                  j                   }d| j
                  j                          d| dS t        | j                  t              r9d| j
                  j                          d| j                  j                          dS d| j
                  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    djj$'#DJJ$9$9#:#djj>U>U=VWC&tyy~~'7&83%qAA

F+&tyy~~'7&84::??;L:MQOO&tyy~~'7&84::.JJr&   N)	r9   r:   r;   r   r=   r   r   r   r8   r?   r&   r   r   r     s    J%>(Kr&   r   c                       e Zd Zd Zd Zd Zy)OptimizerSourcec                 :    | j                   j                  |       y r   rt   r/   s     r   r   zOptimizerSource.reconstruct-  r   r&   c                 6    | j                   j                         S r   rv   r4   s    r   r   zOptimizerSource.guard_source0  rw   r&   c                 6    | j                   j                         S r   ry   r4   s    r   r8   zOptimizerSource.name3      yy~~r&   Nrz   r?   r&   r   r4  r4  +  s    '( r&   r4  c                       e Zd Zd Zd Zd Zy)NNModuleSourcec                 :    | j                   j                  |       y r   rt   r/   s     r   r   zNNModuleSource.reconstruct9  r   r&   c                 D    t         | j                  j                            S r   r   r4   s    r   r   zNNModuleSource.guard_source<  r   r&   c                 6    | j                   j                         S r   ry   r4   s    r   r8   zNNModuleSource.name?  r8  r&   Nrz   r?   r&   r   r:  r:  7  s    'M r&   r:  c                       e Zd Zd Zy)UnspecializedNNModuleSourcec                 D    t         | j                  j                            S r   )%_GUARD_SOURCE_UNSPECIALIZED_NN_MODULEr   r   r4   s    r   r   z(UnspecializedNNModuleSource.guard_sourceE  s    4TYY5K5K5MNNr&   Nr   r?   r&   r   r?  r?  C  s    Or&   r?  c                       e Zd Zd Zy)"UnspecializedBuiltinNNModuleSourcec                 D    t         | j                  j                            S r   )-_GUARD_SOURCE_UNSPECIALIZED_BUILTIN_NN_MODULEr   r   r4   s    r   r   z/UnspecializedBuiltinNNModuleSource.guard_sourceK  s    <TYY=S=S=UVVr&   Nr   r?   r&   r   rC  rC  I  s    Wr&   rC  c                       e Zd Zd Zy)FSDPNNModuleSourcec                 D    t         | j                  j                            S r   )_GUARD_SOURCE_FSDP_MODULEr   r   r4   s    r   r   zFSDPNNModuleSource.guard_sourceQ  s    ()?)?)ABBr&   Nr   r?   r&   r   rG  rG  O  s    Cr&   rG  c                       e Zd Zd Zd Zy)GlobalStateSourcec                      yNr   r?   r4   s    r   r8   zGlobalStateSource.nameW      r&   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  s    "r&   rK  c                   0    e Zd ZU eed<   d Zd Zd Zd Zy)TorchFunctionModeStackSourceindc                      yrM  r?   r4   s    r   r8   z!TorchFunctionModeStackSource.nameb  rN  r&   c                 D    ddl m} |j                  | j                        S )Nr	   )TorchFunctionModeStackVariable)variables.torch_functionrV  get_mode_indexrS  )r0   rV  s     r   
_get_indexz'TorchFunctionModeStackSource._get_indexe  s    L-<<TXXFFr&   c                     j                  fd       j                  j                  | j                               g       j                  t	        dd             y )Nc                  D     j                  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  sQ    	

 	w889JKL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    	HG
>"r&   rR  c                   0    e Zd ZU eed<   d Zd Zd Zd Zy)r   source_namec                 \    |j                  |j                  | j                  d             y )NFrZ   )r    r]   r_  r/   s     r   r   zConstantSource.reconstruct{  s&    g889I9Iu8U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  s    W$ "r&   r   c                   $    e Zd ZdefdZd Zd Zy)NumpyTensorSourcereturnc                 >    d| j                   j                          dS )Nz___from_numpy(r   ry   r4   s    r   r8   zNumpyTensorSource.name  s    		 0133r&   c                 6    | j                   j                         S r   rv   r4   s    r   r   zNumpyTensorSource.guard_source  rw   r&   c                     j                  fd       | j                  j                         j                  t	        dd             y )Nc                  (     j                  dd      S )Ntorch	as_tensorr$  r  s   r   rj   z/NumpyTensorSource.reconstruct.<locals>.<lambda>  s    g&>&>w&T r&   r	   Fr%  r/   s    `r   r   zNumpyTensorSource.reconstruct  s:    TU		g&21e<=r&   N)r9   r:   r;   r<   r8   r   r   r?   r&   r   rf  rf    s    4c 4(>r&   rf  c                       e Zd ZdefdZd Zy)SubclassAttrListSourcerg  c                 <    | j                   j                          dS )Nz.__tensor_flatten__()[0]ry   r4   s    r   r8   zSubclassAttrListSource.name  s    )).."##;<<r&   c                 6    | j                   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y)FloatTensorSourcerg  c                 >    d| j                   j                          dS )Nz___as_tensor(r   ry   r4   s    r   r8   zFloatTensorSource.name  s    tyy~~/022r&   c                 6    | j                   j                         S r   rv   r4   s    r   r   zFloatTensorSource.guard_source  rw   r&   Nrr  r?   r&   r   rt  rt    s    3c 3(r&   rt  c                       e Zd ZdefdZd Zy)CallMethodItemSourcerg  c                 <    | j                   j                          dS )Nz.item()ry   r4   s    r   r8   zCallMethodItemSource.name  s    )).."#7++r&   c                 6    | j                   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y)ShapeEnvSourcec                      y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|    s    %r&   r|  c                       e Zd Zd Zd Zy)BackwardStateSourcec                      y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    s    *r&   r  allow_cell_or_freevarc                    t        | t              rt        | j                  |      S t        | t              sy|s| j
                  ryy)Nr  FT)r   r   is_from_local_sourcer   r)   r+   )r   r  s     r   r  r    sC    &-(#KK/D
 	
 fk* V%;%;r&   c                 p    t        | t              ryt        | t              rt        | j                        S yr   )r   r   r   )is_from_unspecialized_param_buffer_sourcer   r   s    r   r  r    s,    &89&-(8EEr&   c                 p    t        | t              ryt        | t              rt        | j                        S yr   )r   r   r   $is_from_flatten_script_object_sourcer   r   s    r   r  r    s,    &34	FM	*3FKK@@r&   c                 p    t        | t              ryt        | t              rt        | j                        S yr   )r   r4  r   is_from_optimizer_sourcer   r   s    r   r  r    s+    &/*&-('44r&   c                 p    t        | t              ryt        | t              rt        | j                        S yr   )r   r   r   is_from_defaultsr   r   s    r   r  r    s+    &.)&-(,,r&   c                 D    t        | t              xr | j                  dk(  S )Ncell_contents)r   r|   r}   r   s    r   is_cell_contentsr    s    fj)Nfmm.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  {>>@@++[-T-T,,k.V.V--{/X/X..0Z0Z55{7h7h668j8j
' # {@@BB--{/X/X..0Z0Z++[-V-V,,k.X.X55{7h7h668j8j) % {HHJJ--{/`/`..0b0b++[-^-^,,k.`.`55{7h7h668j8j
1 - {4466++[-J-J,,k.L.L!!;#@#@""K$B$B--{/L/L..0N0N55{7T7T668V8V 	K78K d#-& - $- d#
76 
7 $
7 d#8 8 $8 d#
.6 
. $
. d#0& 0 $0$ d#	' 	' $	' d#3 3 $3: d#3 3 $3 d#M
 M $M d#	Z 	 $	 d#f  $ $TYY $ d##;= #; $#;L d#/= / $/ d#G} G $G d#7 7 $7 d#>m > $>0m 0 d#!] ! $!H d#(9M (9 $(9V d#B B $B" d#
P 
P $
P d#+ + $+  d#K K $K8 d# m   $  d# ]   $  d#O. O $O
 d#W)D W $W
 d#C C $C
 d#" " $" d#"6 " $"0 d#"V " $"  d#
> 
> $
> d#(] ( $( d#( ( $( d#(= ( $( d#%V % $% d#*& * $* CG 	 	f  V V OV Or&   