o
    Û­jë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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   ú]/var/www/html/CropPilot/venv/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   Útake_snapshotÚfilter_tracesÚDomainFilterÚhtÚget_hashtable_trace_domainÚsumÚtraces)Ú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©Ú	uses_maskr   r   r   ÚNAr#   r    é   r"   r!   )r   ÚPyObjectHashTabler(   Úskipr%   r&   r'   r)   r*   Úget_naÚset_naÚpdr6   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Ú	writeableÚmap_keys_to_valuesÚranger'   )	r-   r.   r/   ÚwritableÚNr1   Ú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é   )r@   rA   rB   rD   rE   Úmap_locationsrG   r'   ©r-   r.   r/   rH   rI   r1   rJ   rL   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 )	Nr3   r7   Tr4   )FFTr   r#   r!   )r   r8   r(   r9   r@   rA   rB   rD   rE   rO   ÚarrayrG   r'   r)   r*   ÚreÚescaper+   r:   rP   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 )Nr7   )
r@   rA   rB   rD   rE   rO   ÚlookupÚtmÚassert_numpy_array_equalrC   )	r-   r.   r/   rH   rI   r1   rJ   Ú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   éÿÿÿÿ)r@   Úint8Úuint8rA   rB   rO   rV   Úall)r-   r.   r/   rI   r1   rJ   Ú
wrong_keysrY   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 )
Nr3   r7   Tr4   )FTFr   Fr]   ©r/   )r   r8   r(   r9   r@   rA   rB   rR   rD   rE   rO   rV   rW   rX   rC   )
r-   r.   r/   rH   rI   r1   rJ   ÚmaskrY   rZ   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   )r@   r^   r_   rA   rB   ÚrepeatrD   rE   ÚuniquerW   rX   )	r-   r.   r/   rH   rI   r1   rZ   rJ   ri   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   )	r@   r^   r_   rA   rB   r   rO   r   Úsizeof)r-   r.   r/   rI   rJ   r1   Ú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   rl   )r-   r.   r/   r1   rm   rn   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 )Nrg   r   r   Ú
n_occupiedÚ	n_bucketsÚupper_bound)Ú	get_state)r-   r.   r/   r1   Ústater   r   r   Útest_get_stateð   s   zTestHashTable.test_get_staterI   r   én   c           	      C   sn   t  |¡ |¡}||ƒ}| ¡ d }| |¡ | ¡ d }||ks#J ‚|ƒ }| |¡ || ¡ d ks5J ‚d S ©Nrs   )r@   rA   rB   ru   rO   )	r-   r.   r/   rI   rJ   Úpreallocated_tableÚn_buckets_startÚn_buckets_endÚclean_tabler   r   r   Útest_no_reallocationø   s   

z"TestHashTable.test_no_reallocationN)Ú__name__Ú
__module__Ú__qualname__r2   r=   rM   rQ   rU   r[   rb   re   rj   ro   rq   rw   r(   ÚmarkÚparametrizerG   r~   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!   r7   ©Úwriterc   )r@   rR   ÚnanÚsetflagsr   ÚFloat64HashTablerO   rW   rX   rV   rA   r%   Úintp©r-   rH   Ú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-   rI   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-   ÚNAN1Ú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            rc   rŒ   )r@   rR   Úuint64r�   r   ÚUInt64HashTablerO   rW   rX   rV   rA   r%   r‘   r’   r   r   r   Útest_lookup_overflow7  s
   
&z*TestHashTableUnsorted.test_lookup_overflowÚnvalsr   é
   z&htable, uniques, dtype, safely_resizesÚobjectFTÚfloat64rC   Ú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 )Nrg   rc   rŒ   r   r]   zexternal reference.*r#   )
r@   rR   rG   r�   Ú
get_labelsÚto_arrayÚshaper(   r)   Ú
ValueError)
r-   rH   ÚhtableÚuniquesr/   Úsafely_resizesr¡   rK   ÚtmpÚ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)r@   ÚiinfoÚuint32Úmax)r-   r   r°   r   r   r   Útest_hashtable_large_sizehintn  s   z3TestHashTableUnsorted.test_hashtable_large_sizehintN)r   r€   r�   r‹   r•   r–   r�   r    r(   r‚   rƒ   r   r8   ÚObjectVectorrˆ   r�   ÚFloat64Vectorr?   ÚInt64VectorÚInt32HashTableÚInt32VectorrŸ   ÚUInt64Vectorr¯   r´   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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   r8   r&   r'   ©r-   Únan1Únan2r1   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   r8   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   r8   r&   r'   r(   r)   r*   r+   Úvalue©r-   rÀ   rÁ   Úotherr1   Ú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   r8   r&   r'   r(   r)   r*   r+   rÆ   rÇ   r   r   r   Útest_nan_in_nested_tuple°  s   ÿz6TestPyObjectHashTableWithNans.test_nan_in_nested_tupleN)	r   r€   r�   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   Úobject_hashÚ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!   r]   r!   r   r]   rc   )r   r   r]   r   r   r]   r   r!   )r   r?   r@   rR   rC   rD   rE   Úget_labels_groupbyr‘   rW   rX   )rH   r1   rK   Úarrri   Úexpected_arrÚ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 )Nrg   r   )r@   rA   rB   Ústr_Úobject_r   r   rˆ   rO   r   rl   )rI   rJ   r1   rm   rn   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 rp   )r   r   rˆ   r   rl   )r1   rm   rn   r   r   r   Ú*test_tracemalloc_for_empty_StringHashTableÛ  s   "úrÜ   rI   r   rx   c                 C   s|   t  | ¡ t j¡ t j¡}t | ¡}| ¡ d }| |¡ | ¡ d }||ks)J ‚t ¡ }| |¡ || ¡ d ks<J ‚d S ry   )	r@   rA   rB   rÙ   rÚ   r   rˆ   ru   rO   )rI   rJ   rz   r{   r|   r}   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   r2   þ  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¢   rc   r   )r@   ÚfullrŽ   rO   r%   r'   )r-   r.   r/   rI   r1   rJ   r   r   r   rQ     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ü  rc   r   )r@   rß   rŽ   ri   r`   Úisnanr%   )r-   r.   r/   rI   r1   rJ   ri   r   r   r   rj     s
   
$z!TestHashTableWithNans.test_uniqueN)r   r€   r�   r2   rQ   rj   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   rL   r   r   r   Ú
<listcomp>  s    z6test_unique_for_nan_objects_floats.<locals>.<listcomp>é2   rc   r   ©r   r8   r@   rR   rG   rÚ   ri   r%   ©r1   rJ   ri   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å   rc   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å   rc   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¡s1J ‚d S )Né+   r   F)r@   rA   rB   rh   rD   rE   r   Úvalue_countrW   rX   Úsortr`   )	r-   r/   rH   rI   rZ   ÚvaluesrJ   Ú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s7J ‚|d
ks=J ‚d S )Nz%mask not implemented for object dtyper   r   rc   )r   Tr†   F)rd   r!   )
r@   rÚ   r(   r9   rR   ÚzerosÚbool_r   rï   r%   )r-   r/   rñ   rd   rJ   rò   Ú
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¡s&J ‚d S )N©r!   r   r   é   r7   r]   rN   Fr   )
r@   rR   rB   rD   rE   r   rï   rW   rX   r`   )r-   r/   rH   rñ   rJ   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 )Nr\   r   rc   F)r@   rh   rA   rB   rD   rE   r   Ú
duplicatedÚ	ones_likerö   rW   rX   )r-   r/   rH   rI   rñ   rY   rZ   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é   rc   )r@   rA   rB   rD   rE   r   Úismemberrý   rö   rW   rX   )r-   r/   rH   rI   rÕ   rñ   rY   rZ   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é   rc   )	r@   rA   rB   r   r   Ú
zeros_likerö   rW   rX   )r-   r/   rI   rÕ   rñ   rY   rZ   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)
r@   r^   r_   rh   rA   rB   rD   rE   r   Úmode)r-   r/   rH   rI   rñ   rY   r   r   r   Ú	test_mode  s   zTestHelpFunctions.test_modec                 C   s<   t  g d¢¡ |¡}||j_t |d¡d }t ||¡ d S )Nrù   Fr   )	r@   rR   rB   rD   rE   r   r  rW   rX   )r-   r/   rH   rñ   rJ   r   r   r   Útest_mode_stableŠ  s   z"TestHelpFunctions.test_mode_stableN)r   r€   r�   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s'J ‚d S )NTr!   rc   Fr   )r<   r6   r@   rŽ   ÚNaTrR   rÚ   r   r  r   r%   )Ú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   r7   rc   )r   r   r   )	r@   rR   r‘   rD   rE   r   Úunique_label_indicesrW   rX   )rH   rJ   rY   rZ   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)Úreturn_indexF)Úcheck_dtyper]   r¢   )r@   ÚrandomÚdefault_rngÚintegersrB   r‘   r   r  ri   rW   rX   Ú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r5t  t  |¡¡s7J ‚|d dks?J ‚d S )Nrc   Tr   Fr   r7   )r@   rR   rŽ   r   rï   r%   r`   rà   )r-   r/   rñ   rJ   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 )Nrc   )FTT)r@   rR   rŽ   r   rü   rW   rX   )r-   r/   rñ   rY   rZ   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 )Nrc   )TTT©r@   rR   rŽ   r   r   rö   rW   rX   ©r-   r/   rÕ   rñ   rY   rZ   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 )Nrc   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sJ ‚t  t |d¡d ¡s'J ‚d S )Nr   rc   Tr   F)r@   rR   rŽ   r   r  rà   )r-   r/   rñ   r   r   r   r  Õ  s   z#TestHelpFunctionsWithNans.test_modeN)r   r€   r�   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#   TFrc   )	r¾   rW   Úassert_produces_warningÚFutureWarningr   r@   rR   rö   rX   )rñ   ÚcompsÚmsgrY   rZ   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      @        é�   rc   )FTTT)
ÚlistrG   r   r@   rR   r£   Úasarrayrö   rW   rX   )rñ   r  rY   rZ   r   r   r   Ú+test_float_complex_int_are_equal_as_objectsç  s
   r#  )HÚcollections.abcr   Ú
contextlibr   rS   r˜   r   Únumpyr@   r(   Úpandas._libsr   r   Úpandasr<   Úpandas._testingÚ_testingrW   Úpandas.core.algorithmsr   r   r   r‚   rƒ   r8   rÚ   ÚComplex128HashTableÚ
complex128r?   rC   rŸ   rž   r�   r¤   ÚComplex64HashTableÚ	complex64r¸   r¥   ÚUInt32HashTabler²   ÚFloat32HashTableÚfloat32ÚInt16HashTableÚint16ÚUInt16HashTableÚuint16ÚInt8HashTabler^   ÚUInt8HashTabler_   ÚIntpHashTabler‘   r   r„   r»   rÓ   rØ   rÛ   rÜ   rG   rÝ   rÞ   rè   rë   rì   rí   r  r  r  r  r  r#  r   r   r   r   Ú<module>   s®    













òþ Sx=

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