
    SiO                    X    S SK Jr  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)	    )annotationsN)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       j/var/www/html/ai-image-ml/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     <!ns   )r   r   appendtuplelist)idx	final_idxr   s     @r   make_indices_for_duplicate4scatter_elements.<locals>.make_indices_for_duplicate   sG    	s3q6{#A<<< $ Ir   )r   noneaddmulmaxmin)r   shaper   npindicesreshaper#   r$   concatenateinsertpoprepeatarangeprodcopy	enumeratemaximumminimum)datar1   updatesr   	reductionidx_xsection_shaper   r   r'   r   r%   updates_idx	scatterediter_idx_sets                  r   scatter_elementsrE      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(: ;	%*& ! 's+&{3  (nNEE!"g%.@&AA"e#"g%.@&AA"e#%'ZZ&E0B(C&	" e#%'ZZ&E0B(C&	" - M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	)ScatterElementsR   c                 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 )NrG   r=   r1   r>   y)inputsoutputs)   rN   dtype)r   r      )r   rQ   r   )      ?皙?g333333?)       @ @g@"test_scatter_elements_without_axisrL   rM   name)
onnxhelper	make_noder0   zerosfloat32arrayint64rE   r   )noder=   r1   r>   rK   s        r   $export_scatter_elements_without_axis4ScatterElements.export_scatter_elements_without_axisS   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   rG   rJ   rK   rL   rM   r   rR   rT   g      @g      @g      @rO   rN   rS   rU   test_scatter_elements_with_axisrW   	rY   rZ   r[   r0   r^   r]   r_   rE   r   r   r`   r=   r1   r>   rK   s         r   !export_scatter_elements_with_axis1ScatterElements.export_scatter_elements_with_axisk   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   rG   rJ   rK   rd   re   rO   rS   rU   +test_scatter_elements_with_negative_indicesrW   rg   rh   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   rG   rJ   rK   r+   rL   rM   r   r?   re   rO   rS   rU   r?   ,test_scatter_elements_with_duplicate_indicesrW   rg   rh   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   rG   rJ   rK   r-   rq   re   rO   rS   rU   rr   (test_scatter_elements_with_reduction_maxrW   rg   rh   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   rG   rJ   rK   r.   rq   re   rO   rS   rU   rr   (test_scatter_elements_with_reduction_minrW   rg   rh   s         r   *export_scatter_elements_with_reduction_min:ScatterElements.export_scatter_elements_with_reduction_min   rz   r   r   N)returnNone)__name__
__module____qualname____firstlineno__staticmethodra   ri   rn   rt   rx   r}   __static_attributes__r   r   r   rG   rG   R   sx    
 
. 
 
. 
 
. 
 
0 
 
0 
 
r   rG   )r   r*   )
__future__r   numpyr0   rY   onnx.backend.test.case.baser   onnx.backend.test.case.noder   rE   rG   r   r   r   <module>r      s+    #   , .AHR
d R
r   