a
    Pªfëe  ã                   @   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ed dœ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)NNN)Úreturnc                   c   s*   t  ¡  zd V  W t  ¡  n
t  ¡  0 d S ©N)ÚtracemallocÚstartÚstop© r   r   úY/var/www/ai-form-bot/venv/lib/python3.9/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>   ó    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sDJ ‚||v sPJ ‚| |¡dksbJ ‚| |d d¡ ||v s~J ‚|d |v sŽJ ‚t |ƒdksžJ ‚| |¡dks°J ‚| |d ¡dksÆJ ‚| |d¡ ||v sÞJ ‚|d |v sîJ ‚t |ƒdksþJ ‚| |¡dksJ ‚| |d ¡dks*J ‚|d |vs<J ‚| |d d¡ ||v sZJ ‚|d |v slJ ‚t |ƒdks~J ‚| |¡dks’J ‚| |d ¡dksªJ ‚tjtt|d ƒd	 | |d ¡ W d   ƒ n1 sæ0    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s4J ‚||vs@J ‚| |d¡ t|ƒdks\J ‚||v shJ ‚| |¡dkszJ ‚tjtd	d
 | 	¡  W d   ƒ n1 s¦0    Y  | |d d¡ | 
d¡ tj|v sØJ ‚||v säJ ‚|d |v sôJ ‚t|ƒdksJ ‚| |¡dksJ ‚| |d ¡dks2J ‚| 	¡ dksDJ ‚| 
d¡ ||v s\J ‚|d |v snJ ‚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   ƒ n1 sø0    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Úpdr0   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 )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s8J ‚q8d S )Né   )r9   r:   r;   r=   r>   Úmap_locationsr?   r"   ©r(   r)   r*   r@   rA   r,   rB   rD   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 ‚q`tjtt t||d  ƒ¡d" | ||d  ¡ W d   ƒ n1 sÄ0    Y  | ¡ dksÞJ ‚d S )	Nr.   r1   Tr/   )FFTr   r   r   )r   r2   r#   r3   r9   r:   r;   r=   r>   rG   Úarrayr?   r"   r$   r%   ÚreÚescaper&   r4   rH   r   r   r   Útest_map_locations_mask”   s    


"0z%TestHashTable.test_map_locations_maskc           	      C   sd   d}|ƒ }t  |¡|  |¡}||j_| |¡ | |¡}t  |¡}t | t j	¡| t j	¡¡ d S )Nr1   )
r9   r:   r;   r=   r>   rG   ÚlookupÚtmÚassert_numpy_array_equalr<   )	r(   r)   r*   r@   rA   r,   rB   Ú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¡sjJ ‚d S )Néd   i   éÿÿÿÿ)r9   Úint8Úuint8r:   r;   rG   rN   Úall)r(   r)   r*   rA   r,   rB   Z
wrong_keysrQ   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.   r1   Tr/   )FTFr   FrU   ©r*   )r   r2   r#   r3   r9   r:   r;   rJ   r=   r>   rG   rN   rO   rP   r<   )
r(   r)   r*   r@   rA   r,   rB   ÚmaskrQ   rR   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   )r9   rV   rW   r:   r;   Úrepeatr=   r>   ÚuniquerO   rP   )	r(   r)   r*   r@   rA   r,   rR   rB   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ƒ J |ƒ }| |¡ tƒ }| ¡ }||ks\J ‚~tƒ dkslJ ‚W d   ƒ n1 s€0    Y  d S )Né   i0u  r   )	r9   rV   rW   r:   r;   r   rG   r   Úsizeof)r(   r)   r*   rA   rB   r,   ÚusedÚmy_sizer   r   r   Útest_tracemalloc_worksØ   s    
z$TestHashTable.test_tracemalloc_worksc                 C   sZ   t ƒ @ |ƒ }tƒ }| ¡ }||ks(J ‚~tƒ dks8J ‚W d   ƒ n1 sL0    Y  d S ©Nr   )r   r   rc   )r(   r)   r*   r,   rd   re   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s0J ‚d|v s<J ‚d|v sHJ ‚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_staterA   r   én   c           	      C   sn   t  |¡ |¡}||ƒ}| ¡ d }| |¡ | ¡ d }||ksFJ ‚|ƒ }| |¡ || ¡ d ksjJ ‚d S ©Nri   )r9   r:   r;   rk   rG   )	r(   r)   r*   rA   rB   Ú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-   r6   rE   rI   rM   rS   rY   r\   ra   rf   rh   rm   r#   ÚmarkÚparametrizer?   rt   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 sV0    Y  tjtdd | d¡ W d   ƒ n1 sŽ0    Y  d S )NÚkeyr   z'key' has incorrect typer   é   é   z'val' has incorrect type)r   ÚStringHashTabler!   r"   r#   r$   Ú	TypeError)r(   Z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   r1   ©ÚwriterZ   )r9   rJ   ÚnanÚsetflagsr   ÚFloat64HashTablerG   rO   rP   rN   r:   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s6J ‚d S )Nr|   g        r   g       €r   )r   r…   r!   r    )r(   rA   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sHJ ‚t ¡ }| |d¡ | |d¡ t|ƒdksxJ ‚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            rZ   r   )r9   rJ   Úuint64r„   r   ÚUInt64HashTablerG   rO   rP   rN   r:   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}	|rf| ||dd¡ n>tjt	dd  | ||dd¡ W d   ƒ n1 sš0    Y  | ¡  |j|	ksºJ ‚d S )Nr^   rZ   r   r   rU   zexternal reference.*r   )
r9   rJ   r?   r„   Z
get_labelsZto_arrayÚshaper#   r$   Ú
ValueError)
r(   r@   ZhtableZuniquesr*   Zsafely_resizesr“   rC   Ú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)r9   ZiinfoÚuint32Úmax)r(   r   rœ   r   r   r   Útest_hashtable_large_sizehintn  s    z3TestHashTableUnsorted.test_hashtable_large_sizehintN)ru   rv   rw   r€   r‰   rŠ   r   r’   r#   rx   ry   r   r2   ZObjectVectorr~   r…   ZFloat64Vectorr8   ZInt64VectorÚInt32HashTableZInt32Vectorr‘   ZUInt64Vectorr›   rŸ   r   r   r   r   rz     s8   úþ#úþrz   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sBJ ‚d S ©Nrƒ   r   ©Úfloatr   r2   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s0J ‚t ¡ }| |d¡ | |¡dksVJ ‚d S r¢   )Úcomplexr¤   r   r2   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s6J ‚t ¡ }| |d¡ | |¡dks\J ‚tjtd d}| |¡ W d   ƒ n1 sŠ0    Y  t	|j
ƒt	|ƒksªJ ‚d S )Nrƒ   r   r   r   r   ©r©   r¤   r   r2   r!   r"   r#   r$   r%   r&   Úvalue©r(   r¦   r§   Úotherr,   Úerrorr   r   r   Útest_nan_complex_real  s    (z3TestPyObjectHashTableWithNans.test_nan_complex_realc                 C   s®   t dtdƒƒ}t dtdƒƒ}t dtdƒƒ}||us6J ‚t ¡ }| |d¡ | |¡dks\J ‚tjtd d}| |¡ W d   ƒ n1 sŠ0    Y  t	|j
ƒt	|ƒksªJ ‚d S )Nr   rƒ   r   r   r   r«   r­   r   r   r   Útest_nan_complex_imagœ  s    (z3TestPyObjectHashTableWithNans.test_nan_complex_imagc                 C   sR   t dƒf}t dƒf}|d |d us(J ‚t ¡ }| |d¡ | |¡dksNJ ‚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sNJ ‚tjtd d}| |¡ W d   ƒ n1 s|0    Y  t|j	ƒt|ƒksœJ ‚d S )Nr   r   rƒ   )r   r   r   r   )
r¤   r   r2   r!   r"   r#   r$   r%   r&   r¬   r­   r   r   r   Útest_nan_in_nested_tuple°  s    (z6TestPyObjectHashTableWithNans.test_nan_in_nested_tupleN)	ru   rv   rw   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sHJ ‚t | |¡sXJ ‚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   rU   r   r   rU   rZ   )r   r   rU   r   r   rU   r   r   )r   r8   r9   rJ   r<   r=   r>   Zget_labels_groupbyr†   rO   rP   )r@   r,   rC   Ú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ƒ L t ¡ }| |¡ t	ƒ }| 
¡ }||ksRJ ‚~t	ƒ dksbJ ‚W d   ƒ n1 sv0    Y  d S )Nr^   r   )r9   r:   r;   Ústr_Úobject_r   r   r~   rG   r   rc   )rA   rB   r,   rd   re   r   r   r   Ú*test_tracemalloc_works_for_StringHashTableÎ  s    
r»   c                  C   s\   t ƒ B t ¡ } tƒ }|  ¡ }||ks*J ‚~ tƒ dks:J ‚W d   ƒ n1 sN0    Y  d S rg   )r   r   r~   r   rc   )r,   rd   re   r   r   r   Ú*test_tracemalloc_for_empty_StringHashTableÛ  s    r¼   rA   r   rn   c                 C   s|   t  | ¡ t j¡ t j¡}t | ¡}| ¡ d }| |¡ | ¡ d }||ksRJ ‚t ¡ }| |¡ || ¡ d ksxJ ‚d S ro   )	r9   r:   r;   r¹   rº   r   r~   rk   rG   )rA   rB   rp   rq   rr   rs   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s6J ‚||v sBJ ‚| |¡dksTJ ‚| |d¡ t|ƒdkspJ ‚||v s|J ‚| |¡dksŽJ ‚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s6J ‚| t j¡|d ksNJ ‚d S )Nr”   rZ   r   )r9   Úfullrƒ   rG   r    r"   )r(   r)   r*   rA   r,   rB   r   r   r   rI     s    
z(TestHashTableWithNans.test_map_locationsc                 C   sJ   d}|ƒ }t j|t j|d}| |¡}t  t  |¡¡rBt|ƒdksFJ ‚d S )Niü  rZ   r   )r9   r¿   rƒ   r`   rX   Úisnanr    )r(   r)   r*   rA   r,   rB   r`   r   r   r   ra     s
    
z!TestHashTableWithNans.test_uniqueN)ru   rv   rw   r-   rI   ra   r   r   r   r   r¾   ô  s   
r¾   c                  C   sD   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   rD   r   r   r   Ú
<listcomp>  r   z6test_unique_for_nan_objects_floats.<locals>.<listcomp>é2   rZ   r   ©r   r2   r9   rJ   r?   rº   r`   r    ©r,   rB   r`   r   r   r   Ú"test_unique_for_nan_objects_floats  s    
rÇ   c                  C   sD   t  ¡ } tjdd„ tdƒD ƒtjd}|  |¡}t|ƒdks@J ‚d S )Nc                 S   s   g | ]}t td ƒdƒ‘qS )rƒ   ç      ð?)r©   r¤   rÂ   r   r   r   rÃ   &  r   z7test_unique_for_nan_objects_complex.<locals>.<listcomp>rÄ   rZ   r   rÅ   rÆ   r   r   r   Ú#test_unique_for_nan_objects_complex$  s    
rÉ   c                  C   sJ   t  ¡ } tjdgdd„ tdƒD ƒ tjd}|  |¡}t|ƒdksFJ ‚d S )Nr   c                 S   s   g | ]}d t dƒd ff‘qS )rÈ   rƒ   rÁ   rÂ   r   r   r   rÃ   .  r   z5test_unique_for_nan_objects_tuple.<locals>.<listcomp>rÄ   rZ   r   rÅ   rÆ   r   r   r   Ú!test_unique_for_nan_objects_tuple+  s    ÿ
rÊ   r*   c                   @   sL   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S )ÚTestHelpFunctionsc           	      C   sf   d}t  |¡|  |¡}t  |d¡}||j_t |d¡\}}}t 	t  
|¡|¡ t  |dk¡sbJ ‚d S )Né+   r   F)r9   r:   r;   r_   r=   r>   r   Úvalue_countrO   rP   ÚsortrX   )	r(   r*   r@   rA   rR   ÚvaluesrB   ÚcountsÚ_r   r   r   Útest_value_countH  s    z"TestHelpFunctions.test_value_countc                 C   s~   |t jkrt d¡ t jdgd |d}t jdt jd}d|d< d|d< tj|d|d	\}}}t	|ƒd
ksnJ ‚|d
kszJ ‚d S )Nz%mask not implemented for object dtyper   r   rZ   )r   Tr|   F)r[   r   )
r9   rº   r#   r3   rJ   ZzerosÚbool_r   rÍ   r    )r(   r*   rÏ   r[   rB   rÐ   Z
na_counterr   r   r   Útest_value_count_maskQ  s    

z'TestHelpFunctions.test_value_count_maskc                 C   sP   t  g d¢¡ |¡}||j_t |d¡\}}}t ||¡ t  	|dk¡sLJ ‚d S )N©r   r   r   é   r1   rU   rF   Fr   )
r9   rJ   r;   r=   r>   r   rÍ   rO   rP   rX   )r(   r*   r@   rÏ   rB   rÐ   rÑ   r   r   r   Útest_value_count_stable\  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 )NrT   r   rZ   F)r9   r_   r:   r;   r=   r>   r   Ú
duplicatedÚ	ones_likerÓ   rO   rP   )r(   r*   r@   rA   rÏ   rQ   rR   r   r   r   Útest_duplicated_firstd  s    
z'TestHelpFunctions.test_duplicated_firstc                 C   s`   d}t  |¡ |¡}t  |¡ |¡}||j_||j_t ||¡}t j|t jd}t	 
||¡ d S )Né   rZ   )r9   r:   r;   r=   r>   r   ÚismemberrÙ   rÓ   rO   rP   )r(   r*   r@   rA   r·   rÏ   rQ   rR   r   r   r   Útest_ismember_yesm  s    z#TestHelpFunctions.test_ismember_yesc                 C   sT   d}t  |¡ |¡}t  |¡|  |¡}t ||¡}t j|t jd}t ||¡ d S )Né   rZ   )	r9   r:   r;   r   rÜ   Z
zeros_likerÓ   rO   rP   )r(   r*   rA   r·   rÏ   rQ   rR   r   r   r   Útest_ismember_now  s    z"TestHelpFunctions.test_ismember_noc                 C   sb   |t jt jfv rd}nd}t  t  |¡ |¡d¡}d|d< ||j_t 	|d¡d }|dks^J ‚d S )Né5   ig+  r   r   r   F)
r9   rV   rW   r_   r:   r;   r=   r>   r   Úmode)r(   r*   r@   rA   rÏ   rQ   r   r   r   Ú	test_mode  s    zTestHelpFunctions.test_modec                 C   s<   t  g d¢¡ |¡}||j_t |d¡d }t ||¡ d S )NrÕ   Fr   )	r9   rJ   r;   r=   r>   r   rá   rO   rP   )r(   r*   r@   rÏ   rB   r   r   r   Útest_mode_stableŠ  s    z"TestHelpFunctions.test_mode_stableN)ru   rv   rw   rÒ   rÔ   r×   rÚ   rÝ   rß   râ   rã   r   r   r   r   rË   4  s   		
rË   c                  C   sR   t jtjt jd g} tjdg| d  tjd}t |d¡d }|j	t
| ƒksNJ ‚d S )NTr   rZ   Fr   )r5   r0   r9   rƒ   ZNaTrJ   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   r1   rZ   )r   r   r   )	r9   rJ   r†   r=   r>   r   Úunique_label_indicesrO   rP   )r@   rB   rQ   rR   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_dtyperU   r”   )r9   ÚrandomZdefault_rngZintegersr;   r†   r   ræ   r`   rO   rP   Ú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rjt  t  |¡¡snJ ‚|d dks~J ‚d S )NrZ   Tr   Fr   r1   )r9   rJ   rƒ   r   rÍ   r    rX   rÀ   )r(   r*   rÏ   rB   rÐ   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 )NrZ   )FTT)r9   rJ   rƒ   r   rØ   rO   rP   )r(   r*   rÏ   rQ   rR   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 )NrZ   )TTT©r9   rJ   rƒ   r   rÜ   rÓ   rO   rP   ©r(   r*   r·   rÏ   rQ   rR   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 )NrZ   r   )FFFrî   rï   r   r   r   rß   Î  s
    z*TestHelpFunctionsWithNans.test_ismember_noc                 C   sR   t jdt jt jt jg|d}t |d¡d dks4J ‚t  t |d¡d ¡sNJ ‚d S )Nr   rZ   Tr   F)r9   rJ   rƒ   r   rá   rÀ   )r(   r*   rÏ   r   r   r   râ   Õ  s    z#TestHelpFunctionsWithNans.test_modeN)ru   rv   rw   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 sP0    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   TFrZ   )	r¤   rO   Zassert_produces_warningÚFutureWarningr   r9   rJ   rÓ   rP   )rÏ   ÚcompsÚmsgrQ   rR   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      @        é   rZ   )FTTT)
Úlistr?   r   r9   rJ   r•   ZasarrayrÓ   rO   rP   )rÏ   rñ   rQ   rR   r   r   r   Ú+test_float_complex_int_are_equal_as_objectsç  s
    rö   )HÚcollections.abcr   Ú
contextlibr   rK   rŒ   r   Únumpyr9   r#   Zpandas._libsr   r   Zpandasr5   Zpandas._testingZ_testingrO   Zpandas.core.algorithmsr   r   r   rx   ry   r2   rº   ZComplex128HashTableZ
complex128r8   r<   r‘   r   r…   r–   ZComplex64HashTableZ	complex64r    r—   ZUInt32HashTabler   ZFloat32HashTableZfloat32ZInt16HashTableZint16ZUInt16HashTableZuint16ZInt8HashTablerV   ZUInt8HashTablerW   ZIntpHashTabler†   r   rz   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=





üþ	 	òþJüþ	#