U
    qh                     @  s<   d dl mZ d dlZd dlmZ dd ZG dd deZdS )    )annotationsN)OpRunc                 C  s.   t j| t jdt j|t jdt j|t jdfS )NZdtype)nparrayint64)indicesinverse_indicescounts r   @/tmp/pip-unpacked-wheel-xnis5xre/onnx/reference/ops/op_unique.py_specify_int64   s    r   c                   @  s   e Zd ZdddZdS )UniqueNc           	        s  |d kst |r,t |ddd\}}}}nt j|ddd|d\}}}}t| jjdkr^|fS |st |}tt|t 	t| || }t j
||dd}t j fdd|D t jd}|| }t|||\}}}| }t| jjdkr||fS t| jjd	kr|||fS ||||fS )
NT)axis   r   c                   s   g | ]} | qS r   r   ).0iZinverse_indices_mapr   r   
<listcomp>&   s     zUnique._run.<locals>.<listcomp>r         )r   isnanuniquelenZ	onnx_nodeoutputZargsortdictzipZarangeZtakeZasarrayr   r   Zsqueeze)	selfxr   sortedyr   r	   r
   Zargsorted_indicesr   r   r   _run   sD        
   

zUnique._run)NN)__name__
__module____qualname__r!   r   r   r   r   r      s   r   )
__future__r   Znumpyr   Zonnx.reference.op_runr   r   r   r   r   r   r   <module>   s   