
    g:                     j   d dl Z d dlZd dlmZ d dlmZ 	 d dlmZm	Z	m
Z
mZmZmZmZmZ 	 d dlmZ d dlmZ e j*                  j,                  Ze j0                  d        Zd Zd Zd Zd	 Zd
 Zd Zd Z d Z!d Z"d Z#d Z$e j*                  j$                  d        Z%y# e$ r Y zw xY w# e$ r dZY zw xY w)    N)field)DeclarationTableSourceNodeOptionsFilterNodeOptionsProjectNodeOptionsAggregateNodeOptionsOrderByNodeOptionsHashJoinNodeOptionsAsofJoinNodeOptions)ScanNodeOptionsc                  n    t        j                  g dg dd      } t        |       }t        d|      }|S )N                  abtable_sourceoptions)patabler   r   )r   
table_optsr   s      M/var/www/openai/venv/lib/python3.12/site-packages/pyarrow/tests/test_acero.pyr   r   /   s1    HH9956E'.J~zBL    c                     t        j                  g dg dd      } t        |       }t        t	        d      dkD        }t        j                  t        d|      t        d|      g      }|j                         }|j                  | j                  dd	            sJ t        d|      }t        d||g
      }|j                         }|j                  | j                  dd	            sJ y )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                 @    dt        |       v sJ dt        |       v sJ y )NTableSourceNode)strrepr)r   s    r   test_declaration_reprr2   L   s(    L 1111\ 2222r    c                 h   | j                         5 }|j                  t        j                  dt        j                         fdt        j                         fg      k(  sJ |j	                         }d d d        t        j
                  g dg dd      }j                  |      sJ y # 1 sw Y   9xY w)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B((B1c            	      z   t        j                  t              5  t        t	        j
                  t	        j                  g d      gdg             d d d        t        d       } t        d|       }t        j                  t        d      5  |j                         }d d d        y # 1 sw Y   UxY w# 1 sw Y   y xY w)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   7B%B1%B.1B:c                     t        j                  | t        dt        t        d      dkD              g      }t	        j
                  t        d      5  |j                         }d d d        t	        j
                  t              5  t        t        j                  g d             d d d        t	        j
                  t              5  t        d        d d d        y # 1 sw Y   yxY w# 1 sw Y   CxY w# 1 sw Y   y xY w)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(C4C%(C14C=c                    t        j                  | t        dt        t        j                  t        d      d      g            g      }|j                         }|j                  j                  dgk(  sJ |d   j                         g dk(  sJ t        j                  | t        dt        t        j                  t        d      d      gdg            g      }|j                         }|j                  j                  dgk(  sJ |d   j                         g dk(  sJ t        j                  t              5  t        t        j                  t        d      d      gddg       d d d        t        j                  | t        dt        t        j                  t        d            g            g      }t        j                  t        d	
      5  |j                         }d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nprojectr   r   zmultiply(a, 2)r   )r   r   r   a2b2z$cannot Execute non-scalar expressionr<   )r   r%   r   pcmultiplyr   r&   r5   names	to_pylistr>   r?   rC   sum)r   r*   r+   rE   s       r   test_projectrS   v   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   8-G)G5)G25G>c           	      T   t        j                  | t        dt        dg            g      }|j                         }|j                  j
                  dgk(  sJ |d   j                         dgk(  sJ t        j                  dg di      }t        ddt        j                  d	      dfg      }t        j                  t        d
t        |            t        d|      g      }|j                         }|j                  j
                  dgk(  sJ |d   j                         d gk(  sJ dt        d      dt        d      dgt        d      gdgfD ]x  }t        |dd dfg      }t        j                  | t        d|      g      }|j                         }|j                  j
                  dgk(  sJ |d   j                         dgk(  rxJ  t        ddgdd dfg      }t        j                  | t        d|      g      }t        j                  t        d      5  |j                         }d d d        t        dg      }t        j                  | t        d|      g      }t        j                  t        d      5  |j                         }d d d        y # 1 sw Y   kxY w# 1 sw Y   y xY w)N	aggregater   rR   Na_sumrW   r   r   r   r   NrR   F)
skip_nullsr   r   r   z/Function 'sum' accepts 1 arguments but 2 passedr<   )r   hash_sumNrW   zis a hash aggregate function)r   r%   r   r&   r5   rP   rQ   r   r   rN   ScalarAggregateOptionsr   r   r>   r?   rC   )r   r*   r+   r   	aggr_optstargetrE   s          r   test_aggregate_scalarr^      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8JJJ'c                     t        j                  g dg dd      } t        |       }t        d|      }t	        dgdg      }t        j
                  |t        d	|      g      }|j                         }t        j                  d
dgddgd      }|j                  |      sJ t	        ddt        j                  d      dfgdg      }t        j
                  |t        d	|      g      }|j                         }t        j                  d
dgddgd      }|j                  |      sJ t	        dgt        d      g      }t        j
                  |t        d	|      g      }|j                         }|j                  |      sJ t	        dgdg      }t        j
                  |t        d	|      g      }t        j                  t              5  |j                         }d d d        y # 1 sw Y   y xY w)NrX   )foobarr`   r   r   r   )r   
hash_countNcount(a)r   )keysrU   r`   ra   r   )r   rc   r   rb   allrc   r   rV   )r   r   r   r   r   r%   r&   r'   rN   CountOptionsr   r>   r?   rC   )	r   r   r   r\   r*   r+   r9   expected_allrE   s	            r   test_aggregate_hashrh      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   G))G2c                     t        j                  g dg dd      } t        dt        |             }t	        dg      }t        j
                  |t        d|      g      }|j                         }t        j                  g dg dd      }|j                  |      sJ t	        t        d	      d
fg      }t        j
                  |t        d|      g      }|j                         }t        j                  g dg dd      }|j                  |      sJ t	        dgd      }t        j
                  |t        d|      g      }|j                         }t        j                  g dg dd      }|j                  |      sJ t	        g       }t        j
                  |t        d|      g      }t        j                  t        d      5  |j                         }d d d        t        j                  t        d      5  t	        dg      }d d d        t        j                  t        d      5  t	        dgd      }d d d        y # 1 sw Y   lxY w# 1 sw Y   HxY w# 1 sw Y   y xY w)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   rl   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_byrr      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.IIII'c            	      .   t        j                  g dg dd      } t        dt        |             }t        j                  g dg dd      }t        dt        |            }t	        dd	d	
      }t        d|||g      }|j                         }t        j                  ddgddgddgddggg d      }|j                  |      sJ t        d	      d	gt        d	      gfD ]C  }t	        d||
      }t        d|||g      }|j                         }|j                  |      rCJ  t	        dd	d	
      }t        d|||g      }|j                         }t        j                  g dg dg dg dgg d      }|j                  d      j                  |      sJ t	        dd	d	dd      }t        d|||g      }|j                         }t        j                  g dg dg dg dgg d      }|j                  d      j                  |      sJ t	        dd	d	d	dgt        d      g      }t        d|||g      }|j                         }t        j                  g dg dg dgg d      }|j                  d      j                  |      sJ y )Nr   r   )keyr   r   r   r   r   r   )rt   r   innerrt   )	left_keys
right_keyshashjoinr#   r   r   r   r   r   )rt   r   rt   r   rP   z
left outer)Nr   r   )Nr   r   r   _left_right)rw   rx   output_suffix_for_leftoutput_suffix_for_right)key_leftr   	key_rightr   r   )rw   rx   left_outputright_output)rt   r   r   )	r   r   r   r   r
   r&   r'   r   sort_by)	leftleft_sourcerightright_source	join_optsjoinedr+   r9   rd   s	            r   test_hash_joinr     s   88II67Dn6LT6RSKHHYY78E~7Me7TUL $GuOII{L.IKF__Fxx
Q!Q!Q!Q(&(H =="""uwu7'4DQ		;2MO"}}X&&& 8 $%9II{L.IKF__Fxx	I|\:&H >>#%%h/// $%&JI I{L.IKF__Fxx	I|\:1H >>#%%h/// $%CLc
|=I I{L.IKF__Fxx	I|,H >>#%%h///r    c            	      b   t        j                  g dg dg dd      } t        dt        |             }t        j                  g dg dg dd	      }t        dt        |            }t	        d
dgd
dgd      }t        d|||g      }|j                         }t        j                  g dg dg dg dgg d      }||k(  sJ t        d      dgt        d      gfD ]K  }t        d
      d
fD ]9  }	t	        |	||	|d      }t        d|||g      }|j                         }||k(  r9J  M y )Nr   )r   r   r   r   )rt   tsr   r   r   ru   )r   r   r   )rt   r   r   r   rt   r   )left_onleft_byright_onright_by	toleranceasofjoinr#   )Nr   N)rt   r   r   r   rz   )r   r   r   r   r   r&   r   )
r   r   r   r   r   r   r+   r9   byons
             r   test_asof_joinr   Z  s:   88IYYGHDn6LT6RSKHHYiiHIE~7Me7TUL $ugI
 I{L.IF __Fxx	Iy/:%'H XU|eWuU|n5;%B+BbI
 !I{L6QSF__&FX%%% & 6r    c           	         t        j                  g dg dd      }t        j                  || dz  d       t        j                  | dz  d      }t        dt        |            }|j                         }|j                  j                  g dk(  sJ |j                  d	d
g      j                  |      sJ t        |t        d	      dkD        }t        d|      }|j                         j                  dk(  sJ t        |t        d	      dkD        }t        d|      }|j                         j                  dk(  sJ t        |dt        j                  t        d	      d      i      }t        d|      }|j                         }|d	   j!                         g dk(  sJ t        j"                  |d
   j%                               j'                         sJ y )Nr   r   r   datasetparquet)formatscan)r   r   __fragment_index__batch_index__last_in_fragment
__filenamer   r   r   )r"   r   r   r   rL   r   )columns)r   r   dswrite_datasetr   r   r   r&   r5   rP   selectr'   r   num_rowsrN   rO   rQ   re   is_nullas_py)tempdirr   r   r*   r+   	scan_optss         r   	test_scanr   |  s   HH9956EUGi/	Bjj9,Y?Gvw78D]]_F== #    ==#s$++E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0r    )&r>   pyarrowr   pyarrow.computecomputerN   r   pyarrow.aceror   r   r   r   r   r	   r
   r   ImportErrorpyarrow.datasetr   r   r   markacero
pytestmarkfixturer   r-   r2   r:   rF   rI   rS   r^   rh   rr   r   r   r    r    r   <module>r      s   $    !		 	 	 - [[
  ,*3#	  @0f+\"MJ;0|&D  1  1u
  		  	Bs"   B B( B%$B%(B21B2