
    .iLj                     ~   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j0                  j3                  d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ejh                  e
jj                  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j0                  j3                  d e?ddd            d        Z@ej0                  j3                  dejD                  e
jF                  fejT                  e
jV                  fej8                  e
j:                  fejH                  e
jJ                  fg       G d d             ZAd ZBd  ZCd! ZDej0                  j3                  d"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                  e
jj                  g       G d# d$             ZEd% ZFd& ZGd' ZHej0                  j3                  d"e
jF                  e
jV                  e
j:                  e
jJ                  g       G d( d)             ZId* ZJd+ ZKy),    )
namedtuple)	Generator)contextmanagerN)	hashtable)isinreturn)NNNc               #      K   t        j                          	 d  t        j                          y # t        j                          w xY wwN)tracemallocstartstop     ^/var/www/app/trading-bot/venv/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            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_len7   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   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   ---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/   )	r5   r6   r7   writableNr9   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   )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   ss    		!q ((/'

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

~~ryyA6?aHD$'q1u 	0A>>$q'*a///	0 ]]8299Sa!e5E+FG 	(NN4A;'	( ||~Q&&&	( 	(s   EEc                    d} |       }t        j                  |      |z   j                  |      }||j                  _        |j                  |       |j                  |      }t        j                  |      }t        j                  |j                  t         j                        |j                  t         j                               y )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#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   )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    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'   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!   ---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$   )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    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   )	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    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   )r5   r6   r7   r9   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 )Nrz   r   r   
n_occupied	n_bucketsupper_bound)	get_state)r5   r6   r7   r9   states        r   test_get_statezTestHashTable.test_get_state   sY    4 !V}!!!\"a'''e###%%%r   rS   r'   n      c                 8   t        j                  |      j                  |      } ||      }|j                         d   }|j	                  |       |j                         d   }||k(  sJ  |       }|j	                  |       ||j                         d   k(  sJ y 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    yy|""5)'],668E((.*446{C-/// l!!$'+"7"7"9+"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"   #   sq    ("&H"&H80'"X
$
$
655& [[S%3"23G 4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+   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  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@   writeru   )rJ   rv   nansetflagsr   Float64HashTablerZ   rg   rh   rf   rK   r-   intpr5   rR   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-   )r5   rS   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-   )r5   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            ru   r   )rJ   rv   uint64r   r   UInt64HashTablerZ   rg   rh   rf   rK   r-   r   r   s       r   test_lookup_overflowz*TestHashTableUnsorted.test_lookup_overflow9  si    XXm2995
(# 	
##AHHRL"))CG2772STr   nvalsr   
   z&htable, uniques, dtype, safely_resizesobjectFTfloat64rM   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)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  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)rJ   iinfouint32max)r5   r   r   s      r   test_hashtable_large_sizehintz3TestHashTableUnsorted.test_hashtable_large_sizehintp  s)     HHRYY'++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   	  sM   U	U [[Wq"g.[[0!!2??HeD(DA  ""2"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
y	)
TestPyObjectHashTableWithNansc                     t        d      }t        d      }||usJ t        j                         }|j                  |d       |j	                  |      dk(  sJ y Nr   r&   floatr   rA   r.   r/   r5   nan1nan2r9   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   rA   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        t        j                  t        |                  5  |j                  |       d d d        y # 1 sw Y   y xY w)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)))]]8299T%[+AB 	"NN5!	" 	" 	"   9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        t        j                  t        |                  5  |j                  |       d d d        y # 1 sw Y   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)))]]8299T%[+AB 	"NN5!	" 	" 	"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                 z   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        t        j                  t        |                  5  |j	                  |       d d d        y # 1 sw Y   y xY w)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)))]]8299T%[+AB 	"NN5!	" 	" 	"s   B11B:c                    t        ddg      } |t        d            } |t        d            }|j                  |j                  usJ t        j                         }|j                  |d       |j                  |      dk(  sJ y )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  ss    sSE"uuvvTVV###$$&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                         }|j	                  |d       |j                  |      dk(  sJ t        j                  t        t        j                  t        |                  5  |j                  |       d d d        y # 1 sw Y   y xY w)	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u()Qu()!Q$$&tR ~~d#r)))]]8299T%[+AB 	"NN5!	" 	" 	"s   5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 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                  B   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 y )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5A	%,uuU|45A>>!q 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 y )Nr   r   r   r'   r)   r@   )r'   r  )r   r   r   r   r   s      r   $test_hash_equal_namedtuple_and_tupler    sX    3c
#A	!VAA>>!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)   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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)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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   )r9   r   r   s      r   *test_tracemalloc_for_empty_StringHashTabler    s^    		  1""$)+,,.w)+q0001 1 1s   AAA$rS   r'   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   )	rJ   rK   rL   r  r  r   r   r   rZ   )rS   rT   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/   r4   s        r   r:   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   ru   r'   )rJ   fullr   rZ   r-   r/   )r5   r6   r7   rS   r9   rT   s         r   r[   z(TestHashTableWithNans.test_map_locations0  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  ru   r'   )rJ   r  r   r{   rq   isnanr-   )r5   r6   r7   rS   r9   rT   r{   s          r   r|   z!TestHashTableWithNans.test_unique8  s[    wwq"&&.d#vvbhhv&'CK1,<<<,<r   N)r   r   r   r:   r[   r|   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   ru   r'   	r   rA   rJ   rv   rQ   r   r  r{   r-   r9   rV   rT   r{   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         ?ru   r'   )
r   rA   rJ   rv   rQ   r   r   r  r{   r-   r  s       r   #test_unique_for_nan_objects_complexr!  G  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   ru   r)   r  r  s       r   !test_unique_for_nan_objects_tupler#  N  sr      "E88	
59=aeElC()==RZZD \\$Fv;! >s   B
r7   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)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    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$   ru   )r$   Tr   F)rc   r)   )
rJ   r  r0   rB   rv   zerosbool_r   r(  r-   )r5   r7   r*  rc   rT   r+  
na_counters          r   test_value_count_maskz'TestHelpFunctions.test_value_count_maskt  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@   rn   rY   Fr'   )
rJ   rv   rL   rN   rO   r   r(  rg   rh   rq   )r5   r7   rR   r*  rT   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 )Nrm   r$   ru   F)rJ   r`   rK   rL   rN   rO   r   
duplicated	ones_liker0  rg   rh   )r5   r7   rR   rS   r*  ri   rj   s          r   test_duplicated_firstz'TestHelpFunctions.test_duplicated_first  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   ru   )rJ   rK   rL   rN   rO   r   ismemberr9  r0  rg   rh   )r5   r7   rR   rS   r  r*  ri   rj   s           r   test_ismember_yesz#TestHelpFunctions.test_ismember_yes  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   ru   )	rJ   rK   rL   r   r=  
zeros_liker0  rg   rh   )r5   r7   rS   r  r*  ri   rj   s          r   test_ismember_noz"TestHelpFunctions.test_ismember_no  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)
rJ   ro   rp   r`   rK   rL   rN   rO   r   mode)r5   r7   rR   rS   r*  ri   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 )Nr4  Fr   )	rJ   rv   rL   rN   rO   r   rE  rg   rh   )r5   r7   rR   r*  rT   s        r   test_mode_stablez"TestHelpFunctions.test_mode_stable  sM    1299%@!)wwvu%a(
##D&1r   N)r   r   r   r-  r2  r6  r:  r>  rB  rF  rH  r   r   r   r%  r%  W  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)   ru   Fr   )rE   r?   rJ   r   NaTrv   r  r   rE  r   r-   )nullsr*  modess      r   test_modes_with_nansrM    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@   ru   )r   r'   r$   )	rJ   rv   r   rN   rO   r   unique_label_indicesrg   rh   )rR   rT   ri   rj   s       r   test_unique_label_indices_intprP    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_dtypern   r   )rJ   randomdefault_rngintegersrL   r   r   rO  r{   rg   rh   choicer-   )r   leftrights      r   test_unique_label_indicesrZ    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 )Nru   Tr   Fr'   r@   )rJ   rv   r   r   r(  r-   rq   r  )r5   r7   r*  rT   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 )Nru   )FTT)rJ   rv   r   r   r8  rg   rh   )r5   r7   r*  ri   rj   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 )Nru   )TTTrJ   rv   r   r   r=  r0  rg   rh   r5   r7   r  r*  ri   rj   s         r   r>  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 )Nru   r'   )FFFr`  ra  s         r   rB  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&   ru   Tr   F)rJ   rv   r   r   rE  r  )r5   r7   r*  s      r   rF  z#TestHelpFunctionsWithNans.test_mode  sg    2rvvrvvrvv6eDwwvt$Q'2---xx.q1222r   N)r   r   r   r-  r:  r>  rB  rF  r   r   r   r\  r\    s    6663r   r\  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                  ||       y )Nr)   ru   r   r   )r   r'   TF)	rJ   emptyr   r   r   rv   r0  rg   rh   r*  compsri   rj   s       r   test_ismember_tuple_with_nansrh    sn    XXav&FuU|$h/F1I5< !E&% FxxuRXX6H1r   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      @        r]   ru   )FTTT)
listrQ   r   rJ   rv   r   asarrayr0  rg   rh   rf  s       r   +test_float_complex_int_are_equal_as_objectsrl  	  sZ    $FsE"((60"**U2CDFxx1BH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%  rM  rP  rZ  r\  rh  rl  r   r   r   <module>r     so   " % % 	     (   ' y)9:  0 			rzz*			/			BHH%			RYY'			bjj)			-			BHH%			RYY'			bjj)			BHH%			RYY'			277#			BHH%			277#&PG PG'&PGfu' u'pK" K"\&&&9
11 eAsA./C 0C 			bjj)			bjj)			/			-	= ==@ 





		





		


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







	 3  3 3F22r   