
    bIg                    b    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lm	Z	 d	dZ
 G d de      Zy)
    )annotationsN)helper)Base)expectc                X   |dk  r| j                   |z   }|j                  d | |j                  |dz   d  z   }d }d }t        |j                  |         D cg c]c  } |t        j                  |      j                  |j                   dz
  d            |t         ||||               j                  dd      d   ge }}t        t        j                  |d            }|j                  ||j                                t        |      }	|	j                  |       |	j                  |t        j                  t        j                  |j                  |         t        j                  |                   t        j                  |       }
|t        |	         |
t        |      <   |
S c c}w )Nr      c                B    t        d       g| j                  z  }|||<   |S )N)slicendim)arraxisislcs       `/var/www/html/answerous/venv/lib/python3.12/site-packages/onnx/backend/test/case/node/scatter.py
make_slicezscatter.<locals>.make_slice   s$    T{mchh&D	
    c                R    | d   }t        dt        |             D ]	  }|| |   f} |S )Nr   r   )rangelen)packedunpackedr   s      r   unpackzscatter.<locals>.unpack   s8    !9q#f+& 	+A*H	+r   r   )r   shaper   npindicesreshapetuplelistconcatenateinsertpoprepeatarangeprodcopy)datar   updatesr   idx_xsection_shaper   r   r   idxupdates_idx	scattereds              r   scatterr.      su   axyy4 u-dQhj0II
 w}}T*+
  2::0199',,:JBOPE*WdA678@@BGJ	
C  r~~c*
+CJJtSWWY s)KOODbii		'--"56@R8ST I#E+$67IeCj's   A(F'c                  0    e Zd Zedd       Zedd       Zy)Scatterc            
        t         j                  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t        j                  dd      g       y )Nr0   r(   r   r)   y)inputsoutputs)   r6   dtype)r   r      )r   r9   r   )      ?皙?g333333?)       @ @g@test_scatter_without_axis 
   r4   r5   nameopset_imports)onnxr   	make_noder   zerosfloat32arrayint64r.   r   make_opsetid)noder(   r   r)   r3   s        r   export_scatter_without_axisz#Scatter.export_scatter_without_axis9   s    {{$$1E % 

 xxbjj1((Iy1B((O_=RZZPD'7+ 	'7+C,!..r267	
r   c            
        d} t         j                  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t        j                  dd      g       y )Nr   r0   r2   r3   )r4   r5   r   )r:   r<   g      @g      @g      @r7   r6   r;   r=   r   test_scatter_with_axisr?   r@   rA   )
rD   r   rE   r   rH   rG   rI   r.   r   rJ   )r   rK   r(   r   r)   r3   s         r   export_scatter_with_axisz Scatter.export_scatter_with_axisR   s    {{$$1E	 % 
 xx232::F((QF82884((S#J<rzz:D'76 	'7+C)!..r267	
r   N)returnNone)__name__
__module____qualname__staticmethodrL   rO    r   r   r0   r0   8   s(    
 
0 
 
r   r0   )r   )
__future__r   numpyr   rD   r   onnx.backend.test.case.baser   onnx.backend.test.case.noder   r.   r0   rV   r   r   <module>r[      s+    #    , .&R1
d 1
r   