gL iedddlmZddlmZddlZddlZddlZddlZddl Z ddl m Z ddl ZddlmZddlmZededfdZd Ze j,j/d e j0ej2fe j4ej6fe j8ej:fe j<ej>fe j@ejBfe jDejFfe jHejJfe jLejNfe jPejRfe jTejVfe jXejZfe j\ej^fe j`ejbfe jdejffgGd d Z4Gd dZ5GddZ6dZ7dZ8dZ9dZ:e j,j/de;dddZdZ?dZ@e j,j/dej2ej6ej:ej>ejBejFejJejNejRejVejZej^ejbejfgGdd ZAd!ZBd"ZCd#ZDe j,j/dejBejRej6ejFgGd$d%ZEd&ZFd'ZGy)() Generator)contextmanagerN) hashtable)isinreturn)NNNc#Ktj dtjy#tjwxYwwN) tracemallocstartstopf/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/pandas/tests/libs/test_hashtable.pyactivated_tracemallocrs2  sA 1A AA ctj}|jtjdt j f}t d|jDS)NTc34K|]}|jywr )size).0xs r z-get_allocated_khash_memory..s/!qvv/s)r take_snapshot filter_traces DomainFilterhtget_hashtable_trace_domainsumtraces)snapshots rget_allocated_khash_memoryrsS((*H%%  ! !$(E(E(G HJH /x/ //rztable_type, dtypeceZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zej j#d edddZy) TestHashTablecd}|d}t|dk(sJ||vsJ|j|dt|dk(sJ||vsJ|j|dk(sJ|j|dzd||vsJ|dz|vsJt|dk(sJ|j|dk(sJ|j|dzdk(sJ|j|d||vsJ|dz|vsJt|dk(sJ|j|dk(sJ|j|dzdk(sJ|dz|vsJ|j|dzd||vsJ|dz|vsJt|dk(sJ|j|dk(sJ|j|dzdk(sJtjt t |dz 5|j|dzdddy#1swYyxYw) N7r*)match)lenset_itemget_itempytestraisesKeyErrorstrself table_typedtypeindextables rtest_get_set_contains_lenz'TestHashTable.test_get_set_contains_len6s25zQE!!! 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 5GGc>|tjk(rtjdd}|dd}t |dk(sJ||vsJ|j |dt |dk(sJ||vsJ|j |dk(sJtjtd 5|jddd|j |dzd |jd tj|vsJ||vsJ|dz|vsJt |d k(sJ|j |dk(sJ|j |dzd k(sJ|jd k(sJ|jd ||vsJ|dz|vsJt |d k(sJ|j |dzd k(sJ|jd k(sJ|dz|vsJtjtt|dz 5|j |dzdddy#1swYSxYw#1swYyxYw)NMask not supported for objectr#r$T uses_maskrr%r&NAr*r'r)r()rPyObjectHashTabler/skipr,r-r.r0r1get_naset_napdr>r2r3s rtest_get_set_contains_len_maskz,TestHashTable.test_get_set_contains_len_maskZs -- - KK7 82.5zQE!!! ub!5zQ~~~~e$*** ]]84 0  LLN  uqy"% Ruu~~~~qyE!!!5zQ~~e$***~~eai(B...||~### R~~qyE!!!5zQ~~eai(B...||~###qy%%% ]]83uqy> : & NN519 % & &+  * & &s$H(HHHc|tjk(rd}|}tj|j |}tj|j tj |z}||j _||j _|j||t|D]}|j||||zk(rJyy)NM) rInt64HashTablenparangeastypeint64flags writeablemap_keys_to_valuesranger.) r4r5r6writableNr8keysvalsis rtest_map_keys_to_valuesz%TestHashTable.test_map_keys_to_values~s ** *ALE99Q<&&u-D99Q<&&rxx014D#+DJJ #+DJJ  $ $T4 01X 8~~d1g.!a%777 8 +rcd}|}tj||zj|}||j_|j |t |D]}|j|||k(rJy)N)rIrJrKrMrN map_locationsrPr.r4r5r6rQrRr8rSrUs rtest_map_locationsz TestHashTable.test_map_locationsss   ! q ((/'  D!q 0A>>$q'*a/ // 0rc ||tjk(rtjdd}|d}t j ||zj |}||j_|j|t jgdt|dz D]}|j|||k(rJtjttj t#||dz 5|j||dz ddd|j%dk(sJy#1swYxYw) Nr;r?Tr<)FFTr&r*r()rr@r/rArIrJrKrMrNrYarrayrPr.r0r1reescaper2rBrZs rtest_map_locations_maskz%TestHashTable.test_map_locations_masks -- - KK7 8 T* ! q ((/'  D"((+?"@Aq1u 0A>>$q'*a/ // 0]]8299Sa!e5E+F G ( NN4A; ' (||~""" ( (s <D22D;cd}|}tj||zj|}||j_|j ||j |}tj|}tj|jtj|jtjy)Nr?) rIrJrKrMrNrYlookuptmassert_numpy_array_equalrL) r4r5r6rQrRr8rSresultexpecteds r test_lookupzTestHashTable.test_lookups   ! q ((/'  D!d#99Q< ##FMM"(($;X__RXX=VWrcn|tjtjfvrd}nd}|}tj||zj |}|j |tj|j |}|j |}tj|dk(sJy)Ndi)rIint8uint8rJrKrYrball)r4r5r6rRr8rS wrong_keysres rtest_lookup_wrongzTestHashTable.test_lookup_wrongs RWWbhh' 'AA  ! q ((/ D!YYq\((/ j)vvfl###rc`|tjk(rtjdd}|d}t j ||zj |}t jgd}||j_ |j|||j||}t j |} tj|j tj| j tj|jt jd|zgj |t jdg}tj|j tjt jdgtj y) Nr;r?Tr<)FTFr&Frjr6)rr@r/rArIrJrKr]rMrNrYrbrcrdrL) r4r5r6rQrRr8rSmaskrerfs rtest_lookup_maskzTestHashTable.test_lookup_masks! -- - KK7 8 T* ! q ((/xx,-'  D$'dD)99Q< ##FMM"(($;X__RXX=VWbhhAw/66u=rxx?PQ ## MM"(( #RXXrd"((%C rcJ|tjtjfvrd}nd}|}tj||zj |}tj |d}||j _|j|}tj||y)NXr#) rIrkrlrJrKrepeatrMrNuniquercrd) r4r5r6rQrRr8rfrSrxs r test_uniquezTestHashTable.test_uniques RWWbhh' 'AA IIaL1$,,U3yy1%' d# ##FH5rcl|tjtjfvrd}nd}tj|j |}t 5|}|j |t}|j}||k(sJ~tdk(sJ dddy#1swYyxYw)Ni0ur) rIrkrlrJrKrrYrsizeof)r4r5r6rRrSr8usedmy_sizes rtest_tracemalloc_worksz$TestHashTable.test_tracemalloc_workss RWWbhh' 'AAyy|""5) " $ 5LE    %-/DllnG7? "?-/14 44 5 5 5s A B**B3ct5|}t}|j}||k(sJ~tdk(sJ dddy#1swYyxYwNr)rrr|)r4r5r6r8r}r~s rtest_tracemalloc_for_emptyz(TestHashTable.test_tracemalloc_for_emptysW " $ 5LE-/DllnG7? "?-/14 44  5 5 5s 9AAct|d}|j}|ddk(sJ|ddk(sJd|vsJd|vsJy)Nrvrr n_occupied n_buckets upper_bound) get_state)r4r5r6r8states rtest_get_statezTestHashTable.test_get_statesY4 !V}!!!\"a'''e###%%%rrRr&nc8tj|j|}||}|jd}|j ||jd}||k(sJ|}|j |||jdk(sJyNr)rIrJrKrrY) r4r5r6rRrSpreallocated_tablen_buckets_start n_buckets_end clean_tables rtest_no_reallocationz"TestHashTable.test_no_reallocationsyy|""5)'],668E((.*446{C -/// l !!$'+"7"7"9+"FFFFrN)__name__ __module__ __qualname__r9rErVr[r`rgrorsryrrrr/mark parametrizerPrr rrr!r!"sn("&H"&H 80# X $ $ 6 55& [[S%3-0 G1 Grr!c eZdZdZdZdZdZdZejjdddgejjd e je jd d fe je jd d fe je j d d fe j"e j$dd fe j&e j(dd fe j*e j,dd fgdZejjde je je je j"e j&e j*gdZy)TestHashTableUnsortedctj}|jdd|jddk(sJt j t d5|jdddddt j t d5|jddddy#1swY?xYw#1swYyxYw)Nkeyr&z'key' has incorrect typer*z'val' has incorrect type)rStringHashTabler-r.r/r0 TypeError)r4tbls r(test_string_hashtable_set_item_signaturez>TestHashTableUnsorted.test_string_hashtable_set_item_signature s  " UA||E"a''' ]]9,F G  LLA  ]]9,F G  LLO      sB)B5)B25B>c htjddtjddddg}|j|t j }|j |tj|j|tjt|tjy) NgX9v@gQ @ir#r(r?writerq) rIr]nansetflagsrFloat64HashTablerYrcrdrbrJr,intpr4rQxsms rtest_lookup_nanz%TestHashTableUnsorted.test_lookup_nansv XXudBFFB1a8 9 ( #    !  ##AHHRL"))CG2772STrcd}tj|}|jdd|jddt|dk(sJy)Nrgrgr&)rrr-r,)r4rRrs rtest_add_signed_zerosz+TestHashTableUnsorted.test_add_signed_zerossE     " 3 41v{{rcdtjdtjddd}tjdtjddd}||k7sJ||k7sJtj}|j |d|j |dt |dk(sJy)Ndz=Qlrlr&)structunpackpackrrr-r,)r4NAN1NAN2rs rtest_add_different_nansz-TestHashTableUnsorted.test_add_different_nans)s}}S&++d4F"GHK}}S&++d4F"GHKt||t||    ! 4 41v{{rcbtjgdtj}|j|t j }|j |tj|j|tjt|tjy)N)r&r(lrqr) rIr]uint64rrUInt64HashTablerYrcrdrbrJr,rrs rtest_lookup_overflowz*TestHashTableUnsorted.test_lookup_overflow7si XXm299 5 ( #      ##AHHRL"))CG2772STrnvalsr z&htable, uniques, dtype, safely_resizesobjectFTfloat64rLint32rctjtd|}|j||}|}|j |d||dd|j }|j } |r|j ||ddn8tjtd5|j ||ddddd|j |j | k(sJy#1swY+xYw)Nrvrqrrrjzexternal reference.*r*) rIr]rPr get_labelsto_arrayshaper/r0 ValueError) r4rQhtableuniquesr6safely_resizesrrTtmpoldshapes rtest_vector_resizez(TestHashTableUnsorted.test_vector_resize?s&xxd 51 H % ) $v,B7 99    dGQ 3z1GH 8!!$B7 8 yyH$$$  8 8s &C%%C.rcvtjtjjdz}||y)Nr&) size_hint)rIiinfouint32max)r4rrs rtest_hashtable_large_sizehintz3TestHashTableUnsorted.test_hashtable_large_sizehintns)HHRYY'++a/ I&rN)rrrrrrrrr/rrrr@ ObjectVectorrr Float64VectorrH Int64VectorInt32HashTable Int32Vectorr UInt64Vectorrrr rrrrsM U  U [[Wq"g. [[0  ! !2??He D   (D A  ""2"2Iu E    ?    ?   (E B   !% /!%F [[                   ' 'rrc0eZdZdZdZdZdZdZdZy)TestPyObjectHashTableWithNansctd}td}||usJtj}|j|d|j |dk(sJyNrr%floatrr@r-r.r4nan1nan2r8s rtest_nan_floatz,TestPyObjectHashTableWithNans.test_nan_floatsUU|U|4$$& tR ~~d#r)))rcttdtd}ttdtd}||usJtj}|j |d|j |dk(sJyr)complexrrr@r-r.rs rtest_nan_complex_bothz3TestPyObjectHashTableWithNans.test_nan_complex_bothskuU|U5\2uU|U5\24$$& tR ~~d#r)))rcttdd}ttdd}ttdd}||usJtj}|j |d|j |dk(sJt jtd5}|j |dddtjt|k(sJy#1swY-xYw)Nrr&r(r%r* rrrr@r-r.r/r0r1r2valuer4rrotherr8errors rtest_nan_complex_realz3TestPyObjectHashTableWithNans.test_nan_complex_realsuU|Q'uU|Q'e a(4$$& tR ~~d#r))) ]]84 0 "E NN5 ! "5;;3u:--- " " CC$ctdtd}tdtd}tdtd}||usJtj}|j |d|j |dk(sJt jtd5}|j |dddtjt|k(sJy#1swY-xYw)Nr&rr(r%r*rrs rtest_nan_complex_imagz3TestPyObjectHashTableWithNans.test_nan_complex_imagsq%,'q%,'5<(4$$& tR ~~d#r))) ]]84 0 "E NN5 ! "5;;3u:--- " "rctdf}tdf}|d|dusJtj}|j|d|j |dk(sJy)Nrrr%rrs rtest_nan_in_tuplez/TestPyObjectHashTableWithNans.test_nan_in_tuplesae e Awd1g%%%$$& tR ~~d#r)))rcddtdfff}ddtdfff}d}tj}|j|d|j |dk(sJt j td5}|j |dddtjt|k(sJy#1swY-xYw)Nr&r(r)r&r(r%r*) rrr@r-r.r/r0r1r2rrs rtest_nan_in_nested_tuplez6TestPyObjectHashTableWithNans.test_nan_in_nested_tuplesAe '(Ae '($$& tR ~~d#r))) ]]84 0 "E NN5 ! "5;;3u:--- " "s :B88CN) rrrrrrrrrr rrrrs ** . .* .rrctdtdtdff}tdtdtdff}tj|tj|k(sJtj||sJy)Nr)rr object_hashobjects_are_equal)abs rtest_hash_equal_tuple_with_nansrsn ue eEl34A ue eEl34A >>! q 1 11 1  1 %% %rctj}tjgdtj}||j _|j|\}}tjgdtj}tjddgtj}tj||tj||y)N)r&r(rjr(r&rjrq)rr&rjr&rrjr&r() rrHrIr]rLrMrNget_labels_groupbyrrcrd)rQr8rTarrrx expected_arrexpected_uniques r!test_get_labels_groupby_for_Int64rs    E 88( 9D#DJJ**40KC880@Lhh1vRXX6O\28rcd}tj|jtjjtj}t 5t j}|j|t}|j}||k(sJ~tdk(sJ dddy#1swYyxYw)Nrvr) rIrJrKstr_object_rrrrYrr|)rRrSr8r}r~s r*test_tracemalloc_works_for_StringHashTablers A 99Q<  rww ' . .rzz :D  1""$ D!)+,,.w )+q000111s AB==Cct5tj}t}|j }||k(sJ~tdk(sJ dddy#1swYyxYwr)rrrrr|)r8r}r~s r*test_tracemalloc_for_empty_StringHashTablers^  1""$)+,,.w )+q000 111s AAA$rRr&rctj|jtjjtj}t j |}|jd}|j||jd}||k(sJt j }|j|||jdk(sJyr) rIrJrKrrrrrrY)rRrSrrrrs r$test_no_reallocation_StringHashTablers 99Q<  rww ' . .rzz :D++A.(224[AO$$T*&002;?M m ++ +$$&Kd# k335kB BB BrceZdZdZdZdZy)TestHashTableWithNansc,td}|}||vsJ|j|dt|dk(sJ||vsJ|j|dk(sJ|j|dt|dk(sJ||vsJ|j|dk(sJy)Nrr%r&r')rr-r,r.r3s rr9z/TestHashTableWithNans.test_get_set_contains_lense  E!!! ub!5zQ~~~~e$*** ub!5zQ~~~~e$***rcd}|}tj|tj|}|j|t |dk(sJ|j tj|dz k(sJy)Nrrqr&)rIfullrrYr,r.)r4r5r6rRr8rSs rr[z(TestHashTableWithNans.test_map_locations sa  wwq"&&. D!5zQ~~bff%Q...rcd}|}tj|tj|}|j|}tjtj |rt |dk(sJy)Nirqr&)rIr rrxrmisnanr,)r4r5r6rRr8rSrxs rryz!TestHashTableWithNans.test_uniques[  wwq"&&.d#vvbhhv&'CK1,<<<,sB r6c<eZdZdZdZdZdZdZdZdZ dZ y ) TestHelpFunctionsc^d}tj||zj|}tj|d}||j_t j|d\}}}tjtj||tj|dk(sJy)N+r#F) rIrJrKrwrMrNr value_countrcrdsortrm) r4r6rQrRrfvaluesrScounts_s rtest_value_countz"TestHelpFunctions.test_value_countHs IIaL1$,,U38Q'!) ..7fa ##BGGDM8<vvfk"""rcN|tjk(rtjdtjdgdz|}tj dtj }d|d<d|d<tj|d| \}}}t|d k(sJ|d k(sJy) Nz%mask not implemented for object dtyper&r#rq)r#TrF)rrr() rIrr/rAr]zerosbool_rrr,)r4r6rrrrSr na_counters rtest_value_count_maskz'TestHelpFunctions.test_value_count_maskQs BJJ  KK? @1#'/xxBHH-QQ#%>>&%d#K fj4yA~~Qrctjgdj|}||j_t j |d\}}}tj||tj|dk(sJy)Nr(r&r#r?rjrXFr&) rIr]rKrMrNrrrcrdrm)r4r6rQrrSrrs rtest_value_count_stablez)TestHelpFunctions.test_value_count_stable\sd1299%@!) ..7fa ##D&1vvfk"""rcJd}tjtj|j|d}||j_t j|}tj|tj}d|ddd<tj||y)Nrir#rqF) rIrwrJrKrMrNr duplicated ones_liker"rcrd)r4r6rQrRrrerfs rtest_duplicated_firstz'TestHelpFunctions.test_duplicated_firstdsu 299Q<..u5q9!) v&<<bhh71  ##FH5rc~d}tj|j|}tj|j|}||j_||j_t j ||}tj|tj}tj||y)Nrq) rIrJrKrMrNrismemberr+r"rcrd)r4r6rQrRrrrerfs rtest_ismember_yesz#TestHelpFunctions.test_ismember_yesms iil!!%(1$$U+& !) S&)<<bhh7 ##FH5rc@d}tj|j|}tj||zj|}tj||}tj |tj }tj||y)Nrq) rIrJrKrr/ zeros_liker"rcrd)r4r6rRrrrerfs rtest_ismember_noz"TestHelpFunctions.test_ismember_nowsp iil!!%())A,"**51S&)==rxx8 ##FH5rc.|tjtjfvrd}nd}tjtj|j |d}d|d<||j _tj|dd}|dk(sJy)N5ig+r#r%rF) rIrkrlrwrJrKrMrNrmode)r4r6rQrRrres r test_modezTestHelpFunctions.test_modesz RWWbhh' 'AA299Q<..u5q9q !) '*||rctjgdj|}||j_t j |dd}tj||y)Nr&Fr) rIr]rKrMrNrr7rcrd)r4r6rQrrSs rtest_mode_stablez"TestHelpFunctions.test_mode_stablesM1299%@!) wwvu%a( ##D&1rN) rrrrr$r(r,r0r4r8r:r rrrr4s*(# #666 2rrc"tjtjtjdg}tj dg|dzztj }tj|dd}|jt|k(sJy)NTr(rqFr) rDr>rIrNaTr]rrr7rr,)nullsrmodess rtest_modes_with_nansr?sf UUBFFBFFD )E XXtfuqy( ;F GGFE "1 %E ::U ## #rctjgdtj}||j_t j |}tjgdtj}tj||y)N)r&r(r(r(r&r?rq)rr&r#) rIr]rrMrNrunique_label_indicesrcrd)rQrSrerfs rtest_unique_label_indices_intprBsW 88&bgg 6D#DJJ  $ $T *Fxx 1H1rc6tjjdjdddj tj }t j|}tj|dd}tj||dd |tjjdjt|d <t j|}tj|dddd}tj||dy) Nr(r&iiT) return_indexF) check_dtyperjr) rIrandom default_rngintegersrKrrrArxrcrdchoicer,)rleftrights rtest_unique_label_indicesrLs a ))!Wg>EEbggNA " "1 %D IIad +A .Ee?57AbiiA%%c!fb12 " "1 %D IIad +A .qr 2Ee?rc*eZdZdZdZdZdZdZy)TestHelpFunctionsWithNansctjtjtjtjg|}tj|d\}}}t |dk(sJtj|d\}}}t |dk(r(tj tj|sJ|ddk(sJy)NrqTrFr&r?)rIr]rrrr,rmr )r4r6rrSrrs rrz*TestHelpFunctionsWithNans.test_value_counts2662662662%@..6fa4yA~~..7fa4yA~"&&$"888ayA~~rctjtjtjtjg|}tj|}tjgd}t j ||y)Nrq)FTT)rIr]rrr*rcrd)r4r6rrerfs rr,z/TestHelpFunctionsWithNans.test_duplicated_firstsR2662662662%@v&88/0 ##FH5rctjtjtjtjg|}tjtjtjg|}tj||}tjgdtj }t j||y)Nrq)TTTrIr]rrr/r"rcrdr4r6rrrerfs rr0z+TestHelpFunctionsWithNans.test_ismember_yesswhh/u=266266*%8S&)88.bhh? ##FH5rcbtjtjtjtjg|}tjdg|}tj||}tjgdtj }t j||y)Nrqr&)FFFrRrSs rr4z*TestHelpFunctionsWithNans.test_ismember_noslhh/u=1#U+S&)881B ##FH5rc&tjdtjtjtjg|}tj|dddk(sJtj tj|ddsJy)Nr%rqTrF)rIr]rrr7r )r4r6rs rr8z#TestHelpFunctionsWithNans.test_modesg2rvvrvvrvv6eDwwvt$Q'2---xx.q1222rN)rrrrr,r0r4r8r rrrNrNs6 663rrNc4dtdfdg}dtdfg}d}tjt|5t ||}dddt j ddgt j}tj|y#1swYGxYw) Nrr)rr&z+isin with argument that is not not a Seriesr*TFrq) rrcassert_produces_warning FutureWarningrrIr]r"rd)rcompsmsgrerfs rtest_ismember_tuple_with_nansr[sE%L!8 ,F5< !E 7C # #M =%fe$%xxu RXX6H1%%s BBcgd}ttd}ttj|t tj |}tjgdtj}tj||y)N)rr#g@y@rq)FTTT) listrPrrIr]rasarrayr"rcrd)rrYrerfs r+test_float_complex_int_are_equal_as_objectsr`sZ $F s E "((60"**U2C DFxx1BH1r)Hcollections.abcr contextlibrr^rr numpyrIr/ pandas._libsrrpandasrDpandas._testing_testingrcpandas.core.algorithmsrrrrrr@rComplex128HashTable complex128rHrLrrrrComplex64HashTable complex64rrUInt32HashTablerFloat32HashTablefloat32Int16HashTableint16UInt16HashTableuint16 Int8HashTablerkUInt8HashTablerl IntpHashTablerr!rrrrrrrPrrrrrrr?rBrLrNr[r`r rrrws]%%  ('y)9:0  rzz*  /  BHH%  RYY'  bjj)   -  BHH%  RYY'  bjj)  BHH%  RYY'  277#  BHH%  277#&OGOG'&OGdu'u'p:.:.z&9 11eAsm, C- C  bjj)  bjj)  /   - ===@               &G2G2'&G2T$2 @      3 3 3F 22r