
    Owge                     d   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,                  j/                  d
ej0                  ej2                  fej4                  ej6                  fej8                  ej:                  fej<                  ej>                  fej@                  ejB                  fejD                  ejF                  fejH                  ejJ                  fejL                  ejN                  fejP                  ejR                  fejT                  ejV                  fejX                  ejZ                  fej\                  ej^                  fej`                  ejb                  fejd                  ejf                  fg       G d d             Z4 G d d      Z5 G d d      Z6d Z7d Z8d Z9d Z:e	j,                  j/                  d e;dd            d        Z<e	j,                  j/                  d
ej@                  ejB                  fejP                  ejR                  fej4                  ej6                  fejD                  ejF                  fg       G d d             Z=d Z>d Z?d Z@e	j,                  j/                  dej2                  ej6                  ej:                  ej>                  ejB                  ejF                  ejJ                  ejN                  ejR                  ejV                  ejZ                  ej^                  ejb                  ejf                  g       G d d              ZAd! ZBd" ZCd# ZDe	j,                  j/                  dejB                  ejR                  ej6                  ejF                  g       G d$ d%             ZEd& ZFd' ZGy)(    )	Generator)contextmanagerN)	hashtable)isinreturn)NNNc               #      K   t        j                          	 d  t        j                          y # t        j                          w xY wwN)tracemallocstartstop     W/var/www/horilla/myenv/lib/python3.12/site-packages/pandas/tests/libs/test_hashtable.pyactivated_tracemallocr      s2     s   A
1 A
AA
c                      t        j                         } | j                  t        j                  dt	        j
                               f      } t        d | j                  D              S )NTc              3   4   K   | ]  }|j                     y wr	   )size).0xs     r   	<genexpr>z-get_allocated_khash_memory.<locals>.<genexpr>   s     /!qvv/s   )r
   take_snapshotfilter_tracesDomainFilterhtget_hashtable_trace_domainsumtraces)snapshots    r   get_allocated_khash_memoryr      sS    ((*H%%		!	!$(E(E(G	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                   j#                  d edd            d        Zy)TestHashTablec                    d} |d      }t        |      dk(  sJ ||vsJ |j                  |d       t        |      dk(  sJ ||v sJ |j                  |      dk(  sJ |j                  |dz   d       ||v sJ |dz   |v sJ t        |      dk(  sJ |j                  |      dk(  sJ |j                  |dz         dk(  sJ |j                  |d       ||v sJ |dz   |v sJ t        |      dk(  sJ |j                  |      dk(  sJ |j                  |dz         dk(  sJ |dz   |vsJ |j                  |dz   d       ||v sJ |dz   |v sJ t        |      dk(  sJ |j                  |      dk(  sJ |j                  |dz         dk(  sJ t        j                  t
        t        |dz         	      5  |j                  |dz          d d d        y # 1 sw Y   y xY w)
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5zQE!!!ub!5zQ~~~~e$***uqy"%~~qyE!!!5zQ~~e$***~~eai(B...ub!~~qyE!!!5zQ~~e$***~~eai(B...qy%%%uqy"%~~qyE!!!5zQ~~e$***~~eai(B...]]83uqy>: 	&NN519%	& 	& 	&s   5GGc                 >   |t         j                  k(  rt        j                  d       d} |dd      }t	        |      dk(  sJ ||vsJ |j                  |d       t	        |      dk(  sJ ||v sJ |j                  |      dk(  sJ t        j                  t        d	
      5  |j                          d d d        |j                  |dz   d       |j                  d       t        j                  |v sJ ||v sJ |dz   |v sJ t	        |      dk(  sJ |j                  |      dk(  sJ |j                  |dz         dk(  sJ |j                         dk(  sJ |j                  d       ||v sJ |dz   |v sJ t	        |      dk(  sJ |j                  |dz         dk(  sJ |j                         dk(  sJ |dz   |vsJ t        j                  t        t        |dz         
      5  |j                  |dz          d d d        y # 1 sw Y   SxY w# 1 sw Y   y xY w)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   ---KK782.5zQE!!!ub!5zQ~~~~e$***]]840 	LLN	 	uqy"%Ruu~~~~qyE!!!5zQ~~e$***~~eai(B...||~###R~~qyE!!!5zQ~~eai(B...||~###qy%%%]]83uqy>: 	&NN519%	& 	&+	 	*	& 	&s   $H(HHHc                    |t         j                  k(  rd} |       }t        j                  |      j	                  |      }t        j                  |      j	                  t        j
                        |z   }||j                  _        ||j                  _        |j                  ||       t        |      D ]  }|j                  ||         ||z   k(  rJ  y y )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LE99Q<&&u-D99Q<&&rxx014D#+DJJ #+DJJ $$T401X 8~~d1g.!a%7778 +r   c                     d} |       }t        j                  |      |z   j                  |      }||j                  _        |j                  |       t        |      D ]  }|j                  ||         |k(  rJ  y )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   ss    		!q ((/'

D!q 	0A>>$q'*a///	0r   c           
      |   |t         j                  k(  rt        j                  d       d} |d      }t	        j
                  |      |z   j                  |      }||j                  _        |j                  |t	        j                  g d             t        |dz
        D ]  }|j                  ||         |k(  rJ  t        j                  t        t        j                   t#        ||dz
                       5  |j                  ||dz
            d d d        |j%                         dk(  sJ y # 1 sw Y   xY w)	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   ---KK78T*		!q ((/'

D"((+?"@Aq1u 	0A>>$q'*a///	0 ]]8299Sa!e5E+FG 	(NN4A;'	( ||~"""	( 	(s   <D22D;c                    d} |       }t        j                  |      |z   j                  |      }||j                  _        |j                  |       |j                  |      }t        j                  |      }t        j                  |j                  t         j                        |j                  t         j                               y )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#99Q<
##FMM"(($;X__RXX=VWr   c                 n   |t         j                  t         j                  fv rd}nd} |       }t        j                  |      |z   j	                  |      }|j                  |       t        j                  |      j	                  |      }|j                  |      }t        j                  |dk(        sJ y )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    RWWbhh''AA		!q ((/D!YYq\((/
j)vvfl###r   c                 `   |t         j                  k(  rt        j                  d       d} |d      }t	        j
                  |      |z   j                  |      }t	        j                  g d      }||j                  _	        |j                  ||       |j                  ||      }t	        j
                  |      }	t        j                  |j                  t        j                        |	j                  t        j                               |j                  t	        j                  d|z   g      j                  |      t	        j                  dg            }t        j                  |j                  t        j                        t	        j                  dgt        j                  	             y )
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!   ---KK78T*		!q ((/xx,-'

D$'dD)99Q<
##FMM"(($;X__RXX=VWbhhAw/66u=rxx?PQ
##MM"((#RXXrd"((%C	
r   c                 J   |t         j                  t         j                  fv rd}nd} |       }t        j                  |      |z   j	                  |      }t        j
                  |d      }||j                  _        |j                  |      }t        j                  ||       y )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    RWWbhh''AAIIaL1$,,U3yy1%'

d#
##FH5r   c                 l   |t         j                  t         j                  fv rd}nd}t        j                  |      j	                  |      }t               5   |       }|j                  |       t               }|j                         }||k(  sJ ~t               dk(  sJ 	 d d d        y # 1 sw Y   y xY w)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    RWWbhh''AAyy|""5)"$ 	5LE%-/DllnG7?"?-/1444	5 	5 	5s   A
B**B3c                     t               5   |       }t               }|j                         }||k(  sJ ~t               dk(  sJ 	 d d d        y # 1 sw Y   y xY wNr   )r   r   r|   )r4   r5   r6   r8   r}   r~   s         r   test_tracemalloc_for_emptyz(TestHashTable.test_tracemalloc_for_empty   sW    "$ 	5LE-/DllnG7?"?-/1444	5 	5 	5s   9AAc                 t     |d      }|j                         }|d   dk(  sJ |d   dk(  sJ d|v sJ d|v sJ y )Nrv   r   r   
n_occupied	n_bucketsupper_bound)	get_state)r4   r5   r6   r8   states        r   test_get_statezTestHashTable.test_get_state   sY    4 !V}!!!\"a'''e###%%%r   rR   r&   n   c                 8   t        j                  |      j                  |      } ||      }|j                         d   }|j	                  |       |j                         d   }||k(  sJ  |       }|j	                  |       ||j                         d   k(  sJ y 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    yy|""5)'],668E((.*446{C-/// l!!$'+"7"7"9+"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!   "   sn    ("&H"&H80# X
$
$
655& [[S%3-0G 1Gr   r!   c                      e Zd Zd Zd Zd Zd Zd Zej                  j                  dddg      ej                  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                  j                  dej                  ej                  ej                  ej"                  ej&                  ej*                  g      d        Zy)TestHashTableUnsortedc                    t        j                         }|j                  dd       |j                  d      dk(  sJ t	        j
                  t        d      5  |j                  dd       d d d        t	        j
                  t        d      5  |j                  d       d d d        y # 1 sw Y   ?xY w# 1 sw Y   y xY w)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	  s      "UA||E"a''']]9,FG 	LLA	 ]]9,FG 	LLO	 		 		 	s   B)B5)B25B>c           	      h   t        j                  ddt         j                  ddddg      }|j                  |       t	        j
                         }|j                  |       t        j                  |j                  |      t        j                  t        |      t         j                               y )	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  sv    XXudBFFB1a89
(#!	
##AHHRL"))CG2772STr   c                     d}t        j                  |      }|j                  dd       |j                  dd       t        |      dk(  sJ y )Nr   g        r   g       r&   )r   r   r-   r,   )r4   rR   r   s      r   test_add_signed_zerosz+TestHashTableUnsorted.test_add_signed_zeros  sE    
 "	

3	

41v{{r   c                 d   t        j                  dt        j                  dd            d   }t        j                  dt        j                  dd            d   }||k7  sJ ||k7  sJ t        j                         }|j                  |d       |j                  |d       t        |      dk(  sJ y )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HK}}S&++d4F"GHKt||t|| !	

4	

41v{{r   c                 b   t        j                  g dt         j                        }|j                  |       t	        j
                         }|j                  |       t        j                  |j                  |      t        j                  t        |      t         j                               y )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  si    XXm2995
(# 	
##AHHRL"))CG2772STr   nvalsr   
   z&htable, uniques, dtype, safely_resizesobjectFTfloat64rL   int32r   c                    t        j                  t        d      |      }|j                  |        |       } |       }|j	                  |d | |dd       |j                         }|j                  }	|r|j	                  ||dd       n8t        j                  t        d      5  |j	                  ||dd       d d d        |j                          |j                  |	k(  sJ y # 1 sw Y   +xY w)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?  s    & xxd51 	H%
 ) 	$v,B7 99 dGQ3z1GH 8!!$B78 	yyH$$$	8 8s   &C%%C.r   c                 v    t        j                  t         j                        j                  dz   } ||       y )Nr&   )	size_hint)rI   iinfouint32max)r4   r   r   s      r   test_hashtable_large_sizehintz3TestHashTableUnsorted.test_hashtable_large_sizehintn  s)     HHRYY'++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     sM   U	U [[Wq"g.[[0!!2??HeD(DA  ""2"2IuE??(EB	

!%
 /!%F [[  	

'
'r   r   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)TestPyObjectHashTableWithNansc                     t        d      }t        d      }||usJ t        j                         }|j                  |d       |j	                  |      dk(  sJ y Nr   r%   floatr   r@   r-   r.   r4   nan1nan2r8   s       r   test_nan_floatz,TestPyObjectHashTableWithNans.test_nan_float  sU    U|U|4$$&tR ~~d#r)))r   c                     t        t        d      t        d            }t        t        d      t        d            }||usJ t        j                         }|j	                  |d       |j                  |      dk(  sJ y r   )complexr   r   r@   r-   r.   r   s       r   test_nan_complex_bothz3TestPyObjectHashTableWithNans.test_nan_complex_both  sk    uU|U5\2uU|U5\24$$&tR ~~d#r)))r   c                    t        t        d      d      }t        t        d      d      }t        t        d      d      }||usJ t        j                         }|j	                  |d       |j                  |      dk(  sJ t        j                  t        d       5 }|j                  |       d d d        t        j                        t        |      k(  sJ y # 1 sw Y   -xY w)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  s    uU|Q'uU|Q'ea(4$$&tR ~~d#r)))]]840 	"ENN5!	"5;;3u:---	" 	"   CC$c                    t        dt        d            }t        dt        d            }t        dt        d            }||usJ t        j                         }|j	                  |d       |j                  |      dk(  sJ t        j                  t        d       5 }|j                  |       d d d        t        j                        t        |      k(  sJ y # 1 sw Y   -xY w)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)))]]840 	"ENN5!	"5;;3u:---	" 	"r   c                     t        d      f}t        d      f}|d   |d   usJ t        j                         }|j                  |d       |j	                  |      dk(  sJ y )Nr   r   r%   r   r   s       r   test_nan_in_tuplez/TestPyObjectHashTableWithNans.test_nan_in_tuple  sa    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                         }|j                  |d       |j	                  |      dk(  sJ t        j                  t        d       5 }|j	                  |       d d d        t        j                        t        |      k(  sJ y # 1 sw Y   -xY w)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 	"ENN5!	"5;;3u:---	" 	"s   :B88CN)	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 y )Nr   )r   r   object_hashobjects_are_equal)abs     r   test_hash_equal_tuple_with_nansr     sn    	ueeEl34A	ueeEl34A>>!q 11111%%%r   c                    t        j                         }t        j                  g dt        j                        }| |j
                  _        |j                  |      \  }}t        j                  g dt        j                        }t        j                  ddgt        j                        }t        j                  ||       t        j                  ||       y )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88(9D#DJJ**40KC880@Lhh1vRXX6O\28r   c                     d} t        j                  |       j                  t         j                        j                  t         j                        }t               5  t        j                         }|j                  |       t               }|j                         }||k(  sJ ~t               dk(  sJ 	 d d d        y # 1 sw Y   y xY w)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99Q<rww'..rzz:D		  1""$D!)+,,.w)+q0001 1 1s   AB==Cc                      t               5  t        j                         } t               }| j	                         }||k(  sJ ~ t               dk(  sJ 	 d d d        y # 1 sw Y   y xY wr   )r   r   r   r   r|   )r8   r}   r~   s      r   *test_tracemalloc_for_empty_StringHashTabler    s^    		  1""$)+,,.w)+q0001 1 1s   AAA$rR   r&   r   c                    t        j                  |       j                  t         j                        j                  t         j                        }t        j                  |       }|j                         d   }|j                  |       |j                         d   }||k(  sJ t        j                         }|j                  |       ||j                         d   k(  sJ y r   )	rI   rJ   rK   r   r   r   r   r   rY   )rR   rS   r   r   r   r   s         r   $test_no_reallocation_StringHashTabler    s    99Q<rww'..rzz:D++A.(224[AO$$T*&002;?Mm+++$$&Kd#k335kBBBBr   c                       e Zd Zd Zd Zd Zy)TestHashTableWithNansc                 ,   t        d      } |       }||vsJ |j                  |d       t        |      dk(  sJ ||v sJ |j                  |      dk(  sJ |j                  |d       t        |      dk(  sJ ||v sJ |j                  |      dk(  sJ y )Nr   r%   r&   r'   )r   r-   r,   r.   r3   s        r   r9   z/TestHashTableWithNans.test_get_set_contains_len  s    eE!!!ub!5zQ~~~~e$***ub!5zQ~~~~e$***r   c                     d} |       }t        j                  |t         j                  |      }|j                  |       t	        |      dk(  sJ |j                  t         j                        |dz
  k(  sJ y )Nr   rq   r&   )rI   fullr   rY   r,   r.   )r4   r5   r6   rR   r8   rS   s         r   r[   z(TestHashTableWithNans.test_map_locations  sa    wwq"&&.D!5zQ~~bff%Q...r   c                     d} |       }t        j                  |t         j                  |      }|j                  |      }t        j                  t        j
                  |            rt        |      dk(  sJ y )Ni  rq   r&   )rI   r	  r   rx   rm   isnanr,   )r4   r5   r6   rR   r8   rS   rx   s          r   ry   z!TestHashTableWithNans.test_unique  s[    wwq"&&.d#vvbhhv&'CK1,<<<,<r   N)r   r   r   r9   r[   ry   r   r   r   r  r    s    +/=r   r  c                     t        j                         } t        j                  t	        d      D cg c]  }t        d       c}t        j                        }| j                  |      }t        |      dk(  sJ y c c}w )N2   r   rq   r&   	r   r@   rI   r]   rP   r   r   rx   r,   r8   rU   rS   rx   s       r   "test_unique_for_nan_objects_floatsr    s\      "E88595aU5\5RZZHD\\$Fv;! 6s   A<c            
         t        j                         } t        j                  t	        d      D cg c]  }t        t        d      d       c}t        j                        }| j                  |      }t        |      dk(  sJ y c c}w )Nr  r         ?rq   r&   )
r   r@   rI   r]   rP   r   r   r   rx   r,   r  s       r   #test_unique_for_nan_objects_complexr  $  sd      "E88rCAWU5\3/C2::VD\\$Fv;! Ds   Bc            
         t        j                         } t        j                  dgt	        d      D cg c]  }dt        d      dff c}z   t        j                        }| j                  |      }t        |      dk(  sJ y c c}w )Nr&   r  r  r   rq   r(   r  r  s       r   !test_unique_for_nan_objects_tupler  +  sr      "E88	
59=aeElC()==RZZD \\$Fv;! >s   B
r6   c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
TestHelpFunctionsc                 ^   d}t        j                  |      |z   j                  |      }t        j                  |d      }||j                  _        t        j                  |d      \  }}}t        j                  t        j                  |      |       t        j                  |dk(        sJ y )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    IIaL1$,,U38Q'!)..7fa
##BGGDM8<vvfk"""r   c                 N   |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 y )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    BJJKK?@1#'/xxBHH-QQ#%>>&%d#K fj4yA~~Qr   c                    t        j                  g d      j                  |      }||j                  _        t        j                  |d      \  }}}t        j                  ||       t        j                  |dk(        sJ y )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\  sd    1299%@!)..7fa
##D&1vvfk"""r   c                 J   d}t        j                  t        j                  |      j                  |      d      }||j                  _        t        j                  |      }t        j                  |t         j                        }d|d d d<   t        j                  ||       y )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  su    299Q<..u5q9!)v&<<bhh71
##FH5r   c                 ~   d}t        j                  |      j                  |      }t        j                  |      j                  |      }||j                  _        ||j                  _        t        j                  ||      }t        j                  |t         j                        }t        j                  ||       y )N   rq   )rI   rJ   rK   rM   rN   r   ismemberr+  r"  rc   rd   )r4   r6   rQ   rR   r   r  re   rf   s           r   test_ismember_yesz#TestHelpFunctions.test_ismember_yesm  s    iil!!%(1$$U+&		!)S&)<<bhh7
##FH5r   c                 @   d}t        j                  |      j                  |      }t        j                  |      |z   j                  |      }t        j                  ||      }t        j
                  |t         j                        }t        j                  ||       y )N   rq   )	rI   rJ   rK   r   r/  
zeros_liker"  rc   rd   )r4   r6   rR   r   r  re   rf   s          r   test_ismember_noz"TestHelpFunctions.test_ismember_now  sp    iil!!%())A,"**51S&)==rxx8
##FH5r   c                 .   |t         j                  t         j                  fv rd}nd}t        j                  t        j                  |      j                  |      d      }d|d<   ||j                  _        t        j                  |d      d   }|dk(  sJ y )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  sz    RWWbhh''AA299Q<..u5q9q	!)'*||r   c                     t        j                  g d      j                  |      }||j                  _        t        j                  |d      d   }t        j                  ||       y )Nr&  Fr   )	rI   r]   rK   rM   rN   r   r7  rc   rd   )r4   r6   rQ   r  rS   s        r   test_mode_stablez"TestHelpFunctions.test_mode_stable  sM    1299%@!)wwvu%a(
##D&1r   N)r   r   r   r  r$  r(  r,  r0  r4  r8  r:  r   r   r   r  r  4  s*    (#	#666	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 y )NTr(   rq   Fr   )rD   r>   rI   r   NaTr]   r   r   r7  r   r,   )nullsr  modess      r   test_modes_with_nansr?    sf    UUBFFBFFD)EXXtfuqy(

;FGGFE"1%E::U###r   c                    t        j                  g dt         j                        }| |j                  _        t        j                  |      }t        j                  g dt         j                        }t        j                  ||       y )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_intprB    sW    88&bgg6D#DJJ$$T*Fxx	1H1r   c                  6   t         j                  j                  d      j                  ddd      j	                  t         j
                        } t        j                  |       }t        j                  | d      d   }t        j                  ||d       d	| t         j                  j                  d      j                  t        |       d
      <   t        j                  |       }t        j                  | d      d   dd  }t        j                  ||d       y )Nr(   r&   i   i   T)return_indexF)check_dtyperj   r   )rI   randomdefault_rngintegersrK   r   r   rA  rx   rc   rd   choicer,   )r   leftrights      r   test_unique_label_indicesrL    s    
		a ))!Wg>EEbggNA""1%DIIad+A.Ee?57AbiiA%%c!fb12""1%DIIad+A.qr2Ee?r   c                   *    e Zd Zd Zd Zd Zd Zd Zy)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 y )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    2662662662%@..6fa4yA~~..7fa4yA~"&&$"888ayA~~r   c                    t        j                  t         j                  t         j                  t         j                  g|      }t        j                  |      }t        j                  g d      }t        j                  ||       y )Nrq   )FTT)rI   r]   r   r   r*  rc   rd   )r4   r6   r  re   rf   s        r   r,  z/TestHelpFunctionsWithNans.test_duplicated_first  sR    2662662662%@v&88/0
##FH5r   c                    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                  ||       y )Nrq   )TTTrI   r]   r   r   r/  r"  rc   rd   r4   r6   r   r  re   rf   s         r   r0  z+TestHelpFunctionsWithNans.test_ismember_yes  sw    hh/u=266266*%8S&)88.bhh?
##FH5r   c                 b   t        j                  t         j                  t         j                  t         j                  g|      }t        j                  dg|      }t        j                  ||      }t        j                  g dt         j
                        }t        j                  ||       y )Nrq   r&   )FFFrR  rS  s         r   r4  z*TestHelpFunctionsWithNans.test_ismember_no  sl    hh/u=1#U+S&)881B
##FH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 y )Nr%   rq   Tr   F)rI   r]   r   r   r7  r  )r4   r6   r  s      r   r8  z#TestHelpFunctionsWithNans.test_mode  sg    2rvvrvvrvv6eDwwvt$Q'2---xx.q1222r   N)r   r   r   r  r,  r0  r4  r8  r   r   r   rN  rN    s    6663r   rN  c                  4   dt        d      fdg} dt        d      fg}d}t        j                  t        |      5  t	        | |      }d d d        t        j                  ddgt
        j                        }t        j                  |       y # 1 sw Y   GxY w)	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_nansr[    s    E%L!8,F5< !E
7C		#	#M	= %fe$%xxuRXX6H1% %s   BBc                     g d} t        t        d            }t        t        j                  | t
              t        j                  |            }t        j                  g dt        j                        }t        j                  ||       y )N)r   r#   g      @y      @           rq   )FTTT)
listrP   r   rI   r]   r   asarrayr"  rc   rd   )r  rY  re   rf   s       r   +test_float_complex_int_are_equal_as_objectsr`    sZ    $FsE"((60"**U2CDFxx1BH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  r?  rB  rL  rN  r[  r`  r   r   r   <module>rw     s]   % % 	     (   ' y)9:  0 			rzz*			/			BHH%			RYY'			bjj)			-			BHH%			RYY'			bjj)			BHH%			RYY'			277#			BHH%			277#&OG OG'&OGdu' u'p:. :.z&9
11 eAsm,C -C 			bjj)			bjj)			/			-	= ==@ 





		





		


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





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