U
    Â½„bû  ã                   @   s&   d dl Z eƒ eƒ fdd„Zdd„ ZdS )é    Nc                 C   s   | dkr|S | dkr|S | S )zH
    A hack to make True and 1 and False and 0 unique for ``uniq``.
    TF© )ÚelementÚtrueÚfalser   r   ú4/tmp/pip-unpacked-wheel-dl0xefvz/coreschema/utils.pyÚunbool   s
    r   c                 C   sÐ   z t tdd„ | D ƒƒƒt | ƒkW S  tk
rÊ   zJtdd„ | D ƒƒ}t |dd¡}t||ƒD ]\}}||kr\ W Y dS q\W nJ ttfk
rÄ   g }| D ](}t|ƒ}||kr´ Y Y dS | 	|¡ q–Y nX Y nX dS )zØ
    Check if all of a container's elements are unique.
    Successively tries first to rely that the elements are hashable, then
    falls back on them being sortable, and finally falls back on brute
    force.
    c                 s   s   | ]}t |ƒV  qd S ©N©r   ©Ú.0Úir   r   r   Ú	<genexpr>0   s     zuniq.<locals>.<genexpr>c                 s   s   | ]}t |ƒV  qd S r   r	   r
   r   r   r   r   3   s     é   NFT)
ÚlenÚsetÚ	TypeErrorÚsortedÚ	itertoolsÚisliceÚzipÚNotImplementedErrorr   Úappend)Ú	containerÚsortZslicedr   ÚjÚseenÚer   r   r   Úuniq'   s"     
r   )r   Úobjectr   r   r   r   r   r   Ú<module>   s   