gL i!6R ddlZddlZddlZddlmZmZmZmZm Z m Z ddl m Z ddlmZddlmZmZej&egddzdegd dzd egd dzd egd dzegddzeej(ddeej(dddee ddgdZej&ddgdZdZdZej2j5ddegdZej2j5dd d!ej:dgd"Zd#Zd$Z ej2j5dd d!ej:dgd%Z!d&Z"d'Z#ej2j5d(egdegd)ed*d+ejHgegd)gd,-egd ed.ejHd/gegd0egdeeegd gdd1eeejJd2ejHegd3gd4egd5eej(dd d6ee&d ej(d7d -ee&d ej(d7d -ee d7d8d9:eej(dddgd;Z'ej2j5d(egdegd)ed*d+ejHgegd)gd,-egd ed.ejHd/gegd0egdegd gdd1eejJd2ejHegd3gd4egd5eej(dd d6ee&d ej(d7d -ee&d ej(d7d -ee d7d8d9:eej(dddgd<Z(ej2j5d(egdegde d=d>e d7d9d>?ejRe&d gd@ej(dd>gejRejTe+dAe&dggdBZ,dCZ-dDZ.ej2j5d(egdEegdFeggdGZ/ej2j5dHegdIegdJeej(ddKgej2j5dLddgdMZ0dNZ1dOZ2dPZ3dQZ4dRZ5dSZ6dTZ7dUZ8ej2j5dVe&dWej2j5dXddYgdZZ9d[Z:ej2j5d\e;d]e;d^gd_d`ggdadbgdcddgggdeZy)hN) DataFrameIndex MultiIndexSeries period_rangetimedelta_range) hash_tuples) hash_arrayhash_pandas_objectrint32dtype)Ng@g @float32)abccategory)def)TFT20130101 )periodsz US/Eastern)rtz2000)paramsc|jSNparamrequests d/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/pandas/tests/util/test_hashing.pyseriesr(s ==TFc|jSr"r#r%s r'indexr+%s ==r)cttgd}ttjgddgd}t j ||y)Nfoobarbaz)l7* l6jzdln*5uint64rr+)r rrnparraytmassert_series_equalresultexpecteds r'test_consistencyr:*sG &; < =F  J $ H68,r)cl|j}tjt|t|yr")valuesr5assert_numpy_array_equalr )r(arrs r'test_hash_arrayr?8s# --C 3CAr)rUcttjgd}ttjgd|}tj||y)N)34All)rrDr)r r3r4r5r=)rresult1result2s r'test_hash_array_mixedrH=s;"345G-u=>G1r)valr.c~d}tjt|5t|dddy#1swYyxYw)Nzmust pass a ndarray-likematch)pytestraises TypeErrorr rImsgs r'test_hash_array_errorsrSEs1 $C y ,3 3<ctjdgd}d}tjt|5t |dddy#1swYyxYw)Nz2018-10-28 01:20:00z Europe/Berlin)rzUse hash_pandas_object insteadrL)pd DatetimeIndexrNrOrPr )objrRs r'test_hash_array_index_exceptionrYLsG  12 GC *C y ,3s A  Ac@gd}t|}ttj|j}t j ||djddg}tjt|5t|ddddy#1swYyxYw)N))r one)r two)rr[|zobject is not iterablez&zip argument #1 must support iterationrLr) r r r from_tuplesr<r5r=joinrNrOrP)tuplesr8r9rRs r'test_hash_tuplesraUs 1F  F!*"8"8"@AHHH1 ((,.VW XC y ,F1Is <BBc~d}tjt|5t|dddy#1swYyxYw)Nz'must be convertible to a list-of-tuplesrL)rNrOrPr rQs r'test_hash_tuples_errrcbs2 3C y ,CrTctjgd}|jdusJt|}|jdusJy)N))vi)re)3)frgT)rr^ is_uniquer )mir8s r'test_multiindex_uniquerlisC    N OB <<4    #F   t ## #r)ctgdgdggdgdgddg}|j}|j|sJt|jjt|jsJy)N)rrrr )rr rr)rrrr col1col2)levelscodesnames)r_sort_levels_monotonicequalsrr<)rkreconss r'test_multiindex_objectsrvqsn +\*v B  & & (F 99V     " "5#7 88 8r)rX)??g @rwrx)rxg?gffffff @r2rr)rNrxy) rE)rwg@g@g@)r}rwr}rwr})foo1foo2foo3foo4foo5)ABCDz 2020-01-01r|r)rfreqcdt||}t||}tj||yNr2r r5r6rXr+rrs r'test_hash_pandas_objectr~s,< 3e,A3e,A1a r)cbt|d}t|d}||k(jrJyNTr2Fr allrXrrs r',test_hash_pandas_object_diff_index_non_emptyrs18 3d+A3e,AQ||~ ~r)z1 dayr)rrr-aabccdt||}t||}tj||yrrrs r'test_hash_pandas_indexrs, 3e,A3e,A1a r)cdt||}t||}tj||yrr)r(r+rrs r'test_hash_pandas_seriesrs*6/A6/A1a r)cbt|d}t|d}||k(jrJyrr)r(rrs r'"test_hash_pandas_series_diff_indexrs/6.A6/AQ||~ ~r)float64objectcdt||}t||}tj||yrrrs r'test_hash_pandas_empty_objectrs, 3e,A3e,A1a r)s1)rrrr)iii irE categorizecX|jdjj|}|jjtt |}t ||}t ||}t ||}t j||t j||y)Nrr)astypecatset_categorieslistreversedr r5r6)rrs2s3h1h2h3s r'test_categorical_consistencyrs :  " " 1 1" 5B   tHRL1 2B B: 6B B: 6B B: 6B2r"2r"r)c<tjjgdtjddd}t |d}tjjd d gtj dg}t |d}|d |vsJ|d |vsJy) N)rr rrrEz 2012-01-01rJr)rname) categoriesFrrrr )rV Categorical from_codes date_ranger Timestamp)rr9r8s r'%test_categorical_with_nan_consistencyrs !! lATW(X " A!.H !!2q'r||L7Q6R!SA e ,F !9  !9  r)cd}tjt|5tt j ddddy#1swYyxYw)NzUnexpected type for hashingrLr)rNrOrPr rVrrRs r'test_pandas_errorsrs; 'C y ,52<< 34555s AActtd}t|d}t|d}||k7jsJy)Nabc9876543210123456hash_key9876543210123465)rrr rrs r'test_hash_keysrs> e C3);>r)cttjdtdd}t |d}t |d}||k7j sJy)Nrrryrrr)rr3arangerr rrs r'test_df_hash_keysr&sK "))A,T%[9 :C3);>r)cttjdtdd}t |d}t |d}|d|dk(sJ|d|dk7sJ|d |d k(sJy) Nrza+cryutf8)encodingutf7rr r)rr3rrr rs r'test_df_encodingr1su "))A,T%[9 :C30A30A Q41Q4<< Q41Q4<< Q41Q4<GG./ryyAI3F1QKv>GG./ryyAI3  68& AF 97MTU(VWr)zdata, result_data12l.C7j|l93B )r )rlpH-\h+l1"Rkctd|i}t|}t|tj}t j ||y)Ndatar)rr rr3r1r5r6)r result_datadfr8r9s r'test_hash_with_tuplerws< FD> "B  #Fk3H68,r)ctddgfdifgi}tjtd5t |dddy#1swYyxYw)Nrr rzunhashable type: 'list'rL)rrNrOrPr )df3s r'test_hashable_tuple_argsrsa      C y(A B 3   s AA ctjjtddgd}tddgd}t j ||y)NrrrlA!M|lZ4^ r1r)rVutilr rr5r6r7s r'test_hash_object_none_keyrsG WW ' 'Sz(:T ' JF*,@ARH68,r))?numpyr3rNpandasrVrrrrrrpandas._testing_testingr5pandas.core.util.hashingr pandas.utilr r fixturerr(r+r:r?mark parametrizerrHrrSrYrarcrlrvnanfullrrr from_productCategoricalIndexrrrrrrrrrrrrrrrrtuplerrrr)r'rsg 0 y1}G,!#95"*5"#"Q&'}r}}Z34}r}}Z|DEvq12   e}%& -B 3-0212E<2<< +C DEF  E<2<< +C DEF $ 9 yS"&&!"o6RVVS!" "#Vi89 '"'''266*+..C6R"R]]:q9    %(-"-- a"HIuQx}r}}\1EF|L"3?@}r}}Z|DE1:!;:!  yS"&&!"o6RVVS!" "#i89'"'''266*+..C6R"R]]:q9    %(-"-- a"HIuQx}r}}\1EF|L"3?@}r}}Z|DE-676   i !"+\Q7  1X,mbmmJPQ.R S  !4!4!4T&\!BE!H MN  ! ! !   F2Y '()CU2Y O!!#$'(}r}}Q*+e}5#6#" !5  @!!%(+1a&)&*,&X, *eCj !$8:M#NO +-@AB-- *-r)