U
    b                      @  s   d dl mZ ddlmZ d dlmZ d dlZG dd deZG dd	 d	eZ	G d
d deZ
dddddZdd	dddZdddddZdddddZdS )    )annotations   )Array)
NamedTupleNc                   @  s.   e Zd ZU ded< ded< ded< ded< dS )UniqueAllResultr   valuesindicesinverse_indicescountsN__name__
__module____qualname____annotations__ r   r   B/tmp/pip-unpacked-wheel-cxuynqjx/numpy/array_api/_set_functions.pyr      s   
r   c                   @  s   e Zd ZU ded< ded< dS )UniqueCountsResultr   r   r
   Nr   r   r   r   r   r      s   
r   c                   @  s   e Zd ZU ded< ded< dS )UniqueInverseResultr   r   r	   Nr   r   r   r   r   r   !   s   
r   r   )xreturnc                C  sN   t j| jdddd\}}}}|| j}tt|t|t|t|S )|
    Array API compatible wrapper for :py:func:`np.unique <numpy.unique>`.

    See its docstring for more information.
    TZreturn_countsZreturn_indexZreturn_inverse)npunique_arrayreshapeshaper   r   _new)r   r   r   r	   r
   r   r   r   
unique_all&   s    r   c                C  s&   t j| jdddd}tdd |D  S )NTFr   c                 S  s   g | ]}t |qS r   )r   r   ).0ir   r   r   
<listcomp>E   s     z!unique_counts.<locals>.<listcomp>)r   r   r   r   r   resr   r   r   unique_counts=   s    r$   c                C  s:   t j| jdddd\}}|| j}tt|t|S )r   FTr   )r   r   r   r   r   r   r   r   )r   r   r	   r   r   r   unique_inverseH   s    
r%   c                C  s   t j| jdddd}t|S )r   Fr   )r   r   r   r   r   r"   r   r   r   unique_valuesZ   s    r&   )
__future__r   Z_array_objectr   typingr   Znumpyr   r   r   r   r   r$   r%   r&   r   r   r   r   <module>   s   