gL i7RddlZddlZddlZddlZddlmZddlmZ ddl m Z m Z m Z ddlmZej"dZej"dZej"dZej"dZej"d Zej"d Zej"d Zej"d Zej"d Zej"dZej"dZej:j=ej> dGddZ y)N)option_context) DataFrameIndexSeries) expressionscttjjdj dt ddS)Ni'ABCDfloat64columnsdtypernprandom default_rngstandard_normallistc/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/pandas/tests/test_expressions.py_framers6  a 00<V  rcttjjdj dt ddS)Nr )dr r r rrrrr_frame2rs6  a 00:V  rct|dj|djd|djd|djddS NABfloat32Cint64Dint32)r r!r#r%rcopyastypers r_mixedr+#sZ !!###I.##G,##G,   rct|dj|djd|djd|djddSrr'rs r_mixed2r./sZ ""$$$Y/$$W-$$W-   rcttjjdj dddt ddS) Nr rr sizer r$rrrrrintegersrrrr_integerr5;s=  a ))!Sz)BV  rc|tjjdjddtj|zS)Nr rr1)rrrr4shape)r5s r_integer_integersr8Ds9 bii++A.771288HCU7V VVrcttjjdj dddt ddS) Nr r0r)er r1r r$rr3rrr _integer2r;Js=  a ))!Sx)@V  rc<|djjSNr valuesr(r*s r_arrayr@S #;   " " $$rc<|djjSr=r>r-s r_array2rCX 3<   # # %%rc<|djjSNr%r>)r+s r _array_mixedrG]rArc<|djjSrFr>)r.s r _array_mixed2rIbrDrznot using numexpr)reasonc eZdZededefdZejjdgdejjdddgejjdgd d Z ejjdgdejjdddgd Z d Z ejjd ejjdgdejjdddgdZejjdddgdZejjdddgejjdgddZejjdgddZejjdgddZejjdegdgdggd eddgddggd!d"g fegd#gd$gd%ggd eddgddgddggd!d"g fgd&Zejjdd ejjd'd(d)Zejjd*gd+ejjd,eeegejjd-d.d/gd0Zy1)2TestExpressionsflexopnamec|r fd}|_ntt}tdd5|||}dddt j |||}|fS#1swY*xYw)Nc(t||S)N)getattr)xyrNs rz)TestExpressions.call_op..ls0ga03rcompute.use_numexprF)__name__rQoperatorrexprget_test_result)dfotherrMrNopexpectedresults ` rcall_opzTestExpressions.call_opism 3B BK6*B 15 9 %"e}H % Bx  % %s A  A)fixture)r5r;r8rrr+r.TFarith)addsubmulmodtruedivfloordivcx|j|}|j5}|jtdd|j ||||\}} |dk(r(t d| j jDsJtj| |tt|jD]q} |j |jdd| f|jdd| f||\}} |dk(r| jjdk(sJtj| |s dddy#1swYyxYw)N _MIN_ELEMENTSrrfc3:K|]}|jdk(yw)fN)kind).0rRs r z6TestExpressions.test_run_arithmetic..sIQ166S=Isrk)getfixturevaluecontextsetattrrXr_alldtypesr?tm assert_equalrangelenrilocrrl) selfrequestr`rMra monkeypatchrZmr^r]is rtest_run_arithmeticz#TestExpressions.test_run_arithmeticys" $ $W -  " 2a IIdOQ /#||BD%@ FH !I(//2H2HIIII OOHf -3rzz?+ 2#'<<GGAqDM2771a4=$$ I%#>>..#555&1  2 2 2 2s DD00D9c|j|}|j}tdd5|jdz}ddd|j 5} | j t ddt jd|j|||\} } t j} | sJdtj| | tt|jD]=} |jdd| fdz}|j|jdd| f||d ? dddy#1swYxYw#1swYyxYw) z tests solely that the result is the same whether or not numexpr is enabled. Need to test whether the function does the correct thing elsewhere. rUFr0NrirTz Did not use numexpr as expected.rb)rorVrr(rprqrX set_test_moder_rYrtrurvrwrrx)ryrzr`rM comparison_opr{rZrar[r|r^r] used_numexprr} binary_comps rtest_run_binaryzTestExpressions.test_run_binarys1& $ $W -&& 15 9 "GGIME " " Fa IIdOQ /   t $#||BtUC FH//1L C!C C< OOHf -3rzz?+ F#jjA.2  RWWQT]KuE F F F " " F FsD5CE5D>E ctjjdjd}tjjdjd}t j t jd||d}|rJt j t jd||d}|rJt j t jd||d}|sJy)Nr iABrevaluate+)rrrrrX_can_use_numexprrWrb)ryarrayarray2r^s r test_invalidzTestExpressions.test_invalids %%a(88C&&q)99#>&&x||T5%Tz&&x||S&&*Uz&&x||S%T vrz2ignore:invalid value encountered in:RuntimeWarningz opname,op_str))rbr)rc-)rd*)rf/)pow**zleft_fix,right_fix)r@rC)rGrIc$|j|}|j|}d}tdd5|||||dddtjd|||||tj|||||y#1swYIxYw)Nc"|dk(rtj|}tt|}t j |||d}t j |||d}t j||t j||||d}|rJy)NrT use_numexprFr) rabsrQrWrXrrtassert_numpy_array_equalr)leftrightrNop_strr\r^r]s rtestitz/TestExpressions.test_binary_ops..testits~vvd|6*B]]2tTtDF}}RtGH  ' ' 9**2vueZPF :vrrUFr0rorrXset_numexpr_threads) ryrzrNrleft_fix right_fixrrrs rtest_binary_opszTestExpressions.test_binary_opss&&x0'' 2 15 9 0 4 / 0   #tUFF+   "tUFF+  0 0s BBc|j||j|fd}tdd5|dddtjd|tj|y#1swYAxYw)Ncdz}dz}}tj||d}tj||d}tj||tj|||d}|rJy)Nr0TrFr)rXrrtrr)f12f22r\r^r]rrrs rrz3TestExpressions.test_comparison_ops..testitst(C!)CB]]2tSdCF}}RsFH  ' ' 9**2r5#zJF :vrrUFr0r)ryrzrrrrrrs ` @@rtest_comparison_opsz#TestExpressions.test_comparison_opssw&&x0'' 2 15 9  H    #   "   s BB cond)rrr+r.c|j|fd}tdd5|dddtjd|tj|y#1swYAxYw)Ncjtjjtj}|j t j |jjdz}tj |jjdz}tj||y)N)rr0) remptyr7bool_fillrXwherer?rtr)cr^r]rrZs rrz*TestExpressions.test_where..testitsr2A FF4LZZ299bii!mYY**1-44R83>  6("CD Hf %))C. ]].g >  b"I ]].g >  bddBDDM ]].g >  bddDM ]].g >  eRTTN ]].g >  eRL ]].g >  b$K              sH3 G G!G(G4 H< H GG%(G14G=H  H))rrb)rrd)rrccd}ttjjdj|dkDtjjdj|dkDd}dddd}d d d d }t t |}t t |||}|d k(ryt jdd5t j5|||} |||} t j| | dddt j5||j|j} ||j|j} t j| | dddt j5||jd} ||jd} t j| | dddt j5|d|j} |d|j} t j| | dddt j5|d|} |d|} t j| | dddt j5||d} ||d} t j| | ddddddy#1swYxYw#1swY\xYw#1swYxYw#1swYxYw#1swYxYw#1swYQxYw#1swYyxYw)Nrr rr|&^)rrror_and_xor)rrrrT) min_elementsF) rrrrrQrWrtrassert_produces_warningassert_frame_equalrrassert_series_equal) ryrrNnrZsubs sub_funcsrkferes r test_bool_ops_warn_on_arithmeticz0TestExpressions.test_bool_ops_warn_on_arithmeticDs  YY**1-44Q7#=YY**1-44Q7#=  s-f59 Hf % Xyf6 7 S=  ^^Dq 1 ,++- ,b"Ir2J%%a+ , ++- -bddBDDMrttRTTN&&q!, - ++- -bddDMrttTN&&q!, - ++- -eRTTNubddO&&q!, - ++- ,eRLubM%%a+ , ++- ,b$Kr4L%%a+ ,5 , , , ,  - -  - -  - -  , ,  , ,5 , ,s>L)J6<LAK)L=KL=KL7)K) L<)K5%L6K ;LK LK LK& "L)K2 .L5K> :LL ztest_input,expected)rr0r aa)rrrr)rrr)rr r)rr r r)rr0r0bbc|jddddgfj|jddddgf}tj||y)Nrr)locnertr)ry test_inputr]r^s rtest_bool_ops_column_name_dtypez/TestExpressions.test_bool_ops_column_name_dtypeysH.C> 1255jnnQgEV6WX fh/raxis)rr0c|}|dk(r|jdddf}n|jdddf}|j5}|jtddt ||}t dd5|||} ddd|||} t j | dddy#1swY2xYw#1swYyxYw)Nr0rrirUF)r)rxrprqrXrQrrtr) ryrrarr{rZr[r|op_funcr]r^s rtest_frame_series_axisz&TestExpressions.test_frame_series_axiss 19GGAqDMEGGAqDME  " 4a IIdOQ /b%(G 5u= 5"5t4 5U.F  ! !(F 3 4 4  5 5 4 4s#0B7/ B+:(B7+B4 0B77Cr\)__mod____rmod__ __floordiv__ __rfloordiv__boxscalarrc*|j5}|jtddtjdd}||}t ||}||} t dd5||} dddtj|  t|D]H\} } |tk(r| j| df} n| | } t t| ||} | | k(rHJ dddy#1swYxYw#t$rYlwxYw#1swYyxYw)Nriri2rUF)rprqrXrarangerQrrtru enumeraterrxintZeroDivisionError)ryr\rrr{r|dataobjmethodr^r]r}elem scalar_results r,test_python_semantics_with_numexpr_installedz * OOFH -%T? 54)#$*KK1$5M$*1IM55ws4y"5f=H)H444 5 5 5 * *)+ 5 5sOAD ' C.0AD C:D !D .C7 3D : DD DD  DN)rV __module__ __qualname__ staticmethodboolstrr_rmark parametrizer~rrfilterwarningsrrrrrrrrrrrrrrrLrLgs[    s     [[   [[VdE]3 [[D24  2$ [[   [[VdE]3F4 F2  [[ TU [[S [[46WX, V,4 [[46WX2 [[VdE]3 [[Y(RST4$ [[N< [[C0,0,d [[$o6@XE5>E5>:S'NS  $oG4U^eU^eU^D 'N  *0+*0  [[D [[VV,4-4( [[   [[UY$>? [[XAw/50@5rrL)!rWrnumpyrrpandasrpandas._testing_testingrtpandas.core.apirrrpandas.core.computationrrXr`rrr+r.r5r8r;r@rCrGrIrskipif USE_NUMEXPRrLrrrrsk  ! 8WW %%&&%%&&(((1DEj5j5Fj5r