U
    zh
                     @  s   d dl mZ d dlZd dlZd dlZd dlmZ ejddkrReddd Z	ndd 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ZdS )    )annotationsN)	lru_cacheZTORCHINDUCTOR_WRITE_MISSING_OPS1c              	   C  s6   t t  dd}|t| d  W 5 Q R X d S )Nz/missing_ops.txta
)opentempfile
gettempdirwritestr)targetfd r   E/var/www/html/venv/lib/python3.8/site-packages/torch/_inductor/exc.py_record_missing_op   s    r   c                 C  s   d S )Nr   )r   r   r   r   r      s    c                   @  s   e Zd Zedd ZdS )OperatorIssuec                 C  sD   d|  gdd t |D  }|r2|d|  td|dS )Nztarget: c                 S  s    g | ]\}}d | d| qS )zargs[z]: r   ).0iargr   r   r   
<listcomp>   s    z.OperatorIssue.operator_str.<locals>.<listcomp>zkwargs: r   z  )	enumerateappendtextwrapindentjoin)r   argskwargslinesr   r   r   operator_str   s    zOperatorIssue.operator_strN)__name__
__module____qualname__staticmethodr   r   r   r   r   r      s   r   c                      s   e Zd Z fddZ  ZS )MissingOperatorWithoutDecompc                   s(   t | t d| |||  d S )Nzmissing lowering
)r   super__init__r   selfr   r   r   	__class__r   r   r%   "   s    z%MissingOperatorWithoutDecomp.__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 )MissingOperatorWithDecompc                   s:   t | t d| ||| td| d  d S )Nzmissing decomposition
z9

                There is a decomposition available for z in
                torch._decomp.get_decompositions().  Please add this operator to the
                `decompositions` list in torch._inductor.decompositions
                )r   r$   r%   r   r   dedentr&   r(   r   r   r%   (   s    z"MissingOperatorWithDecomp.__init__r*   r   r   r(   r   r,   '   s   r,   c                      s"   e Zd Zdd fddZ  ZS )LoweringException	Exception)excc                   s0   t  t|j d| d| |||  d S )Nz: r   )r$   r%   typer   r   )r'   r0   r   r   r   r(   r   r   r%   8   s    "zLoweringException.__init__r*   r   r   r(   r   r.   7   s   r.   c                   @  s   e Zd ZdS )SubgraphLoweringExceptionNr   r    r!   r   r   r   r   r2   >   s   r2   c                      s   e Zd Z fddZ  ZS )InvalidCxxCompilerc                   s.   ddl m} t d|j d|jj  d S )N   )configz!No working C++ compiler found in z
.cpp.cxx: ) r6   r$   r%   r   cppcxx)r'   r6   r(   r   r   r%   C   s    zInvalidCxxCompiler.__init__r*   r   r   r(   r   r4   B   s   r4   c                      s"   e Zd Zdd fddZ  ZS )CppWrapperCodeGenErrorr   )msgc                   s   t  d|  d S )NzC++ wrapper codegen error: )r$   r%   )r'   r;   r(   r   r   r%   L   s    zCppWrapperCodeGenError.__init__r*   r   r   r(   r   r:   K   s   r:   c                      s$   e Zd Zddd fddZ  ZS )CppCompileErrorz	list[str]r   cmdoutputc                   s>   t |tr|d}t td jd	||d d S )Nzutf-8z
                    C++ compile error

                    Command:
                    {cmd}

                    Output:
                    {output}
                 r=   )

isinstancebytesdecoder$   r%   r   r-   stripformatr   )r'   r>   r?   r(   r   r   r%   Q   s    

 zCppCompileError.__init__r*   r   r   r(   r   r<   P   s   r<   c                   @  s   e Zd ZdS )CUDACompileErrorNr3   r   r   r   r   rF   f   s   rF   )
__future__r   osr   r   	functoolsr   environgetr   RuntimeErrorr   r#   r,   r.   r2   r4   r:   r<   rF   r   r   r   r   <module>   s"   	