
    h                     L    S SK rS SKrS SKJr  S SKJr  SS jr " S S\5      rg)    N)Base)expectc                    US:  a  U R                   U-   nUR                  S U UR                  US-   S  -   n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  U[        U5         U[        U
5      '   U$ U" U
5      U" U5      p[        U
5       H  u  pUS	:X  a  X==   X+U      -  ss'   M  US
:X  a  X==   X+U      -  ss'   M7  US:X  a"  [        R                   " X   X+U      5      X'   M_  US:X  d  Mg  [        R"                  " X   X+U      5      X'   M     U$ s  sn	f )Nr      c                 @    [        S 5      /U R                  -  nX#U'   U$ N)slicendim)arraxisislcs       e/var/www/fran/franai/venv/lib/python3.13/site-packages/onnx/backend/test/case/node/scatterelements.py
make_slice$scatter_elements.<locals>.make_slice   s"    T{mchh&D	
    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>.unpack   s1    !9q#f+&A*H 'r   c                    ^ / n[        [        U S   5      5       H'  mUR                  [        U4S jU  5       5      5        M)     [	        U5      $ )Nr   c              3   ,   >#    U  H	  oT   v   M     g 7fr    ).0idx_elementr   s     r   	<genexpr>Gscatter_elements.<locals>.make_indices_for_duplicate.<locals>.<genexpr>!   s     "ISkq>Ss   )r   r   appendtuplelist)idx	final_idxr   s     @r   make_indices_for_duplicate4scatter_elements.<locals>.make_indices_for_duplicate   sB    	s3q6{#AU"IS"IIJ $Ir   )r   noneaddmulmaxmin)r
   shaper   npindicesreshaper"   r#   concatenateinsertpoprepeatarangeprodcopy	enumeratemaximumminimum)datar0   updatesr   	reductionidx_xsection_shaper   r   r&   r   r$   updates_idx	scatterediteridx_sets                  r   scatter_elementsrD      sG   axyy4 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bii		'--"56@R8ST IF 'k(: ;	%*$ ! 6c:<V=
[ 's^MDE!"g$.?&@@"e#"g$.?&@@"e#%'ZZ&D0A(B&	" e#%'ZZ&D0A(B&	" , Ks   A+Ic                       \ rS rSr\S
S j5       r\S
S j5       r\S
S j5       r\S
S j5       r\S
S j5       r	\S
S j5       r
S	rg)ScatterElementsN   Nc                  h   [         R                  R                  S/ SQS/S9n [        R                  " S[        R
                  S9n[        R                  " / SQ/ SQ/[        R                  S9n[        R                  " / S	Q/ S
Q/[        R
                  S9n[        XU5      n[        U XU/U/SS9  g )NrF   r<   r0   r=   y)inputsoutputs)   rM   dtype)r   r      )r   rP   r   )      ?皙?g333333?)       @ @g@"test_scatter_elements_without_axisrK   rL   name)
onnxhelper	make_noder/   zerosfloat32arrayint64rD   r   )noder<   r0   r=   rJ   s        r   $export_scatter_elements_without_axis4ScatterElements.export_scatter_elements_without_axisO   s    {{$$1E % 

 xxbjj1((Iy1B((O_=RZZPTG4 	7+C5		
r   c                  h   Sn [         R                  R                  S/ SQS/U S9n[        R                  " / SQ/[        R
                  S9n[        R                  " SS//[        R                  S9n[        R                  " S	S
//[        R
                  S9n[        X#X@5      n[        UX#U/U/SS9  g )Nr   rF   rI   rJ   rK   rL   r   rQ   rS   g      @g      @g      @rN   rM   rR   rT   test_scatter_elements_with_axisrV   	rX   rY   rZ   r/   r]   r\   r^   rD   r   r   r_   r<   r0   r=   rJ   s         r   !export_scatter_elements_with_axis1ScatterElements.export_scatter_elements_with_axisg   s    {{$$1E	 % 
 xx232::F((QF82884((S#J<rzz:TG: 	7+C2		
r   c                  h   Sn [         R                  R                  S/ SQS/U S9n[        R                  " / SQ/[        R
                  S9n[        R                  " SS//[        R                  S9n[        R                  " S	S
//[        R
                  S9n[        X#X@5      n[        UX#U/U/SS9  g )Nr   rF   rI   rJ   rc   rd   rN   rR   rT   +test_scatter_elements_with_negative_indicesrV   rf   rg   s         r   -export_scatter_elements_with_negative_indices=ScatterElements.export_scatter_elements_with_negative_indices   s    {{$$1E	 % 
 xx232::F((QG9BHH5((S#J<rzz:TG: 	7+C>		
r   c                  h   Sn [         R                  R                  S/ SQS/U SS9n[        R                  " / SQ/[        R
                  S9n[        R                  " SS//[        R                  S9n[        R                  " S	S
//[        R
                  S9n[        X#X@SS9n[        UX#U/U/SS9  g )Nr   rF   rI   rJ   r*   rK   rL   r   r>   rd   rN   rR   rT   r>   ,test_scatter_elements_with_duplicate_indicesrV   rf   rg   s         r   .export_scatter_elements_with_duplicate_indices>ScatterElements.export_scatter_elements_with_duplicate_indices   s    {{$$1E % 
 xx232::F((QF82884((S#J<rzz:TGUK 	7+C?		
r   c                  h   Sn [         R                  R                  S/ SQS/U SS9n[        R                  " / SQ/[        R
                  S9n[        R                  " SS//[        R                  S9n[        R                  " S	S
//[        R
                  S9n[        X#X@SS9n[        UX#U/U/SS9  g )Nr   rF   rI   rJ   r,   rp   rd   rN   rR   rT   rq   (test_scatter_elements_with_reduction_maxrV   rf   rg   s         r   *export_scatter_elements_with_reduction_max:ScatterElements.export_scatter_elements_with_reduction_max       {{$$1E % 
 xx232::F((QF82884((S#J<rzz:TGUK 	7+C;		
r   c                  h   Sn [         R                  R                  S/ SQS/U SS9n[        R                  " / SQ/[        R
                  S9n[        R                  " SS//[        R                  S9n[        R                  " S	S
//[        R
                  S9n[        X#X@SS9n[        UX#U/U/SS9  g )Nr   rF   rI   rJ   r-   rp   rd   rN   rR   rT   rq   (test_scatter_elements_with_reduction_minrV   rf   rg   s         r   *export_scatter_elements_with_reduction_min:ScatterElements.export_scatter_elements_with_reduction_min   ry   r   r   )returnN)__name__
__module____qualname____firstlineno__staticmethodr`   rh   rm   rs   rw   r|   __static_attributes__r   r   r   rF   rF   N   sx    
 
. 
 
. 
 
. 
 
0 
 
0 
 
r   rF   )r   r)   )	numpyr/   rX   onnx.backend.test.case.baser   onnx.backend.test.case.noder   rD   rF   r   r   r   <module>r      s'   
   , .>BR
d R
r   