a
    8Sic                     @   sp  U d dl Z d dlZd dlZd dlZd dlmZmZmZmZm	Z	 d dl
mZ d dlmZ ede	ejeej f f Zi aeeeef eeef f ed< i aee	eef ef ed< dd	 Zeed
ddZeeedddZeed
ddZedddZeed
ddZdd ZeeedddZeeedddZeeedddZeeeed d!d"ZG d#d$ d$e Z!dS )%    N)AnyCallableDictTupleUnion)_C)
_constants.	_registry_symbolic_versionsc                  C   s4   t tjtjgD ]} td| }|t| < qd S )Nztorch.onnx.symbolic_opset{})		itertoolschainr   onnx_stable_opsetsonnx_main_opset	importlibimport_moduleformatr
   )opset_versionmodule r   X/var/www/html/django/DPS/env/lib/python3.9/site-packages/torch/onnx/symbolic_registry.py_import_symbolic_opsets   s    
r   domainversionc                 C   s$   t | |si t| |f< t| | d S N)is_registered_versionr	   register_ops_in_versionr   r   r   r   register_version'   s    
r   r   r   iter_versionc                 C   s2   t |D ]$\} }}t|| |st||| | qd S r   )get_ops_in_versionis_registered_opregister_op)r   r   r   op_nameop_funcr   r   r   register_ops_helper.   s    r%   c                 C   sD   |}|dkr4t | || |dkr*|d }q|d }qt | |d d S )N	      )r%   r   r   r   r   r   4   s    

r   )r   c                 C   s
  t s
t  tt |  }g }|D ]}t|d tr~t|d dr~tj|d tjd}|D ]"}||d j	|d |d f qXq t|d r |d dkrd|d f}|d dkrd|d f}|d d	krd
|d f}|d dkrd|d f}|d|d |d f q |S )Nr'   r   )	predicater   _lenlen_listlist_anyany_allall )
r
   r   inspect
getmembers
isinstancetypehasattr
isfunctionappendr   )r   membersZdomain_opname_opsobjopsopr   r   r   r    Q   s(    "r    c                 C   s   | |ft v S r   )r	   r   r   r   r   r   i   s    r   c                 C   sD   |d u s|d u rt d t||s0i t||f< |t||f | < d S )NzHONNX export failed. The ONNX domain and/or version to register are None.)warningswarnr   r	   )opnamer<   r   r   r   r   r   r"   n   s    
r"   r?   r   r   c                 C   s6   |d u s|d u rt d ||ftv o4| t||f v S Nz<ONNX export failed. The ONNX domain and/or version are None.)r=   r>   r	   r@   r   r   r   r!   y   s    
r!   c                 C   sH   t | ||r2t||f | = t||f sDt||f= ntd|  d  d S )NzThe opname z is not registered.)r!   r	   r=   r>   r@   r   r   r   unregister_op   s
    rB   c                 C   s>   |}|t jkr:dd t|D }|| f|v r0|S |d7 }qd S )Nc                 S   s   g | ]}|d  |d fqS )r   r'   r   ).0r<   r   r   r   
<listcomp>       z,get_op_supported_version.<locals>.<listcomp>r'   )r   r   r    )r?   r   r   r   r;   r   r   r   get_op_supported_version   s    

rF   )r?   r   r   returnc                 C   sB   |d u s|d u rt d t| ||s2t|| |t||f |  S rA   )r=   r>   r!   UnsupportedOperatorErrorr	   r@   r   r   r   get_registered_op   s
    
rI   c                       s&   e Zd Zeeed fddZ  ZS )rH   )r   r?   r   c                    sr   t |||}|dv rPd| d| d| d}|d urF|d| d7 }qb|d7 }nd	| d| d
}t | d S )N>   r1   primaten	quantizedzExporting the operator z::z to ONNX opset version z is not supported. z/Support for this operator was added in version z", try exporting with this version.zOPlease feel free to request support or submit a pull request on PyTorch GitHub.z>ONNX export failed on an operator with unrecognized namespace zo. If you are trying to export a custom operator, make sure you registered it with the right domain and version.)rF   super__init__)selfr   r?   r   Zsupported_versionmsg	__class__r   r   rN      s    

z!UnsupportedOperatorError.__init__)__name__
__module____qualname__strintrN   __classcell__r   r   rQ   r   rH      s   rH   )"r   r2   r   r=   typingr   r   r   r   r   torchr   
torch.onnxr   ValueZ_SymbolicFunctionr	   rV   rW   __annotations__r
   r   r   r%   r   r    r   r"   r!   rB   rF   rI   RuntimeErrorrH   r   r   r   r   <module>   s4   




	