gL i؂ NdZddlmZddlZddlZddlZddlmZddlm Z ddl m Z m Z m Z mZmZmZmZmZmZddlmZddlmZmZdefd Zej8ej:gd z d Zd ZdZ ejBjEdeejFdejHedfeejFdejJeejFdejHfeejFdejJedfeejFdejJeejFdejLfgdZ'ejBjEdgdejBjEdddgdZ(ejBjEdgdddggdZ)GddZ*ejBjWdejBjWd ejBjEd!gd"d#Z,d$Z-d%Z.d&Z/d'Z0d(Z1ejBjEd)d*ejdgd+Z3d,Z4d-Z5d.Z6Gd/d0Z7y)1zX The tests in this package are to ensure the proper resultant dtypes of set operations. )datetimeN)lib)find_common_type) CategoricalDtypeCategoricalIndexDatetimeTZDtypeIndex MultiIndex PeriodDtype RangeIndexSeries Timestamp)is_signed_integer_dtype pandas_dtypereturnc0t|t|k(S)zO Checks if the set of unique elements of arr1 and arr2 are equivalent. ) frozenset)arr1arr2s f/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/pandas/tests/indexes/test_setops.pyequal_contentsr!s T?io --)objectcategorydatetime64[ns]ztimedelta64[ns])paramsc|jS)z Dtypes that can be given to an Index with small positive integers. This means that for any dtype `x` in the params list, `Index([1, 2, 3], dtype=x)` is valid and gives the correct Index (sub-)class. )param)requests r'any_dtype_for_small_pos_integer_indexesr (s ==rc|j}|j}|j|j|jk(sJyN) sort_valuesuniondtype)indexidx1idx2s rtest_union_same_typesr);sA    D    D ::d  ! !TZZ // /rc|}|}|js>|js2|jjdk(r|jjdk(sJ|jsu|jsi|jjdk(rP|jjdk(r7tjj dt d}|j|t|j|jg}|rt|dk(r6|jjdk(st|tr |j}nCt|dk(r5|jjdk(st|tr |j}d}d} t|r t|sn |jjd k(r tj|jd r9|jjd k(r'tj|jd st}nt|jtrt|jt s4t|jtrYt|jt r?t"}d } tjj d t$d}|j|t&j(|j|jfv} t+|j} t+|j} |j-}|j-}t/j0|| 5|j3|} |j3|}ddd| rM| s| rI jt'jdk(sJjt'jdk(sJy j|k(sJj|k(sJy#1swY{xYw)NibzGH#44000 True==1F)reasonraisesstrictrOz'<' not supported betweenciufczPeriodDtype\[B\] is deprecatedz"Warning not produced on all buildsmatch) is_uniquer%kindpytestmarkxfail ValueError applymarkerrlen isinstancer r is_np_dtypeRuntimeWarningr r FutureWarningAssertionErrornpuint64rr#tmassert_produces_warningr$) index_flat index_flat2rusing_infer_stringr'r(r8 common_dtypewarnmsg any_uint64 idx1_signed idx2_signedres1res2s rtest_union_different_typesrQCs D D NN JJOOs " JJOOs " NN JJOOs " JJOOs "{{  %j!  D!#TZZ$<=L t9>tzz#5D*9U::L Y!^ JJOOs "jz&B::L D %C t9CI **//S #//$**f*M 3 F(K4::{+ 4::GW0X4::{+ 4::GW0X/{{  7!!  D!tzz4::66J)$**5K)$**5K    D    D # #D 4 zz$zz$ {kzzRXXc]***zzRXXc]***zz\)))zz\)))  s ?#OO%z idx1,idx2r%c|j|}|j|}|j|j|jfvsJ|j|j|jfvsJyr")r$r%)r'r(rOrPs r"test_compatible_inconsistent_pairsrUs^ ::d D ::d D ::$**djj1 11 1 ::$**djj1 11 1rzleft, right, expected))int64rVrV)rVrCr)rVfloat64rW)rCrWrW)rCrCrC)rWrWrW)rrVr)rrCr)rrWr)datetime64[ns, CET]rVr)rXrCr)rXrWr) Period[D]rVr)rYrCr)rYrWrnames)foor[r[)r[barNc*t|}t|}tg||d}tg||d}|j|}|j|k(sJ|j|dk(sJ|j |}|j|dk(sJy)Nr)r%name)rr r$r%r^ intersection)leftrightexpectedrZar,results rtest_union_dtypesrgs,  D  E b58,A bE!H-A WWQZF <<8 ## # ;;%( "" "^^A F ;;%( "" "rvaluesr_r`r`rjct|}tddg}|j|}tdg}tj||y)Nrj)r rarDassert_index_equal)rhrer,rfrds rtest_intersection_duplicatesrmsC f A q!f A ^^A FaSzH&(+rceZdZejj dddgejj dgddZejjddZejjdd Z ejjdd Z ejjdd Z ejj d gd dZ ejj d gd dZ ejj d gd dZejj d gd dZejjddZdZdZdZy) TestSetOpscaseg?xxxmethodrar$ differencesymmetric_differencecd}tjt|5t|||dddy#1swYyxYw)Nz!Input must be Index or array-liker3)r7r. TypeErrorgetattr)selfrprrr&rKs rtest_set_ops_error_casesz#TestSetOps.test_set_ops_error_casess= 2 ]]9C 0 ) "GE6 "4 ( ) ) )s :A3ignore:PeriodDtype\[B\] is deprecated:FutureWarningct|tr+tjdt |j |ddj }|ddj }|j|}tj||t|jtry|j|j|jg}|D]!}|j|}t||r!Jt|t r:d}tj"t$|5|jgddddyy#1swYyxYw)NNot relevant for rRrj.other must be a MultiIndex or a list of tuplesr3r_r`rj)r=rr7skiptype__name__uniquerarDrlr%rto_numpy to_seriesto_listrr r.rw) ryr&firstsecond intersectcasesrprfrKs rtest_intersection_basez!TestSetOps.test_intersection_bases' e- . KK+DK,@,@+AB Cbq   "r!!#&&v.  i0 ekk? 3 "F$4$4$68HI 2D''-F!&&1 11 2 eZ (BCy4 .""9- . . ) . .s &EE cN|j}|dd}|dd}|}|j|}tj|j |j t |j try|j|j|jg}|D]!}|j|}t||r!Jt |tr:d} tjt| 5|jgddddyy#1swYyxYw)NrjrRr~r3r)rr$rDrlr#r=r%rrrrrr r7r.rw) ryr&rr everythingr$rrprfrKs rtest_union_basezTestSetOps.test_union_bases ab r  F# e//1:3I3I3KL ekk? 3 "F$4$4$68HI 6D[[&F!&*5 55 6 eZ (BCy4 ' I& ' ' ) ' 's =DD$cH|dd}|dd}|jdk(r$t|jt|}nt|trg}n|dd}|j||}t ||sJ|j |j|jg}|D]"}|j||}t ||r"Jt|tr;d} tjt| 5|jgd|dddyy#1swYyxYw)Nr`booleanr~r3r) inferred_typesetrtr=rrrrrr r7r.rw) rysortr&rranswerrfrrprKs rtest_difference_basezTestSetOps.test_difference_bases!ab r   ) +Z**3v;7F / 0F12YF!!&$/ff---"F$4$4$68HI 2D%%dD1F!&&1 11 2 eZ (BCy4 2  D1 2 2 ) 2 2s 9DD!c|rM|jdk(r>|jdk(r/|jtjj dt |tr+tjdt|jt|dkrtjd|d|d dvs |d |dd vrtjd |d d}|dd }|dd g}|j|}tj|j|j|j!|j#|j%g}|D]!} |j| }t'||r!Jt |t(r:d } tj*t,| 5|jgddddyy#1swYyxYw)NrstringzTODO: infer_string)r-r}r`zToo few values for testrr_z+Index values no not satisfy test condition.r~r3r)r%rr;r7r8r9r=rrrrr<rurDrlr#rrrrr r.rw) ryr&rHrrrrrfrrprKs rtest_symmetric_differencez$TestSetOps.test_symmetric_difference.s  x'##x/    1 19M 1 N O e- . KK+DK,@,@+AB C u:> KK1 2 8uQRy E"Is$; KKE Fab s2w++F3 f002F4F4F4HI"F$4$4$68HI 2D//5F!&&1 11 2 eZ (BCy4 6**95 6 6 ) 6 6s -G  Gzfname, sname, expected_name)ArrrBN)rNNNrN)NNNcl|js|j}n|}|jj|}|jj|}|j |}|jj|} t j || |jj|}|j|j|}|j |}|jj|} t j || |j|j|}|jj|}|j |}|jj|} t j || |j|j|}|j|j|}|j |}|j|j|} t j || yr")r5rcopy set_namesr$rDrldrop ryrFfnamesname expected_namer&rrr$rds rtest_corner_unionzTestSetOps.test_corner_unionPs##%%'EE &&u-''. F#::<))-8 eX. &&u-E",,U3 F#::<))-8 eX. 5!++E2''. F#::<))-8 eX. 5!++E2E",,U3 F#::e$..}= eX.rcP|js|j}n|}|jj|}|ddj|}|j |j }|j|j } t j|| yNr_)r5rrrr$r#rDrlrs rtest_union_unequalzTestSetOps.test_union_unequals##%%'EE &&u-qr$$U+ F#//1??=1==? eX.rcp|js|j}n|}|jj|}|jj|}|j |}|jj|} t j || |jj|}|j|j|}|j |}|j|j|} t j || |j|j|}|jj|}|j |}|j|j|} t j || |j|j|}|j|j|}|j |}|j|j|} t j || yr")r5rrrrarDrlr ryrFrrrr&rrrrds rtest_corner_intersectz TestSetOps.test_corner_intersects##%%'EE &&u-''.&&v. ::<))-8 i2 &&u-E",,U3&&v. ::e$..}= i2 5!++E2''.&&v. ::e$..}= i2 5!++E2E",,U3&&v. ::e$..}= i2rcV|js|j}n|}|jj|}|ddj|}|j |j }|ddj|j } t j|| yr)r5rrrrar#rDrlrs rtest_intersect_unequalz!TestSetOps.test_intersect_unequals##%%'EE &&u-qr$$U+&&v.::< 9&&}5AAC i2rct|tr.|jtt |j }n|jd}t j|}|j|}|j|jk(sJ|j|dd}|j|jk(sJ|ddj|}|j|jk(sJy)Nr[r) r=r renamelistrangenlevelsrBasarrayrar^)ryr&otherrfs r.test_intersection_name_retention_with_namelessz9TestSetOps.test_intersection_name_retention_with_namelesss eZ (LLeEMM&:!;3N3Ns3S TT T   N + 5 55 5rc<|}tgd|}tgd|}tgd|}t|tr tgd}|j|}t j |||j|d}t j ||y)NrirS)rjrjr)r_r`r`rjrjrFrr r=rr$rDrlr r%rer,rdrfs r0test_union_duplicate_index_subsets_of_each_otherr?s 4E l%(A iu%A'u5H!%&+, WWQZF&(+ WWQUW #F&(+rc|}tgd|}tddg|}tgd|}|j|}tj|||j|}tj||y)N)r_rrrSrr_rrr_r r$rDrlrs r1test_union_with_duplicate_index_and_non_monotonicrPsk 4E iu%A q!fE"AYe,H WWQZF&(+ WWQZF&(+rctgd}tgd}tgd}|j|d}tj||y)Nri)10r)r_r`r`rjrrrFrr)rer,rdrfs r+test_union_duplicate_index_different_dtypesr`sC lA oA01H WWQUW #F&(+rctgd}tgd}|j|}tgd}tj||y)Nrrr)rer,rfrds r(test_union_same_value_duplicated_in_bothris= iA lA WWQZF\"H&(+rdupr_cttjdddg}ttj|ddg}|j|d}ttj|dddg}t j ||y)Nr_r`Frg?@)r rBnanr$rDrl)rrer,rfrds rtest_union_nan_in_bothrrsm rvvq!Q A rvvsAq!"A WWQUW #Fbffc3S12H&(+rctddd}tddd}|j|d}tgd}tj||y) Nr_d2rjTr)r_r "%(+.17=CIOU[a)r r$r rDrl)r'r(rfrds rtest_union_rangeindex_sort_truer|sQ aa D aQ D ZZ4Z (F H:&(+rc8|}tgd|}tgd|}tgd|}t|tr tgd}|j|}t j |||j|}t j ||y)N)r_rr`rSrrrrs rr_r`r?Trz<'<' not supported between instances of 'Timestamp' and 'int'r3)r rr@rAr7r.rw)ryr<rer,rBrKs r!test_difference_incomparable_truez4TestSetOpsUnsorted.test_difference_incomparable_truesq 1i'+ , 1i'+ ,  " "614 8L ]]9C 0  qE   s $ A66A?ctjtgdgd}tjddg}|j||}tjgd}||j }t j ||y)N)r[r\bazr)r[r_r\rjr))r\r`)rGrjrH)r from_tuplesziprur#rDrl)ryrrrrfrds rtest_symmetric_difference_miz/TestSetOpsUnsorted.test_symmetric_difference_misx'',A9(MN''Z(@A,,V$,?))*NO <++-H fh/rzindex2,expectedrr_)r@rrLrMctdtjddg}|j||}||j }t j ||y)Nr_r`rjr)r rBrrur#rDrl)ryrrdrrrfs r!test_symmetric_difference_missingz4TestSetOpsUnsorted.test_symmetric_difference_missingsS2661a(),,V$,? <++-H fh/rc tgdd}tjgd}tddgd}|j||}|dvrt j ||n$t j |j ||jdk(sJ|j|d | }d |_|dvrt j ||n$t j |j ||jd k(sJy) N)r_r`rjrrr)r`rjrrRr_rRr)NTnew_name) result_namer)r rBarrayrurDrlr#r^)ryrrrrdrfs r#test_symmetric_difference_non_indexz6TestSetOpsUnsorted.test_symmetric_difference_non_indexs|(3,'!Qh/,,V$,? <   ! !&( 3  ! !&"4"4"6 A{{h&&&,,VRV,W" <   ! !&( 3  ! !&"4"4"6 A{{j(((rctgd|}tgd|}|j|}tgd|}tj||y)NrrSrrr)ryany_numeric_ea_and_arrow_dtyperr(rfrds rtest_union_ea_dtypesz'TestSetOpsUnsorted.test_union_ea_dtypessFI%CDY&DE40NO fh/rctdg|}tdg|}|j|}tddg|}tj||y)NrerSr,r)ryany_string_dtyper'r(rfrds rtest_union_string_arrayz*TestSetOpsUnsorted.test_union_string_arraysOcU"23cU"23D!#s+;< fh/rN) rrrrr7r8rrr rr!r)r,rBrSr rr/r1r3r5r7r9r;rCrErKrrOrTrWrZrrrr r s 0 [[Wxj4@ A  [[ ? 14 8 ? 15 9 ? #U +  0 0 [[Wxj4@ [[.>/ A //  [[Wxj4@ 5A 5 [[Wrxx&>? [[Wxj4@ 6A@ 6 [[Wxj4@ .A . [[Wxj4@ [[3lDT5UV+WA+(00 [[Wxj4@)A) [[Wxj4@ 0A 0 [[X 6L'MN0O0$ [[X 6L'MNO0 [[ Aq"&&> "E/$: ; Aq6]E2663S"9: ; 00)&00rr )8__doc__rr@numpyrBr7 pandas._libsrpandas.core.dtypes.castrpandasrrrr r r r r rpandas._testing_testingrDpandas.api.typesrrboolrfixtureALL_REAL_NUMPY_DTYPESr r)rQr8rarangerVrWrCrUrgrmrorrrrrrrrrrrr r rrrrgs 4    .$. # # 0N*b yryy|288 ,jm< yryy|2:: .ibiil"((0ST yryy|2:: . 1 > yryy|2:: .ibiil"))0TU 22(#8:N"OP #Q)* #L1a :,;,z7z7z UVRS M9TW 98 6," , ,,BFF ,,-,",J,$ ,L0L0r