a
    d                     @   s0  d dl Z d dlZd dlmZ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 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edddZedddZG dd dZd(dd Ze	e d!d"d#Zd$d% Zd)d&d'ZdS )*    N)extract_stack
format_excformat_listFrameSummary)castList   )config)countersformat_bytecodec                   @   s   e Zd ZdS )TorchDynamoExceptionN__name__
__module____qualname__ r   r   Z/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/torch/_dynamo/exc.pyr      s   r   c                   @   s   e Zd ZdS )InternalTorchDynamoErrorNr   r   r   r   r   r      s   r   c                   @   s   e Zd ZdS )RestartAnalysisNr   r   r   r   r   r      s   r   c                   @   s   e Zd ZdS )	SkipFrameNr   r   r   r   r   r      s   r   c                   @   s   e Zd ZdS )TorchRuntimeErrorNr   r   r   r   r   r      s   r   c                       s   e Zd Z fddZ  ZS )ResetRequiredc                    s   t  td d S )Nz
                Must call `torch._dynamo.reset()` before changing backends.  Detected two calls to
                `torch.compile()` with a different backend compiler arguments.
                )super__init__textwrapdedentself	__class__r   r   r       s
    zResetRequired.__init__r   r   r   r   __classcell__r   r   r   r   r      s   r   c                       s   e Zd Z fddZ  ZS )BackendCompilerFailedc                    s@   t |dd| _|| _| j dt|j d| }t | d S )Nr   ?z raised z: )getattrbackend_nameinner_exceptiontyper   r   r   )r   Z
backend_fnr&   msgr   r   r   r   ,   s    zBackendCompilerFailed.__init__r    r   r   r   r   r"   +   s   r"   c                       s.   e Zd Z fddZdd ZdddZ  ZS )	Unsupportedc                    s*   t  | g | _|| _d | _|   d S N)r   r   
real_stackr(   categoryadd_to_stats)r   r(   r   r   r   r   4   s
    zUnsupported.__init__c                 C   s>   t | j | j  d8  < t | j | j dkr:t | j | j= d S )Nr   r   )r
   r,   r(   r   r   r   r   remove_from_stats;   s    zUnsupported.remove_from_statsunimplementedc                 C   s    || _ t| | j  d7  < d S )Nr   )r,   r
   r(   )r   r,   r   r   r   r-   @   s    zUnsupported.add_to_stats)r/   )r   r   r   r   r.   r-   r!   r   r   r   r   r)   3   s   r)   r(   c                 C   s"   | t jddksJ t| d S )NBREAKF)osenvirongetr)   r0   r   r   r   r/   E   s    r/   c                 C   s.   t d |   d7  < | tjddks*J d S )Nwarningsr   r1   F)r
   r2   r3   r4   r0   r   r   r   warningJ   s    r6   c                   @   s*   e Zd Zdd Zdd ZedddZdS )	KeyErrorMsgc                 C   s
   || _ d S r*   )value)r   r8   r   r   r   r   R   s    zKeyErrorMsg.__init__c                 C   s
   t | jS r*   )strr8   r   r   r   r   __str__U   s    zKeyErrorMsg.__str__returnc                 C   s   |   S r*   )r:   r   r   r   r   __repr__X   s    zKeyErrorMsg.__repr__N)r   r   r   r   r:   r9   r=   r   r   r   r   r7   Q   s   r7   
c                 C   s4  dd l }t| drZt| jdkrZtjr,tjsZ|dd|t	t
t| dd  7 }tjrt| dr|d| j d| j d	7 }tjs|d
7 }t| drt| jdr|d| jj d7 }tjs|d7 }t| jdkrdn| jd }t| trt|| f| jdd   | _n|| }|f| jdd   | _d S )Nr   r+   z
from user code:
     record_filenamez!
Last frame execution written to zD. To run only this frame while debugging, run torch._dynamo.replay('z').
z<
Set torch._dynamo.config.verbose=True for more information
r&   minifier_pathz
Minifier script written to zQ. Run this script to find the smallest traced graph which reproduces this error.
zu

You can suppress this exception and fall back to eager by setting:
    torch._dynamo.config.suppress_errors = True
r   )	tracebackhasattrlenr+   r	   verboseZsuppress_errorsjoinr   listreversedget_real_stackZreplay_record_enabledrA   r&   rB   args
isinstanceKeyErrorr7   )excr(   rC   Zold_msgZnew_msgr   r   r   augment_exc_message\   s:    . rO   r;   c                 C   s   t | dsJ ttt | jS )Nr+   )rD   r   r   r   r+   )rN   r   r   r   rJ      s    rJ   c                 C   s@   g }| D ]2}d|j v r q<d|j v sd|jv r0q|| q|S )NZconvert_frameZ
eval_frameztorch._dynamo.optimize()filenamelineappend)stackZ
user_stackframer   r   r   filter_stack   s    
rU   c              
   C   s   t jd }tjrtd|j|j|j|}|d7 }|t 7 }t	| dr|d7 }g }|d urbt
t|}|dt|ttt|  7 }|d7 }|d7 }n(d	|j d
|j d|j dtdd }|S )Nr@   zWON'T CONVERTz.========== TorchDynamo Stack Trace ==========
r+   zY
========== The above exception occurred while processing the following code ==========

r?   r>   z
==========zWON'T CONVERT  z line z 
due to: 
)limit)r2   linesepr	   rF   r   co_nameco_filenameco_firstlinenor   rD   rU   r   rG   r   rH   rI   rJ   )rN   coderA   rT   r(   Zstack_above_dynamor   r   r   format_error_msg   s2    



r^   )r>   )NN) r2   r   rC   r   r   r   r   typingr   r   r?   r	   utilsr
   r   RuntimeErrorr   r   r   r   r   r   r"   r)   r9   r/   r6   r7   rO   rJ   rU   r^   r   r   r   r   <module>   s(   
)