
    bMhe                        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            Z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j0        ej1        fej2        ej3        fg           G d d                      Z4 G d d          Z5 G d d          Z6d Z7d Z8d Z9d Z:e	j                            d e;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                      Z=d Z>d Z?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j1        ej3        g           G d d                       ZAd! ZBd" ZCd# ZDe	j                            dej!        ej)        ej        ej#        g           G d$ d%                      ZEd& ZFd' ZGdS )(    )	Generator)contextmanagerN)	hashtable)isinreturn)NNNc               #      K   t          j                     	 d V  t          j                     d S # t          j                     w xY wN)tracemallocstartstop     `/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pandas/tests/libs/test_hashtable.pyactivated_tracemallocr      sM      s	   0 Ac                      t          j                    } |                     t          j        dt	          j                              f          } t          d | j        D                       S )NTc              3   $   K   | ]}|j         V  d S r	   )size).0xs     r   	<genexpr>z-get_allocated_khash_memory.<locals>.<genexpr>   s$      //!qv//////r   )r
   take_snapshotfilter_tracesDomainFilterhtget_hashtable_trace_domainsumtraces)snapshots    r   get_allocated_khash_memoryr      sb    (**H%%		!$(E(G(G	H	HJ H //x//////r   ztable_type, dtypec                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zej                            d edd                    d             ZdS )TestHashTablec                 v   d} |d          }t          |          dk    sJ ||vsJ |                    |d           t          |          dk    sJ ||v sJ |                    |          dk    sJ |                    |dz   d           ||v sJ |dz   |v sJ t          |          dk    sJ |                    |          dk    sJ |                    |dz             dk    sJ |                    |d           ||v sJ |dz   |v sJ t          |          dk    sJ |                    |          dk    sJ |                    |dz             dk    sJ |dz   |vsJ |                    |dz   d           ||v sJ |dz   |v sJ t          |          dk    sJ |                    |          dk    sJ |                    |dz             dk    sJ t          j        t
          t          |dz             	          5  |                    |dz              d d d            d S # 1 swxY w Y   d S )
N   7   r   *      )         match)lenset_itemget_itempytestraisesKeyErrorstrself
table_typedtypeindextables        r   test_get_set_contains_lenz'TestHashTable.test_get_set_contains_len6   s   
25zzQE!!!!ub!!!5zzQ~~~~~~e$$****uqy"%%%~~~~qyE!!!!5zzQ~~e$$****~~eai((B....ub!!!~~~~qyE!!!!5zzQ~~e$$****~~eai((B....qy%%%%uqy"%%%~~~~qyE!!!!5zzQ~~e$$****~~eai((B....]83uqy>>::: 	& 	&NN519%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&s   H..H25H2c                    |t           j        k    rt          j        d           d} |dd          }t	          |          dk    sJ ||vsJ |                    |d           t	          |          dk    sJ ||v sJ |                    |          dk    sJ t          j        t          d	
          5  |	                                 d d d            n# 1 swxY w Y   |                    |dz   d           |
                    d           t          j        |v sJ ||v sJ |dz   |v sJ t	          |          dk    sJ |                    |          dk    sJ |                    |dz             dk    sJ |	                                dk    sJ |
                    d           ||v sJ |dz   |v sJ t	          |          dk    sJ |                    |dz             dk    sJ |	                                dk    sJ |dz   |vsJ t          j        t          t          |dz             
          5  |                    |dz              d d d            d S # 1 swxY 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.   r0   r1   get_naset_napdr>   r2   r3   s        r   test_get_set_contains_len_maskz,TestHashTable.test_get_set_contains_len_maskZ   s   ---K7888
2...5zzQE!!!!ub!!!5zzQ~~~~~~e$$****]84000 	 	LLNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	uqy"%%%Ru~~~~~~~~qyE!!!!5zzQ~~e$$****~~eai((B....||~~####R~~~~qyE!!!!5zzQ~~eai((B....||~~####qy%%%%]83uqy>>::: 	& 	&NN519%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&s$   6CCC<I""I&)I&c                    |t           j        k    rd} |            }t          j        |                              |          }t          j        |                              t          j                  |z   }||j        _        ||j        _        |                    ||           t          |          D ](}|
                    ||                   ||z   k    sJ 'd S d S )NM   )r   Int64HashTablenparangeastypeint64flags	writeablemap_keys_to_valuesranger.   )	r4   r5   r6   writableNr8   keysvalsis	            r   test_map_keys_to_valuesz%TestHashTable.test_map_keys_to_values~   s    ***AJLLE9Q<<&&u--D9Q<<&&rx0014D#+DJ #+DJ $$T40001XX 8 8~~d1g..!a%77777 +*8 8r   c                    d} |            }t          j        |          |z                       |          }||j        _        |                    |           t          |          D ]#}|                    ||                   |k    sJ $d S )N   )rI   rJ   rK   rM   rN   map_locationsrP   r.   r4   r5   r6   rQ   rR   r8   rS   rU   s           r   test_map_locationsz TestHashTable.test_map_locations   s    
	!q ((//'
D!!!q 	0 	0A>>$q'**a/////	0 	0r   c           
         |t           j        k    rt          j        d           d} |d          }t	          j        |          |z                       |          }||j        _        |	                    |t	          j
        g d                     t          |dz
            D ]#}|                    ||                   |k    sJ $t          j        t          t          j        t#          ||dz
                                         5  |                    ||dz
                      d d d            n# 1 swxY w Y   |                                dk    sJ d S )	Nr;   r?   Tr<   )FFTr&   r*   r(   )r   r@   r/   rA   rI   rJ   rK   rM   rN   rY   arrayrP   r.   r0   r1   reescaper2   rB   rZ   s           r   test_map_locations_maskz%TestHashTable.test_map_locations_mask   s   ---K7888
T***	!q ((//'
D"(+?+?+?"@"@AAAq1u 	0 	0A>>$q'**a/////]829Sa!e5E5E+F+FGGG 	( 	(NN4A;'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( ||~~""""""s   D77D;>D;c                    d} |            }t          j        |          |z                       |          }||j        _        |                    |           |                    |          }t          j        |          }t          j        |                    t           j	                  |                    t           j	                             d S )Nr?   )
rI   rJ   rK   rM   rN   rY   lookuptmassert_numpy_array_equalrL   )	r4   r5   r6   rQ   rR   r8   rS   resultexpecteds	            r   test_lookupzTestHashTable.test_lookup   s    
	!q ((//'
D!!!d##9Q<<
#FMM"($;$;X__RX=V=VWWWWWr   c                    |t           j        t           j        fv rd}nd} |            }t          j        |          |z                       |          }|                    |           t          j        |                              |          }|                    |          }t          j        |dk              sJ d S )Nd   i   )rI   int8uint8rJ   rK   rY   rb   all)r4   r5   r6   rR   r8   rS   
wrong_keysre   s           r   test_lookup_wrongzTestHashTable.test_lookup_wrong   s    RWbh'''AAA
	!q ((//D!!!Yq\\((//
j))vfl#######r   c                 f   |t           j        k    rt          j        d           d} |d          }t	          j        |          |z                       |          }t	          j        g d          }||j        _	        |
                    ||           |                    ||          }t	          j        |          }	t          j        |                    t          j                  |	                    t          j                             |                    t	          j        d|z   g                              |          t	          j        dg                    }t          j        |                    t          j                  t	          j        dgt          j        	                     d S )
Nr;   r?   Tr<   )FTFr&   Frj   r6   )r   r@   r/   rA   rI   rJ   rK   r]   rM   rN   rY   rb   rc   rd   rL   )
r4   r5   r6   rQ   rR   r8   rS   maskre   rf   s
             r   test_lookup_maskzTestHashTable.test_lookup_mask   s_   ---K7888
T***	!q ((//x,,,--'
D$'''dD))9Q<<
#FMM"($;$;X__RX=V=VWWWbhAw//66u==rx?P?PQQ
#MM"(##RXrd"(%C%C%C	
 	
 	
 	
 	
r   c                 B   |t           j        t           j        fv rd}nd} |            }t          j        |          |z                       |          }t          j        |d          }||j        _        |                    |          }t          j
        ||           d S )NX     r#   )rI   rk   rl   rJ   rK   repeatrM   rN   uniquerc   rd   )	r4   r5   r6   rQ   rR   r8   rf   rS   rx   s	            r   test_uniquezTestHashTable.test_unique   s    RWbh'''AAA
IaLL1$,,U33y1%%'
d##
#FH55555r   c                    |t           j        t           j        fv rd}nd}t          j        |                              |          }t                      5   |            }|                    |           t                      }|                                }||k    sJ ~t                      dk    sJ 	 d d d            d S # 1 swxY w Y   d S )N   i0u  r   )	rI   rk   rl   rJ   rK   r   rY   r   sizeof)r4   r5   r6   rR   rS   r8   usedmy_sizes           r   test_tracemalloc_worksz$TestHashTable.test_tracemalloc_works   s   RWbh'''AAAy||""5))"$$ 	5 	5JLLE%%%-//DllnnG7????-//144444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5s   ACC	Cc                     t                      5   |            }t                      }|                                }||k    sJ ~t                      dk    sJ 	 d d d            d S # 1 swxY w Y   d S Nr   )r   r   r|   )r4   r5   r6   r8   r}   r~   s         r   test_tracemalloc_for_emptyz(TestHashTable.test_tracemalloc_for_empty   s    "$$ 	5 	5JLLE-//DllnnG7????-//144444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5s   A
A''A+.A+c                      |d          }|                                 }|d         dk    sJ |d         dk    sJ d|v sJ d|v sJ d S )Nrv   r   r   
n_occupied	n_bucketsupper_bound)	get_state)r4   r5   r6   r8   states        r   test_get_statezTestHashTable.test_get_state   ss    
4  !!V}!!!!\"a''''e####%%%%%%r   rR   r&   n   c                    t          j        |                              |          } ||          }|                                d         }|                    |           |                                d         }||k    sJ  |            }|                    |           ||                                d         k    sJ d S Nr   )rI   rJ   rK   r   rY   )	r4   r5   r6   rR   rS   preallocated_tablen_buckets_startn_buckets_endclean_tables	            r   test_no_reallocationz"TestHashTable.test_no_reallocation   s    y||""5))'Z]],6688E((...*4466{C-//// jll!!$'''+"7"7"9"9+"FFFFFFFr   N)__name__
__module____qualname__r9   rE   rV   r[   r`   rg   ro   rs   ry   r   r   r   r/   markparametrizerP   r   r   r   r   r!   r!   "   s
       ("& "& "&H"& "& "&H8 8 80 0 0# # # X X X
$ 
$ 
$
 
 
$
6 
6 
65 5 55 5 5& & & [S%%3--00G G 10G G Gr   r!   c                      e Zd Zd Zd Zd Zd Z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                         Zej	        
                    dej        ej        ej        ej        ej        ej        g          d             ZdS )TestHashTableUnsortedc                    t          j                    }|                    dd           |                    d          dk    sJ t	          j        t          d          5  |                    dd           d d d            n# 1 swxY w Y   t	          j        t          d          5  |                    d           d d d            d S # 1 swxY w Y   d S )Nkeyr&   z'key' has incorrect typer*         z'val' has incorrect type)r   StringHashTabler-   r.   r/   r0   	TypeError)r4   tbls     r   (test_string_hashtable_set_item_signaturez>TestHashTableUnsorted.test_string_hashtable_set_item_signature	  sK    ""UA||E""a'''']9,FGGG 	 	LLA	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ]9,FGGG 	 	LLOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s$    BB
B)CCCc           	      r   t          j        ddt           j        ddddg          }|                    |           t	          j                    }|                    |           t          j        |	                    |          t          j
        t          |          t           j                             d S )	NgX9v@gQ	@ir#   r(   r?   writerq   )rI   r]   nansetflagsr   Float64HashTablerY   rc   rd   rb   rJ   r,   intpr4   rQ   xsms       r   test_lookup_nanz%TestHashTableUnsorted.test_lookup_nan  s    XudBFB1a899
(###!!	
#AHHRLL")CGG272S2S2STTTTTr   c                     d}t          j        |          }|                    dd           |                    dd           t          |          dk    sJ d S )Nr   g        r   g       r&   )r   r   r-   r,   )r4   rR   r   s      r   test_add_signed_zerosz+TestHashTableUnsorted.test_add_signed_zeros  sX    
 ""	

3	

41vv{{{{{{r   c                    t          j        dt          j        dd                    d         }t          j        dt          j        dd                    d         }||k    sJ ||k    sJ t          j                    }|                    |d           |                    |d           t          |          dk    sJ d S )Ndz=Ql          r   l         r&   )structunpackpackr   r   r-   r,   )r4   NAN1NAN2r   s       r   test_add_different_nansz-TestHashTableUnsorted.test_add_different_nans)  s     }S&+d4F"G"GHHK}S&+d4F"G"GHHKt||||t|||| !!	

4	

41vv{{{{{{r   c                 l   t          j        g dt           j                  }|                    |           t	          j                    }|                    |           t          j        |	                    |          t          j
        t          |          t           j                             d S )N)r&   r(   l            rq   r   )rI   r]   uint64r   r   UInt64HashTablerY   rc   rd   rb   rJ   r,   r   r   s       r   test_lookup_overflowz*TestHashTableUnsorted.test_lookup_overflow7  s    Xmmm29555
(###  	
#AHHRLL")CGG272S2S2STTTTTr   nvalsr   
   z&htable, uniques, dtype, safely_resizesobjectFTfloat64rL   int32r   c                 $   t          j        t          d          |          }|                    |            |            } |            }|                    |d |         |dd           |                                }|j        }	|r|                    ||dd           nKt          j        t          d          5  |                    ||dd           d d d            n# 1 swxY w Y   |                                 |j        |	k    sJ d S )Nrv   rq   r   r   rj   zexternal reference.*r*   )
rI   r]   rP   r   
get_labelsto_arrayshaper/   r0   
ValueError)
r4   rQ   htableuniquesr6   safely_resizesr   rT   tmpoldshapes
             r   test_vector_resizez(TestHashTableUnsorted.test_vector_resize?  sa   & xd5111 	H%%%
 ')) 	$vv,B777  9  	8dGQ3333z1GHHH 8 8!!$B7778 8 8 8 8 8 8 8 8 8 8 8 8 8 8 	yH$$$$$$s   ?C$$C(+C(r   c                 j    t          j        t           j                  j        dz   } ||           d S )Nr&   )	size_hint)rI   iinfouint32max)r4   r   r   s      r   test_hashtable_large_sizehintz3TestHashTableUnsorted.test_hashtable_large_sizehintn  s6     HRY''+a/		I&&&&&&r   N)r   r   r   r   r   r   r   r   r/   r   r   r   r@   ObjectVectorr   r   Float64VectorrH   Int64VectorInt32HashTableInt32Vectorr   UInt64Vectorr   r   r   r   r   r   r     s         U U U	 	 	  U U U [Wq"g..[0!2?HeD(DA ""2IuE??(EB	

 
!% !%
 
 /.!%F [ 	

 
' '
 
' ' 'r   r   c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )TestPyObjectHashTableWithNansc                     t          d          }t          d          }||usJ t          j                    }|                    |d           |                    |          dk    sJ d S Nr   r%   floatr   r@   r-   r.   r4   nan1nan2r8   s       r   test_nan_floatz,TestPyObjectHashTableWithNans.test_nan_float  sn    U||U||4$&&tR   ~~d##r))))))r   c                 B   t          t          d          t          d                    }t          t          d          t          d                    }||usJ t          j                    }|                    |d           |                    |          dk    sJ d S r   )complexr   r   r@   r-   r.   r   s       r   test_nan_complex_bothz3TestPyObjectHashTableWithNans.test_nan_complex_both  s    uU||U5\\22uU||U5\\224$&&tR   ~~d##r))))))r   c                 &   t          t          d          d          }t          t          d          d          }t          t          d          d          }||usJ t          j                    }|                    |d           |                    |          dk    sJ t          j        t          d           5 }|                    |           d d d            n# 1 swxY w Y   t          |j
                  t          |          k    sJ d S )Nr   r&   r(   r%   r*   r   r   r   r@   r-   r.   r/   r0   r1   r2   valuer4   r   r   otherr8   errors         r   test_nan_complex_realz3TestPyObjectHashTableWithNans.test_nan_complex_real  s1   uU||Q''uU||Q''ea((4$&&tR   ~~d##r))))]84000 	"ENN5!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"5;3u::------   =CC#&C#c                 &   t          dt          d                    }t          dt          d                    }t          dt          d                    }||usJ t          j                    }|                    |d           |                    |          dk    sJ t          j        t          d           5 }|                    |           d d d            n# 1 swxY w Y   t          |j
                  t          |          k    sJ d S )Nr&   r   r(   r%   r*   r   r   s         r   test_nan_complex_imagz3TestPyObjectHashTableWithNans.test_nan_complex_imag  s1   q%,,''q%,,''5<<((4$&&tR   ~~d##r))))]84000 	"ENN5!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"5;3u::------r   c                     t          d          f}t          d          f}|d         |d         usJ t          j                    }|                    |d           |                    |          dk    sJ d S )Nr   r   r%   r   r   s       r   test_nan_in_tuplez/TestPyObjectHashTableWithNans.test_nan_in_tuple  sz    eeAwd1g%%%%$&&tR   ~~d##r))))))r   c                    ddt          d          fff}ddt          d          fff}d}t          j                    }|                    |d           |                    |          dk    sJ t          j        t          d           5 }|                    |           d d d            n# 1 swxY w Y   t          |j	                  t          |          k    sJ d S )Nr&   r(   r   )r&   r(   r%   r*   )
r   r   r@   r-   r.   r/   r0   r1   r2   r   r   s         r   test_nan_in_nested_tuplez6TestPyObjectHashTableWithNans.test_nan_in_nested_tuple  s   Ae'(Ae'($&&tR   ~~d##r))))]84000 	"ENN5!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"5;3u::------s   
B,,B03B0N)	r   r   r   r   r   r   r   r   r   r   r   r   r   r     sn        * * ** * *
. 
. 
.
. 
. 
.* * *	. 	. 	. 	. 	.r   r   c                  @   t          d          t          d          t          d          ff} t          d          t          d          t          d          ff}t          j        |           t          j        |          k    sJ t          j        | |          sJ d S )Nr   )r   r   object_hashobjects_are_equal)abs     r   test_hash_equal_tuple_with_nansr     s    	ueeEll34A	ueeEll34A>!q 1 111111%%%%%%%r   c                    t          j                    }t          j        g dt          j                  }| |j        _        |                    |          \  }}t          j        g dt          j                  }t          j        ddgt          j                  }t          j
        ||           t          j
        ||           d S )N)r&   r(   rj   r(   r&   rj   rq   )r   r&   rj   r&   r   rj   r&   r(   )r   rH   rI   r]   rL   rM   rN   get_labels_groupbyr   rc   rd   )rQ   r8   rT   arrrx   expected_arrexpected_uniques          r   !test_get_labels_groupby_for_Int64r     s    E8(((999D#DJ**400KC8000@@@Lh1vRX666O\22288888r   c                     d} t          j        |                               t           j                                      t           j                  }t                      5  t          j                    }|                    |           t                      }|
                                }||k    sJ ~t                      dk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nrv   r   )rI   rJ   rK   str_object_r   r   r   rY   r   r|   )rR   rS   r8   r}   r~   s        r   *test_tracemalloc_works_for_StringHashTabler     s   A9Q<<rw''..rz::D		 	  1 1"$$D!!!)++,,..w)++q000001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1s   A(CCCc                      t                      5  t          j                    } t                      }|                                 }||k    sJ ~ t                      dk    sJ 	 d d d            d S # 1 swxY w Y   d S r   )r   r   r   r   r|   )r8   r}   r~   s      r   *test_tracemalloc_for_empty_StringHashTabler    s    		 	  1 1"$$)++,,..w)++q000001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1s   AA00A47A4rR   r&   r   c                    t          j        |                               t           j                                      t           j                  }t          j        |           }|                                d         }|                    |           |                                d         }||k    sJ t          j                    }|                    |           ||                                d         k    sJ d S r   )	rI   rJ   rK   r   r   r   r   r   rY   )rR   rS   r   r   r   r   s         r   $test_no_reallocation_StringHashTabler    s    9Q<<rw''..rz::D+A..(2244[AO$$T***&0022;?Mm++++$&&Kd###k3355kBBBBBBBr   c                        e Zd Zd Zd Zd ZdS )TestHashTableWithNansc                 t   t          d          } |            }||vsJ |                    |d           t          |          dk    sJ ||v sJ |                    |          dk    sJ |                    |d           t          |          dk    sJ ||v sJ |                    |          dk    sJ d S )Nr   r%   r&   r'   )r   r-   r,   r.   r3   s        r   r9   z/TestHashTableWithNans.test_get_set_contains_len  s    e
E!!!!ub!!!5zzQ~~~~~~e$$****ub!!!5zzQ~~~~~~e$$******r   c                    d} |            }t          j        |t           j        |          }|                    |           t	          |          dk    sJ |                    t           j                  |dz
  k    sJ d S )Nr   rq   r&   )rI   fullr   rY   r,   r.   )r4   r5   r6   rR   r8   rS   s         r   r[   z(TestHashTableWithNans.test_map_locations  sz    
wq"&...D!!!5zzQ~~bf%%Q......r   c                     d} |            }t          j        |t           j        |          }|                    |          }t          j        t          j        |                    rt          |          dk    sJ d S )Ni  rq   r&   )rI   r	  r   rx   rm   isnanr,   )r4   r5   r6   rR   r8   rS   rx   s          r   ry   z!TestHashTableWithNans.test_unique  sq    
wq"&...d##vbhv&&''<CKK1,<,<,<,<,<,<r   N)r   r   r   r9   r[   ry   r   r   r   r  r    sA        + + +/ / /= = = = =r   r  c                      t          j                    } t          j        d t	          d          D             t          j                  }|                     |          }t          |          dk    sJ d S )Nc                 ,    g | ]}t          d           S )r   r   r   rU   s     r   
<listcomp>z6test_unique_for_nan_objects_floats.<locals>.<listcomp>  s    555aU5\\555r   2   rq   r&   r   r@   rI   r]   rP   r   rx   r,   r8   rS   rx   s      r   "test_unique_for_nan_objects_floatsr    si     ""E855599555RZHHHD\\$Fv;;!r   c                      t          j                    } t          j        d t	          d          D             t          j                  }|                     |          }t          |          dk    sJ d S )Nc                 H    g | ]}t          t          d           d           S )r         ?)r   r   r  s     r   r  z7test_unique_for_nan_objects_complex.<locals>.<listcomp>&  s(    CCCAWU5\\3//CCCr   r  rq   r&   r  r  s      r   #test_unique_for_nan_objects_complexr  $  si     ""E8CCrCCC2:VVVD\\$Fv;;!r   c                      t          j                    } t          j        dgd t	          d          D             z   t          j                  }|                     |          }t          |          dk    sJ d S )Nr&   c                 4    g | ]}d t          d          d ffS )r  r   r  r  s     r   r  z5test_unique_for_nan_objects_tuple.<locals>.<listcomp>.  s(    ===aeEllC()===r   r  rq   r(   r  r  s      r   !test_unique_for_nan_objects_tupler  +  sy     ""E8	
==599====RZ  D \\$Fv;;!r   r6   c                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	S )
TestHelpFunctionsc                 T   d}t          j        |          |z                       |          }t          j        |d          }||j        _        t          j        |d          \  }}}t          j	        t          j
        |          |           t          j        |dk              sJ d S )N+   r#   F)rI   rJ   rK   rw   rM   rN   r   value_countrc   rd   sortrm   )	r4   r6   rQ   rR   rf   valuesrS   counts_s	            r   test_value_countz"TestHelpFunctions.test_value_countH  s    IaLL1$,,U338Q''!).77fa
#BGDMM8<<<vfk"""""""r   c                 F   |t           j        k    rt          j        d           t          j        dgdz  |          }t          j        dt           j                  }d|d<   d|d<   t          j        |d|	          \  }}}t          |          d
k    sJ |d
k    sJ d S )Nz%mask not implemented for object dtyper&   r#   rq   )r#   Tr   F)rr   r(   )
rI   r   r/   rA   r]   zerosbool_r   r   r,   )r4   r6   r"  rr   rS   r#  
na_counters          r   test_value_count_maskz'TestHelpFunctions.test_value_count_maskQ  s    BJK?@@@1#'///xBH---QQ#%>&%d#K#K#K fj4yyA~~~~Qr   c                     t          j        g d                              |          }||j        _        t          j        |d          \  }}}t          j        ||           t          j	        |dk              sJ d S )Nr(   r&   r#      r?   rj   rX   Fr&   )
rI   r]   rK   rM   rN   r   r   rc   rd   rm   )r4   r6   rQ   r"  rS   r#  r$  s          r   test_value_count_stablez)TestHelpFunctions.test_value_count_stable\  sz    1112299%@@!).77fa
#D&111vfk"""""""r   c                 8   d}t          j        t          j        |                              |          d          }||j        _        t          j        |          }t          j        |t           j	                  }d|d d d<   t          j        ||           d S )Nri   r#   rq   F)rI   rw   rJ   rK   rM   rN   r   
duplicated	ones_liker(  rc   rd   )r4   r6   rQ   rR   r"  re   rf   s          r   test_duplicated_firstz'TestHelpFunctions.test_duplicated_firstd  s    29Q<<..u55q99!)v&&<bh7771
#FH55555r   c                 j   d}t          j        |                              |          }t          j        |                              |          }||j        _        ||j        _        t          j        ||          }t          j        |t           j                  }t          j
        ||           d S )N   rq   )rI   rJ   rK   rM   rN   r   ismemberr1  r(  rc   rd   )r4   r6   rQ   rR   r   r"  re   rf   s           r   test_ismember_yesz#TestHelpFunctions.test_ismember_yesm  s    ill!!%((1$$U++&	!)S&))<bh777
#FH55555r   c                 @   d}t          j        |                              |          }t          j        |          |z                       |          }t          j        ||          }t          j        |t           j                  }t          j        ||           d S )N   rq   )	rI   rJ   rK   r   r5  
zeros_liker(  rc   rd   )r4   r6   rR   r   r"  re   rf   s          r   test_ismember_noz"TestHelpFunctions.test_ismember_now  s    ill!!%(()A,,"**511S&))=rx888
#FH55555r   c                     |t           j        t           j        fv rd}nd}t          j        t          j        |                              |          d          }d|d<   ||j        _        t          j	        |d          d         }|dk    sJ d S )N5   ig+  r#   r%   r   F)
rI   rk   rl   rw   rJ   rK   rM   rN   r   mode)r4   r6   rQ   rR   r"  re   s         r   	test_modezTestHelpFunctions.test_mode  s    RWbh'''AAA29Q<<..u55q99q	!)''*||||||r   c                     t          j        g d                              |          }||j        _        t          j        |d          d         }t          j        ||           d S )Nr,  Fr   )	rI   r]   rK   rM   rN   r   r=  rc   rd   )r4   r6   rQ   r"  rS   s        r   test_mode_stablez"TestHelpFunctions.test_mode_stable  s_    1112299%@@!)wvu%%a(
#D&11111r   N)r   r   r   r%  r*  r.  r2  r6  r:  r>  r@  r   r   r   r  r  4  s        (# # #	 	 	# # #6 6 66 6 66 6 6	 	 	2 2 2 2 2r   r  c                     t           j        t          j        t           j        d g} t          j        dg| dz  z   t          j                  }t          j        |d          d         }|j	        t          |           k    sJ d S )NTr(   rq   Fr   )rD   r>   rI   r   NaTr]   r   r   r=  r   r,   )nullsr"  modess      r   test_modes_with_nansrE    sl    UBFBFD)EXtfuqy(
;;;FGFE""1%E:U######r   c                     t          j        g dt           j                  }| |j        _        t          j        |          }t          j        g dt           j                  }t          j        ||           d S )N)r&   r(   r(   r(   r&   r?   rq   )r   r&   r#   )	rI   r]   r   rM   rN   r   unique_label_indicesrc   rd   )rQ   rS   re   rf   s       r   test_unique_label_indices_intprH    sl    8&&&bg666D#DJ$T**Fx			111H11111r   c                  Z   t           j                            d                              ddd                              t           j                  } t          j        |           }t          j        | d          d         }t          j
        ||d           d	| t           j                            d                              t          |           d
          <   t          j        |           }t          j        | d          d         dd          }t          j
        ||d           d S )Nr(   r&   i   i   T)return_indexF)check_dtyperj   r   )rI   randomdefault_rngintegersrK   r   r   rG  rx   rc   rd   choicer,   )r   leftrights      r   test_unique_label_indicesrR    s    
	a  ))!Wg>>EEbgNNA"1%%DIad+++A.Ee????57AbiA%%c!ffb112"1%%DIad+++A.qrr2Ee??????r   c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )TestHelpFunctionsWithNansc                    t          j        t           j        t           j        t           j        g|          }t          j        |d          \  }}}t          |          dk    sJ t          j        |d          \  }}}t          |          dk    r&t          j        t          j        |                    sJ |d         dk    sJ d S )Nrq   Tr   Fr&   r?   )rI   r]   r   r   r   r,   rm   r  )r4   r6   r"  rS   r#  r$  s         r   r%  z*TestHelpFunctionsWithNans.test_value_count  s    2626262%@@@.66fa4yyA~~~~.77fa4yyA~~"&$"8"8~~~ayA~~~~~~r   c                     t          j        t           j        t           j        t           j        g|          }t          j        |          }t          j        g d          }t          j        ||           d S )Nrq   )FTT)rI   r]   r   r   r0  rc   rd   )r4   r6   r"  re   rf   s        r   r2  z/TestHelpFunctionsWithNans.test_duplicated_first  sa    2626262%@@@v&&8///00
#FH55555r   c                 d   t          j        t           j        t           j        t           j        g|          }t          j        t           j        t           j        g|          }t          j        ||          }t          j        g dt           j                  }t          j        ||           d S )Nrq   )TTTrI   r]   r   r   r5  r(  rc   rd   r4   r6   r   r"  re   rf   s         r   r6  z+TestHelpFunctionsWithNans.test_ismember_yes  s    h/u===2626*%888S&))8...bh???
#FH55555r   c                 :   t          j        t           j        t           j        t           j        g|          }t          j        dg|          }t          j        ||          }t          j        g dt           j                  }t          j        ||           d S )Nrq   r&   )FFFrX  rY  s         r   r:  z*TestHelpFunctionsWithNans.test_ismember_no  s    h/u===1#U+++S&))8111BBB
#FH55555r   c                    t          j        dt           j        t           j        t           j        g|          }t          j        |d          d         dk    sJ t          j        t          j        |d          d                   sJ d S )Nr%   rq   Tr   F)rI   r]   r   r   r=  r  )r4   r6   r"  s      r   r>  z#TestHelpFunctionsWithNans.test_mode  st    2rvrvrv6eDDDwvt$$Q'2----x..q12222222r   N)r   r   r   r%  r2  r6  r:  r>  r   r   r   rT  rT    s_          6 6 66 6 66 6 63 3 3 3 3r   rT  c                  H   dt          d          fdg} dt          d          fg}d}t          j        t          |          5  t	          | |          }d d d            n# 1 swxY w Y   t          j        ddgt
          j                  }t          j        ||           d S )	Nr   r   )r   r&   z+isin with argument that is not not a Seriesr*   TFrq   )	r   rc   assert_produces_warningFutureWarningr   rI   r]   r(  rd   )r"  compsmsgre   rf   s        r   test_ismember_tuple_with_nansra    s    E%LL!8,F5<< !E
7C		#M	=	=	= % %fe$$% % % % % % % % % % % % % % %xuRX666H11111s   A  A$'A$c                  *   g d} t          t          d                    }t          t          j        | t
                    t          j        |                    }t          j        g dt          j                  }t          j	        ||           d S )N)r   r#   g      @y      @           rq   )FTTT)
listrP   r   rI   r]   r   asarrayr(  rc   rd   )r"  r_  re   rf   s       r   +test_float_complex_int_are_equal_as_objectsrf    s~    $$$FsE"(6000"*U2C2CDDFx111BBBH11111r   )Hcollections.abcr   
contextlibr   r^   r   r
   numpyrI   r/   pandas._libsr   r   pandasrD   pandas._testing_testingrc   pandas.core.algorithmsr   r   r   r   r   r@   r   Complex128HashTable
complex128rH   rL   r   r   r   r   Complex64HashTable	complex64r   r   UInt32HashTabler   Float32HashTablefloat32Int16HashTableint16UInt16HashTableuint16Int8HashTablerk   UInt8HashTablerl   IntpHashTabler   r!   r   r   r   r   r   r  rP   r  r  r  r  r  r  rE  rH  rR  rT  ra  rf  r   r   r   <module>r}     s   % % % % % % % % % % % % 				           ( ( ( ( ( (           ' ' ' ' ' ' y)9:    0 0 0 		rz*		/		BH%		RY'		bj)		-		BH%		RY'		bj)		BH%		RY'		27#		BH%		27# &OG OG OG OG OG OG OG' &OGdu' u' u' u' u' u' u' u'p:. :. :. :. :. :. :. :.z& & &9 9 9
1 
1 
11 1 1 eeAsmm,,C C -,C 		bj)		bj)		/		-	 = = = = = = = =@       




	




	



	


 &G2 G2 G2 G2 G2 G2 G2' &G2T$ $ $2 2 2@ @ @ 





	  3  3  3  3  3  3  3  3F	2 	2 	22 2 2 2 2r   