K iYF ddlZddlZddlmZddlmZ ddlmZm Z m Z m Z m Z m Z mZmZ ddlmZddlmZej*j,Zej0dZdZdZdZd Zd Zej*j?d ej@d gd iejBd gd igdZ"dZ#dZ$dZ%dZ&dZ'dZ(dZ)ej*j$dZ*y#e$rYwxYw#e$rdZYwxYw)N)field) DeclarationTableSourceNodeOptionsFilterNodeOptionsProjectNodeOptionsAggregateNodeOptionsOrderByNodeOptionsHashJoinNodeOptionsAsofJoinNodeOptions)ScanNodeOptionscntjgdgdd}t|}td|}|S)Nab table_sourceoptions)patablerr)r table_optsrs ^/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/pyarrow/tests/test_acero.pyrr/s1 HH995 6E'.J~zBL ctjgdgdd}t|}tt ddkD}t j t d|t d|g}|j}|j|jdd sJt d|}t d||g }|j}|j|jdd sJy) Nrrrrrrrfilterrrinputs) rrrrrr from_sequenceto_tableequalsslice)rr filter_optsdeclresultrfiltereds rtest_declarationr-7s HH995 6E'.J#E#JN3K  $ $NJ7Hk2& D]]_F ==Q* ++ +~zBL8[,PH    F ==Q* ++ +r c@dt|vsJdt|vsJy)NTableSourceNode)strrepr)rs rtest_declaration_reprr2Ls( L 1 11 1 \ 2 22 2r ch|j5}|jtjdtjfdtjfgk(sJ|j }dddtj gdgdd}j |sJy#1swY9xYw)Nrrrrr) to_readerschemarint64read_allrr')rreaderr+expecteds rtest_declaration_to_readerr:Rs    !#V}} C+O*P QQQQ"#xxii89H == "" " ##s AB((B1c ztjt5tt j t j gdgdgdddtd}td|}tjtd5|j}dddy#1swYUxYw#1swYyxYw)Nrrrz0TableSourceNode requires table which is not nullmatch) pytestraises TypeErrorrr record_batcharrayr ValueErrorr&rr*_s rtest_table_sourcerFZs y !Nr0C/DseLMN*$/L ~| 4D L  MMO NN s7B% B1%B.1B:c tj|tdttddkDg}t j t d5|j}dddt j t5ttjgddddt j t5tddddy#1swYyxYw#1swYCxYw#1swYyxYw)Nr"crrzNo match for FieldRef.Name\(c\)r<)TFT) rr%rrr>r?rCr&r@rrBrDs r test_filterrIfs  $ $H&7c Q&GH& D z)K L MMO y !9"((#6789 y ! $  99  s$C!C( C4C%(C14C=sourcenumberrc|jtjddk}|jdk(sJt |t |usJ|j j |j sJ|jtjgd}|jdk(sJt |t |usJ|j j |j sJy)NrKr)FFF) r"pcrnum_rowstyper5r'rrB)rJ result_expr result_masks rtest_filter_all_rowsrRvs -- 2Q 67K   1 $$ $  V ,, ,    $ $V]] 33 3--)> ?@K   1 $$ $  V ,, ,    $ $V]] 33 3r c tj|tdttjt ddgg}|j }|jjdgk(sJ|djgdk(sJtj|tdttjt ddgdgg}|j }|jjdgk(sJ|djgdk(sJtjt5ttjt ddgddgdddtj|tdttjt dgg}tjtd 5|j }dddy#1swYxYw#1swYyxYw) Nprojectrrzmultiply(a, 2)r)rrra2b2z$cannot Execute non-scalar expressionr<)rr%rrMmultiplyrr&r5names to_pylistr>r?rCsum)rr*r+rEs r test_projectr[s  $ $I12;;uSz13M2NOP& D]]_F ==  #3"4 44 4 !9   I -- -  $ $I12;;uSz13M2NQUPVWX& D]]_F ==  4& (( ( $< ! ! #y 00 0 z "GBKKc A67$FG  $ $I1266%*3E2FGH& D z)O P MMOGGs8-G)G5)G25G>c Ttj|tdtdgg}|j}|jj dgk(sJ|dj dgk(sJtjdgdi}tddtjd dfg}tjtd t|td|g}|j}|jj dgk(sJ|dj dgk(sJdtdd td dgtdgd gfD]x}t|dddfg}tj|td|g}|j}|jj dgk(sJ|dj dgk(rxJtdd gdddfg}tj|td|g}tjtd 5|j}dddtdg}tj|td|g}tjtd5|j}dddy#1swYkxYw#1swYyxYw)N aggregaterrZNa_sumr_rrrrNrZF) skip_nullsrrrz/Function 'sum' accepts 1 arguments but 2 passedr<)rhash_sumNr_zis a hash aggregate function)rr%rr&r5rXrYrrrMScalarAggregateOptionsrrr>r?rC)rr*r+r aggr_optstargetrEs rtest_aggregate_scalarrfs  $ $K!57R6S!TU& D]]_F ==  7) ++ + '? $ $ &1# -- - HHc<( )E$ ub//5A7 KLI  $ $N$:5$ABK+& D]]_F ==  7) ++ + '? $ $ &4& 00 0c AuQx#s qcJ2(65$*H)IJ (( ;{I> ? }}""wi///g((*qc1112%Sz5$&H%IJI  $ $ {; :; D K  MMO %&F%GHI  $ $ {; :; D z)G H MMOsJ8JJJ'ctjgdgdd}t|}td|}t dgdg}tj |td |g}|j }tjd d gd d gd }|j|sJt ddtjddfgdg}tj |td |g}|j }tjd d gdd gd }|j|sJt dgtdg}tj |td |g}|j }|j|sJt dgdg}tj |td |g}tjt5|j }dddy#1swYyxYw)Nr`)foobarrhrrr)r hash_countNcount(a)r)keysr]rhrir)rrkrrjallrkrr^)rrrrrr%r&r'rM CountOptionsrr>r?rC) rrrrdr*r+r9 expected_allrEs rtest_aggregate_hashrps HH<.CD EE'.J~zBL% ./se=I  $ $k+y9& D]]_Fxxuen1a&ABH == "" "% |R__U3Z @AI  $ $k+y9& D]]_F885%.q!fEFL == && &% ./uSzlI  $ $k+y9& D]]_F == "" "%&A%B#OI  $ $k+y9& D z " MMOs G))G2ctjgdgdd}tdt|}t dg}tj |td|g}|j }tjgdgdd}|j|sJt td d fg}tj |td|g}|j }tjgd gd d}|j|sJt d gd}tj |td|g}|j }tjgdgdd}|j|sJt g}tj |td|g}tjtd5|j }dddtjtd5t dg}dddtjtd5t dgd}dddy#1swYlxYw#1swYHxYw#1swYyxYw)N)rrrr)rrNrrr)r ascendingorder_by)rrrr)rrrNr descending)rrrr)rrrN)rrtat_start)null_placement)rrrr)Nrrrz1`ordering` must be an explicit non-empty orderingr<z&"decreasing" is not a valid sort order)r decreasingz%"start" is not a valid null placementstart) rrrrr r%r&r'rr>r?rC)rrord_optsr*r+r9rEs r test_order_byrz s HH ?E~/Ee/LML!#5"67H  $ $lK H4U%V WD ]]_FxxlABH == "" "!E#J #=">?H  $ $lK H4U%V WD ]]_FxxlABH == "" "!#4"5jQH  $ $lK H4U%V WD ]]_FxxlABH == "" """%H  $ $lK H4U%V WD M  MMO z)S T6  34 56 z)R SM  23G LMM 66MMs$ I> I.IIII'c .tjgdgdd}tdt|}tjgdgdd}tdt|}t dd d }td |||g }|j }tjd dgddgd dgddgggd}|j |sJtd d gtd gfD]C}t d|| }td |||g }|j }|j |rCJt dd d }td |||g }|j }tjgdgdgdgdggd}|jdj |sJt dd d dd}td |||g }|j }tjgdgdgdgdggd}|jdj |sJt dd d d dgtdg}td |||g }|j }tjgdgdgdggd}|jdj |sJy)Nrrkeyrrrrrrr}rinnerr}) left_keys right_keyshashjoinr#rrrrrr}rr}rrX left outer)Nrr)Nrrr_left_right)rroutput_suffix_for_leftoutput_suffix_for_right)key_leftr key_rightrr)rr left_output right_output)r}rr) rrrrr r&r'rsort_by) left left_sourceright right_source join_optsjoinedr+r9rls rtest_hash_joinr/s 88II6 7Dn6LT6RSK HHYY7 8E~7Me7TUL$GuOI I{L.IKF __ Fxx Q!Q!Q!Q(&(H == "" "uwu7''4DQ   ; 2MO"}}X&&& '$%9I I{L.IKF __ Fxx I|\:&H >>#  % %h // /$%&JII{L.IKF __ Fxx I|\:1H >>#  % %h // /$%CLc |=II{L.IKF __ Fxx I|,H >>#  % %h // /r c htjgdgdd}tdt|}tjgdgdd}tdt|}t dd d t j t jd d  }td |||g}|j}tjdgd gdgdgggd}|j|sJt dd d t j t jd d t j t jddz }td |||g}|j}tjgdgdgdgdggd}|j|sJt jd}t dd d | }td |||g}|j}tjddgd dgddgdd gggd}|j|sJt jd} t dd d | }td |||g}|j}tjtjgtjtjgtjtjgtjtjgtjggd}|j|sJy)Nrrr|rrr~rrr}rr)rrfilter_expressionrr#rrrrrr )rrr)rrr)rNN)rNNTrrF)rO) rrrrr rMequalrr&r'scalarrBr6) rrrrrrr+r9 always_true always_falses r#test_hash_join_with_residual_filterrms 88II6 7Dn6LT6RSK HHYY7 8E~7Me7TUL#5U((288C=!46II{L.IKF __ Fxx qcA3&(H == "" "$%((288C=!4rxx r7RRII{L.IKF __ Fxx I@&(H == "" "))D/K#5U%'II{L.IKF __ Fxx Q!Q!Q!Q(&H == "" "99U#L#5U&(II{L.IKF __ Fxx HHRbhhj ) HHRbhhj ) HHRbhhj ) HHRbhhj )  'H == "" "r c btjgdgdgdd}tdt|}tjgdgdgdd }tdt|}t d d gd d gd }td|||g}|j }tjgdgdgdgdggd}||k(sJt d d gt d gfD]K}t d d fD]9} t | || |d }td|||g}|j }||k(r9JMy)Nr)rrrr)r}tsrrrr~)rrr)r}rrrr}r)left_onleft_byright_onright_by toleranceasofjoinr#)NrN)r}rrrr)rrrrr r&r) rrrrrrr+r9byons rtest_asof_joinrsD 88IYYG HDn6LT6RSK HHYiiH IE~7Me7TUL$ugI I{L.IF__ Fxx Iy/:%'H X  U|eWuU|n5 &;% &B+BbI !I{L6QSF__&FX% %% & &r c tjgdgdd}tj||dz dtj|dz d}t dt |}|j}|jjgdk(sJ|jd d gj|sJt |td d kD }t d|}|jjd k(sJt |td dkD }t d|}|jjdk(sJt |dtjtd di}t d|}|j}|d j!gdk(sJtj"|d j%j'sJy)Nrrrdatasetparquet)formatscan)rr__fragment_index __batch_index__last_in_fragment __filenamerrr)r"rrrrUr)columns)rrds write_datasetrrr r&r5rXselectr'rrNrMrWrYrmis_nullas_py)tempdirrrr*r+ scan_optss r test_scanrs HH995 6EUGi/ Bjj9,Y?G vw7 8D ]]_F ==  #   ==#s $ + +E 22 2 c Q?I vy )D ==? # #q (( (c Q?I vy )D ==? # #q (( ( $ E#JPQ8R1STI vy )D ]]_F #; "i // / 66&+%%' ( . . 00 0r )+r>pyarrowrpyarrow.computecomputerMr pyarrow.acerorrrrrr r r ImportErrorpyarrow.datasetrrr markacero pytestmarkfixturerr-r2r:rFrI parametrizerArrRr[rfrprzrrrrr rrs7$!      -[[   ,*3 #   BOOXy)* BHHh "#$ 4  4@0f+\"MJ;0|=#@&D 1 1[    Bs"C, C7,C43C47DD