§
    1�Åj³  ã                  óz   — d dl mZ 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d„Z G d„ de	¦  «        ZdS )é    )Úannotations)ÚAnyN)Úhelper)ÚBase)ÚexpectÚdataú
np.ndarrayÚindicesÚupdatesÚaxisÚintÚreturnc           	     óØ  ‡‡‡‡‡	— ‰dk     r
| j         ‰z   Š‰j        d ‰…         ‰j        ‰dz   d …         z   Šdd
„Šdd„Š	ˆˆˆˆˆ	fd„t          ‰j        ‰         ¦  «        D ¦   «         }t          t	          j        |d¬¦  «        ¦  «        }|                     ‰|                     ¦   «         ¦  «         t          |¦  «        }|                     ‰¦  «         |                     ‰t	          j        t	          j	        ‰j        ‰         ¦  «        t	          j
        ‰¦  «        ¦  «        ¦  «         t	          j        | ¦  «        }|t          |¦  «                 |t          |¦  «        <   |S )Nr   é   Úarrr	   r   r   Úir   úlist[slice | int]c                ó@   — t          d ¦  «        g| j        z  }|||<   |S )N)ÚsliceÚndim)r   r   r   Úslcs       úTC:\Projects\Historical\venv\Lib\site-packages\onnx/backend/test/case/node/scatter.pyÚ
make_slicezscatter.<locals>.make_slice   s$   € Ý"'¨¡+¤+ °´Ñ!9ˆØˆˆD‰	Øˆ
ó    Úpackedr   c                ój   — | d         }t          dt          | ¦  «        ¦  «        D ]}|| |         f}Œ|S )Nr   r   )ÚrangeÚlen)r   Úunpackedr   s      r   Úunpackzscatter.<locals>.unpack   s?   € Ø˜!”9ˆÝ�q�#˜f™+œ+Ñ&Ô&ð 	+ð 	+ˆAØ ¨¤Ð*ˆHˆHØˆr   c                óö   •— g | ]u} ‰t          j        ‰¦  «                             ‰j        d z
  d¦  «        ¦  «        ‰t	           ‰‰‰|¦  «        ¦  «                                      d d¦  «        d         g‘ŒvS )r   éÿÿÿÿr   )Únpr
   Úreshaper   Útuple)Ú.0r   r   Úidx_xsection_shaper
   r   r    s     €€€€€r   ú
<listcomp>zscatter.<locals>.<listcomp>&   s�   ø€ ð ð ð ð
 ð ˆF•2”:Ð0Ñ1Ô1×9Ò9¸'¼,ÈÑ:JÈBÑOÔOÑPÔPØ•E˜*˜* W¨d°AÑ6Ô6Ñ7Ô7Ô8×@Ò@ÀÀBÑGÔGÈÔJð	
ðð ð r   ©r   )r   r	   r   r   r   r   r   r   )r   r   r   r   )r   Úshaper   Úlistr#   ÚconcatenateÚinsertÚpopÚrepeatÚarangeÚprodÚcopyr%   )
r   r
   r   r   ÚidxÚupdates_idxÚ	scatteredr'   r   r    s
    ` `   @@@r   Úscatterr6      sˆ  øøøøø€ ð ˆa‚x€xØŒy˜4Ñˆà œ u¨ uÔ-°´¸dÀQ¹h¸j¸jÔ0IÑIÐðð ð ð ð
ð ð ð ðð ð ð ð ð ð ð õ
 �w”} TÔ*Ñ+Ô+ðñ ô €Cõ �rŒ~˜c¨Ð*Ñ*Ô*Ñ
+Ô
+€CØ‡J‚Jˆt�S—W’W‘Y”YÑÔÐõ �s‘)”)€KØ‡O‚O�DÑÔÐØ×ÒØ�bŒi�œ	 '¤-°Ô"5Ñ6Ô6½¼Ð@RÑ8SÔ8SÑTÔTñô ð õ ”˜‘”€IØ#¥E¨+Ñ$6Ô$6Ô7€I�e�C‰jŒjÑØÐr   c                  ó>   — e Zd Zedd„¦   «         Zedd„¦   «         ZdS )ÚScatterr   ÚNonec            
     ó¢  — 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t          j
        dd¦  «        g¬¦  «         d S )Nr8   ©r   r
   r   Úy)ÚinputsÚoutputs)é   r?   ©Údtype)r   r   é   )r   rB   r   )ç      ð?çš™™™™™ñ?g333333ó?)ç       @çÍÌÌÌÌÌ @gš™™™™™@Útest_scatter_without_axisÚ é
   ©r=   r>   ÚnameÚopset_imports)Úonnxr   Ú	make_noder#   ÚzerosÚfloat32ÚarrayÚint64r6   r   Úmake_opsetid)Únoder   r
   r   r<   s        r   Úexport_scatter_without_axisz#Scatter.export_scatter_without_axis=   sé   € åŒ{×$Ò$ØØ1Ð1Ð1Ø�Eð %ñ 
ô 
ˆõ
 Œx˜¥b¤jÐ1Ñ1Ô1ˆÝ”(˜I˜I˜I y y yÐ1½¼ÐBÑBÔBˆÝ”(˜O˜O˜O¨_¨_¨_Ð=ÅRÄZÐPÑPÔPˆå�D˜' 7Ñ+Ô+ˆõ 	ØØ˜' 7Ð+Ø�CØ,Ý!Ô.¨r°2Ñ6Ô6Ð7ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r   c            
     ó¦  — 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t          j	        dd¦  «        g¬¦  «         d S )Nr   r8   r;   r<   )r=   r>   r   )rC   rE   g      @g      @g      @r@   r?   rD   rF   r)   Útest_scatter_with_axisrH   rI   rJ   )
rM   r   rN   r#   rQ   rP   rR   r6   r   rS   )r   rT   r   r
   r   r<   s         r   Úexport_scatter_with_axisz Scatter.export_scatter_with_axisV   sò   € àˆÝŒ{×$Ò$ØØ1Ð1Ð1Ø�EØð	 %ñ 
ô 
ˆõ ŒxÐ2Ð2Ð2Ð3½2¼:ÐFÑFÔFˆÝ”(˜Q ˜F˜8­2¬8Ð4Ñ4Ô4ˆÝ”(˜S #˜J˜<­r¬zÐ:Ñ:Ô:ˆå�D˜' 7°Ð6Ñ6Ô6ˆõ 	ØØ˜' 7Ð+Ø�CØ)Ý!Ô.¨r°2Ñ6Ô6Ð7ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r   N)r   r9   )Ú__name__Ú
__module__Ú__qualname__ÚstaticmethodrU   rX   © r   r   r8   r8   <   sR   € € € € € Øð
ð 
ð 
ñ „\ð
ð0 ð
ð 
ð 
ñ „\ð
ð 
ð 
r   r8   )r   )
r   r	   r
   r	   r   r	   r   r   r   r	   )Ú
__future__r   Útypingr   Únumpyr#   rM   r   Úonnx.backend.test.case.baser   Úonnx.backend.test.case.noder   r6   r8   r]   r   r   ú<module>rc      sË   ðð #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð à Ð Ð Ð à €€€Ø Ð Ð Ð Ð Ð Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø .Ð .Ð .Ð .Ð .Ð .ð
 MNð(ð (ð (ð (ð (ðV1
ð 1
ð 1
ð 1
ð 1
ˆdñ 1
ô 1
ð 1
ð 1
ð 1
r   