U
    9%e                     @   s@  d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZmZ d dl	Z
d dlmZ ddlmZmZ ddlmZmZ ddlmZ ddlmZmZ ddlmZmZmZ d	d
lmZmZ d	dl m!Z! d	dl"m#Z#m$Z$m%Z% d	dl&m'Z' G dd deZ(G dd deZ)G dd de)Z*G dd deZ+G dd de)Z,G dd de)Z-G dd deZ.G dd deZ/G dd deZ0d d! Z1d"d# Z2d$d% Z3G d&d' d'eZ4G d(d) d)e'Z5G d*d+ d+eZ6G d,d- d-eZ7G d.d/ d/eZ8G d0d1 d1eZ9G d2d3 d3eZ:ej;d	d4d5d6 Z<G d7d8 d8eZ=G d9d: d:eZ>G d;d< d<eZ?dS )=    N)DictList   )config	variables)create_call_functioncreate_instructionunimplemented)
AttrSourceODictGetItemSource)check_constant_argsidentityproxy_args_kwargs   )MutableLocalVariableTracker)DefaultDictVariable)NestedUserFunctionVariableUserFunctionVariableUserMethodVariable)UserDefinedObjectVariablec                       sH   e Zd Zd fdd	Z fddZ fddZd	d
ddddZ  ZS )SuperVariableNFc                    s$   t  jf | || _|| _|| _d S N)super__init__typevarobjvarspecialized)selfr   r   r   kwargs	__class__ [/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/torch/_dynamo/variables/misc.pyr      s    zSuperVariable.__init__c                    sD   |t t || j | jd k	r6|| j tddS tddS d S )Nr   Tr   )r   BuiltinVariabler   r   r   r   r   Zcodegenr!   r#   r$   reconstruct!   s    



zSuperVariable.reconstructc                    sZ   | j std| jr$t| j |S | j }| j  }t|trJ| j j	}tt
|||S )Nz1-arg super not implemented)r   AssertionErrorr   getattrr   as_python_constantpython_type
issubclasstypevaluer   )r   txnameZsearch_typeZtype_to_user!   r#   r$   const_getattr*   s    


zSuperVariable.const_getattrList[VariableTracker]Dict[str, VariableTracker]r   argsr    returnc                 C   s  t | || | j| j}| | |}| jd kr4d n
t| j|}|tj	krVt
tf|S |tjjj	kr| j}ddlm}	 t|tjrt|j|	r|s|s|jj|dt  |jj|dtd td S td nt|tjrtj|fd|i| || jg| |S t|tj!rFtj"|j#| jfd|i| |||S |t$j%j&krt| jtjr| jjrt'|dkrt'|d	kr|d	 ( rdd
l)m*}
 |d	 + }|
|t,| jj|t$j%&| jj-|S td|  d S )Nr   )AttributeMutationNewguardsZ__call_nn_module_initTzsuper() nn.Module.__init__sourcer   r   )VariableBuilderznon-function or method super: ).r   	propagatevaluesr   r   r1   r9   r   objectr   LambdaVariabler   torchnnModuleside_effectsr7   
isinstancer   r   mutable_localoutputr8   updategetsetZ
store_attrConstantVariabler
   typesFunctionTyper   call_function
MethodTyper   __func__collectionsOrderedDict__getitem__lenis_python_constantbuilderr:   r*   r   r.   )r   r/   r0   r5   r    optionsZinner_fnr9   r   r7   r:   keyr#   r#   r$   call_method:   s        


  
 
    



zSuperVariable.call_method)NF)__name__
__module____qualname__r   r'   r1   rW   __classcell__r#   r#   r!   r$   r      s   	r   c                   @   s   e Zd ZdZdS )UnknownVariablez
    It could be anything!
    NrX   rY   rZ   __doc__r#   r#   r#   r$   r\   r   s   r\   c                   @   s   e Zd ZdZdS )DelayGraphBreakVariablez^
    Used to insert a dummy variable in the stack to do the graph break at CALL_FUNCTION.
    Nr]   r#   r#   r#   r$   r_   x   s   r_   c                   @   s:   e Zd ZdZdd ZeddddZdd	dd
ddZdS )ComptimeVariableza
    This variable is special, it lets you execute arbitrary code at
    Dynamo compile time
    c                 C   s   t dd S )Nzcomptime is special form)NotImplementedErrorr&   r#   r#   r$   r'      s    zComptimeVariable.reconstructr   )r0   r6   c                 C   s2   ddl m } ddlm} |t||t| j|dS )Nr   )comptimer   )r   r9   )rb   	functionsr   r)   r   r9   )r   r/   r0   rb   r   r#   r#   r$   var_getattr   s     
zComptimeVariable.var_getattrr2   r3   r4   c                 C   s   ddl m} |rtt|dks$t|d }t|trH| || nvt|tr| }|j	rptd|j
 t||j|j |jrt|jjnd t }||| ntdt| td S )Nr   )ComptimeContextr   r   zOcomptime function must not have free variables, but these variables were free: z"unsupported argument to comptime: )rb   rf   r(   rR   rC   r   Zget_functionr   get_codeclosureco_freevarsrJ   rK   	f_globalsfn_namer*   defaultstupleitemsRuntimeErrorr-   r   rI   )r   r/   r5   r    rf   fncodefuncr#   r#   r$   rL      s*    


zComptimeVariable.call_functionN)rX   rY   rZ   r^   r'   strre   rL   r#   r#   r#   r$   r`   ~   s    r`   c                       s$   e Zd Z fddZdd Z  ZS )ClosureVariablec                    s   t  jf | || _d S r   r   r   r0   r   r0   r    r!   r#   r$   r      s    zClosureVariable.__init__c                 C   s   | | jgS r   Zcreate_load_closurer0   r&   r#   r#   r$   r'      s    zClosureVariable.reconstructrX   rY   rZ   r   r'   r[   r#   r#   r!   r$   rt      s   rt   c                       s$   e Zd Z fddZdd Z  ZS )InlinedClosureVariablec                    s   t  jf | || _d S r   ru   rv   r!   r#   r$   r      s    zInlinedClosureVariable.__init__c                 C   s   | | jgS r   rw   r&   r#   r#   r$   r'      s    z"InlinedClosureVariable.reconstructrx   r#   r#   r!   r$   ry      s   ry   c                       s   e Zd Z fddZ  ZS )NewCellVariablec                    s   t  jf | d S r   r   r   r   r    r!   r#   r$   r      s    zNewCellVariable.__init__rX   rY   rZ   r   r[   r#   r#   r!   r$   rz      s   rz   c                       s   e Zd Z fddZ  ZS )NewGlobalVariablec                    s   t  jf | d S r   r{   r|   r!   r#   r$   r      s    zNewGlobalVariable.__init__r}   r#   r#   r!   r$   r~      s   r~   c                       s,   e Zd ZdZedd Z fddZ  ZS )InspectSignatureVariablez!represents inspect.signature(...)c                 K   s   |rt d|  t| S )Nzinspect.signature with )r
   r   )callabler    r#   r#   r$   create   s    zInspectSignatureVariable.createc                    s   t  jf | || _d S r   )r   r   	inspected)r   r   r    r!   r#   r$   r      s    z!InspectSignatureVariable.__init__)rX   rY   rZ   r^   staticmethodr   r   r[   r#   r#   r!   r$   r      s   
r   c                    s    fdd}t |_|S )Nc                     s    j | |S r   )forwardr5   r    fn_clsr#   r$   trampoline_autograd_fwd   s    z@produce_trampoline_autograd_fwd.<locals>.trampoline_autograd_fwd)produce_trampoline_autograd_fwd_origin)r   r   r#   r   r$   r      s    r   c                    s    fdd}t |_|S )Nc                     s    j | |S r   )backwardr   r   r#   r$   trampoline_autograd_bwd   s    z@produce_trampoline_autograd_bwd.<locals>.trampoline_autograd_bwd)produce_trampoline_autograd_bwdr   )r   r   r#   r   r$   r      s    r   c                    s    fdd}t |_|S )Nc                     s    j | |S r   )applyr   r   r#   r$   trampoline_autograd_apply   s    zDproduce_trampoline_autograd_apply.<locals>.trampoline_autograd_apply)!produce_trampoline_autograd_applyr   )r   r   r#   r   r$   r      s    r   c                       s@   e Zd ZdZ fddZdd Zdd Zdd	d
ddZ  ZS )AutogradFunctionVariablez-represents a torch.autograd.Function subclassc                    s   t  jf | || _d S r   )r   r   r   )r   r   r    r!   r#   r$   r      s    z!AutogradFunctionVariable.__init__c              	      s  d  fdd}t |||f t}|f|} rht rhtjrh| jj	tj
jjj	krjtd | jj}|tj
jjk	rtd | jj}|tj
jjk	rtd ddlm}m}	 t| j}
t| j}t| j}jj  }}t| jj| jj}|	j|t|d	d
}|||}||g}||||	j|t|dd
| |dd  }|	|
||S t  | ||! }tt| j"dd	|d< | jj#}t$|t%j&rt'j(|f|||S t$|t%j)rt'j*|j+t',| jf|||S td|  d S )NFc                    s8   t | tjr| jdk	rd t | tjr4| r4d | S )NFT)rC   r   ZTensorVariablerequires_gradNNModuleVariableZis_training)noder   r/   r#   r$   visit  s    

z2AutogradFunctionVariable.call_apply.<locals>.visitz8NYI - autograd.Function with custom setup_context methodzNYI - User defind vjpzNYI - User defind jvpr   )safe_or_raise_always_restore TorchHigherOrderOperatorVariabler   rc   r   r"   r9   z?non-function or method in subclass of torch.autograd.Function: )-r   r   AutogradFunctionContextVariabler   r?   Zis_grad_enabledr   Zcapture_autograd_functionr   Zsetup_contextautogradfunctionZ_SingleLevelFunctionr
   ZvjpFunctionZjvpZhigher_order_opsr   r   r   r   r   rE   graphZcopy_graphstater   Zimport_sourcerY   rX   makerL   r;   r<   r9   r   rC   rJ   rK   r   r   rM   r   rN   UserDefinedClassVariable)r   r/   r5   r    r   ctxZvjp_fnZjvp_fnr   r   r   r   r   Zgraph_checkpoint
checkpointZmodule_sourceZhigher_order_autograd_fnZspeculated_fwd_resultZbwd_argsrU   rp   r#   r   r$   
call_apply  s    






         
  z#AutogradFunctionVariable.call_applyc                 C   s*   t | || }t| jfd| ji|S )Nr9   )r   r;   r<   r   r   r9   )r   r/   r5   r    rU   r#   r#   r$   rL   s  s    z&AutogradFunctionVariable.call_functionr2   r3   r   c              
   C   s.  |dkr|   t| jjtjr0t| jj}nHt| jjtjrft| jjj	t
| j}|jg| }ntd| jj  |||||W  5 Q R  S Q R X n|dkrt| jjtjrt| jj}nHt| jjtjrt| jjj	t
| j}|jg| }ntd| jj  |||||S td|  d S )Nr   z&backward is a non-function or method: r   z%forward is a non-function or method: zUnsupported method: )Zstrict_translation_moderC   r   r   rJ   rK   r   rM   r   rN   r   r   objr
   Zinline_callr   )r   r/   r0   r5   r    r   r   r#   r#   r$   rW   w  s8    

$

z$AutogradFunctionVariable.call_method)	rX   rY   rZ   r^   r   r   rL   rW   r[   r#   r#   r!   r$   r      s   rr   c                       sT   e Zd ZdZd fdd	Zedd Zdd	 Zd
dddddZ fddZ	  Z
S )r   zZ
    Tracks an autograd.Function() context using mutation tracking in side_effects.py
    NFc                    s4   | dg }t jf ||d| || _|| _d S )N_saved_tensors)r.   
value_type)popr   r   r   	inference)r   r.   r   r   r    saved_tensorsr!   r#   r$   r     s    z(AutogradFunctionContextVariable.__init__c                 C   sV   | j jd tjjjtjt	ddi }| j 
dtjjjt i }|j|jjd< ||_|S )NT)r   rL   Zexample_value)rE   rB   Ztrack_object_newr?   r   r   ZFunctionCtx	functoolspartialr   create_proxyrm   r.   r   metaproxy)r/   outr   r#   r#   r$   r     s       z&AutogradFunctionContextVariable.createc                 C   s   | j S r   )r   r   r#   r#   r$   as_proxy  s    z(AutogradFunctionContextVariable.as_proxyr2   r3   r   r4   c                 C   s   |dkrt d|  | js:| jr&|r*t|jj| | t| ||	 }t
| ds\g | _|D ]2}t| tjjrd| jjd< | j| q`tjd|S )Nsave_for_backwardz"autograd.Function context method: r   TZsaved_tensor_marked)N)r
   r   r9   r(   rE   rB   Ztrack_save_for_backwardr   r;   r<   hasattrr   rC   r   r?   fxProxyr   r   appendr   rI   )r   r/   r0   r5   r    rU   argr#   r#   r$   rW     s    
z+AutogradFunctionContextVariable.call_methodc                    sH    dkr"t  fddS  dkr:ttjS t  S )Nr   c                     s     | |S r   )rW   r   r0   r   r/   r#   r$   <lambda>      z=AutogradFunctionContextVariable.var_getattr.<locals>.<lambda>r   )r>   add_optionsr   TupleVariablelistr   r   re   )r   r/   r0   r!   r   r$   re     s    z+AutogradFunctionContextVariable.var_getattr)NF)rX   rY   rZ   r^   r   r   r   r   rW   re   r[   r#   r#   r!   r$   r     s   
r   c                       s.   e Zd Z fddZddddddZ  ZS )	r>   c                    s   t  jf | || _d S r   )r   r   rp   )r   rp   r    r!   r#   r$   r     s    zLambdaVariable.__init__r2   r3   r   r4   c                 C   s   | j ||| S r   )rp   r   )r   r/   r5   r    r#   r#   r$   rL     s    zLambdaVariable.call_function)rX   rY   rZ   r   rL   r[   r#   r#   r!   r$   r>     s
    r>   c                       sz   e Zd Z fddZdd ZeejjdddZ	dd	 Z
d
d Zdd ZddddddZdddd fddZ  ZS )GetAttrVariablec                    s:   t  jf | t|tstt|ts*t|| _|| _d S r   )r   r   rC   r   r(   rs   r   r0   )r   r   r0   r    r!   r#   r$   r     s
    zGetAttrVariable.__init__c                 C   s   | j j d| j d| j dS )N(z, ))r"   rX   r   r0   r   r#   r#   r$   __str__  s    zGetAttrVariable.__str__)
base_proxyc                 C   s
   t | |S r   )r)   )r   attrr#   r#   r$   create_getattr_proxy  s    z$GetAttrVariable.create_getattr_proxyc                 C   s   t | j | jS r   )r   r   r   r   r0   r   r#   r#   r$   r     s    zGetAttrVariable.as_proxyc                 C   s`   t | jtjst |j| jj}| j|j	kr6t t
|| j}||j	krTt t
||S r   )rC   r   r   r   ra   rE   Zget_submoduleZ
module_keyr0   __dict__inspectgetattr_static)r   r/   r0   Zstep1Zstep2r#   r#   r$   r1      s    
zGetAttrVariable.const_getattrc                 C   s   || j  || jS r   )r   Zcreate_load_attrsr0   r&   r#   r#   r$   r'     s    
zGetAttrVariable.reconstructr2   r3   r   r4   c              
   C   s  ddl m} | jdkoJt| jtoJt| jjjj	dkoJ| jjjj	d t
jk}|r>ddlm} |d }|d j}|d j}	t| ||	 }
t
j  t|d |r|f ||jjd|jft||	 d	|
W  5 Q R  S t|d tr&|f ||jjd
|jft||	 d	|
W  5 Q R  S td|  W 5 Q R X t| jtrn| jdkrn| j|||| S t| jtjrt|dkrt|d  | jjrt| j|d d || j|dd  |S | j || j||| S )Nr   )wrap_fx_proxyZ__torch_function__)TorchVariabler   r      rL   )r/   r   rW   z:GetAttrVariable.call_function original __torch_function__ r   T)!rT   r   r0   rC   r   r   rR   r   r.   __mro__r?   ZTensor r   rn   r   r;   r<   Z_CZDisableTorchFunctionSubclassrE   r   r   r   r
   r   r   r   r   r   r,   r+   rW   )r   r/   r5   r    r   Z!is_original_tensor_torch_functionr   Z"original_torch_or_getattr_variablenew_argsZ
new_kwargsrU   r#   r#   r$   rL     sr    	



	

  
 zGetAttrVariable.call_functionc                    sV   |dkrDt | jtrD| jdkrDtj| jj ft	| | j| jjS t
 ||||S )N__len__
parameters)rC   r   r   r0   r   rI   r   Znum_parametersr   r;   r   rW   r   r/   r0   r5   r    r!   r#   r$   rW   T  s    

zGetAttrVariable.call_method)rX   rY   rZ   r   r   r   r?   r   r   r   r   r1   r'   rL   rW   r[   r#   r#   r!   r$   r     s    Ir   c                       s,   e Zd Zejd fddZdd Z  ZS )PythonModuleVariabler.   c                    s   t  jf | || _d S r   r   r   r.   r   r.   r    r!   r#   r$   r   h  s    zPythonModuleVariable.__init__c                 C   s   t jS r   )rJ   
ModuleTyper   r#   r#   r$   r+   l  s    z PythonModuleVariable.python_type)rX   rY   rZ   rJ   r   r   r+   r[   r#   r#   r!   r$   r   g  s   r   c                       sT   e Zd Z fddZdd Zdd Zeeddd	 Z	d
dddddZ
  ZS )SkipFilesVariablec                    s   t  jf | || _d S r   r   r   r!   r#   r$   r   q  s    zSkipFilesVariable.__init__c                 C   s
   t | jS r   r-   r.   r   r#   r#   r$   r+   u  s    zSkipFilesVariable.python_typec                 C   s   | j S r   r   r   r#   r#   r$   r*   x  s    z$SkipFilesVariable.as_python_constantNc                   C   s   t jtjiS r   )rO   
namedtupler   r   r#   r#   r#   r$    fold_through_function_to_wrapper{  s     z2SkipFilesVariable.fold_through_function_to_wrapperr2   r3   r   r4   c                    s
  ddl m} t|  | }t| jddrBtd| j  n| jt	j
krt dksvt dkr| d rt dkr|rt|nd  n d  |jt	j
 f|S | jt	jkrt dkrt d rti t	j d fdt i|S | j|   kr\t |r\| jdd	  D d
d | D }|  | j|fdt i|S | jtjkr|stfdd D rfdd	 D }g }tj| D ]}	|tjt|	f| qtj|fdt i|S | jtj krV|sVtfdd D rVfdd	 D }g }tj | D ]}	||	 q,tj|fdt i|S | jtj!kr|st dkr d "r d # r d $}
 d % }g }t!|
|D ]}	|tjt|	f| qtj|fdt i|S | jt&j'kr@|s@t dkr@ d j(r@ fdd}tj)|f|S | jt	j*kr|st dkrhg }n6t dkr d "r d $}ntd tj+j,|fdt i|S zt-| j}W n$ t.k
r   d| jj/ }Y nX td| jj0 d|  d S )Nr   )r%   Z_torchdynamo_disableFz.call torch._dynamo.disable() wrapped function r   rD   c                 S   s   g | ]}|  qS r#   r*   ).0xr#   r#   r$   
<listcomp>  s     z3SkipFilesVariable.call_function.<locals>.<listcomp>c                 S   s   i | ]\}}||  qS r#   r   )r   kvr#   r#   r$   
<dictcomp>  s      z3SkipFilesVariable.call_function.<locals>.<dictcomp>c                 3   s   | ]}|  V  qd S r   has_unpack_var_sequencer   r   r/   r#   r$   	<genexpr>  s     z2SkipFilesVariable.call_function.<locals>.<genexpr>c                    s   g | ]}|  qS r#   unpack_var_sequencer   r   r#   r$   r     s     c                 3   s   | ]}|  V  qd S r   r   r   r   r#   r$   r     s     c                    s   g | ]}|  qS r#   r   r   r   r#   r$   r     s     r   c                    s2   t | tjr| j d jdS td|  d d S )Nr   )Zwraps_sourcezfunctools.wraps(r   )rC   r   r   cloner9   r
   )rp   )r5   r#   r$   wraps  s    z.SkipFilesVariable.call_function.<locals>.wrapsz*deque() with more than 1 arg not supportedzBuiltin zcall_function z in skip_files )1builtinr%   r   r;   r<   r   r   r.   r
   rO   rP   rR   Zis_supported_call_dict_argdictZcall_dict_helperdefaultdictr   Zis_supported_argr   r   keysr   rn   rG   	itertoolsproductallr   r   r   r   ZListIteratorVariablechaincombinationsr   rS   r   r*   r   r   r9   r>   dequelistsZDequeVariablegetfile	TypeErrorrX   rZ   )r   r/   r5   r    r%   rU   r.   Zseqsrn   itemiterablerr   pathr#   )r5   r/   r$   rL     s   











zSkipFilesVariable.call_function)rX   rY   rZ   r   r+   r*   r   r   	lru_cacher   rL   r[   r#   r#   r!   r$   r   p  s    r   c                       s>   e Zd Z fddZddddddZd	d
 Zdd Z  ZS )TypingVariablec                    s   t  jf | || _d S r   r   r   r!   r#   r$   r     s    zTypingVariable.__init__r2   r3   r   r4   c                 C   sD   |dkr8t |dkr8tj| j|d   ft| |S td d S )NrQ   r   r   typing)rR   r   rI   r.   r*   r   r;   r
   r   r#   r#   r$   rW     s    
zTypingVariable.call_methodc                 C   s
   t | jS r   r   r   r#   r#   r$   r+     s    zTypingVariable.python_typec                 C   s   | j S r   r   r   r#   r#   r$   r*     s    z!TypingVariable.as_python_constant)rX   rY   rZ   r   rW   r+   r*   r[   r#   r#   r!   r$   r     s   r   )maxsizec                  C   sZ   ddl m}  i }|  D ]<\}}|j D ](\}}t|r*t||d  }r*|||< q*q|S )Nr   )NP_TO_TNP_MODULE)utilsr   rn   r   r   r)   )r   Znp_fn_to_tnp_fnZnp_modZtnp_modrk   Ztnp_fnZnp_fnr#   r#   r$   get_np_to_tnp_map  s    r   c                       s`   e Zd ZdZ fddZdddddd	Zddddd
dZdd Zdd Z fddZ	  Z
S )NumpyVariablezz
    Wrapper around `numpy.*`. Currently, is able to trace a small subset of numpy functions as well as numpy dtypes.
    c                    s   t  jf | || _d S r   r   r   r!   r#   r$   r   .  s    zNumpyVariable.__init__r2   r3   r   r4   c           	      C   s   t jstd| j d ddlm} ddlm} t	| gg|gt
| g}| jjdkrrtdt| j d	 nVt | j}|d krtd
| j d |jjd||ft|| }|j||f|S d S )Nznumpy.z()r   )numpy_to_tensor_wrapperr   )NumpyNdarrayVariabledtypez4numpy dtype function is not supported yet. Got type .zCan't find numpy function zM in torch._numpy.  Please file an issue to request support for this function.rL   )r   trace_numpyr
   r.   r   r  Ztensorr  r   r;   r   r<   rX   r-   r   rG   rE   r   r   r   )	r   r/   r5   r    r  r  rU   rr   r   r#   r#   r$   rL   2  s*    zNumpyVariable.call_functionc                 C   s   t d d S )Nnumpyr	   r   r#   r#   r$   rW   S  s    zNumpyVariable.call_methodc                 C   s
   t | jS r   r   r   r#   r#   r$   r+   \  s    zNumpyVariable.python_typec                 C   s   | j S r   r   r   r#   r#   r$   r*   _  s    z NumpyVariable.as_python_constantc                    s4   t jr*t| jtr*| jj}t|}|jS t	 
 S r   )r   r  rC   r.   r-   rX   tnpr  r0   r   r   )r   r   Z	tnp_dtyper!   r#   r$   r   b  s
    
zNumpyVariable.as_proxy)rX   rY   rZ   r^   r   rL   rW   r+   r*   r   r[   r#   r#   r!   r$   r  )  s    %	r  c                       s,   e Zd Z fddZdd Zdd Z  ZS )NullVariablec                    s   t  jf | d S r   r{   r|   r!   r#   r$   r   u  s    zNullVariable.__init__c                 C   s   dS )Nr	  r#   r   r#   r#   r$   r   x  s    zNullVariable.__str__c                 C   s   t jdk rtd tdgS )N)r      z0cannot reconstruct NullVariable in < Python 3.11Z	PUSH_NULL)sysversion_infor
   r   r&   r#   r#   r$   r'   {  s    
zNullVariable.reconstruct)rX   rY   rZ   r   r   r'   r[   r#   r#   r!   r$   r	  t  s   r	  c                   @   s   e Zd ZdZdS )DeletedVariablez"Marker used to implement delattr()Nr]   r#   r#   r#   r$   r    s   r  )@rO   r   r   r   r  rJ   r   r   r   Ztorch._Cr?   Ztorch._numpyZ_numpyr  r   r   r   Zbytecode_transformationr   r   excr
   r9   r   r   r   r   r   r   baser   r   Zdictsr   rd   r   r   r   Zuser_definedr   r   r\   r_   r`   rt   ry   rz   r~   r   r   r   r   r   r   r>   r   r   r   r   r   r   r  r	  r  r#   r#   r#   r$   <module>   sV   X9
	 *@y	 

K