
    '}hC                     

   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(                  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.                  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&                  iZd Zd	ed
   fdZ ej8                  d       G d de
             Z ej8                  d       G d de
             Z ej8                  d       G d de
             Z ej8                  d       G d de
             Z  ej8                  d       G d de
             Z! ej8                  d       G d de             Z" ej8                  d       G d de"             Z# ej8                  d       G d de
             Z$ G d dejJ                        Z& ej8                  d       G d  d!e             Z' ej8                  d       G d" d#e             Z( ej8                  d       G d$ d%e             Z) ej8                  d       G d& d'e             Z* ej8                  d       G d( d)e             Z+ ej8                  d       G d* d+e+             Z, ej8                  d       G d, d-e+             Z- ej8                  d       G d. d/e             Z. ej8                  d       G d0 d1e             Z/ ej8                  d       G d2 d3e             Z0 ej8                  d       G d4 d5e0             Z1 ej8                  d       G d6 d7e0             Z2 ej8                  d       G d8 d9e
             Z3 ej8                  d       G d: d;e
             Z4 ej8                  d       G d< d=e             Z5 ej8                  d       G d> d?e
             Z6 ej8                  d       G d@ dAe
             Z7ddBd	e
fdCZ8d	e
fdDZ9y)E    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    S/var/www/html/test/engine/venv/lib/python3.12/site-packages/torch/_dynamo/source.pyis_constant_sourcer   (   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%   4   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.reconstructG       g11$//BCr&   c                 "    t         j                  S r   )r   LOCALr0   s    r   r   zLocalSource.guard_sourceJ   s       r&   c                 4    dt        | j                         dS )NzL[])reprr*   r4   s    r   namezLocalSource.nameM   s    D)*!,,r&   N)
__name__
__module____qualname__str__annotations__r+   boolr   r   r8    r&   r   r)   r)   B   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.reconstructU   r1   r&   c                 "    t         j                  S r   )r   SYNTHETIC_LOCALr4   s    r   r   z!SyntheticLocalSource.guard_sourceX   s    ***r&   c                 "    d| j                   dS )NzSYNTHETIC_LOCAL[r6   )r*   r4   s    r   r8   zSyntheticLocalSource.name[   s    !$//!4A66r&   Nr9   r:   r;   r<   r=   r   r   r8   r?   r&   r   rA   rA   Q   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_sourcec   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.reconstructf   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.namek   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d             y )NFTadd)r    create_load_globalrW   r/   s     r   r   zGlobalSource.reconstructs   s+    &&t'7'7D&I	
r&   c                 "    t         j                  S r   r   GLOBALr4   s    r   r   zGlobalSource.guard_sourcex       !!!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   o   s    

".r&   rV   c                   *    e Zd ZU eed<   d Zd Zd Zy)GlobalWeakRefSourcerW   c                     |j                  |j                  | j                  dd             |j                  t	        dd             y )NTrY   r   F)r    r[   rW   extend_outputr   r/   s     r   r   zGlobalWeakRefSource.reconstruct   sC    &&t'7'74&H	
 	21e<=r&   c                 "    t         j                  S r   r]   r4   s    r   r   z GlobalWeakRefSource.guard_source   r_   r&   c                 4    dt        | j                         dS )Nra   z]()rb   r4   s    r   r8   zGlobalWeakRefSource.name   s    D))*+3//r&   NrF   r?   r&   r   rd   rd      s    >"0r&   rd   c                   >    e Zd ZU eed<   dZeed<   d Zd Zd Z	d Z
y)	
AttrSourcememberF
get_staticc                 ,   | 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   rk   )r   rk   splitobject__setattr__rj   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   rf   create_load_attrsrk   r/   s     r   r   zAttrSource.reconstruct   s1    		g&g77DEr&   c                 6    | j                   j                         S r   r   r   r4   s    r   r   zAttrSource.guard_source       yy%%''r&   c                 L   | j                   r+d| j                  j                          d| j                  dS | j                  j	                         s+d| j                  j                          d| j                  dS | j                  j                          d| j                   S )Nzinspect.getattr_static(, )zgetattr(rn   )rl   r   r8   rk   isidentifierr4   s    r   r8   zAttrSource.name   s    ??,TYY^^-=,>bqQQ))+diinn./r$++BB)).."#1T[[M22r&   N)r9   r:   r;   r<   r=   rl   r>   ru   r   r   r8   r?   r&   r   rj   rj      s'    KJAF(3r&   rj   c                       e Zd Zd Zy)ParamBufferSourcec                 D    t         | j                  j                            S r   _GUARD_SOURCE_NN_MODULEr   r   r4   s    r   r   zParamBufferSource.guard_source       &tyy'='='?@@r&   Nr9   r:   r;   r   r?   r&   r   r   r      s    A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   ru   z"TensorPropertySource.__post_init__   sD    yy$$$9955588###88'''r&   c                 h   | j                   j                  |       |j                  |j                  | j                  j                                      | j                  *|j                  |j                  | j                               |j                  t        | j                  dndd             y )Nr	   r   T)
r   r   r    create_load_attrr   r   r   r!   rf   r   r/   s     r   r   z TensorPropertySource.reconstruct   s    		g&g66tyy7L7L7NOP88!!'";";DHH"EF dhh&:4H	
r&   c                 6    | j                   j                         S r   ry   r4   s    r   r   z!TensorPropertySource.guard_source   rz   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.name   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   ru   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   ru   zNegateSource.__post_init__      yy$$$r&   c                     t               r   r   r/   s     r   r   zNegateSource.reconstruct  r   r&   c                 6    | j                   j                         S r   ry   r4   s    r   r   zNegateSource.guard_source  rz   r&   c                 <    | j                   j                          dS )Nz
.__neg__()r   r8   r4   s    r   r8   zNegateSource.name
  s    )).."#:..r&   Nr9   r:   r;   ru   r   r   r8   r?   r&   r   r   r      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   ru   zConvertIntSource.__post_init__  r   r&   c                 :    | j                   j                  |       y r   r   r   r/   s     r   r   zConvertIntSource.reconstruct      		g&r&   c                 6    | j                   j                         S r   ry   r4   s    r   r   zConvertIntSource.guard_source  rz   r&   c                 >    d| j                   j                          dS )Nz!cast_symbool_to_symint_guardless(r}   r   r4   s    r   r8   zConvertIntSource.name  s    2499>>3C2DAFFr&   Nr   r?   r&   r   r   r     s    %'(Gr&   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   rn   z['z']__defaults__[r6   )
r   r   r   r   r<   rq   rr   r8   r   rT   r4   s    r   ru   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   rf   rw   r   r    r!   r   r   r/   s     r   r   zDefaultsSource.reconstruct6  sb    		g&g77

CDg77EF0ABr&   c                 6    | j                   j                         S r   ry   r4   s    r   r   zDefaultsSource.guard_source<  rz   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   ru   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superrr   
__reduce__)r0   	__class__s    r   ru   zGetItemSource.__post_init__H  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.reconstructO  s(    D'$:M:MN0ABr&   c                 6    | j                   j                         S r   ry   r4   s    r   r   zGetItemSource.guard_sourceS  rz   r&   c                 F    | j                   sJ | j                  \  }} || S r   )r$   r   )r0   slice_class
slice_argss      r   r"   zGetItemSource.unpack_sliceV  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>   ru   r   r   r"   r8   __classcell__)r   s   @r   r   r   C  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_keyq  r   r&   c                    |j                  t        j                  d       | j                  j	                  |       |j                  |j                  | j                               |j                  t        dd             y )Ndict_keys_getitemr   T
load_import_fromr
   r9   r   r   r    r!   r   rf   r   r/   s     r   r   zConstDictKeySource.reconstructt  s\      1DE		g&g77

CD21d;<r&   c                 X    d| j                   j                          d| j                  dS )Nzlist(z	.keys())[r6   r   r8   r   r4   s    r   r8   zConstDictKeySource.namez  s'    tyy~~'(	$**qAAr&   N)r9   r:   r;   r   r   r8   r?   r&   r   r   r   o  s    =Br&   r   c                       e Zd Zd Zd Zy)TupleIteratorGetItemSourcec                    |j                  t        j                  d       | j                  j	                  |       |j                  |j                  | j                               |j                  t        dd             y )Ntuple_iterator_getitemr   Tr   r/   s     r   r   z&TupleIteratorGetItemSource.reconstruct  s\      1IJ		g&g77

CD21d;<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   ru   zTypeSource.__post_init__  r   r&   c                     |j                  dd       | j                  j                  |       |j                  t	        dd             y )Nbuiltinstyper	   Tr   r   r   rf   r   r/   s     r   r   zTypeSource.reconstruct  s:      V4		g&21d;<r&   c                 6    | j                   j                         S r   ry   r4   s    r   r   zTypeSource.guard_source  rz   r&   c                 >    d| j                   j                          dS )Nztype(r}   r   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   ru   z ODictGetItemSource.__post_init__  r   r&   c                     |j                  |j                  t        j                  j                               t        | |d       |j                  t        dd             y )NFr   r   T)r    _create_load_constcollectionsOrderedDict__getitem__r%   rf   r   r/   s     r   r   zODictGetItemSource.reconstruct  sN    &&{'>'>'J'JK	
 	D'%@21d;<r&   c                 6    | j                   j                         S r   ry   r4   s    r   r   zODictGetItemSource.guard_source  rz   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=   ru   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)NNModuleSourcec                 :    | j                   j                  |       y r   r   r/   s     r   r   zNNModuleSource.reconstruct  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   r   r4   s    r   r8   zNNModuleSource.name  s    yy~~r&   N)r9   r:   r;   r   r   r8   r?   r&   r   r  r    s    'A r&   r  c                       e Zd Zd Zy)NotNNModuleSourcec                 D    t         | j                  j                            S r   )_GUARD_SOURCE_NOT_NN_MODULEr   r   r4   s    r   r   zNotNNModuleSource.guard_source  s    *499+A+A+CDDr&   Nr   r?   r&   r   r  r    s    Er&   r  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_source  s    ()?)?)ABBr&   Nr   r?   r&   r   r  r    s    Cr&   r  c                       e Zd Zd Zd Zy)GlobalStateSourcec                      yNr   r?   r4   s    r   r8   zGlobalStateSource.name      r&   c                 "    t         j                  S r   r]   r4   s    r   r   zGlobalStateSource.guard_source  r_   r&   Nr9   r:   r;   r8   r   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   source_namec                 ^    |j                  |j                  | j                  dd             y )NFrY   )r    r[   r  r/   s     r   r   zConstantSource.reconstruct  s+    &&t'7'7E&J	
r&   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     s    

$ $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}   r   r4   s    r   r8   zNumpyTensorSource.name  s    		 0133r&   c                 6    | j                   j                         S r   ry   r4   s    r   r   zNumpyTensorSource.guard_source  rz   r&   c                     |j                  dd       | j                  j                  |       |j                  t	        dd             y )Ntorch	as_tensorr	   Tr   r/   s     r   r   zNumpyTensorSource.reconstruct  s:      +6		g&21d;<r&   N)r9   r:   r;   r<   r8   r   r   r?   r&   r   r  r    s    4c 4(=r&   r  c                       e Zd Zd Zd Zy)ShapeEnvSourcec                      yr  r?   r4   s    r   r8   zShapeEnvSource.name  r  r&   c                 "    t         j                  S r   )r   	SHAPE_ENVr4   s    r   r   zShapeEnvSource.guard_source  r   r&   Nr  r?   r&   r   r&  r&    s    %r&   r&  c                       e Zd Zd Zd Zy)BackwardStateSourcec                      yr  r?   r4   s    r   r8   zBackwardStateSource.name  r  r&   c                 "    t         j                  S r   )r   BACKWARD_STATEr4   s    r   r   z BackwardStateSource.guard_source
  s    )))r&   Nr  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   r0  s     r   r2  r2    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_defaultsr   r   s    r   r4  r4    s+    &.)&-(,,r&   ):r   r   r   typingr   r   r   torch._guardsr   r   r   r   r
   bytecode_transformationr   r   r   r3   LOCAL_NN_MODULEr^   GLOBAL_NN_MODULEr   LOCAL_FSDP_MODULEGLOBAL_FSDP_MODULEr  r
  r   r%   	dataclassr)   rA   rH   rV   rd   rj   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r   r  r&  r+  r2  r4  r?   r&   r   <module>r=     s      ' ' < <  M 
 {2244!<!<  +">">	  {4466!>!>  +"@"@!!;#@#@""K$B$B  {((**!2!2  +"4"4!!;#4#4""K$6$6 	K78K d#-& - $- d#
76 
7 $
7 d#8 8 $8 d#.6 . $. d#0& 0 $0  d#3 3 $38 d#A
 A $A d#f  $ $TYY $ d# ;=  ; $ ;F d#/= / $/ d#G} G $G d#!] ! $!H d#(9M (9 $(9V d#B B $B d#P P $P d#+ + $+  d#K K $K4 d# ]   $  d#E E $E
 d#C C $C
 d#" " $" d#$V $ $$$ d#
= 
= $
=  d#%V % $% d#*& * $* CG 	 	V r&   