
    JTh:                        S r SSKrSSKrSSKrSSKJr  SSKJrJ	r	J
r
Jr  SSKJrJr  \R                   " \R"                  SS9rSr\ H$  r\" S	\ 35      " \
R*                  " \5      5        M&     \" S
\
R,                  " SSS5      /S9\" S\
R,                  " SSS5      /S9\" S\
R,                  " SSS5      /S9\" S\
R,                  " SSS5      /S9\" S\
R,                  " SSS5      /S9\" S\
R,                  " SSS5      /S9S 5       5       5       5       5       5       r\" S5      S\R0                  4S j5       rS\R0                  4S  jrS\R0                  4S! jrS\R0                  4S" jr\" S#5      S\R0                  4S$ j5       r\" S%5      S\R0                  4S& j5       r\" S'5      S\R0                  4S( j5       r\" S)5      S\R0                  4S* j5       r \" S+5      S\R0                  4S, j5       r!\" S-5      S\R0                  4S. j5       r"\" S/5      \
RF                  " S0S0S0S1S15      S\R0                  4S2 j5       5       r$\" S35      S\R0                  4S4 j5       r%S\R0                  S5\&4S6 jr'\" S75      \
RF                  " S0S8S0S0S0S05        SKS\R0                  4S9 jj5       5       r(\" S:5      \
RF                  " S0S8S0S0S0S05        SKS\R0                  4S; jj5       5       r)\" S<5      \
RF                  " S0S8S0S0S05      SLS\R0                  4S= jj5       5       r*\" S>5      \
RF                  " S0S8S0S0S0S05        SKS\R0                  4S? jj5       5       r+\" S@5      \
RF                  " S0S8S0S0S05      SLS\R0                  4SA jj5       5       r,\" SB5      \
RF                  " S0S8S0S0S0S05        SKS\R0                  4SC jj5       5       r-\" SD5       SLS\R0                  4SE jj5       r.\" SF5      \
RF                  " S0SGS8S0S0S0S05        SKS\R0                  4SH jj5       5       r/\" SI5      S\R0                  4SJ j5       r0g)Ma  
Note [ONNX operators that are added/updated from opset 8 to opset 9]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
New operators:
    Compress
    ConstantOfShape
    EyeLike
    MaxUnpool
    OneHot
    Sinh
    Cosh
    Asinh
    Acosh
    Atanh
    Shrink
    IsNaN
    Sign
    Erf
    Scatter
    Where
    NonZero
    TfIdfVectorizer
    MeanVarianceNormalization

Updated operators:
    BatchNormalization: removed spatial attribute.
    Greater, Less, Constant, MatMul, PRelu, Gemm, Flatten: more data types{integers} supported.
    Cast: more data types{string} supported.
    Upsample: moved scales from attribute to input.
    Scan
    N)_onnx)_type_utilserrorssymbolic_helpersymbolic_opset9)	jit_utilsregistration   )opset)nonzerowherescatterscatter_adderfsignisnangatherarangemasked_fill
index_fill
index_copyrepeat_interleaveanyallzaten::zaten::upsample_nearest1dupsample_nearest1d   nearest)decoratezaten::upsample_nearest2dupsample_nearest2d   zaten::upsample_nearest3dupsample_nearest3d   zaten::upsample_linear1dupsample_linear1dlinearzaten::upsample_bilinear2dupsample_bilinear2dzaten::upsample_trilinear3dupsample_trilinear3dc                    ^ ^^ UUU 4S jnU$ )Nc           	      Z  > [         R                  " U TU5      u  pE[         R                  " T5        [         R                  " U5      nU(       a  [         R                  " T	SU5      $ [         R
                  " US5      n[         R                  " U5      (       a  [         R                  " T	S5      $ Ucc  [        ST5       Vs/ s HL  nUS:  a  SO@[        UTU-
  *    5      [        UR                  5       R                  5       TU-
  *    5      -  PMN     nnU R                  SUTUS9$ s  snf )	Nalign_corners == Trueisz%torch._C.Value (output_size) indexingr            ?Upsamplemode_sscales_f)r   _get_interpolate_attributes_interpolate_warning_maybe_get_scalar_unimplemented_maybe_get_const	_is_valuerangefloattypesizesop)
ginputoutput_sizeargsscalesalign_cornersidiminterpolate_modenames
          R/var/www/auris/envauris/lib/python3.13/site-packages/torch/onnx/symbolic_opset8.pysymbolic_fn!_interpolate.<locals>.symbolic_fn^   s/    / K K!
 	,,-=>'99-H"11$8OQVWW%66{DI$$[11"11=  > q#
 'A q5 ;qz23

**,sQwZ89:: '   ttJ.>tPPs   AD( )rE   rC   rD   rG   s   ``` rF   _interpolaterJ   E   s    2Q.     zaten::__interpolater<   c                 ,   [         R                  " US5      n[         R                  " U5      (       d  U(       a  [         R                  " SS5      $ [         R                  " U5      (       d2  [         R                  " U5      (       a  [         R                  " SS5      $ [         R                  " U5      (       d2  [         R                  " U5      (       a  [         R                  " SS5      $ [         R
                  " XX#XE5      u  pU R                  SXUS9$ )Nbinterpolater)   zdynamic scales in opset 8zdynamic size in opset 8r-   r.   )r   r5   _is_noner4   r6    _interpolate_get_scales_and_moder;   )	r<   r=   sizescale_factormoderA   recompute_scale_factor	antialiasr@   s	            rF   __interpolaterV   x   s     $44]CHM##M22}--m=TUU##L11o6O6O7 7 --6
 	
 ##D))o.G.G.M.M--m=VWW"CC	$dLF 44
E4@@rK   c                   ^  [         R                  R                  [         R                  R                  [         R                  R                  1nS n[         R                  R                  US   [         R                  R                  5      nU[         R                  R                  :w  a2  UnX2;  a&  UR                  5       n[        U 4S jU 5       5      nOSU-   $ [        R                  " S5        U4U-   $ )Nr   c              3   v   >#    U  H.  nTR                  S U[        R                  R                  S9v   M0     g7f)Castto_iN)r;   _C_onnxTensorProtoDataTypeFLOAT).0argr<   s     rF   	<genexpr>-_try_cast_integer_to_float.<locals>.<genexpr>   s3      C VSw'B'B'H'HIs   69NzOnly floating datatype is supported for these operators: {Greater, Less, MatMul, PRelu, Gemm, Flatten}. This might cause the onnx model to be incorrect, if inputs have integer datatypes.)r   JitScalarTypeHALFr^   DOUBLE
from_value	UNDEFINEDscalar_nametuplewarningswarn)r<   r?   floating_scalar_typesold_type	arg0_types   `    rF   _try_cast_integer_to_floatrp      s    !!&&!!''!!((
 H ))44Q**44I K--7770++-H  D
 T>!P	

 ;rK   c                 @    Uc  U$ [        [        SU 35      " XS5      $ )N_cast_F)getattropset9)r<   r=   to_types      rF   _cast_to_typerv      s'    6VG9-.q??rK   c                     [         R                  " U5      n[         R                  " X!5      n[        XU5      u  pAnU R	                  X1U5      $ rc   )r   r3   _if_scalar_type_asrp   r;   )r<   r=   otherop_name_s        rF   _comparison_operatorr|      sC    --e4E..u<E05AOAe44&&rK   zaten::gtc                     [        XUS5      $ )NGreaterr|   r<   r=   ry   s      rF   gtr      s    %;;rK   zaten::ltc                     [        XUS5      $ )NLessr   r   s      rF   ltr      s    %88rK   z	aten::bmmc                     [         R                  " U5      (       a+  [        XU5      u  p1n[        X R	                  SX5      U5      $ U R	                  SX5      $ )NMatMul)r   _try_get_scalar_typerp   rv   r;   )r<   selfry   rn   s       rF   bmmr      sM    ++D11 :1E JQXt ;XFFttHd**rK   zaten::matmulc                     [        XU5      $ rc   )r   )r<   r   ry   s      rF   matmulr      s    qrK   zaten::preluc                    [         R                  " U5      n[         R                  " U5      nUb.  US:  a(  U R                  SU[	        [        SUS-
  5      5      S9nO%US:X  a  US/:X  a  [         R                  " XS/5      n[         R                  " U5      (       a+  [        XU5      u  pQn[        X R                  SX5      U5      $ U R                  SX5      $ )Nr+   	Unsqueeze   )axes_ir   PRelu)
r   _get_tensor_rank_get_tensor_sizesr;   listr7   _squeeze_helperr   rp   rv   )r<   r   weight	self_rankweight_sizesrn   s         rF   prelur      s    006I"44V<LQk6$uQ	A7N2OP	aLQC/ 00QC@++D11!;AV!LQWd ;XFFttGT**rK   zaten::mmc                 |   [         R                  " X5      nUc  [        R                  " SU5      eU R	                  S[
        R                  " S/UR                  5       S9S9n[         R                  " U5      (       a-  [        XX$5      u  pQp$[        U U R	                  SXUSSS	9U5      $ U R	                  SXUSSS	9$ )
Nz/mm can only operate on tensors with known typesConstantr   )dtypevalue_tGemmg        r,   beta_falpha_f)
r   r   r   SymbolicValueErrorr;   torchtensorr   rp   rv   )r<   r   ry   scalar_typezero_constantrn   s         rF   mmr      s     "66tCK''=t
 	
 DDaS(9(9(;<  M
 ++D11/IU0
, DDmCDM
 	

 44]34LLrK   zaten::addmmvtc                 \   [         R                  " U5      (       aV  [        XX#5      u  pap#[        U U R	                  SUUU[         R
                  " U5      [         R
                  " U5      S9U5      $ U R	                  SUUU[         R
                  " U5      [         R
                  " U5      S9$ )Nr   r   )r   r   rp   rv   r;   _scalar)r<   r   mat1mat2betaalpharn   s          rF   addmmr   
  s     ++D11%?%T"DD&..t4'//6   
 	
 tt"**40#++E2  
 	
rK   zaten::flattenc           	      l   [         R                  " USS5      n[         R                  " USS5      nUR                  5       R                  5       nUS:  a  Xe-   nUS:X  aZ  XVS-
  :X  aR  [         R                  " U5      (       a'  [        X5      u  pq[        X R                  SXS9U5      $ U R                  SXS9$ US:X  a`  XVS-
  :X  aX  [         R                  " U5      (       a*  [        X5      u  pq[        X R                  SXS-   S9U5      $ U R                  SXS-   S9$ [        R                  " XX#5      $ )	NrB   	start_dimend_dimr   r   Flatten)axis_ir+   )
r   
_get_constr9   rC   r   rp   rv   r;   rt   flatten)r<   r=   r   r   start_dim_i	end_dim_irC   rn   s           rF   r   r   &  s)   !,,Y[IK**7CCI
**,


C1}O	aIq0//668BOH 44	54=x  44	54==aIq0//668BOH 44	5Q4?  44	5Q4??>>!I77rK   r   c                    Uc  [         R                  R                  nO[         R                  " U5      nUR                  5       R                  (       dW  U R                  SU[         R                  R                  R                  5       SUS9nU R                  SXTR                  5       S9$ U R                  SUUR                  5       SUS9$ )NConstantFillr   )dtype_iinput_as_shape_ivalue_frY   rZ   )r   rd   r^   r   is_floating_pointr;   	onnx_type)r<   r:   r   const_valuer   results         rF   _constant_fillr   C  s    }!//55!//600--33==?  
 ttFF)>)>)@tAAtt))+  
 	
rK   zaten::emptyrB   c                     [        XX#XE5      $ rc   )zeros)r<   r:   r   layoutdevice
pin_memorymemory_formats          rF   emptyr   [  s     5&==rK   zaten::empty_likec                     [        XX#XE5      $ rc   )
zeros_like)r<   r=   r   r   r   r   r   s          rF   
empty_liker   i  s     avBBrK   zaten::zerosc                     [        XUS5      $ )Nr   r   r<   r:   r   r   r   r   s         rF   r   r   w  s     !E1--rK   zaten::zeros_likec                 @    U R                  SU5      n[        XUS5      $ )NShaper   r;   r   r<   r=   r   r   r   r   r   shapes           rF   r   r   ~  #     DD% E!E1--rK   z
aten::onesc                     [        XUS5      $ )Nr   r   r   s         rF   onesr     s     !E1--rK   zaten::ones_likec                 @    U R                  SU5      n[        XUS5      $ )Nr   r   r   r   s           rF   	ones_liker     r   rK   z
aten::fullc                 :   [         R                  " US5      n[         R                  " U5      (       aF  [        XX4U5      n[        R
                  " XX R                  S[        R                  " S5      S95      $ [         R                  " USS5      n[        XX75      $ )Nr   r   r   r   rB   r   )r   r5   r6   r   rt   addr;   r   r   r   r   )	r<   r:   valuer   r   r   r   r   tmps	            rF   fullr     s|     "225#>K  --AeV4zz!%j%,,q/)RSS**5#w?a;;rK   zaten::full_likefc                 >    U R                  SU5      n[        XX25      $ )Nr   r   )	r<   r=   
fill_valuer   r   r   r   r   r   s	            rF   	full_liker     s!     DD% E!E66rK   zaten::repeatc                 l   [         R                  " U5      (       d$  U R                  S[        R                  " U5      S9n[         R
                  " U5      (       a   [        [         R                  " U5      5      nO"[         R                  " US5      n[        U5      nUR                  5       (       ar  UR                  5       R                  5       nU[        U5      -
  nUS:  a@  [        R                  " XU R                  S[        R                  " S/U-  U-   5      S95      nU R                  SX5      $ )Nr   r   r*   r   r   Tile)r   r6   r;   r   
LongTensor_is_packed_listlen_unpack_listr5   isCompleteTensorr9   r:   rt   viewr   )r<   r   repeatsrepeat_size_lenconst_repeatsr:   	diff_dimss          rF   repeatr     s    $$W--$$z5+;+;G+D$E&&w//o::7CD'88$Gm,		!!##c%j0	q=;;j%,,sYQV?V2WXD 44&&rK   )FN)F)1__doc__	functoolsrk   r   torch._Cr   r\   
torch.onnxr   r   r   r   rt   torch.onnx._internalr   r	   partialonnx_symbolic_onnx_symbolicblock_listed_operatorsblock_listed_op_block_list_in_opset_apply_paramsrJ   GraphContextrV   rp   rv   r|   r   r   r   r   r   r   
parse_argsr   r   intr   r   r   r   r   r   r   r   r   r   rI   rK   rF   <module>r      s  @    % V V 8 ""<#=#=QG $ .OVO,-.,,_= . ++,@!YOP ++,@!YOP ++,@!YOP ++,?HMN ++,A1hOP  ++,BAxPQ						06 %&AA 'AB)"8"8 >@Y++ @'I22 ' 
<)
 
  < < 
9)
 
  9 9 +9!! + + i$$    +Y## + + 
M)
 
  M M2 Cc34
Y## 
 5 
4  8y%% 8 !88
i,, 
C 
0 Cc3S9 	>	> : 	> "#Cc3S9 	C	C : $	C Cc34.Y## . 5 .
 "#Cc3S9 
.
. : $
. Cc34.I"" . 5 . !"Cc3S9 
.
. : #
. OT	<	< 	< !"Cc3S#> 77 ? #7 'i$$ '  'rK   