o
    •7?e-d  ã                   @   s’  d dl mZ d dlmZ d dlZd dlZd dlZd dlZd dl	Z	d dl
mZ d dlZd dlmZ d dlmZ eded fdd	„ƒZd
d„ Ze	j dejejfejejfejejfejejfej ej!fej"ej#fej$ej%fej&ej'fej(ej)fej*ej+fej,ej-fej.ej/fej0ej1fej2ej3fg¡G dd„ dƒƒZ4G dd„ dƒZ5G dd„ dƒZ6dd„ Z7dd„ Z8dd„ Z9dd„ Z:e	j de;ddƒ¡dd„ ƒZ<e	j dej ej!fej(ej)fejejfej"ej#fg¡G d d!„ d!ƒƒZ=d"d#„ Z>d$d%„ Z?d&d'„ Z@e	j d(ejejejejej!ej#ej%ej'ej)ej+ej-ej/ej1ej3g¡G d)d*„ d*ƒƒZAd+d,„ ZBd-d.„ ZCd/d0„ ZDe	j d(ej!ej)ejej#g¡G d1d2„ d2ƒƒZEd3d4„ ZFd5d6„ ZGdS )7é    )Ú	Generator)ÚcontextmanagerN)Ú	hashtable)ÚisinÚreturn)NNNc                   c   s*    t  ¡  z
d V  W t  ¡  d S t  ¡  w ©N)ÚtracemallocÚstartÚstop© r   r   úa/home/www/facesmatcher.com/pyenv/lib/python3.10/site-packages/pandas/tests/libs/test_hashtable.pyÚactivated_tracemalloc   s
   €r   c                  C   s4   t  ¡ } |  t  dt ¡ ¡f¡} tdd„ | jD ƒƒS )NTc                 s   s    | ]}|j V  qd S r   )Úsize)Ú.0Úxr   r   r   Ú	<genexpr>   s   € z-get_allocated_khash_memory.<locals>.<genexpr>)r   Ztake_snapshotZfilter_tracesZDomainFilterÚhtZget_hashtable_trace_domainÚsumZtraces)Zsnapshotr   r   r   Úget_allocated_khash_memory   s
   ÿr   ztable_type, dtypec                   @   sˆ   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zej deddƒ¡dd„ ƒZdS )ÚTestHashTablec                 C   sä  d}|dƒ}t |ƒdksJ ‚||vsJ ‚| |d¡ t |ƒdks"J ‚||v s(J ‚| |¡dks1J ‚| |d d¡ ||v s?J ‚|d |v sGJ ‚t |ƒdksOJ ‚| |¡dksXJ ‚| |d ¡dkscJ ‚| |d¡ ||v soJ ‚|d |v swJ ‚t |ƒdksJ ‚| |¡dksˆJ ‚| |d ¡dks“J ‚|d |vs›J ‚| |d d¡ ||v s©J ‚|d |v s±J ‚t |ƒdks¹J ‚| |¡dksÂJ ‚| |d ¡dksÍJ ‚tjtt|d ƒd	 | |d ¡ W d   ƒ d S 1 sëw   Y  d S )
Né   é7   r   é*   é   é)   é   é   ©Úmatch)ÚlenÚset_itemÚget_itemÚpytestÚraisesÚKeyErrorÚstr©ÚselfÚ
table_typeÚdtypeÚindexÚtabler   r   r   Útest_get_set_contains_len6   s<   "ÿz'TestHashTable.test_get_set_contains_lenc                 C   sò  |t jkr
t d¡ d}|ddd}t|ƒdksJ ‚||vs J ‚| |d¡ t|ƒdks.J ‚||v s4J ‚| |¡dks=J ‚tjtd	d
 | 	¡  W d   ƒ n1 sSw   Y  | |d d¡ | 
d¡ tj|v slJ ‚||v srJ ‚|d |v szJ ‚t|ƒdks‚J ‚| |¡dks‹J ‚| |d ¡dks–J ‚| 	¡ dksžJ ‚| 
d¡ ||v s©J ‚|d |v s±J ‚t|ƒdks¹J ‚| |d ¡dksÄJ ‚| 	¡ dksÌJ ‚|d |vsÔJ ‚tjtt|d ƒd
 | |d ¡ W d   ƒ d S 1 sòw   Y  d S )NúMask not supported for objectr   r   T©Z	uses_maskr   r   r   ÚNAr   r   é   r   r   )r   ÚPyObjectHashTabler"   Úskipr   r    r!   r#   r$   Úget_naZset_naÚpdr/   r%   r&   r   r   r   Útest_get_set_contains_len_maskZ   s@   


ÿ

"ÿz,TestHashTable.test_get_set_contains_len_maskc           	      C   s†   |t jkr?d}|ƒ }t |¡ |¡}t |¡ tj¡| }||j_||j_| ||¡ t	|ƒD ]}| 
|| ¡|| ks>J ‚q/d S d S )NéM   )r   ÚInt64HashTableÚnpÚarangeÚastypeÚint64ÚflagsÚ	writeableZmap_keys_to_valuesÚranger!   )	r'   r(   r)   ÚwritableÚNr+   ÚkeysÚvalsÚir   r   r   Útest_map_keys_to_values~   s   
÷z%TestHashTable.test_map_keys_to_valuesc                 C   sX   d}|ƒ }t  |¡|  |¡}||j_| |¡ t|ƒD ]}| || ¡|ks)J ‚qd S )Né   )r8   r9   r:   r<   r=   Úmap_locationsr>   r!   ©r'   r(   r)   r?   r@   r+   rA   rC   r   r   r   Útest_map_locations‹   s   
ÿz TestHashTable.test_map_locationsc                 C   sâ   |t jkr
t d¡ d}|dd}t |¡|  |¡}||j_| 	|t 
g d¢¡¡ t|d ƒD ]}| || ¡|ks=J ‚q0tjtt t||d  ƒ¡d | ||d  ¡ W d   ƒ n1 sbw   Y  | ¡ dksoJ ‚d S )	Nr-   r0   Tr.   )FFTr   r   r   )r   r1   r"   r2   r8   r9   r:   r<   r=   rF   Úarrayr>   r!   r#   r$   ÚreÚescaper%   r3   rG   r   r   r   Útest_map_locations_mask”   s   


"ÿz%TestHashTable.test_map_locations_maskc           	      C   sd   d}|ƒ }t  |¡|  |¡}||j_| |¡ | |¡}t  |¡}t | t j	¡| t j	¡¡ d S )Nr0   )
r8   r9   r:   r<   r=   rF   ÚlookupÚtmÚassert_numpy_array_equalr;   )	r'   r(   r)   r?   r@   r+   rA   ÚresultÚexpectedr   r   r   Útest_lookup¤   s   


 zTestHashTable.test_lookupc                 C   sn   |t jt jfv rd}nd}|ƒ }t  |¡|  |¡}| |¡ t  |¡ |¡}| |¡}t  |dk¡s5J ‚d S )Néd   i   éÿÿÿÿ)r8   Úint8Úuint8r9   r:   rF   rM   Úall)r'   r(   r)   r@   r+   rA   Z
wrong_keysrP   r   r   r   Útest_lookup_wrong®   s   

zTestHashTable.test_lookup_wrongc           
      C   sÖ   |t jkr
t d¡ d}|dd}t |¡|  |¡}t g d¢¡}||j_	| 
||¡ | ||¡}t |¡}	t | tj¡|	 tj¡¡ | t d| g¡ |¡t dg¡¡}t | tj¡tjdgtjd	¡ d S )
Nr-   r0   Tr.   )FTFr   FrT   ©r)   )r   r1   r"   r2   r8   r9   r:   rI   r<   r=   rF   rM   rN   rO   r;   )
r'   r(   r)   r?   r@   r+   rA   ÚmaskrP   rQ   r   r   r   Útest_lookup_maskº   s   



&ÿzTestHashTable.test_lookup_maskc           	      C   sb   |t jt jfv rd}nd}|ƒ }t  |¡|  |¡}t  |d¡}||j_| |¡}t	 
||¡ d S )NéX   éè  r   )r8   rU   rV   r9   r:   Úrepeatr<   r=   ÚuniquerN   rO   )	r'   r(   r)   r?   r@   r+   rQ   rA   r_   r   r   r   Útest_uniqueÌ   s   
zTestHashTable.test_uniquec                 C   s   |t jt jfv rd}nd}t  |¡ |¡}tƒ & |ƒ }| |¡ tƒ }| ¡ }||ks.J ‚~tƒ dks6J ‚W d   ƒ d S 1 sAw   Y  d S )Né   i0u  r   )	r8   rU   rV   r9   r:   r   rF   r   Úsizeof)r'   r(   r)   r@   rA   r+   ÚusedÚmy_sizer   r   r   Útest_tracemalloc_worksØ   s   
"ùz$TestHashTable.test_tracemalloc_worksc                 C   s\   t ƒ ! |ƒ }tƒ }| ¡ }||ksJ ‚~tƒ dksJ ‚W d   ƒ d S 1 s'w   Y  d S ©Nr   )r   r   rb   )r'   r(   r)   r+   rc   rd   r   r   r   Útest_tracemalloc_for_emptyç   s   "úz(TestHashTable.test_tracemalloc_for_emptyc                 C   sL   |dƒ}|  ¡ }|d dksJ ‚|d dksJ ‚d|v sJ ‚d|v s$J ‚d S )Nr]   r   r   Z
n_occupiedÚ	n_bucketsÚupper_bound)Ú	get_state)r'   r(   r)   r+   Ústater   r   r   Útest_get_stateð   s   zTestHashTable.test_get_stater@   r   én   c           	      C   sn   t  |¡ |¡}||ƒ}| ¡ d }| |¡ | ¡ d }||ks#J ‚|ƒ }| |¡ || ¡ d ks5J ‚d S ©Nrh   )r8   r9   r:   rj   rF   )	r'   r(   r)   r@   rA   Úpreallocated_tableÚn_buckets_startÚn_buckets_endÚclean_tabler   r   r   Útest_no_reallocationø   s   

z"TestHashTable.test_no_reallocationN)Ú__name__Ú
__module__Ú__qualname__r,   r5   rD   rH   rL   rR   rX   r[   r`   re   rg   rl   r"   ÚmarkÚparametrizer>   rs   r   r   r   r   r   "   s    $$	
	r   c                   @   sÞ   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zej	 
dddg¡ej	 
dejejddfejejddfejejddfejejddfejejddfejejddfg¡dd„ ƒƒZej	 
dejejejejejejg¡dd„ ƒZdS )ÚTestHashTableUnsortedc                 C   sž   t  ¡ }| dd¡ | d¡dksJ ‚tjtdd | dd¡ W d   ƒ n1 s+w   Y  tjtdd | d¡ W d   ƒ d S 1 sHw   Y  d S )NÚkeyr   z'key' has incorrect typer   é   é   z'val' has incorrect type)r   ÚStringHashTabler    r!   r"   r#   Ú	TypeError)r'   Útblr   r   r   Ú(test_string_hashtable_set_item_signature	  s   þ"ÿz>TestHashTableUnsorted.test_string_hashtable_set_item_signaturec              	   C   s^   t  ddt jddddg¡}|j|d t ¡ }| |¡ t | 	|¡t j
t|ƒt jd¡ d S )	NgX9´Èv¾@g…ëQ¸	@iùÿÿÿr   r   r0   ©ÚwriterY   )r8   rI   ÚnanÚsetflagsr   ÚFloat64HashTablerF   rN   rO   rM   r9   r   Úintp©r'   r?   ZxsÚmr   r   r   Útest_lookup_nan  s
   
&z%TestHashTableUnsorted.test_lookup_nanc                 C   s:   d}t  |¡}| dd¡ | dd¡ t|ƒdksJ ‚d S )Nr{   g        r   g       €r   )r   r…   r    r   )r'   r@   rˆ   r   r   r   Útest_add_signed_zeros  s
   
z+TestHashTableUnsorted.test_add_signed_zerosc                 C   s|   t  dt  dd¡¡d }t  dt  dd¡¡d }||ksJ ‚||ks$J ‚t ¡ }| |d¡ | |d¡ t|ƒdks<J ‚d S )NÚdz=Ql         À r   l        À r   )ÚstructÚunpackÚpackr   r…   r    r   )r'   ZNAN1ZNAN2rˆ   r   r   r   Útest_add_different_nans)  s   z-TestHashTableUnsorted.test_add_different_nansc                 C   sX   t jg d¢t jd}|j|d t ¡ }| |¡ t | 	|¡t j
t|ƒt jd¡ d S )N)r   r   l            rY   r   )r8   rI   Úuint64r„   r   ÚUInt64HashTablerF   rN   rO   rM   r9   r   r†   r‡   r   r   r   Útest_lookup_overflow7  s
   
&z*TestHashTableUnsorted.test_lookup_overflowÚnvalsr   é
   z&htable, uniques, dtype, safely_resizesÚobjectFTÚfloat64r;   Úint32r   c           
      C   s¾   t jtdƒ|d}|j|d |ƒ }|ƒ }| |d |… |dd¡ | ¡ }|j}	|r3| ||dd¡ ntjt	dd | ||dd¡ W d   ƒ n1 sMw   Y  | ¡  |j|	ks]J ‚d S )Nr]   rY   r   r   rT   zexternal reference.*r   )
r8   rI   r>   r„   Z
get_labelsZto_arrayÚshaper"   r#   Ú
ValueError)
r'   r?   ZhtableZuniquesr)   Zsafely_resizesr“   rB   ÚtmpZoldshaper   r   r   Útest_vector_resize?  s   ÿz(TestHashTableUnsorted.test_vector_resizer   c                 C   s    t  t j¡jd }||d d S )Nr   )Ú	size_hint)r8   ZiinfoÚuint32Úmax)r'   r   rœ   r   r   r   Útest_hashtable_large_sizehintn  s   z3TestHashTableUnsorted.test_hashtable_large_sizehintN)rt   ru   rv   r€   r‰   rŠ   r   r’   r"   rw   rx   r   r1   ZObjectVectorr}   r…   ZFloat64Vectorr7   ZInt64VectorÚInt32HashTableZInt32Vectorr‘   ZUInt64Vectorr›   rŸ   r   r   r   r   ry     s:    úþ#úþry   c                   @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )ÚTestPyObjectHashTableWithNansc                 C   sF   t dƒ}t dƒ}||usJ ‚t ¡ }| |d¡ | |¡dks!J ‚d S ©Nrƒ   r   ©Úfloatr   r1   r    r!   ©r'   Únan1Únan2r+   r   r   r   Útest_nan_float€  s   z,TestPyObjectHashTableWithNans.test_nan_floatc                 C   sZ   t tdƒtdƒƒ}t tdƒtdƒƒ}||usJ ‚t ¡ }| |d¡ | |¡dks+J ‚d S r¢   )Úcomplexr¤   r   r1   r    r!   r¥   r   r   r   Útest_nan_complex_bothˆ  s   z3TestPyObjectHashTableWithNans.test_nan_complex_bothc                 C   s®   t tdƒdƒ}t tdƒdƒ}t tdƒdƒ}||usJ ‚t ¡ }| |d¡ | |¡dks.J ‚tjtd d}| |¡ W d   ƒ n1 sEw   Y  t	|j
ƒt	|ƒksUJ ‚d S )Nrƒ   r   r   r   r   ©r©   r¤   r   r1   r    r!   r"   r#   r$   r%   Úvalue©r'   r¦   r§   Úotherr+   Úerrorr   r   r   Útest_nan_complex_real  ó   ÿz3TestPyObjectHashTableWithNans.test_nan_complex_realc                 C   s®   t dtdƒƒ}t dtdƒƒ}t dtdƒƒ}||usJ ‚t ¡ }| |d¡ | |¡dks.J ‚tjtd d}| |¡ W d   ƒ n1 sEw   Y  t	|j
ƒt	|ƒksUJ ‚d S )Nr   rƒ   r   r   r   r«   r­   r   r   r   Útest_nan_complex_imagœ  r±   z3TestPyObjectHashTableWithNans.test_nan_complex_imagc                 C   sR   t dƒf}t dƒf}|d |d usJ ‚t ¡ }| |d¡ | |¡dks'J ‚d S )Nrƒ   r   r   r£   r¥   r   r   r   Útest_nan_in_tuple¨  s   

z/TestPyObjectHashTableWithNans.test_nan_in_tuplec                 C   s    ddt dƒfff}ddt dƒfff}d}t ¡ }| |d¡ | |¡dks'J ‚tjtd d}| |¡ W d   ƒ n1 s>w   Y  t|j	ƒt|ƒksNJ ‚d S )Nr   r   rƒ   )r   r   r   r   )
r¤   r   r1   r    r!   r"   r#   r$   r%   r¬   r­   r   r   r   Útest_nan_in_nested_tuple°  s   ÿz6TestPyObjectHashTableWithNans.test_nan_in_nested_tupleN)	rt   ru   rv   r¨   rª   r°   r²   r³   r´   r   r   r   r   r¡     s    r¡   c                  C   s\   t dƒt dƒt dƒff} t dƒt dƒt dƒff}t | ¡t |¡ks$J ‚t | |¡s,J ‚d S )Nrƒ   )r¤   r   Zobject_hashZobjects_are_equal)ÚaÚbr   r   r   Útest_hash_equal_tuple_with_nans¼  s   r·   c                 C   sv   t  ¡ }tjg d¢tjd}| |j_| |¡\}}tjg d¢tjd}tjddgtjd}t	 
||¡ t	 
||¡ d S )N)r   r   rT   r   r   rT   rY   )r   r   rT   r   r   rT   r   r   )r   r7   r8   rI   r;   r<   r=   Zget_labels_groupbyr†   rN   rO   )r?   r+   rB   Úarrr_   Zexpected_arrZexpected_uniquer   r   r   Ú!test_get_labels_groupby_for_Int64Ã  s   r¹   c                  C   s†   d} t  | ¡ t j¡ t j¡}tƒ ' t ¡ }| |¡ t	ƒ }| 
¡ }||ks)J ‚~t	ƒ dks1J ‚W d   ƒ d S 1 s<w   Y  d S )Nr]   r   )r8   r9   r:   Ústr_Úobject_r   r   r}   rF   r   rb   )r@   rA   r+   rc   rd   r   r   r   Ú*test_tracemalloc_works_for_StringHashTableÎ  s   
"ùr¼   c                  C   s^   t ƒ " t ¡ } tƒ }|  ¡ }||ksJ ‚~ tƒ dksJ ‚W d   ƒ d S 1 s(w   Y  d S rf   )r   r   r}   r   rb   )r+   rc   rd   r   r   r   Ú*test_tracemalloc_for_empty_StringHashTableÛ  s   "úr½   r@   r   rm   c                 C   s|   t  | ¡ t j¡ t j¡}t | ¡}| ¡ d }| |¡ | ¡ d }||ks)J ‚t ¡ }| |¡ || ¡ d ks<J ‚d S rn   )	r8   r9   r:   rº   r»   r   r}   rj   rF   )r@   rA   ro   rp   rq   rr   r   r   r   Ú$test_no_reallocation_StringHashTableå  s   


r¾   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚTestHashTableWithNansc                 C   s’   t dƒ}|ƒ }||vsJ ‚| |d¡ t|ƒdksJ ‚||v s!J ‚| |¡dks*J ‚| |d¡ t|ƒdks8J ‚||v s>J ‚| |¡dksGJ ‚d S )Nrƒ   r   r   r   )r¤   r    r   r!   r&   r   r   r   r,   þ  s   z/TestHashTableWithNans.test_get_set_contains_lenc                 C   sR   d}|ƒ }t j|t j|d}| |¡ t|ƒdksJ ‚| t j¡|d ks'J ‚d S )Nr”   rY   r   )r8   Úfullrƒ   rF   r   r!   )r'   r(   r)   r@   r+   rA   r   r   r   rH     s   
z(TestHashTableWithNans.test_map_locationsc                 C   sJ   d}|ƒ }t j|t j|d}| |¡}t  t  |¡¡r!t|ƒdks#J ‚d S )Niü  rY   r   )r8   rÀ   rƒ   r_   rW   Úisnanr   )r'   r(   r)   r@   r+   rA   r_   r   r   r   r`     s
   
$z!TestHashTableWithNans.test_uniqueN)rt   ru   rv   r,   rH   r`   r   r   r   r   r¿   ô  s    
r¿   c                  C   óD   t  ¡ } tjdd„ tdƒD ƒtjd}|  |¡}t|ƒdks J ‚d S )Nc                 S   s   g | ]}t d ƒ‘qS )rƒ   ©r¤   ©r   rC   r   r   r   Ú
<listcomp>  s    z6test_unique_for_nan_objects_floats.<locals>.<listcomp>é2   rY   r   ©r   r1   r8   rI   r>   r»   r_   r   ©r+   rA   r_   r   r   r   Ú"test_unique_for_nan_objects_floats  ó   
rÉ   c                  C   rÂ   )Nc                 S   s   g | ]	}t td ƒdƒ‘qS )rƒ   ç      ð?)r©   r¤   rÄ   r   r   r   rÅ   &  s    z7test_unique_for_nan_objects_complex.<locals>.<listcomp>rÆ   rY   r   rÇ   rÈ   r   r   r   Ú#test_unique_for_nan_objects_complex$  rÊ   rÌ   c                  C   sJ   t  ¡ } tjdgdd„ tdƒD ƒ tjd}|  |¡}t|ƒdks#J ‚d S )Nr   c                 S   s   g | ]
}d t dƒd ff‘qS )rË   rƒ   rÃ   rÄ   r   r   r   rÅ   .  s    z5test_unique_for_nan_objects_tuple.<locals>.<listcomp>rÆ   rY   r   rÇ   rÈ   r   r   r   Ú!test_unique_for_nan_objects_tuple+  s   ÿ
rÍ   r)   c                   @   sD   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dS )ÚTestHelpFunctionsc                 C   sd   d}t  |¡|  |¡}t  |d¡}||j_t |d¡\}}t 	t  
|¡|¡ t  |dk¡s0J ‚d S )Né+   r   F)r8   r9   r:   r^   r<   r=   r   Úvalue_countrN   rO   ÚsortrW   )r'   r)   r?   r@   rQ   ÚvaluesrA   Úcountsr   r   r   Útest_value_countH  s   z"TestHelpFunctions.test_value_countc                 C   sN   t  g d¢¡ |¡}||j_t |d¡\}}t ||¡ t  	|dk¡s%J ‚d S )N©r   r   r   é   r0   rT   rE   Fr   )
r8   rI   r:   r<   r=   r   rÐ   rN   rO   rW   )r'   r)   r?   rÒ   rA   rÓ   r   r   r   Útest_value_count_stableQ  s
   z)TestHelpFunctions.test_value_count_stablec                 C   s\   d}t  t  |¡ |¡d¡}||j_t |¡}t j|t j	d}d|d d d…< t
 ||¡ d S )NrS   r   rY   F)r8   r^   r9   r:   r<   r=   r   Ú
duplicatedÚ	ones_likeÚbool_rN   rO   )r'   r)   r?   r@   rÒ   rP   rQ   r   r   r   Útest_duplicated_firstY  s   
z'TestHelpFunctions.test_duplicated_firstc                 C   s`   d}t  |¡ |¡}t  |¡ |¡}||j_||j_t ||¡}t j|t jd}t	 
||¡ d S )Né   rY   )r8   r9   r:   r<   r=   r   ÚismemberrÙ   rÚ   rN   rO   )r'   r)   r?   r@   r¸   rÒ   rP   rQ   r   r   r   Útest_ismember_yesb  s   z#TestHelpFunctions.test_ismember_yesc                 C   sT   d}t  |¡ |¡}t  |¡|  |¡}t ||¡}t j|t jd}t ||¡ d S )Né   rY   )	r8   r9   r:   r   rÝ   Z
zeros_likerÚ   rN   rO   )r'   r)   r@   r¸   rÒ   rP   rQ   r   r   r   Útest_ismember_nol  s   z"TestHelpFunctions.test_ismember_noc                 C   s^   |t jt jfv rd}nd}t  t  |¡ |¡d¡}d|d< ||j_t 	|d¡}|dks-J ‚d S )Né5   ig+  r   r   r   F)
r8   rU   rV   r^   r9   r:   r<   r=   r   Úmode)r'   r)   r?   r@   rÒ   rP   r   r   r   Ú	test_modet  s   zTestHelpFunctions.test_modec                 C   s8   t  g d¢¡ |¡}||j_t |d¡}t ||¡ d S )NrÕ   F)	r8   rI   r:   r<   r=   r   râ   rN   rO   )r'   r)   r?   rÒ   rA   r   r   r   Útest_mode_stable  s   z"TestHelpFunctions.test_mode_stableN)
rt   ru   rv   rÔ   r×   rÛ   rÞ   rà   rã   rä   r   r   r   r   rÎ   4  s    		
rÎ   c                  C   sN   t jtjt jd g} tjdg| d  tjd}t |d¡}|j	t
| ƒks%J ‚d S )NTr   rY   F)r4   r/   r8   rƒ   ZNaTrI   r»   r   râ   r   r   )ZnullsrÒ   Úmodesr   r   r   Útest_modes_with_nans†  s   ræ   c                 C   sJ   t jg d¢t jd}| |j_t |¡}t jg d¢t jd}t ||¡ d S )N)r   r   r   r   r   r0   rY   )r   r   r   )	r8   rI   r†   r<   r=   r   Úunique_label_indicesrN   rO   )r?   rA   rP   rQ   r   r   r   Útest_unique_label_indices_intpŽ  s
   
rè   c                  C   sž   t j d¡ ddd¡ t j¡} t | ¡}t j| ddd }t	j
||dd d	| t j d¡ t| ƒd
¡< t | ¡}t j| ddd dd … }t	j
||dd d S )Nr   r   i   i €  T)Zreturn_indexF)Zcheck_dtyperT   r”   )r8   ÚrandomZdefault_rngZintegersr:   r†   r   rç   r_   rN   rO   Úchoicer   )rµ   ÚleftÚrightr   r   r   Útest_unique_label_indices–  s   

rí   c                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚTestHelpFunctionsWithNansc                 C   s~   t jt jt jt jg|d}t |d¡\}}t|ƒdksJ ‚t |d¡\}}t|ƒdkr3t  t  |¡¡s5J ‚|d dks=J ‚d S )NrY   Tr   Fr   r0   )r8   rI   rƒ   r   rÐ   r   rW   rÁ   )r'   r)   rÒ   rA   rÓ   r   r   r   rÔ   ®  s    z*TestHelpFunctionsWithNans.test_value_countc                 C   sB   t jt jt jt jg|d}t |¡}t  g d¢¡}t ||¡ d S )NrY   )FTT)r8   rI   rƒ   r   rØ   rN   rO   )r'   r)   rÒ   rP   rQ   r   r   r   rÛ   ¶  s   
z/TestHelpFunctionsWithNans.test_duplicated_firstc                 C   s`   t jt jt jt jg|d}t jt jt jg|d}t ||¡}t jg d¢t jd}t ||¡ d S )NrY   )TTT©r8   rI   rƒ   r   rÝ   rÚ   rN   rO   ©r'   r)   r¸   rÒ   rP   rQ   r   r   r   rÞ   ¼  s
   z+TestHelpFunctionsWithNans.test_ismember_yesc                 C   sZ   t jt jt jt jg|d}t jdg|d}t ||¡}t jg d¢t jd}t ||¡ d S )NrY   r   )FFFrï   rð   r   r   r   rà   Ã  s
   z*TestHelpFunctionsWithNans.test_ismember_noc                 C   sJ   t jdt jt jt jg|d}t |d¡dksJ ‚t  t |d¡¡s#J ‚d S )Nr   rY   TF)r8   rI   rƒ   r   râ   rÁ   )r'   r)   rÒ   r   r   r   rã   Ê  s   z#TestHelpFunctionsWithNans.test_modeN)rt   ru   rv   rÔ   rÛ   rÞ   rà   rã   r   r   r   r   rî   ¤  s    
rî   c                  C   s~   dt dƒfdg} dt dƒfg}d}tjt|d t| |ƒ}W d   ƒ n1 s(w   Y  tjddgtjd}t ||¡ d S )	Nrµ   rƒ   )r¶   r   z+isin with argument that is not not a Seriesr   TFrY   )	r¤   rN   Zassert_produces_warningÚFutureWarningr   r8   rI   rÚ   rO   )rÒ   ÚcompsÚmsgrP   rQ   r   r   r   Útest_ismember_tuple_with_nansÐ  s   ÿrô   c                  C   sR   g d¢} t tdƒƒ}ttj| tdt |¡ƒ}tjg d¢tjd}t 	||¡ d S )N)rµ   r   g      @y      @        é   rY   )FTTT)
Úlistr>   r   r8   rI   r•   ZasarrayrÚ   rN   rO   )rÒ   rò   rP   rQ   r   r   r   Ú+test_float_complex_int_are_equal_as_objectsÜ  s
   r÷   )HÚcollections.abcr   Ú
contextlibr   rJ   rŒ   r   Únumpyr8   r"   Zpandas._libsr   r   Zpandasr4   Zpandas._testingZ_testingrN   Zpandas.core.algorithmsr   r   r   rw   rx   r1   r»   ZComplex128HashTableZ
complex128r7   r;   r‘   r   r…   r–   ZComplex64HashTableZ	complex64r    r—   ZUInt32HashTabler   ZFloat32HashTableZfloat32ZInt16HashTableZint16ZUInt16HashTableZuint16ZInt8HashTablerU   ZUInt8HashTablerV   ZIntpHashTabler†   r   ry   r¡   r·   r¹   r¼   r½   r>   r¾   r¿   rÉ   rÌ   rÍ   rÎ   ræ   rè   rí   rî   rô   r÷   r   r   r   r   Ú<module>   s®    













òþ Sx=





üþ	 	òþ?üþ	#