U
    9%e>                     @   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
d Zed d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%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 d7e0Z1ejddG d8d9 d9e0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?eZ5ejddG d@dA dAe
Z6ddBe
ddCdDZ7dS )E    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 n tk
r:   Y nX dS )NTF)
isinstanceConstantSourceguard_sourcer   CONSTANTNotImplementedErrorsource r   S/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/torch/_dynamo/source.pyis_constant_source(   s    

r   c                 C   s$   |   tjtjtjtjtjtjfkS N)r   r   LOCALGLOBALLOCAL_NN_MODULEGLOBAL_NN_MODULELOCAL_FSDP_MODULEGLOBAL_FSDP_MODULEr   r   r   r   is_input_source4   s    r   )GetItemSourceODictGetItemSourcer   c                 C   sj   | j |}t| jtr,|| j| n:|rTt| ts>t||	| 
  n||	| j |S r   )basereconstructr   indexr   extendr   AssertionErrorappendcreate_load_constunpack_slice)r   codegenindex_is_sliceinstrsr   r   r   reconstruct_getitem?   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   s   | | jgS r   )create_loadr/   selfr)   r   r   r   r"   U   s    zLocalSource.reconstructc                 C   s   t jS r   )r   r   r3   r   r   r   r   X   s    zLocalSource.guard_sourcec                 C   s   dt | j dS )NL[])reprr/   r4   r   r   r   name[   s    zLocalSource.nameN)
__name__
__module____qualname__str__annotations__r0   boolr"   r   r8   r   r   r   r   r.   P   s
   
r.   c                   @   s.   e Zd ZU eed< dd Zdd Zdd ZdS )	RandomValueSourcerandom_call_indexc                 C   s   t jS r   r   ZRANDOM_VALUEr4   r   r   r   r   c   s    zRandomValueSource.guard_sourcec                 C   s"   | |jjj|| jtdgS NBINARY_SUBSCR)r1   ZtxoutputZrandom_values_varr'   r@   r   r2   r   r   r   r"   f   s    
zRandomValueSource.reconstructc                 C   s   d| j  S )NZrandom_value_)r@   r4   r   r   r   r8   m   s    zRandomValueSource.nameN)r9   r:   r;   intr=   r   r"   r8   r   r   r   r   r?   _   s   
r?   c                   @   s6   e Zd ZU eed< eed< dd Zdd Zdd Zd	S )
GeneratorStateSourcedeviceinitial_seedc                 C   s   t jS r   rA   r4   r   r   r   r   v   s    z!GeneratorStateSource.guard_sourcec                 C   s
   t  d S r   r   r2   r   r   r   r"   y   s    z GeneratorStateSource.reconstructc                 C   s    d| j  d| j }d| dS )NZgenerator_state__r5   r6   )rG   rH   )r3   r8   r   r   r   r8   }   s    zGeneratorStateSource.nameN)	r9   r:   r;   r<   r=   rE   r   r"   r8   r   r   r   r   rF   q   s
   
rF   c                   @   s.   e Zd ZU eed< dd Zdd Zdd ZdS )	GlobalSourceglobal_namec                 C   s   |j | jdddgS )NFTadd)create_load_globalrL   r2   r   r   r   r"      s    zGlobalSource.reconstructc                 C   s   t jS r   r   r   r4   r   r   r   r      s    zGlobalSource.guard_sourcec                 C   s   dt | j dS )NG[r6   r7   rL   r4   r   r   r   r8      s    zGlobalSource.nameNr9   r:   r;   r<   r=   r"   r   r8   r   r   r   r   rK      s   
rK   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )DummyGlobalSourcec                 C   s
   t  d S r   rI   r2   r   r   r   r"      s    zDummyGlobalSource.reconstructc                 C   s   t jS r   rP   r4   r   r   r   r      s    zDummyGlobalSource.guard_sourcec                 C   s   dS N r   r4   r   r   r   r8      s    zDummyGlobalSource.nameNr9   r:   r;   r"   r   r8   r   r   r   r   rT      s   rT   c                   @   s.   e Zd ZU eed< dd Zdd Zdd ZdS )	GlobalWeakRefSourcerL   c                 C   s   |j | jdddftddS )NTrM   r   F)rO   rL   r
   r2   r   r   r   r"      s    zGlobalWeakRefSource.reconstructc                 C   s   t jS r   rP   r4   r   r   r   r      s    z GlobalWeakRefSource.guard_sourcec                 C   s   dt | j dS )NrQ   z]()rR   r4   r   r   r   r8      s    zGlobalWeakRefSource.nameNrS   r   r   r   r   rX      s   
rX   c                   @   s6   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   s^   | j stdd| jkrZ| jd}t| dt| j d|d d  t| d|d  d S )Nz9Can't construct an AttrSource without a valid base source.r!   rZ   )r!   r%   rZ   splitobject__setattr__rY   join)r3   Zmember_partsr   r   r   __post_init__   s    
  zAttrSource.__post_init__c                 C   s   | j ||| j S r   )r!   r"   create_load_attrsrZ   r2   r   r   r   r"      s    zAttrSource.reconstructc                 C   s
   | j  S r   r!   r   r4   r   r   r   r      s    zAttrSource.guard_sourcec                 C   s:   | j  s$d| j  d| j dS | j  d| j  S )Nzgetattr(, )r[   )rZ   isidentifierr!   r8   r4   r   r   r   r8      s    
zAttrSource.nameN)	r9   r:   r;   r<   r=   ra   r"   r   r8   r   r   r   r   rY      s
   
	rY   c                   @   s   e Zd Zdd ZdS )ParamBufferSourcec                 C   s   t | j  S r   _GUARD_SOURCE_NN_MODULEr!   r   r4   r   r   r   r      s    zParamBufferSource.guard_sourceNr9   r:   r;   r   r   r   r   r   rg      s   rg   c                   @   s    e Zd ZdZdZdZdd ZdS )TensorPropertyr   r      c                 C   s.   | t jkrdS | t jkrdS | t jkr*dS d S )NsizeZstrideZstorage_offset)rk   SIZESTRIDESTORAGE_OFFSETr4   r   r   r   method_name   s    


zTensorProperty.method_nameN)r9   r:   r;   rn   ro   rp   rq   r   r   r   r   rk      s   rk   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 k	st| jtjkr*| jd ks8tn| jd k	s8td S r   )r!   r%   rs   rk   rp   rt   r4   r   r   r   ra      s    z"TensorPropertySource.__post_init__c                 C   s\   | j ||| j f}| jd k	r:||| j |t	| jd k	rNdndd |S )Nr   r   T)
r!   r"   Zcreate_load_attrrs   rq   rt   r&   r'   r$   r
   )r3   r)   Zinstructionsr   r   r   r"      s    

z TensorPropertySource.reconstructc                 C   s
   | j  S r   rc   r4   r   r   r   r      s    z!TensorPropertySource.guard_sourcec                 C   s   | j tjkr$| j  d| j dS | j tjkrH| j  d| j dS | j tjkrr| jd ksbt| j  dS td| j  d S )Nz.size()[r6   z
.stride()[z.storage_offset()z
unhandled )	rs   rk   rn   r!   r8   rt   ro   rp   r%   r4   r   r   r   r8      s    zTensorPropertySource.name)r9   r:   r;   rk   r=   rt   r   rE   ra   r"   r   r8   r   r   r   r   rr      s   
rr   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
NegateSourcec                 C   s   | j d k	std S r   r!   r%   r4   r   r   r   ra     s    zNegateSource.__post_init__c                 C   s
   t  d S r   rI   r2   r   r   r   r"     s    zNegateSource.reconstructc                 C   s
   | j  S r   rc   r4   r   r   r   r   	  s    zNegateSource.guard_sourcec                 C   s   | j   dS )Nz
.__neg__()r!   r8   r4   r   r   r   r8     s    zNegateSource.nameNr9   r:   r;   ra   r"   r   r8   r   r   r   r   ru     s   ru   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)initr7   comparefield_namec              
   C   s   | j std| jr^t| jts$tt| dd t| d| j   d| j	 d| j d nHt| jt
sntt| dd t| d| j   d| j	 d	| j d
 d S )Nz]Base must be a valid source in order to properly track and guard this Defaults to its origin.r~   __kwdefaults__r   r[   z['z']__defaults__[r6   )r!   r%   r{   r   rz   r<   r^   r_   r8   r~   rE   r4   r   r   r   ra     s&        zDefaultsSource.__post_init__c                 C   s<   | j |}||| j ||| jtdg |S rB   )r!   r"   r$   rb   r~   r'   rz   r   )r3   r)   r+   r   r   r   r"   )  s    
zDefaultsSource.reconstructc                 C   s
   | j  S r   rc   r4   r   r   r   r   4  s    zDefaultsSource.guard_sourcec                 C   s   | j S r   )r   r4   r   r   r   r8   7  s    zDefaultsSource.nameN)r9   r:   r;   r   rE   r<   r=   r{   r>   dataclassesr~   r   ra   r"   r   r8   r   r   r   r   ry     s   
ry   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                    s@   | j d k	stt| jtr<t d| j  t dd d S )Nr#   r*   T)r!   r%   r   r#   slicesuperr_   
__reduce__r4   	__class__r   r   ra   @  s    zGetItemSource.__post_init__c                 C   s   t | || jdtdfS )Nr*   rC   )r,   r*   r   r2   r   r   r   r"   G  s    zGetItemSource.reconstructc                 C   s
   | j  S r   rc   r4   r   r   r   r   M  s    zGetItemSource.guard_sourcec                 C   s   | j s
t| j\}}|| S r   )r*   r%   r#   )r3   Zslice_classZ
slice_argsr   r   r   r(   P  s    

zGetItemSource.unpack_slicec                 C   s   t | jtr(| j  d| j  dS | jrH| j  d|  dS t | jtjr|| j  dt	| j| 
   dS | j  d| jdS d S )Nr   r6   )r   r#   r   r!   r8   r*   r(   enumEnumr   r   is_localr4   r   r   r   r8   U  s    &zGetItemSource.name)r9   r:   r;   r   r=   r*   r>   ra   r"   r   r(   r8   __classcell__r   r   r   r   r   ;  s   
r   c                   @   s   e Zd Zdd Zdd ZdS )TupleIteratorGetItemSourcec                 C   s0   | tjd | j||| jftddS )NZtuple_iterator_getitemrl   T)load_import_fromr	   r9   r!   r"   r'   r#   r
   r2   r   r   r   r"   c  s    

z&TupleIteratorGetItemSource.reconstructc                 C   s   d| j   d| jdS )Nz___tuple_iterator_getitem(rd   re   )r!   r8   r#   r4   r   r   r   r8   k  s    zTupleIteratorGetItemSource.nameN)r9   r:   r;   r"   r8   r   r   r   r   r   a  s   r   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )

TypeSourcec                 C   s   | j d k	std S r   rv   r4   r   r   r   ra   q  s    zTypeSource.__post_init__c                 C   s"   | dd | j|tdd S )Nbuiltinstyper   Tr   r!   r"   r
   r2   r   r   r   r"   t  s    zTypeSource.reconstructc                 C   s
   | j  S r   rc   r4   r   r   r   r   x  s    zTypeSource.guard_sourcec                 C   s   d| j   dS )Nztype(re   rw   r4   r   r   r   r8   {  s    zTypeSource.nameNrx   r   r   r   r   r   o  s   r   c                   @   s6   e Zd ZU eed< dd Zdd Zdd Zdd	 Zd
S )SuperSourcer   c                 C   s    | j d k	st| jd k	std S r   )r   r%   r!   r4   r   r   r   ra     s    zSuperSource.__post_init__c                 C   s.   | dd | j|| j| tdd S )Nr   r   rl   T)r   r   r"   r!   r
   r2   r   r   r   r"     s    

zSuperSource.reconstructc                 C   s
   | j  S r   rc   r4   r   r   r   r     s    zSuperSource.guard_sourcec                 C   s   d| j   d| j  dS )Nzsuper(rd   re   )r   r8   r!   r4   r   r   r   r8     s    zSuperSource.nameN)	r9   r:   r;   r   r=   ra   r"   r   r8   r   r   r   r   r     s
   
r   c                   @   s6   e Zd ZU eed< dd Zdd Zdd Zdd	 Zd
S )r    r#   c                 C   s   | j d k	std S r   rv   r4   r   r   r   ra     s    z ODictGetItemSource.__post_init__c                 C   s&   | tjjft| |ddtddS )NFr   rl   T)Z_create_load_constcollectionsOrderedDict__getitem__r,   r
   r2   r   r   r   r"     s
    zODictGetItemSource.reconstructc                 C   s
   | j  S r   rc   r4   r   r   r   r     s    zODictGetItemSource.guard_sourcec                 C   s   t | jtr<d| jj d| jj }d| j  d| dS t | jtrfd| j  d| j  dS d| j  d| jdS d S )Nz__load_module("z").z___odict_getitem(rd   re   )r   r#   r   r:   r;   r!   r8   r   )r3   repr   r   r   r8     s    zODictGetItemSource.nameN)	r9   r:   r;   r   r=   ra   r"   r   r8   r   r   r   r   r      s
   
r    c                   @   s$   e Zd Zdd Zdd Zdd ZdS )NNModuleSourcec                 C   s   | j |S r   )r!   r"   r2   r   r   r   r"     s    zNNModuleSource.reconstructc                 C   s   t | j  S r   rh   r4   r   r   r   r     s    zNNModuleSource.guard_sourcec                 C   s
   | j  S r   rw   r4   r   r   r   r8     s    zNNModuleSource.nameNrW   r   r   r   r   r     s   r   c                   @   s   e Zd Zdd ZdS )NotNNModuleSourcec                 C   s   t | j  S r   )_GUARD_SOURCE_NOT_NN_MODULEr!   r   r4   r   r   r   r     s    zNotNNModuleSource.guard_sourceNrj   r   r   r   r   r     s   r   c                   @   s   e Zd Zdd ZdS )FSDPNNModuleSourcec                 C   s   t | j  S r   )_GUARD_SOURCE_FSDP_MODULEr!   r   r4   r   r   r   r     s    zFSDPNNModuleSource.guard_sourceNrj   r   r   r   r   r     s   r   c                   @   s   e Zd Zdd Zdd ZdS )GlobalStateSourcec                 C   s   dS rU   r   r4   r   r   r   r8     s    zGlobalStateSource.namec                 C   s   t jS r   rP   r4   r   r   r   r     s    zGlobalStateSource.guard_sourceNr9   r:   r;   r8   r   r   r   r   r   r     s   r   c                   @   s8   e Zd ZU eed< dd Zdd Zdd Zdd	d
ZdS )r   source_namec                 C   s   |j | jdddgS )NFrM   )rO   r   r2   r   r   r   r"     s    zConstantSource.reconstructc                 C   s   t jS r   )r   r   r4   r   r   r   r     s    zConstantSource.guard_sourcec                 C   s   | j S r   )r   r4   r   r   r   r8     s    zConstantSource.nameFc                 C   s
   t  d S r   rI   )r3   fnZis_volatiler   r   r   
make_guard  s    zConstantSource.make_guardN)F)	r9   r:   r;   r<   r=   r"   r   r8   r   r   r   r   r   r     s
   
r   c                   @   s*   e Zd ZedddZdd Zdd ZdS )	NumpyTensorSource)returnc                 C   s   d| j   dS )Nz__as_tensor(re   rw   r4   r   r   r   r8     s    zNumpyTensorSource.namec                 C   s
   | j  S r   rc   r4   r   r   r   r     s    zNumpyTensorSource.guard_sourcec                 C   s"   | dd | j|tdd S )NZtorchZ	as_tensorr   Tr   r2   r   r   r   r"     s    zNumpyTensorSource.reconstructN)r9   r:   r;   r<   r8   r   r"   r   r   r   r   r     s   r   c                   @   s   e Zd Zdd Zdd ZdS )ShapeEnvSourcec                 C   s   dS rU   r   r4   r   r   r   r8     s    zShapeEnvSource.namec                 C   s   t jS r   )r   Z	SHAPE_ENVr4   r   r   r   r     s    zShapeEnvSource.guard_sourceNr   r   r   r   r   r     s   r   allow_cell_or_freevarc                C   s8   t | trt| j|dS t | ts&dS |s4| jr4dS dS )Nr   FT)r   r   is_from_local_sourcer!   r.   r0   )r   r   r   r   r   r     s    
 

r   )8r   r   r   typingr   r   r   Ztorch._guardsr   r   r   rV   r	   Zbytecode_transformationr
   r   r   r   r   r   r   ri   r   r   r   r   r   r   r,   	dataclassr.   r?   rF   rK   rT   rX   rY   rg   r   rk   rr   ru   ry   r   r   r   r   r    r   r   r   r   r   r   r   r   r   r   r   r   <module>   s             
      









&

)
%










