
    <>iYF              	          S SK r S SKrS SKJr  S SKJr   S SKJrJ	r	J
r
JrJrJrJrJr   S SKJr  S SKJr  \ R*                  R,                  r\ R0                  S 5       rS rS rS rS	 rS
 r\ R*                  R?                  S\R@                  " S/ SQ05      \RB                  " S/ SQ05      /5      S 5       r"S r#S r$S r%S r&S r'S r(S r)\ R*                  R$                  S 5       r*g! \ a     Nf = f! \ a    Sr Nf = f)    N)field)DeclarationTableSourceNodeOptionsFilterNodeOptionsProjectNodeOptionsAggregateNodeOptionsOrderByNodeOptionsHashJoinNodeOptionsAsofJoinNodeOptions)ScanNodeOptionsc                  j    [         R                  " / SQ/ SQS.5      n [        U 5      n[        SUS9nU$ )N                  abtable_sourceoptions)patabler   r   )r   
table_optsr   s      W/var/www/html/land-tabula/venv/lib/python3.13/site-packages/pyarrow/tests/test_acero.pyr   r   /   s1    HH9956E'.J~zBL    c                     [         R                  " / SQ/ SQS.5      n [        U 5      n[        [	        S5      S:  5      n[
        R                  " [        SUS9[        SUS9/5      nUR                  5       nUR                  U R                  SS	5      5      (       d   e[        SUS9n[        SX%/S
9nUR                  5       nUR                  U R                  SS	5      5      (       d   eg )Nr   r   r   r   r   r   r   filterr   r   inputs)
r   r   r   r   r   r   from_sequenceto_tableequalsslice)r   r   filter_optsdeclresultr   filtereds          r   test_declarationr-   7   s    HH9956E'.J#E#JN3K $$NJ7Hk2& D ]]_F==Q*++++ ~zBL8[PH F==Q*++++r    c                 H    S[        U 5      ;   d   eS[        U 5      ;   d   eg )NTableSourceNode)strrepr)r   s    r   test_declaration_reprr2   L   s(    L 1111\ 2222r    c                    U R                  5        nUR                  [        R                  " S[        R                  " 5       4S[        R                  " 5       4/5      :X  d   eUR	                  5       nS S S 5        [        R
                  " / SQ/ SQS.5      nWR                  U5      (       d   eg ! , (       d  f       ND= f)Nr   r   r   r   r   )	to_readerschemar   int64read_allr   r'   )r   readerr+   expecteds       r   test_declaration_to_readerr:   R   s    				!V}}		C+<sBHHJ>O*P QQQQ" 
" xxii89H==""""	 
"	!s   A#B22
C c            	         [         R                  " [        5         [        [        R
                  " [        R                  " / SQ5      /S/5      5        S S S 5        [        S 5      n [        SU 5      n[         R                  " [        SS9   UR                  5       nS S S 5        g ! , (       d  f       NX= f! , (       d  f       g = f)Nr   r   r   z0TableSourceNode requires table which is not nullmatch)
pytestraises	TypeErrorr   r   record_batcharrayr   
ValueErrorr&   r   r*   _s      r   test_table_sourcerF   Z   s    	y	!r0C/DseLM 
" *$/L~|4D	L
 MMO
 
 
"	!

 
s   9B&B7&
B47
Cc                    [         R                  " U [        S[        [        S5      S:  5      S9/5      n[        R
                  " [        SS9   UR                  5       nS S S 5        [        R
                  " [        5         [        [        R                  " / SQ5      5        S S S 5        [        R
                  " [        5         [        S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       NN= f! , (       d  f       g = f)Nr"   cr   r   zNo match for FieldRef.Name\(c\)r<   )TFT)r   r%   r   r   r>   r?   rC   r&   r@   r   rB   rD   s      r   test_filterrI   f   s    $$H&7c
Q&GH& D 
z)K	LMMO 
M 
y	!"((#678 
"	y	!$ 
"	! 
M	L 
"	!	!	!s$   C"C,C=
C),
C:=
Dsourcenumberr   c                    U R                  [        R                  " S5      S:  5      nUR                  S:X  d   e[	        U5      [	        U 5      L d   eUR
                  R                  U R
                  5      (       d   eU R                  [        R                  " / SQ5      5      nUR                  S:X  d   e[	        U5      [	        U 5      L d   eUR
                  R                  U R
                  5      (       d   eg )NrK   r   )FFF)	r"   pcr   num_rowstyper5   r'   r   rB   )rJ   result_exprresult_masks      r   test_filter_all_rowsrR   v   s     -- 2Q 67K1$$$V,,,$$V]]3333--)> ?@K1$$$V,,,$$V]]3333r    c                 *   [         R                  " U [        S[        [        R                  " [        S5      S5      /5      5      /5      nUR                  5       nUR                  R                  S/:X  d   eUS   R                  5       / SQ:X  d   e[         R                  " U [        S[        [        R                  " [        S5      S5      /S/5      5      /5      nUR                  5       nUR                  R                  S/:X  d   eUS   R                  5       / SQ:X  d   e[        R                  " [        5         [        [        R                  " [        S5      S5      /SS/5        S S S 5        [         R                  " U [        S[        [        R                  " [        S5      5      /5      5      /5      n[        R                  " [        S	S
9   UR                  5       nS S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nprojectr   r   zmultiply(a, 2)r   )r   r   r   a2b2z$cannot Execute non-scalar expressionr<   )r   r%   r   rM   multiplyr   r&   r5   names	to_pylistr>   r?   rC   sum)r   r*   r+   rE   s       r   test_projectr[      s   $$I12;;uSz13M2NOP& D ]]_F==#3"4444!9 I--- $$I12;;uSz13M2NQUPVWX& D ]]_F==4&((($<!!#y000 
z	"BKKc
A67$F 
# $$I1266%*3E2FGH& D 
z)O	PMMO 
Q	P 
#	" 
Q	Ps   .G3H3
H
Hc           	      x   [         R                  " U [        S[        S/5      5      /5      nUR                  5       nUR                  R
                  S/:X  d   eUS   R                  5       S/:X  d   e[        R                  " S/ SQ05      n[        SS[        R                  " SS	9S4/5      n[         R                  " [        S
[        U5      5      [        SU5      /5      nUR                  5       nUR                  R
                  S/:X  d   eUS   R                  5       S /:X  d   eS[        S5      S[        S5      S/[        S5      /S/4 H|  n[        USS S4/5      n[         R                  " U [        SU5      /5      nUR                  5       nUR                  R
                  S/:X  d   eUS   R                  5       S/:X  a  M|   e   [        SS/SS S4/5      n[         R                  " U [        SU5      /5      n[        R                  " [        SS9   UR                  5       nS S S 5        [        S/5      n[         R                  " U [        SU5      /5      n[        R                  " [        SS9   UR                  5       nS S S 5        g ! , (       d  f       No= f! , (       d  f       g = f)N	aggregater   rZ   Na_sumr_   r   r   r   r   NrZ   F)
skip_nullsr   r   r   z/Function 'sum' accepts 1 arguments but 2 passedr<   )r   hash_sumNr_   zis a hash aggregate function)r   r%   r   r&   r5   rX   rY   r   r   rM   ScalarAggregateOptionsr   r   r>   r?   rC   )r   r*   r+   r   	aggr_optstargetrE   s          r   test_aggregate_scalarrf      s   $$K!57R6S!TU& D ]]_F==7)+++'?$$&1#--- HHc<()E$
ub//5A7	KLI $$N$:5$ABK+& D ]]_F==7)+++'?$$&4&000 c
AuQx#sqcJ(65$*H)IJ	((;{I>?
 }}""wi///g((*qc111 K %Sz5$&H%IJI$$	{;	:;D 
K
 MMO
 %&F%GHI$$	{;	:;D 
z)G	HMMO 
I	H
 
 
I	Hs    J J+
J(+
J9c                     [         R                  " / SQ/ SQS.5      n [        U 5      n[        SUS9n[	        S/S/S9n[        R
                  " U[        S	U5      /5      nUR                  5       n[         R                  " S
S/SS/S.5      nUR                  U5      (       d   e[	        SS[        R                  " S5      S4/S/S9n[        R
                  " U[        S	U5      /5      nUR                  5       n[         R                  " S
S/SS/S.5      nUR                  U5      (       d   e[	        S/[        S5      /S9n[        R
                  " U[        S	U5      /5      nUR                  5       nUR                  U5      (       d   e[	        S/S/S9n[        R
                  " U[        S	U5      /5      n[        R                  " [        5         UR                  5       nS S S 5        g ! , (       d  f       g = f)Nr`   )foobarrh   r   r   r   )r   
hash_countNcount(a)r   )keysr]   rh   ri   r   )r   rk   r   rj   allrk   r   r^   )r   r   r   r   r   r%   r&   r'   rM   CountOptionsr   r>   r?   rC   )	r   r   r   rd   r*   r+   r9   expected_allrE   s	            r   test_aggregate_hashrp      s   HH<.CDEE'.J~zBL %	./se=I$$k+y9& D ]]_Fxxuen1a&ABH=="""" %
|R__U3Z	@AI $$k+y9& D ]]_F885%.q!fEFL==&&&& %	./uSzlI $$k+y9& D ]]_F=="""" %&A%B#OI$$k+y9& D 
z	"MMO 
#	"	"s   G22
H c                     [         R                  " / SQ/ SQS.5      n [        S[        U 5      5      n[	        S/5      n[        R
                  " U[        SU5      /5      nUR                  5       n[         R                  " / SQ/ SQS.5      nUR                  U5      (       d   e[	        [        S	5      S
4/5      n[        R
                  " U[        SU5      /5      nUR                  5       n[         R                  " / SQ/ SQS.5      nUR                  U5      (       d   e[	        S/SS9n[        R
                  " U[        SU5      /5      nUR                  5       n[         R                  " / SQ/ SQS.5      nUR                  U5      (       d   e[	        / 5      n[        R
                  " U[        SU5      /5      n[        R                  " [        SS9   UR                  5       nS S S 5        [        R                  " [        SS9   [	        S/5      nS S S 5        [        R                  " [        SS9   [	        S/SS9nS S S 5        g ! , (       d  f       Nj= f! , (       d  f       NM= f! , (       d  f       g = f)N)r   r   r   r   )r   r   Nr   r   r   )r   	ascendingorder_by)r   r   r   r   )r   r   r   Nr   
descending)r   r   r   r   )r   r   r   N)r   rt   at_start)null_placement)r   r   r   r   )Nr   r   r   z1`ordering` must be an explicit non-empty orderingr<   z&"decreasing" is not a valid sort order)r   
decreasingz%"start" is not a valid null placementstart)r   r   r   r   r	   r%   r&   r'   r   r>   r?   rC   )r   r   ord_optsr*   r+   r9   rE   s          r   test_order_byrz   
  s   HH<o>?E~/Ee/LML!#5"67H$$lK
H4U%VWD]]_FxxlABH==""""!E#J#=">?H$$lK
H4U%VWD]]_FxxlABH==""""!#4"5jQH$$lK
H4U%VWD]]_FxxlABH=="""" ""%H$$lK
H4U%VWD	M
 MMO

 
z)S	T 345 
U 
z)R	S 23GL 
T	S
 

 
U	T 
T	Ss$   II"<I3
I"
I03
Jc            	         [         R                  " / SQ/ SQS.5      n [        S[        U 5      S9n[         R                  " / SQ/ SQS.5      n[        S[        U5      S9n[	        SS	S	S
9n[        SXAU/S9nUR                  5       n[         R                  " SS/SS/SS/SS/// SQS9nUR                  U5      (       d   e[        S	5      S	/[        S	5      /4 HA  n[	        SXS
9n[        SXAU/S9nUR                  5       nUR                  U5      (       a  MA   e   [	        SS	S	S
9n[        SXAU/S9nUR                  5       n[         R                  " / SQ/ SQ/ SQ/ SQ// SQS9nUR                  S5      R                  U5      (       d   e[	        SS	S	SSS9n[        SXAU/S9nUR                  5       n[         R                  " / SQ/ SQ/ SQ/ SQ// SQS9nUR                  S5      R                  U5      (       d   e[	        SS	S	S	S/[        S5      /S9n[        SXAU/S9nUR                  5       n[         R                  " / SQ/ SQ/ SQ// SQS9nUR                  S5      R                  U5      (       d   eg )Nr   r   keyr   r   r   r   r   r   r}   r   innerr}   )	left_keys
right_keyshashjoinr#   r   r   r   r   r   r}   r   r}   r   rX   
left outer)Nr   r   )Nr   r   r   _left_right)r   r   output_suffix_for_leftoutput_suffix_for_right)key_leftr   	key_rightr   r   )r   r   left_outputright_output)r}   r   r   )	r   r   r   r   r
   r&   r'   r   sort_by)	leftleft_sourcerightright_source	join_optsjoinedr+   r9   rl   s	            r   test_hash_joinr   /  s   88II67Dn6LT6RSKHHYY78E~7Me7TUL $GuOIIL.IKF__Fxx
Q!Q!Q!Q(&(H ==""""uwu7'4Q		2MO"}}X&&&& 8 $%9IIL.IKF__Fxx	I|\:&H >>#%%h//// $%&JI IL.IKF__Fxx	I|\:1H >>#%%h//// $%CLc
|=I IL.IKF__Fxx	I|,H >>#%%h////r    c                  H   [         R                  " / SQ/ SQS.5      n [        S[        U 5      S9n[         R                  " / SQ/ SQS.5      n[        S[        U5      S9n[	        SS	S	[
        R                  " [
        R                  " S
5      S5      S9n[        SXAU/S9nUR                  5       n[         R                  " S/S/S/S/// SQS9nUR                  U5      (       d   e[	        SS	S	[
        R                  " [
        R                  " S
5      S5      [
        R                  " [
        R                  " S5      S5      -  S9n[        SXAU/S9nUR                  5       n[         R                  " / SQ/ SQ/ SQ/ SQ// SQS9nUR                  U5      (       d   e[
        R                  " S5      n[	        SS	S	US9n[        SXAU/S9nUR                  5       n[         R                  " SS/SS/SS/SS/// SQS9nUR                  U5      (       d   e[
        R                  " S5      n	[	        SS	S	U	S9n[        SXAU/S9nUR                  5       n[         R                  " [         R                  " / [         R                  " 5       S9[         R                  " / [         R                  " 5       S9[         R                  " / [         R                  " 5       S9[         R                  " / [         R                  " 5       S9// SQS9nUR                  U5      (       d   eg )Nr   r   r|   r   r   r~   r   r   r}   r   r   )r   r   filter_expressionr   r#   r   r   r   r   r   r   
   )r   r   r   )r   r   r   )r   NN)r   NNTr   r   F)rO   )r   r   r   r   r
   rM   equalr   r&   r'   scalarrB   r6   )
r   r   r   r   r   r   r+   r9   always_truealways_falses
             r   #test_hash_join_with_residual_filterr   m  s   88II67Dn6LT6RSKHHYY78E~7Me7TUL#5U((288C=!46I IL.IKF__Fxx
qcA3&(H =="""" $%((288C=!4rxxr7RRI IL.IKF__Fxx	I@&(H =="""" ))D/K#5U%'I IL.IKF__Fxx
Q!Q!Q!Q(&H =="""" 99U#L#5U&(I IL.IKF__FxxHHRbhhj)HHRbhhj)HHRbhhj)HHRbhhj)		
 'H ==""""r    c            
      >   [         R                  " / SQ/ SQ/ SQS.5      n [        S[        U 5      S9n[         R                  " / SQ/ SQ/ SQS	.5      n[        S[        U5      S9n[	        S
S/S
S/SS9n[        SXAU/S9nUR                  5       n[         R                  " / SQ/ SQ/ SQ/ SQ// SQS9nXg:X  d   e[        S5      S/[        S5      /4 HE  n[        S
5      S
4 H1  n	[	        XXSS9n[        SXAU/S9nUR                  5       nXg:X  a  M1   e   MG     g )Nr   )r   r   r   r   )r}   tsr   r   r   r~   )r   r   r   )r}   r   r   r   r}   r   )left_onleft_byright_onright_by	toleranceasofjoinr#   )Nr   N)r}   r   r   r   r   )r   r   r   r   r   r&   r   )
r   r   r   r   r   r   r+   r9   byons
             r   test_asof_joinr     s.   88IYYGHDn6LT6RSKHHYiiHIE~7Me7TUL $ugI
 IL.IF __Fxx	Iy/:%'H U|eWuU|n5;%B+I
 !IL6QSF__&F%%% & 6r    c           	         [         R                  " / SQ/ SQS.5      n[        R                  " XS-  SS9  [        R                  " U S-  SS9n[        S[        U5      5      nUR                  5       nUR                  R                  / SQ:X  d   eUR                  S	S
/5      R                  U5      (       d   e[        U[        S	5      S:  S9n[        SU5      nUR                  5       R                  S:X  d   e[        U[        S	5      S:  S9n[        SU5      nUR                  5       R                  S:X  d   e[        US[        R                  " [        S	5      S5      0S9n[        SU5      nUR                  5       nUS	   R!                  5       / SQ:X  d   e[        R"                  " US
   R%                  5       5      R'                  5       (       d   eg )Nr   r   r   datasetparquet)formatscan)r   r   __fragment_index__batch_index__last_in_fragment
__filenamer   r   r   )r"   r   r   r   rU   r   )columns)r   r   dswrite_datasetr   r   r   r&   r5   rX   selectr'   r   rN   rM   rW   rY   rm   is_nullas_py)tempdirr   r   r*   r+   	scan_optss         r   	test_scanr     s   HH9956EUi/	Bjj9,Y?Gvw78D]]_F== #    ==#s$++E2222  c
Q?Ivy)D==?##q(((c
Q?Ivy)D==?##q(((  $E#JPQ8R1STIvy)D]]_F#;  "i///66&+%%'(..0000r    )+r>   pyarrowr   pyarrow.computecomputerM   r   pyarrow.aceror   r   r   r   r   r	   r
   r   ImportErrorpyarrow.datasetr   r   r   markacero
pytestmarkfixturer   r-   r2   r:   rF   rI   parametrizerA   r   rR   r[   rf   rp   rz   r   r   r   r    r    r   <module>r      s3  $    !		 	 	 - [[
  ,*3#	   OOXy)*HHh	"#$ 4	4@0f+\"MJ;0|=#@&D  1  1[  		  	Bs"   C, C8 ,C54C58DD