
    Vh                         d dl Z d dlmZ d dlmZ d dlmZ d dlmZ  G d d      Z	d Z
d	eee	f   fd
Zd	eee	f   fdZy)    N)Union)_C)
_constants)registrationc                   p    e Zd Zdeej
                  ef   ddfdZdefdZd Z	de
fdZde
fdZde
fd	Zy)
_TorchSchemaschemareturnNc                    t        |t        j                        r|j                  | _        |j                  | _        |j
                  D cg c]  }|j                   c}| _        g | _        |j                  D cg c]  }|j                   c}| _        g | _        y || _        d| _        g | _        g | _        g | _        g | _        y c c}w c c}w )N )	
isinstancer   FunctionSchemanameoverload_name	argumentsoptional_argumentsreturnsopsets)selfr	   argrets       N/home/dcms/DCMS/lib/python3.12/site-packages/torch/onnx/_onnx_supported_ops.py__init__z_TorchSchema.__init__   s    fb//0#[[DI&,&:&:D=C=M=M(Nc(NDN13D#;A>>&JCsxx&JDL%'DKDI!#DDN&(D#DLDK )O&Js   C	;Cc                    | j                    d| j                   ddj                  | j                        z   dz   dj                  | j                        z   dz   dz   dj                  d | j
                  D              z   }|S )N.(z, z) -> ()z in opsets c              3   2   K   | ]  }t        |        y wN)str).0opsets     r   	<genexpr>z'_TorchSchema.__str__.<locals>.<genexpr>#   s     <uE
<s   )r   r   joinr   r   r   )r   ss     r   __str__z_TorchSchema.__str__   s    yyk4--.a0ii'( ii%& 	
  ii<<<= 	
     c                 ,    t        | j                        S r   )hashr   r   s    r   __hash__z_TorchSchema.__hash__'   s    DIIr'   c                 V    t        |t              sy| j                  |j                  k(  S )NF)r   r   r   )r   others     r   __eq__z_TorchSchema.__eq__+   s"    %.yyEJJ&&r'   c                 8    | j                   j                  d      S )Nzaten::)r   
startswithr*   s    r   is_atenz_TorchSchema.is_aten1   s    yy##H--r'   c                     d| j                   v S )Nbackward)r   r*   s    r   is_backwardz_TorchSchema.is_backward4   s    TYY&&r'   )__name__
__module____qualname__r   r   r   r    r   r&   r+   boolr.   r1   r4    r'   r   r   r   
   sZ    uR%6%6%;<   
 
't '. .'T 'r'   r   c                    g }t        j                  |       }g }|j                  j                         D ]N  \  }}|dv r|j                  |j
                  u r|j                  |       5|j                  t        |             P |S )N>   g_outputs)inspect	signature
parametersitemsdefaultemptyappendr    )funcparamsr>   optional_paramsr   	parameters         r   _symbolic_argument_countrH   8   s    F!!$'IO$//557 *i$$	/""9-MM#i.)* Mr'   r
   c                      t        j                         D  cg c]  } t        |        }} |D ci c]   }|j                         r|j                  |" c}S c c} w c c}w )z0Returns schemas for all TorchScript forward ops.)r   _jit_get_all_schemasr   r4   r   )r%   torch_schemasr	   s      r   all_forward_schemasrL   F   sP    .0.E.E.GH\!_HMH.;XF6CUCUCWFKKXX IXs   AAAc                     i } t         j                  j                         D ]  }t         j                  j                  |      }|J t	        |      }|j                  t        j                        }|Jt        |      |_	        t        t        |j                         t        j                  dz               |_        nI|j                  d      }t        |      |_	        t        t        dt        j                              |_        || |<    | S )z+Returns schemas for all onnx supported ops.      )r   registryall_functionsget_function_groupr   getr   ONNX_MAX_OPSETrH   r   listrangeget_min_supportedr   ONNX_BASE_OPSET)symbolics_schemasr   
func_groupsymbolics_schemarD   s        r   all_symbolics_schemasr\   L   s    %%335 3!**==dC
%%%'-~~j778)A$)G&&*j224j6O6ORS6ST'#
 >>!$D)A$)G&&*5J4N4N+O&P#"2$!3$ r'   )r=   typingr   torchr   
torch.onnxr   torch.onnx._internalr   r   rH   dictr    rL   r\   r9   r'   r   <module>rb      sR       ! -+' +'\YT#|"34 YtC$56 r'   