o
    "iM                     @   s  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d	 Zd
ed fddZejddG dd de
ZejddG dd de
ZejddG dd de
ZejddG dd de
Z ejddG dd de
Z!ejddG dd deZ"ejddG dd deZ#ejddG dd de"Z$ejddG d d! d!e
Z%G d"d# d#ej&Z'ejddG d$d% d%eZ(ejddG d&d' d'eZ)ejddG d(d) d)eZ*ejddG d*d+ d+eZ+ejddG d,d- d-eZ,ejddG d.d/ d/eZ-ejddG d0d1 d1eZ.ejddG d2d3 d3e.Z/ejddG d4d5 d5e.Z0ejddG d6d7 d7eZ1ejddG d8d9 d9eZ2ejddG d:d; d;eZ3ejddG d<d= d=eZ4ejddG d>d? d?e4Z5ejddG d@dA dAe4Z6ejddG dBdC dCe
Z7ejddG dDdE dEe
Z8ejddG dFdG dGeZ9ejddG dHdI dIeZ:ejddG dJdK dKeZ;ejddG dLdM dMe
Z<ejddG dNdO dOe
Z=ddPd
e
fdQdRZ>d
e
fdSdTZ?d
e
fdUdVZ@d
e
fdWdXZAd
e
fdYdZZBdS )[    N)AnyOptionalUnion)ChainedSourceGuardSourceSource   )utils)create_call_functioncreate_instruction)	enum_reprc                 C   s>   t | trdS z|  tjkrW dS W dS  ty   Y dS w NTF)
isinstanceConstantSourceguard_sourcer   CONSTANTNotImplementedErrorsource r   R/home/ubuntu/SoloSpeech/.venv/lib/python3.10/site-packages/torch/_dynamo/source.pyis_constant_source)   s   
r   r   )GetItemSourceODictGetItemSourcec                 C   sh   | j | t| jtr| j| d S |r)t| tsJ |||   d S ||| j d S N)	basereconstructr   indexr   r   append_outputcreate_load_constunpack_slice)r   codegenindex_is_slicer   r   r   reconstruct_getitem5   s   r#   T)frozenc                   @   s:   e Zd ZU eed< dZeed< dd Zdd Zdd	 Z	d
S )LocalSource
local_nameFcell_or_freevarc                 C      | || j d S r   r   create_loadr&   selfr!   r   r   r   r   H      zLocalSource.reconstructc                 C      t jS r   )r   LOCALr,   r   r   r   r   K      zLocalSource.guard_sourcec                 C      dt | j dS )NzL[])reprr&   r0   r   r   r   nameN      zLocalSource.nameN)
__name__
__module____qualname__str__annotations__r'   boolr   r   r5   r   r   r   r   r%   C   s   
 r%   c                   @   .   e Zd ZU eed< dd Zdd Zdd ZdS )	SyntheticLocalSourcer&   c                 C   r(   r   r)   r+   r   r   r   r   V   r-   z SyntheticLocalSource.reconstructc                 C   r.   r   )r   SYNTHETIC_LOCALr0   r   r   r   r   Y   r1   z!SyntheticLocalSource.guard_sourcec                 C   s   d| j dS )NzSYNTHETIC_LOCAL[r3   )r&   r0   r   r   r   r5   \      zSyntheticLocalSource.nameNr7   r8   r9   r:   r;   r   r   r5   r   r   r   r   r>   R   s
   
 r>   c                   @   r=   )	RandomValueSourcerandom_call_indexc                 C   r.   r   )r   RANDOM_VALUEr0   r   r   r   r   d   r1   zRandomValueSource.guard_sourcec                 C   s:   | ||jjj | || j | td d S NBINARY_SUBSCR)r   r*   txoutputrandom_values_varr   rC   r   r+   r   r   r   r   g   s   zRandomValueSource.reconstructc                 C   s   d| j  S )Nrandom_value_)rC   r0   r   r   r   r5   l   s   zRandomValueSource.nameN)r7   r8   r9   intr;   r   r   r5   r   r   r   r   rB   `   s
   
 rB   c                   @   r=   )	GlobalSourceglobal_namec                 C   s   | |j| jddd d S )NFTadd)r   create_load_globalrM   r+   r   r   r   r   t      zGlobalSource.reconstructc                 C   r.   r   r   GLOBALr0   r   r   r   r   y   r1   zGlobalSource.guard_sourcec                 C   r2   )NG[r3   r4   rM   r0   r   r   r   r5   |   r6   zGlobalSource.nameNrA   r   r   r   r   rL   p   s
   
 rL   c                   @   r=   )	GlobalWeakRefSourcerM   c                 C   s,   | |j| jddd |tdd d S )NTrN   r   F)r   rP   rM   extend_outputr
   r+   r   r   r   r      s   zGlobalWeakRefSource.reconstructc                 C   r.   r   rR   r0   r   r   r   r      r1   z GlobalWeakRefSource.guard_sourcec                 C   r2   )NrT   z]()rU   r0   r   r   r   r5      r6   zGlobalWeakRefSource.nameNrA   r   r   r   r   rV      s
   
 rV   c                   @   6   e Zd ZU eed< dd Zdd Zdd Zdd	 Zd
S )
AttrSourcememberc                 C   sb   | 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   rZ   )r   rZ   splitobject__setattr__rY   join)r,   member_partsr   r   r   __post_init__   s   
zAttrSource.__post_init__c                 C   "   | j | ||| j d S r   r   r   rW   create_load_attrsrZ   r+   r   r   r   r         zAttrSource.reconstructc                 C   
   | j  S r   r   r   r0   r   r   r   r         
zAttrSource.guard_sourcec                 C   s:   | j  sd| j  d| j dS | j  d| j  S )Nzgetattr(, )r[   )rZ   isidentifierr   r5   r0   r   r   r   r5      s   
zAttrSource.nameN)	r7   r8   r9   r:   r;   rb   r   r   r5   r   r   r   r   rY      s   
 	rY   c                   @   s2   e Zd ZU dZeed< dd Zdd Zdd Zd	S )

GradSourcegradrZ   c                 C   rc   r   rd   r+   r   r   r   r      rf   zGradSource.reconstructc                 C   rg   r   rh   r0   r   r   r   r      ri   zGradSource.guard_sourcec                 C   s   | j   d| j S )Nr[   )r   r5   rZ   r0   r   r   r   r5      r-   zGradSource.nameN)	r7   r8   r9   rZ   r:   r;   r   r   r5   r   r   r   r   rm      s
   
 rm   c                   @      e Zd Zdd ZdS )ParamBufferSourcec                 C      t | j  S r   _GUARD_SOURCE_NN_MODULEr   r   r0   r   r   r   r      r@   zParamBufferSource.guard_sourceNr7   r8   r9   r   r   r   r   r   rp          rp   c                   @   s>   e Zd ZU dZee ed< dd Zdd Zdd Z	d	d
 Z
dS )EphemeralSourceNdescc                 C   r.   r   )r   	EPHEMERALr0   r   r   r   r      r1   zEphemeralSource.guard_sourcec                 C   s&   d| j d urd| j   dS d dS )Nz
<ephemeralz:  >)rw   r0   r   r   r   r5      s   &zEphemeralSource.namec                 C      t r   r   r0   r   r   r   
make_guard      zEphemeralSource.make_guardc                 C      dS NTr   r0   r   r   r   is_ephemeral   r~   zEphemeralSource.is_ephemeral)r7   r8   r9   rw   r   r:   r;   r   r5   r}   r   r   r   r   r   rv      s   
 rv   c                   @   s    e Zd ZdZdZdZdd ZdS )TensorPropertyr   r      c                 C   s.   | 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_OFFSETr0   r   r   r   method_name   s   


zTensorProperty.method_nameN)r7   r8   r9   r   r   r   r   r   r   r   r   r      s
    r   c                   @   sF   e Zd ZU eed< dZee ed< dd Zdd Z	dd	 Z
d
d ZdS )TensorPropertySourcepropNidxc                 C   s>   | j d usJ | jtju r| jd u sJ d S | jd usJ d S r   )r   r   r   r   r   r0   r   r   r   rb      s   z"TensorPropertySource.__post_init__c                 C   s`   | j | ||| j  | jd ur||| j |t	| jd ur)dndd d S )Nr   r   T)
r   r   r   create_load_attrr   r   r   r   rW   r
   r+   r   r   r   r      s   
z TensorPropertySource.reconstructc                 C   rg   r   rh   r0   r   r   r   r     ri   z!TensorPropertySource.guard_sourcec                 C   s   | j tju r| j  d| j dS | j tju r$| j  d| j dS | j tju r9| jd u s1J | j  dS td| j  )Nz.size()[r3   z
.stride()[z.storage_offset()z
unhandled )	r   r   r   r   r5   r   r   r   AssertionErrorr0   r   r   r   r5     s   zTensorPropertySource.name)r7   r8   r9   r   r;   r   r   rK   rb   r   r   r5   r   r   r   r   r      s   
 	r   c                   @   ,   e Zd Zdd Zdd Zdd Zdd Zd	S )
NegateSourcec                 C      | j d usJ d S r   r   r0   r   r   r   rb     r6   zNegateSource.__post_init__c                 C   r{   r   r|   r+   r   r   r   r     r~   zNegateSource.reconstructc                 C   rg   r   rh   r0   r   r   r   r     ri   zNegateSource.guard_sourcec                 C      | j   dS )Nz
.__neg__()r   r5   r0   r   r   r   r5     s   zNegateSource.nameNr7   r8   r9   rb   r   r   r5   r   r   r   r   r     
    r   c                   @   r   )
ConvertIntSourcec                 C   r   r   r   r0   r   r   r   rb   "  r6   zConvertIntSource.__post_init__c                 C      | j | d S r   r   r   r+   r   r   r   r   %     zConvertIntSource.reconstructc                 C   rg   r   rh   r0   r   r   r   r   (  ri   zConvertIntSource.guard_sourcec                 C      d| j   dS )Nz!cast_symbool_to_symint_guardless(rk   r   r0   r   r   r   r5   +  r6   zConvertIntSource.nameNr   r   r   r   r   r      r   r   c                   @   r   )
FlattenScriptObjectSourcec                 C   r   r   r   r0   r   r   r   rb   1  r6   z'FlattenScriptObjectSource.__post_init__c                 C   r   r   r   r+   r   r   r   r   4  r   z%FlattenScriptObjectSource.reconstructc                 C   rg   r   rh   r0   r   r   r   r   7  ri   z&FlattenScriptObjectSource.guard_sourcec                 C   r   )Nz.__obj_flatten__()r   r0   r   r   r   r5   :  r   zFlattenScriptObjectSource.nameNr   r   r   r   r   r   /  r   r   c                   @   r   )
ScriptObjectQualifiedNameSourcec                 C   r   r   r   r0   r   r   r   rb   @  r6   z-ScriptObjectQualifiedNameSource.__post_init__c                 C   r   r   r   r+   r   r   r   r   C  r   z+ScriptObjectQualifiedNameSource.reconstructc                 C   rg   r   rh   r0   r   r   r   r   F  ri   z,ScriptObjectQualifiedNameSource.guard_sourcec                 C   r   )Nz._type().qualified_name()r   r0   r   r   r   r5   I  r   z$ScriptObjectQualifiedNameSource.nameNr   r   r   r   r   r   >  r   r   c                   @   sz   e Zd ZU eeef ed< dZeed< e	j
ddddZ
eed< e	j
ddddZeed< dd Zd	d
 Zdd Zdd ZdS )DefaultsSourceidx_keyFis_kw)initr4   comparefield_namec              
   C   s   | j sJ d| jr0t| jtsJ t| dd t| d| j   d| j d| j d d S t| jt	s8J 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__[r3   )
r   r   r   r   r:   r^   r_   r5   r   rK   r0   r   r   r   rb   T  s   ""zDefaultsSource.__post_init__c                 C   sB   | j | ||| j ||| j |td d S rE   )	r   r   rW   re   r   r   r   r   r   r+   r   r   r   r   e  s   zDefaultsSource.reconstructc                 C   rg   r   rh   r0   r   r   r   r   k  ri   zDefaultsSource.guard_sourcec                 C      | j S r   )r   r0   r   r   r   r5   n  r1   zDefaultsSource.nameN)r7   r8   r9   r   rK   r:   r;   r   r<   dataclassesr   r   rb   r   r   r5   r   r   r   r   r   M  s   
 r   c                       sR   e Zd ZU eed< dZeed<  fddZdd Zdd	 Z	d
d Z
dd Z  ZS )r   r   Fr"   c                    sD   | j d us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__r   r   rb   w  s
   zGetItemSource.__post_init__c                 C   s"   t | || jd |td d S )Nr"   rF   )r#   r"   r   r   r+   r   r   r   r   ~  s   zGetItemSource.reconstructc                 C   rg   r   rh   r0   r   r   r   r     ri   zGetItemSource.guard_sourcec                 C   s   | j sJ | j\}}|| S r   )r"   r   )r,   slice_class
slice_argsr   r   r   r      s   

zGetItemSource.unpack_slicec                 C   s   t | jtrt | jtstd| j  d| j  dS | jr.| j  d|  dS t | jt	j
rH| j  dt| j|    dS | j  d| jdS )NzBGetItemSource index must be a constant, enum or ConstDictKeySourcer   r3   )r   r   r   ConstDictKeySource
ValueErrorr   r5   r"   r    enumEnumr   r   is_localr0   r   r   r   r5     s   &zGetItemSource.name)r7   r8   r9   r   r;   r"   r<   rb   r   r   r    r5   __classcell__r   r   r   r   r   r  s   
 r   c                   @   $   e Zd Zdd Zdd Zdd ZdS )r   c                 C   r   r   r   r0   r   r   r   is_dict_key  r~   zConstDictKeySource.is_dict_keyc                 C   @   | tjd | j| ||| j |t	dd d S )Ndict_keys_getitemr   T
load_import_fromr	   r7   r   r   r   r   r   rW   r
   r+   r   r   r   r        zConstDictKeySource.reconstructc                 C      d| j   d| jdS )Nzlist(z	.keys())[r3   r   r5   r   r0   r   r   r   r5     s   zConstDictKeySource.nameN)r7   r8   r9   r   r   r5   r   r   r   r   r     s    r   c                   @      e Zd Zdd Zdd ZdS )TupleIteratorGetItemSourcec                 C   r   )Ntuple_iterator_getitemr   Tr   r+   r   r   r   r     r   z&TupleIteratorGetItemSource.reconstructc                 C   r   )Nz___tuple_iterator_getitem(rj   rk   r   r0   r   r   r   r5     s   zTupleIteratorGetItemSource.nameN)r7   r8   r9   r   r5   r   r   r   r   r     s    r   c                   @   r   )

TypeSourcec                 C   r   r   r   r0   r   r   r   rb     r6   zTypeSource.__post_init__c                 C   ,   | dd | j| |tdd d S )Nbuiltinstyper   Tr   r   r   rW   r
   r+   r   r   r   r        zTypeSource.reconstructc                 C   rg   r   rh   r0   r   r   r   r     ri   zTypeSource.guard_sourcec                 C   r   )Nztype(rk   r   r0   r   r   r   r5     r6   zTypeSource.nameNr   r   r   r   r   r     s
    r   c                   @   rX   )r   r   c                 C   r   r   r   r0   r   r   r   rb     r6   z ODictGetItemSource.__post_init__c                 C   s6   | |tjj t| |dd |tdd d S )NFr   r   T)r   _create_load_constcollectionsOrderedDict__getitem__r#   rW   r
   r+   r   r   r   r     s
   zODictGetItemSource.reconstructc                 C   rg   r   rh   r0   r   r   r   r     ri   zODictGetItemSource.guard_sourcec                 C   s   t | jtrd| jj d| jj }d| j  d| dS t | jtr3d| j  d| j  dS d| j  d| jdS )Nz__load_module("z").z___odict_getitem(rj   rk   )r   r   r   r8   r9   r   r5   r   )r,   repr   r   r   r5     s   zODictGetItemSource.nameN)	r7   r8   r9   r   r;   rb   r   r   r5   r   r   r   r   r     s   
 r   c                   @   r   )OptimizerSourcec                 C   r   r   r   r+   r   r   r   r     r   zOptimizerSource.reconstructc                 C   rg   r   rh   r0   r   r   r   r     ri   zOptimizerSource.guard_sourcec                 C   rg   r   r   r0   r   r   r   r5     ri   zOptimizerSource.nameNr7   r8   r9   r   r   r5   r   r   r   r   r         r   c                   @   r   )NNModuleSourcec                 C   r   r   r   r+   r   r   r   r     r   zNNModuleSource.reconstructc                 C   rq   r   rr   r0   r   r   r   r     r@   zNNModuleSource.guard_sourcec                 C   rg   r   r   r0   r   r   r   r5     ri   zNNModuleSource.nameNr   r   r   r   r   r     r   r   c                   @   ro   )NotNNModuleSourcec                 C   rq   r   )_GUARD_SOURCE_NOT_NN_MODULEr   r   r0   r   r   r   r      r@   zNotNNModuleSource.guard_sourceNrt   r   r   r   r   r     ru   r   c                   @   ro   )FSDPNNModuleSourcec                 C   rq   r   )_GUARD_SOURCE_FSDP_MODULEr   r   r0   r   r   r   r     r@   zFSDPNNModuleSource.guard_sourceNrt   r   r   r   r   r     ru   r   c                   @   r   )GlobalStateSourcec                 C   r   Nry   r   r0   r   r   r   r5     r~   zGlobalStateSource.namec                 C   r.   r   rR   r0   r   r   r   r     r1   zGlobalStateSource.guard_sourceNr7   r8   r9   r5   r   r   r   r   r   r   
      r   c                   @   rX   )r   source_namec                 C   s   | |j| jddd d S )NFrN   )r   rP   r   r+   r   r   r   r     rQ   zConstantSource.reconstructc                 C   r.   r   )r   r   r0   r   r   r   r     r1   zConstantSource.guard_sourcec                 C   r   r   )r   r0   r   r   r   r5     r1   zConstantSource.namec                 C   r{   r   r|   )r,   fnr   r   r   r}   "  r~   zConstantSource.make_guardN)	r7   r8   r9   r:   r;   r   r   r5   r}   r   r   r   r   r     s   
 r   c                   @   s*   e Zd ZdefddZdd Zdd ZdS )	NumpyTensorSourcereturnc                 C   r   )Nz___from_numpy(rk   r   r0   r   r   r   r5   (  r6   zNumpyTensorSource.namec                 C   rg   r   rh   r0   r   r   r   r   +  ri   zNumpyTensorSource.guard_sourcec                 C   r   )Ntorch	as_tensorr   Tr   r+   r   r   r   r   .  r   zNumpyTensorSource.reconstructN)r7   r8   r9   r:   r5   r   r   r   r   r   r   r   &  s    r   c                   @   "   e Zd ZdefddZdd ZdS )FloatTensorSourcer   c                 C   r   )Nz___as_tensor(rk   r   r0   r   r   r   r5   8  r6   zFloatTensorSource.namec                 C   rg   r   rh   r0   r   r   r   r   ;  ri   zFloatTensorSource.guard_sourceNr7   r8   r9   r:   r5   r   r   r   r   r   r   6      r   c                   @   r   )CallMethodItemSourcer   c                 C   r   )Nz.item()r   r0   r   r   r   r5   A  r   zCallMethodItemSource.namec                 C   rg   r   rh   r0   r   r   r   r   D  ri   z!CallMethodItemSource.guard_sourceNr   r   r   r   r   r   ?  r   r   c                   @   r   )ShapeEnvSourcec                 C   r   r   r   r0   r   r   r   r5   M  r~   zShapeEnvSource.namec                 C   r.   r   )r   	SHAPE_ENVr0   r   r   r   r   P  r1   zShapeEnvSource.guard_sourceNr   r   r   r   r   r   K  r   r   c                   @   r   )BackwardStateSourcec                 C   r   r   r   r0   r   r   r   r5   V  r~   zBackwardStateSource.namec                 C   r.   r   )r   BACKWARD_STATEr0   r   r   r   r   Y  r1   z BackwardStateSource.guard_sourceNr   r   r   r   r   r   T  r   r   allow_cell_or_freevarc                C   s8   t | trt| j|d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   r   r   r   r   ]  s   


r   c                 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   r   r   r   r   i  
   


r   c                 C   r   r   )r   r   r   is_from_optimizer_sourcer   r   r   r   r   r   q  r   r   c                 C   r   r   )r   r   r   is_from_defaultsr   r   r   r   r   r   {  r   r   c                 C   s   t | to	| jdkS )Ncell_contents)r   rY   rZ   r   r   r   r   is_cell_contents  s   r   )Cr   r   r   typingr   r   r   torch._guardsr   r   r   ry   r	   bytecode_transformationr
   r   r   r/   LOCAL_NN_MODULErS   GLOBAL_NN_MODULErs   LOCAL_FSDP_MODULEGLOBAL_FSDP_MODULEr   r   r   r#   	dataclassr%   r>   rB   rL   rV   rY   rm   rp   rv   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s   













#




$
+














