
    h                     X    S SK rS SKrS SKJr  S SKJr  S SKJr  SS jr " S S\5      r	g)	    N)helper)Base)expectc                 b   US:  a  U R                   U-   n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                  X8R                  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[        U	5         U
[        U5      '   U
$ s  snf )Nr      c                 @    [        S 5      /U R                  -  nX#U'   U$ )N)slicendim)arraxisislcs       ]/var/www/fran/franai/venv/lib/python3.13/site-packages/onnx/backend/test/case/node/scatter.py
make_slicescatter.<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.<locals>.unpack   s1    !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/      sv   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#E+$67IeCj's   A+F,c                   <    \ rS rSr\SS j5       r\SS j5       rSrg)Scatter7   Nc            
         [         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[        R                  " SS5      /S9  g )Nr1   r)   r   r*   y)inputsoutputs)   r8   dtype)r   r      )r   r;   r   )      ?皙?g333333?)       @ @g@test_scatter_without_axis 
   r6   r7   nameopset_imports)onnxr   	make_noder   zerosfloat32arrayint64r/   r   make_opsetid)noder)   r   r*   r5   s        r   export_scatter_without_axis#Scatter.export_scatter_without_axis8   s    {{$$1E % 

 xxbjj1((Iy1B((O_=RZZPD7+ 	7+C,!..r267	
r   c            
         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@S9n[        UX#U/U/S[        R                  " SS5      /S9  g )Nr   r1   r4   r5   )r6   r7   r   )r<   r>   g      @g      @g      @r9   r8   r=   r?   r   test_scatter_with_axisrA   rB   rC   )
rF   r   rG   r   rJ   rI   rK   r/   r   rL   )r   rM   r)   r   r*   r5   s         r   export_scatter_with_axis Scatter.export_scatter_with_axisQ   s    {{$$1E	 % 
 xx232::F((QF82884((S#J<rzz:D76 	7+C)!..r267	
r    )returnN)__name__
__module____qualname____firstlineno__staticmethodrN   rR   __static_attributes__rT   r   r   r1   r1   7   s(    
 
0 
 
r   r1   )r   )
numpyr   rF   r   onnx.backend.test.case.baser   onnx.backend.test.case.noder   r/   r1   rT   r   r   <module>r_      s(   
    , .&R1
d 1
r   