
    Χg8                     p   d Z ddlZddlZddlmZ ddlmZmZ ddlm	Z	m
Z
  ej        e
j        d          Z ed          d	e	j        fd
            Z ed          ej        d	e	j        fd                        Z ed          dd	e	j        fd            Z ed          d	e	j        fd            ZdS )am  This file exports ONNX ops for opset 15.

Note [ONNX operators that are added/updated in opset 15]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
https://github.com/onnx/onnx/blob/master/docs/Changelog.md#version-15-of-the-default-onnx-operator-set
New operators:
    Bernoulli
    CastLike
    Optional
    OptionalGetElement
    OptionalHasElement

Updated operators:
    BatchNormalization https://github.com/onnx/onnx/pull/3545
                        Backwards compatible
                        TODO: test coverage for mixed types inputs.
    Pow                https://github.com/onnx/onnx/pull/3412
                        Backwards compatible
                        TODO: bfloat16 support.
    Shape              https://github.com/onnx/onnx/pull/3580
                        Backwards compatible
                        TODO: optional start/end attribute.
    N)_C)symbolic_helpersymbolic_opset9)	jit_utilsregistration   )opsetzaten::__is_gc                 Z   t          j        |          rt          |                                t          j                  r,|                     d|          }|                     d|          S |                     dt          j        dg                    S t          j
        | ||          S )NOptionalHasElementNotConstantr   )value_t)r   _is_none
isinstancetyper   OptionalTypeoptorch
BoolTensoropset9eq)r
   selfothernones       W/var/www/html/ai-engine/env/lib/python3.11/site-packages/torch/onnx/symbolic_opset15.py	aten__is_r   (   s    && Cdiikk2?33 	C44,d33D44t$$$44
E,<aS,A,A4BBB9Qe$$$    zaten::__isnot_c                 $    t          | ||          S )N)r   )r
   r   r   s      r   aten__isnot_r    3   s     Qe$$$r   zaten::bernoullic                 :   |*t          j        |          st          j        dd|           |*t          j        |          st          j        dd|           |t          j        |          r|                     d|          S t	          j        | ||||          S )N	Bernoulliz,out parameter is not supported for bernoulliz(generator is not supported for bernoulli)r   r   _unimplementedr   r   	bernoulli)r
   inputp	generatorouts        r   r$   r$   9   s    
7<<&G	
 	
 	
 _%=i%H%H&CU	
 	
 	
 	yO,Q//yttK'''AuaC888r   zprim::unchecked_castc                     t          |                                t          j                  r|                     d|          S |S )NOptionalGetElement)r   r   r   r   r   )r
   r   s     r   prim_unchecked_castr+   H   s:    
 $))++r// 0tt($///Kr   )NNN)__doc__	functoolsr   r   
torch.onnxr   r   r   torch.onnx._internalr   r   partialonnx_symbolic_onnx_symbolicGraphContextr   wrap_logical_op_with_negationr    r$   r+    r   r   <module>r6      sx   6            A A A A A A A A 8 8 8 8 8 8 8 8 #"<#=RHHH %' % % % %  !!%%I* % % % &% "!% !""9 9' 9 9 9 #"9 &''91    ('  r   