
    h                     8    S SK rS SKJr  SS jr " S S\5      rg)    N)OpRunc                 
   US:X  a  S nOUS:X  a  S nOUS:X  a  S nOS nUS:  a  U R                   U-   n[        U R                  5      S	:X  a?  US:X  a9  [        R                  " U 5      n[        X5       H  u  pxU" Xg   U5      Xg'   M     U$ [        UR                  5      S
:X  a  [        R                  " U 5      nUS:X  a]  [        UR                  S   5       H?  n	[        UR                  S	   5       H   n
U" XaX4   U
4   X)U
4   5      XaX4   U
4'   M"     MA     U$ [        UR                  S   5       H?  n	[        UR                  S	   5       H   n
U" XiXU
4   4   X)U
4   5      XiXU
4   4'   M"     MA     U$ [        UR                  5      S:X  Ga  [        R                  " U 5      nUS:X  a~  [        UR                  S   5       H`  n	[        UR                  S	   5       HA  n
[        UR                  S
   5       H"  nU" XaXU4   X4   X)X4   5      XaXU4   X4'   M$     MC     Mb     U$ US	:X  a~  [        UR                  S   5       H`  n	[        UR                  S	   5       HA  n
[        UR                  S
   5       H"  nU" XiXX4   U4   X)X4   5      XiXX4   U4'   M$     MC     Mb     U$ US
:X  a|  [        UR                  S   5       H`  n	[        UR                  S	   5       HA  n
[        UR                  S
   5       H"  nU" XiXXU4   4   X)X4   5      XiXXU4   4'   M$     MC     Mb     U$ UR                  SU UR                  US	-   S -   nS nS n[        UR                  U   5       V	s/ s Hd  n	U" [        R                  " U5      R                  UR                   S	-
  S5      5      U[        U" XU	5      5         R                  S	S5      S   /PMf     nn	[        [        R                  " US	S95      nUR                  X?R                  5       5        [        U5      nUR                  U5        UR                  U[        R                  " [        R                  " UR                  U   5      [        R                   " U5      5      5        [        R                  " U 5      nUS:X  a=  [        R"                  " U[        U5         U[        U5         5      U[        U5      '   U$ US:X  a=  [        R$                  " U[        U5         U[        U5         5      U[        U5      '   U$ US:X  a$  U[        U5      ==   U[        U5         -  ss'   U$ U[        U5         U[        U5      '   U$ s  sn	f )z
::
    // for 3-dim and axis=0
    //    output[indices[i][j][k]][j][k] = updates[i][j][k]
    // for axis 1
    //    output[i][indices[i][j][k]][k] = updates[i][j][k]
    // and so on
addc                 
    X-   $ N xys     `/var/www/fran/franai/venv/lib/python3.13/site-packages/onnx/reference/ops/op_scatter_elements.pyfscatter_elements.<locals>.f   s	    5L    minc                     [        X5      $ r   )r   r	   s     r   r   r          q9r   maxc                     [        X5      $ r   )r   r	   s     r   r   r       r   r   c                     U$ r   r   r	   s     r   r   r   %   s    Hr   r            Nc                 @    [        S 5      /U R                  -  nX#U'   U$ r   )slicendim)arraxisislcs       r   
make_slice$scatter_elements.<locals>.make_slice\   s"    T{mchh&D	
r   c                 T    U S   n[        S[        U 5      5       H	  nXU   4nM     U$ )Nr   r   )rangelen)packedunpackedr   s      r   unpack scatter_elements.<locals>.unpacka   s1    !9q#f+&A*H 'r   )r   )r   r$   shapenpcopyzipr#   indicesreshapetuplelistconcatenateinsertpoprepeatarangeprodminimummaximum)datar.   updatesr   	reductionr   	scatteredposupr   jkidx_xsection_shaper    r'   idxupdates_idxs                    r   scatter_elementsrE      sp    E	 
e		 
e		
	 axyy4
4::!	GGDM	7,GCy~r2IN -
7==QGGDM	197==+,w}}Q/0A23!!$-"23WT]3IadmQ./ 1 -  7==+,w}}Q/0A23!WT]"23WT]3IA./ 1 -
 
7==QGGDM	197==+,w}}Q/0A"7==#34<=%aAg&6&<=w!w?O=	!'"2A"89 5 1 -(  QY7==+,w}}Q/0A"7==#34<=%A)91&<=w!w?O=	WW%5q"89 5 1 -  QY7==+,w}}Q/0A"7==#34<=%A!G,<&<=w!w?O=	Qa(8"89 5 1 -  u-dQhj0II
 w}}T*+
 ,A 2::0199',,:JBOPE*WA678@@BGJ	
 ,   r~~c*
+CJJtWWY s)KOOD
		"))GMM$/0"'':L2MN
 IE "

eCj!75+=#>!
	%*  
e	 "

eCj!75+=#>!
	%* 	 
e	%*{);!<<  !(k(: ;	%*As   <A+V c                       \ rS rSrSS jrSrg)ScatterElements   Nc                     [        XX4US9nU4$ )N)r   r<   )rE   )selfr:   r.   r;   r   r<   ress          r   _runScatterElements._run   s    tgIVvr   r   )NN)__name__
__module____qualname____firstlineno__rL   __static_attributes__r   r   r   rG   rG      s    r   rG   )r   N)numpyr+   onnx.reference.op_runr   rE   rG   r   r   r   <module>rU      s      'De r   