
    PiLj                        d dl mZ 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j0        e
j1        fej2        e
j3        fej4        e
j5        fg           G d d                      Z6 G d d          Z7 G d d          Z8d Z9d Z:d Z;d Z<d Z=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                      ZAd ZBd  ZCd! ZDe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
j1        e
j3        e
j5        g           G d# d$                      ZEd% ZFd& ZGd' ZHej                            d"e
j#        e
j+        e
j        e
j%        g           G d( d)                      ZId* ZJd+ ZKdS ),    )
namedtuple)	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     t/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/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                    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_len7   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   PyObjectHashTabler0   skipr-   r.   r/   r1   r2   get_naset_napdr?   r3   r4   s        r   test_get_set_contains_len_maskz,TestHashTable.test_get_set_contains_len_mask[   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/   )	r5   r6   r7   writableNr9   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   )rJ   rK   rL   rN   rO   map_locationsrQ   r/   )r5   r6   r7   rR   rS   r9   rT   rV   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	        t	          j
        d|dz
            dg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z
  k    sJ d S )
Nr<      Tr=   Fr'   r   )axisr+   )r   rA   r0   rB   rJ   rK   rL   rN   rO   concatenaterepeatrZ   rQ   r/   r1   r2   reescaper3   rC   )	r5   r6   r7   rR   rS   r9   rT   maskrV   s	            r   test_map_locations_maskz%TestHashTable.test_map_locations_mask   s   ---K7888
T***	!q ((//'
~ryA66?aHHHD$'''q1u 	0 	0A>>$q'**a/////]829Sa!e5E5E+F+FGGG 	( 	(NN4A;'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( ||~~Q&&&&&&s   'EEEc                    d} |            }t          j        |          |z                       |          }||j        _        |                    |           |                    |          }t          j        |          }t          j        |                    t           j	                  |                    t           j	                             d S )Nr@   )
rJ   rK   rL   rN   rO   rZ   lookuptmassert_numpy_array_equalrM   )	r5   r6   r7   rR   rS   r9   rT   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   )rJ   int8uint8rK   rL   rZ   rf   all)r5   r6   r7   rS   r9   rT   
wrong_keysri   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'   Frn   r7   )r   rA   r0   rB   rJ   rK   rL   arrayrN   rO   rZ   rf   rg   rh   rM   )
r5   r6   r7   rR   rS   r9   rT   rc   ri   rj   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$   )rJ   ro   rp   rK   rL   r`   rN   rO   uniquerg   rh   )	r5   r6   r7   rR   rS   r9   rj   rT   r{   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   )	rJ   ro   rp   rK   rL   r   rZ   r    sizeof)r5   r6   r7   rS   rT   r9   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   )r5   r6   r7   r9   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 )Nrz   r   r   
n_occupied	n_bucketsupper_bound)	get_state)r5   r6   r7   r9   states        r   test_get_statezTestHashTable.test_get_state   ss    
4  !!V}!!!!\"a''''e####%%%%%%r   rS   r'   n      c                    t          j        |                              |          } ||          }|                                d         }|                    |           |                                d         }||k    sJ  |            }|                    |           ||                                d         k    sJ d S Nr   )rJ   rK   rL   r   rZ   )	r5   r6   r7   rS   rT   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__r:   rF   rW   r[   rd   rk   rs   rw   r|   r   r   r   r0   markparametrizerQ   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"2"233G G 43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+   r      z'val' has incorrect type)r   StringHashTabler.   r/   r0   r1   	TypeError)r5   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@   writeru   )rJ   rv   nansetflagsr   Float64HashTablerZ   rg   rh   rf   rK   r-   intpr5   rR   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-   )r5   rS   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-   )r5   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            ru   r   )rJ   rv   uint64r   r   UInt64HashTablerZ   rg   rh   rf   rK   r-   r   r   s       r   test_lookup_overflowz*TestHashTableUnsorted.test_lookup_overflow9  s    Xmmm29555
(###  	
#AHHRLL")CGG272S2S2STTTTTr   nvalsr   
   z&htable, uniques, dtype, safely_resizesobjectFTfloat64rM   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 )Nrz   ru   r   r   rn   zexternal reference.*r+   )
rJ   rv   rQ   r   
get_labelsto_arrayshaper0   r1   
ValueError)
r5   rR   htableuniquesr7   safely_resizesr   rU   tmpoldshapes
             r   test_vector_resizez(TestHashTableUnsorted.test_vector_resizeA  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)rJ   iinfouint32max)r5   r   r   s      r   test_hashtable_large_sizehintz3TestHashTableUnsorted.test_hashtable_large_sizehintp  s6     HRY''+a/		I&&&&&&r   N)r   r   r   r   r   r   r   r   r0   r   r   r   rA   ObjectVectorr   r   Float64VectorrI   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                   >    e Zd Zd 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   rA   r.   r/   r5   nan1nan2r9   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   rA   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          t          j
        t          |                              5  |                    |           d d d            d S # 1 swxY w Y   d S )Nr   r'   r)   r&   r+   r   r   r   rA   r.   r/   r0   r1   r2   ra   rb   reprr5   r   r   otherr9   s        r   test_nan_complex_realz3TestPyObjectHashTableWithNans.test_nan_complex_real  s,   uU||Q''uU||Q''ea((4$&&tR   ~~d##r))))]829T%[[+A+ABBB 	" 	"NN5!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"   C??DD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          t          j
        t          |                              5  |                    |           d d d            d S # 1 swxY w Y   d S )Nr'   r   r)   r&   r+   r   r   s        r   test_nan_complex_imagz3TestPyObjectHashTableWithNans.test_nan_complex_imag  s,   q%,,''q%,,''5<<((4$&&tR   ~~d##r))))]829T%[[+A+ABBB 	" 	"NN5!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"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          t          j	        t          |                              5  |                    |           d d d            d S # 1 swxY w Y   d S )Nr'   r)   r   )r'   r)   r&   r+   )r   r   rA   r.   r/   r0   r1   r2   ra   rb   r   r   s        r   test_nan_in_nested_tuplez6TestPyObjectHashTableWithNans.test_nan_in_nested_tuple  s   Ae'(Ae'($&&tR   ~~d##r))))]829T%[[+A+ABBB 	" 	"NN5!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s   )CCCc                 0   t          ddg          } |t          d                    } |t          d                    }|j        |j        usJ t          j                    }|                    |d           |                    |          dk    sJ d S )NTr   r   r&   )r   r   r   r   rA   r.   r/   )r5   r   r   r   r9   s        r   test_nan_in_namedtuplez4TestPyObjectHashTableWithNans.test_nan_in_namedtuple  s    sSE""ququvTV####$&&tR   ~~d##r))))))r   c                 
   t          dddg          } |ddt          d          ff          } |ddt          d          ff          } |dd          }t          j                    }|                    |d           |                    |          dk    sJ t          j        t          t          j
        t          |                              5  |                    |           d d d            d S # 1 swxY w Y   d S )	Nr   r   yr'   r)   r   r&   r+   )r   r   r   rA   r.   r/   r0   r1   r2   ra   rb   r   )r5   r   r   r   r   r9   s         r   test_nan_in_nested_namedtuplez;TestPyObjectHashTableWithNans.test_nan_in_nested_namedtuple  s:   sS#J''qQu())qQu())!Q$&&tR   ~~d##r))))]829T%[[+A+ABBB 	" 	"NN5!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s   C88C<?C<N)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r     s        * * ** * *	" 	" 	"	" 	" 	"* * *" " "* * *	" 	" 	" 	" 	"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          dddg          }  | t          d          t          d          t          d          f          } | t          d          t          d          t          d          f          }t          j        |          t          j        |          k    sJ t          j        ||          sJ d S )Nr   r   r   r   )r   r   r   r   r   r   r   r   s      r   $test_hash_equal_namedtuple_with_nansr    s    3c
##A	%,,uuU||455A	%,,uuU||455A>!q 1 111111%%%%%%%r   c                      t          dddg          }  | dd          }d}t          j        |          t          j        |          k    sJ t          j        ||          sJ d S )Nr   r   r   r'   r)   r@   )r'   r  )r   r   r   r   r   s      r   $test_hash_equal_namedtuple_and_tupler    sm    3c
##A	!VAA>!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)   rn   r)   r'   rn   ru   )r   r'   rn   r'   r   rn   r'   r)   )r   rI   rJ   rv   rM   rN   rO   get_labels_groupbyr   rg   rh   )rR   r9   rU   arrr{   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 )Nrz   r   )rJ   rK   rL   str_object_r   r   r   rZ   r    r   )rS   rT   r9   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   )r9   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rS   r'   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   )	rJ   rK   rL   r  r  r   r   r   rZ   )rS   rT   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/   r4   s        r   r:   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   ru   r'   )rJ   fullr   rZ   r-   r/   )r5   r6   r7   rS   r9   rT   s         r   r[   z(TestHashTableWithNans.test_map_locations0  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  ru   r'   )rJ   r  r   r{   rq   isnanr-   )r5   r6   r7   rS   r9   rT   r{   s          r   r|   z!TestHashTableWithNans.test_unique8  sq    
wq"&...d##vbhv&&''<CKK1,<,<,<<,<,<r   N)r   r   r   r:   r[   r|   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   rV   s     r   
<listcomp>z6test_unique_for_nan_objects_floats.<locals>.<listcomp>B  s    555aU5\\555r   2   ru   r'   r   rA   rJ   rv   rQ   r  r{   r-   r9   rT   r{   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>I  s(    CCCAWU5\\3//CCCr   r  ru   r'   r   r!  s      r   #test_unique_for_nan_objects_complexr&  G  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>Q  s(    ===aeEllC()===r   r  ru   r)   r   r!  s      r   !test_unique_for_nan_objects_tupler)  N  sy     ""E8	
==599====RZ  D \\$Fv;;!r   r7   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)rJ   rK   rL   r`   rN   rO   r   value_countrg   rh   sortrq   )	r5   r7   rR   rS   rj   valuesrT   counts_s	            r   test_value_countz"TestHelpFunctions.test_value_countk  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$   ru   )r$   Tr   F)rc   r)   )
rJ   r  r0   rB   rv   zerosbool_r   r.  r-   )r5   r7   r0  rc   rT   r1  
na_counters          r   test_value_count_maskz'TestHelpFunctions.test_value_count_maskt  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@   rn   rY   Fr'   )
rJ   rv   rL   rN   rO   r   r.  rg   rh   rq   )r5   r7   rR   r0  rT   r1  r2  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 )Nrm   r$   ru   F)rJ   r`   rK   rL   rN   rO   r   
duplicated	ones_liker6  rg   rh   )r5   r7   rR   rS   r0  ri   rj   s          r   test_duplicated_firstz'TestHelpFunctions.test_duplicated_first  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   ru   )rJ   rK   rL   rN   rO   r   ismemberr?  r6  rg   rh   )r5   r7   rR   rS   r  r0  ri   rj   s           r   test_ismember_yesz#TestHelpFunctions.test_ismember_yes  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   ru   )	rJ   rK   rL   r   rC  
zeros_liker6  rg   rh   )r5   r7   rS   r  r0  ri   rj   s          r   test_ismember_noz"TestHelpFunctions.test_ismember_no  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)
rJ   ro   rp   r`   rK   rL   rN   rO   r   mode)r5   r7   rR   rS   r0  ri   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   )	rJ   rv   rL   rN   rO   r   rK  rg   rh   )r5   r7   rR   r0  rT   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   r3  r8  r<  r@  rD  rH  rL  rN  r   r   r   r+  r+  W  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)   ru   Fr   )rE   r?   rJ   r   NaTrv   r  r   rK  r   r-   )nullsr0  modess      r   test_modes_with_nansrS    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@   ru   )r   r'   r$   )	rJ   rv   r   rN   rO   r   unique_label_indicesrg   rh   )rR   rT   ri   rj   s       r   test_unique_label_indices_intprV    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_dtypern   r   )rJ   randomdefault_rngintegersrL   r   r   rU  r{   rg   rh   choicer-   )r   leftrights      r   test_unique_label_indicesr`    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 )Nru   Tr   Fr'   r@   )rJ   rv   r   r   r.  r-   rq   r  )r5   r7   r0  rT   r1  r2  s         r   r3  z*TestHelpFunctionsWithNans.test_value_count  s    2626262%@@@.66fa4yyA~~~~.77fa4yyA~~"&$"8"8~~8ayA~~~~~~r   c                     t          j        t           j        t           j        t           j        g|          }t          j        |          }t          j        g d          }t          j        ||           d S )Nru   )FTT)rJ   rv   r   r   r>  rg   rh   )r5   r7   r0  ri   rj   s        r   r@  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 )Nru   )TTTrJ   rv   r   r   rC  r6  rg   rh   r5   r7   r  r0  ri   rj   s         r   rD  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 )Nru   r'   )FFFrf  rg  s         r   rH  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&   ru   Tr   F)rJ   rv   r   r   rK  r  )r5   r7   r0  s      r   rL  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   r3  r@  rD  rH  rL  r   r   r   rb  rb    s_          6 6 66 6 66 6 63 3 3 3 3r   rb  c                     t          j        dt                    } dt          d          fdg| d d <   dt          d          fg}t	          | |          }t          j        ddgt           j                  }t          j        ||           d S )Nr)   ru   r   r   )r   r'   TF)	rJ   emptyr   r   r   rv   r6  rg   rh   r0  compsri   rj   s       r   test_ismember_tuple_with_nansrn    s    Xav&&&FuU||$h/F111I5<< !E&%  FxuRX666H11111r   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      @        r]   ru   )FTTT)
listrQ   r   rJ   rv   r   asarrayr6  rg   rh   rl  s       r   +test_float_complex_int_are_equal_as_objectsrr  	  s~    $$$FsE"(6000"*U2C2CDDFx111BBBH11111r   )Lcollectionsr   collections.abcr   
contextlibr   ra   r   r   numpyrJ   r0   pandas._libsr   r   pandasrE   pandas._testing_testingrg   pandas.core.algorithmsr   r   r    r   r   rA   r  Complex128HashTable
complex128rI   rM   r   r   r   r   Complex64HashTable	complex64r   r   UInt32HashTabler   Float32HashTablefloat32Int16HashTableint16UInt16HashTableuint16Int8HashTablero   UInt8HashTablerp   IntpHashTabler   r"   r   r   r   r  r  r
  r  r  rQ   r  r  r"  r&  r)  r+  rS  rV  r`  rb  rn  rr  r   r   r   <module>r     s   " " " " " " % % % % % % % % % % % % 				           ( ( ( ( ( (           ' ' ' ' ' ' y)9:    0 0 0 		rz*		/		BH%		RY'		bj)		-		BH%		RY'		bj)		BH%		RY'		27#		BH%		27# &PG PG PG PG PG PG PG' &PGfu' u' u' u' u' u' u' u'pK" K" K" K" K" K" K" K"\& & && & && & &9 9 9
1 
1 
11 1 1 eeAsA..//C C 0/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   