o
    toi                     @  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dtype)nparrayint64)indicesinverse_indicescounts r   P/home/ubuntu/.local/lib/python3.10/site-packages/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 u s	t |rt |ddd\}}}}nt j|ddd|d\}}}}t| jjdkr/|fS |sct |}tt|t 	t|dd || }t j
||dd}t j fdd|D t jd}|| }t|||\}}}|d	}t| jjd
kr}||fS t| jjdkr|||fS ||||fS )NT)axis   )strictr   c                   s   g | ]} | qS r   r   ).0iinverse_indices_mapr   r   
<listcomp>&   s    zUnique._run.<locals>.<listcomp>r         )r   isnanuniquelen	onnx_nodeoutputargsortdictziparangetakeasarrayr   r   reshape)	selfxr   sortedyr	   r
   r   argsorted_indicesr   r   r   _run   s6   




zUnique._run)NN)__name__
__module____qualname__r,   r   r   r   r   r      s    r   )
__future__r   numpyr   onnx.reference.op_runr   r   r   r   r   r   r   <module>   s
   