
    /jO                    ^    d dl mZ d dlZd dlZd dlmZ d dlmZ d	dZ	 G d de          Z
dS )
    )annotationsN)Base)expectnonec           	        dk     r
| j         z   j        d          j        dz   d          z   d d d }fdt          j                           D             }t          t	          j        |d                    }|                    |                                           t          |          }|                               |                    t	          j        t	          j	        j                           t	          j
                                       t	          j        |           }|dk    r&|t          |                   |t          |          <   n ||           ||          }}t          |          D ]\  }	}
|d	k    r||
xx         |||	                  z  cc<   (|d
k    r||
xx         |||	                  z  cc<   K|dk    r+t	          j        ||
         |||	                            ||
<   ||dk    r*t	          j        ||
         |||	                            ||
<   |S )Nr      c                @    t          d           g| j        z  }|||<   |S N)slicendim)arraxisislcs       p/home/longshao/multi-rider-rag/.venv/lib/python3.11/site-packages/onnx/backend/test/case/node/scatterelements.py
make_slicez$scatter_elements.<locals>.make_slice   s$    T{{mch&D	
    c                j    | d         }t          dt          |                     D ]}|| |         f}|S )Nr   r   )rangelen)packedunpackedr   s      r   unpackz scatter_elements.<locals>.unpack   s?    !9q#f++&& 	+ 	+A*HHr   c                    g }t          t          | d                             D ]0|                    t          fd| D                                  1t	          |          S )Nr   c              3  (   K   | ]}|         V  d S r
    ).0idx_elementr   s     r   	<genexpr>zGscatter_elements.<locals>.make_indices_for_duplicate.<locals>.<genexpr>#   s'      <<k!n<<<<<<r   )r   r   appendtuplelist)idx	final_idxr   s     @r   make_indices_for_duplicatez4scatter_elements.<locals>.make_indices_for_duplicate   st    	s3q6{{## 	 	A<<<<<<<<<    Ir   c                    g | ]u} t          j                                      j        d z
  d                    t	           |                                                 d d          d         gvS )r   r   )npindicesreshaper   r!   )r   r   r   idx_xsection_shaper)   r   r   s     r   
<listcomp>z$scatter_elements.<locals>.<listcomp>)   s       
  F2:01199',:JBOOPPE**WdA66778@@BGGJ	
  r   )r   r   addmulmaxmin)r   shaper   r"   r(   concatenateinsertpoprepeatarangeprodcopyr!   	enumeratemaximumminimum)datar)   updatesr   	reductionr%   r#   updates_idx	scatterediter_idx_setr+   r   r   s    ` `       @@@r   scatter_elementsrC      s   axxy4 uu-dQhjj0II  
           
 w}T*++  C r~c***
+
+CJJtSWWYY s))KOODbi	'-"566@R8S8STT   IF 'k(:(: ;	%** '&s++&&{33  (nn 	 	NE7E!!'"""gk%.@&AA""""e##'"""gk%.@&AA""""e##%'Zg&E0B(C& &	'"" e##%'Zg&E0B(C& &	'" r   c                      e Zd Zed
d            Zed
d            Zed
d            Zed
d            Zed
d            Zed
d            Z	d	S )ScatterElementsreturnNonec                 x   t           j                            dg ddg          } t          j        dt          j                  }t          j        g dg dgt          j                  }t          j        g d	g d
gt          j                  }t          |||          }t          | |||g|gd           d S )NrE   r<   r)   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int64rC   r   )noder<   r)   r=   rJ   s        r   $export_scatter_elements_without_axisz4ScatterElements.export_scatter_elements_without_axisS   s    {$$111E % 
 

 xbj111(IIIyyy1BBB(OOO___=RZPPPT7G44 	'7+C5		
 	
 	
 	
 	
 	
r   c                 z   d} t           j                            dg ddg|           }t          j        g dgt          j                  }t          j        ddggt          j                  }t          j        d	d
ggt          j                  }t          ||||           }t          ||||g|gd           d S )Nr   rE   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^   rC   r   r   r_   r<   r)   r=   rJ   s         r   !export_scatter_elements_with_axisz1ScatterElements.export_scatter_elements_with_axisk   s    {$$111E	 % 
 
 x22232:FFF(QF828444(S#J<rz:::T7GT:: 	'7+C2		
 	
 	
 	
 	
 	
r   c                 z   d} t           j                            dg ddg|           }t          j        g dgt          j                  }t          j        ddggt          j                  }t          j        d	d
ggt          j                  }t          ||||           }t          ||||g|gd           d S )Nr   rE   rI   rJ   rb   rc   rN   rR   rT   +test_scatter_elements_with_negative_indicesrV   re   rf   s         r   -export_scatter_elements_with_negative_indicesz=ScatterElements.export_scatter_elements_with_negative_indices   s    {$$111E	 % 
 
 x22232:FFF(QG9BH555(S#J<rz:::T7GT:: 	'7+C>		
 	
 	
 	
 	
 	
r   c                    d} t           j                            dg ddg| d          }t          j        g dgt          j                  }t          j        ddggt          j                  }t          j        d	d
ggt          j                  }t          |||| d          }t          ||||g|gd           d S )Nr   rE   rI   rJ   r-   rK   rL   r   r>   rc   rN   rR   rT   r>   ,test_scatter_elements_with_duplicate_indicesrV   re   rf   s         r   .export_scatter_elements_with_duplicate_indicesz>ScatterElements.export_scatter_elements_with_duplicate_indices   s    {$$111E % 
 
 x22232:FFF(QF828444(S#J<rz:::T7GTUKKK 	'7+C?		
 	
 	
 	
 	
 	
r   c                    d} t           j                            dg ddg| d          }t          j        g dgt          j                  }t          j        ddggt          j                  }t          j        d	d
ggt          j                  }t          |||| d          }t          ||||g|gd           d S )Nr   rE   rI   rJ   r/   rm   rc   rN   rR   rT   rn   (test_scatter_elements_with_reduction_maxrV   re   rf   s         r   *export_scatter_elements_with_reduction_maxz:ScatterElements.export_scatter_elements_with_reduction_max       {$$111E % 
 
 x22232:FFF(QF828444(S#J<rz:::T7GTUKKK 	'7+C;		
 	
 	
 	
 	
 	
r   c                    d} t           j                            dg ddg| d          }t          j        g dgt          j                  }t          j        ddggt          j                  }t          j        d	d
ggt          j                  }t          |||| d          }t          ||||g|gd           d S )Nr   rE   rI   rJ   r0   rm   rc   rN   rR   rT   rn   (test_scatter_elements_with_reduction_minrV   re   rf   s         r   *export_scatter_elements_with_reduction_minz:ScatterElements.export_scatter_elements_with_reduction_min   rt   r   N)rF   rG   )
__name__
__module____qualname__staticmethodr`   rg   rk   rp   rs   rw   r   r   r   rE   rE   R   s        
 
 
 \
. 
 
 
 \
. 
 
 
 \
. 
 
 
 \
0 
 
 
 \
0 
 
 
 \
 
 
r   rE   )r   r   )
__future__r   numpyr(   rX   onnx.backend.test.case.baser   onnx.backend.test.case.noder   rC   rE   r   r   r   <module>r      s    # " " " " "      , , , , , , . . . . . .A A A AHR
 R
 R
 R
 R
d R
 R
 R
 R
 R
r   