
    PhI                         d dl Z d dlmZmZ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)DictList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       iC:\Users\daisl\Desktop\realtime-object-detection\venv\Lib\site-packages\torch/onnx/_onnx_supported_ops.py__init__z_TorchSchema.__init__
   s    fb//0#[[DI&,&:&:D=C=M=M(N=Mc=M(NDN13D#;A>>&J>Csxx>&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_aten0   s    yy##H--r)   c                     d| j                   v S )Nbackward)r   r,   s    r   is_backwardz_TorchSchema.is_backward3   s    TYY&&r)   )__name__
__module____qualname__r   r   r   r"   r   r(   r-   boolr0   r3   r6    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_countrJ   7   s|    F!!$'IO$//557i$$	/""9-MM#i.) 8 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
   r6   r   )r'   torch_schemasr   s      r   all_forward_schemasrN   E   sW    .0.E.E.GH.G\!_.GMH.;XmF6CUCUCWFKKm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_OPSETrJ   r   listrangeget_min_supportedr   ONNX_BASE_OPSET)symbolics_schemasr   
func_groupsymbolics_schemarF   s        r   all_symbolics_schemasr^   K   s    %%335!**==dC
%%%'-~~j778)A$)G&&*j224j6O6ORS6ST'#
 >>!$D)A$)G&&*5J4N4N+O&P#"2$! 6$ r)   )r?   typingr   r   r   torchr   
torch.onnxr   torch.onnx._internalr   r
   rJ   r"   rN   r^   r;   r)   r   <module>rc      sU     $ $  ! -+' +'\YT#|"34 YtC$56 r)   