
    /_iYF              	          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e j*                  j?                  d ej@                  dg di       ejB                  dg di      g      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 w xY w# e$ r dZY w 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      W/var/www/html/land_sniper/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	! Nr0C/DseLMN *$/L~|4D	L
  MMO N N
 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 
y	! 9"((#6789	y	!  $    9 9   s$   C!C(C4C%(C14C=sourcenumberr   c                    | j                  t        j                  d      dk        }|j                  dk(  sJ t	        |      t	        |       u sJ |j
                  j                  | j
                        sJ | j                  t        j                  g d            }|j                  dk(  sJ t	        |      t	        |       u sJ |j
                  j                  | j
                        sJ y )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--)> ?@K1$$$V,,,$$V]]333r    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   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	" GBKKc
A67$FG $$I1266%*3E2FGH& D 
z)O	P MMO G G s   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   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 2(65$*H)IJ	((;{I>?
 }}""wi///g((*qc1112 %Sz5$&H%IJI$$	{;	:;D 
K
  MMO %&F%GHI$$	{;	:;D 
z)G	H MMO   s   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)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   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   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 6 3456 
z)R	S M 23GLM M 
6 6M Ms$   
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   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I{L.IKF__Fxx
Q!Q!Q!Q(&(H =="""uwu7 ''4DQ		;2MO"}}X&&&' $%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                  h   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        j                  t        j                  d
      d            }t        d|||g      }|j                         }t        j                  dgdgdgdggg d      }|j                  |      sJ t	        dd	d	t        j                  t        j                  d
      d      t        j                  t        j                  d      d      z        }t        d|||g      }|j                         }t        j                  g dg dg dg dgg d      }|j                  |      sJ t        j                  d      }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        j                  d      }	t	        dd	d	|	      }t        d|||g      }|j                         }t        j                  t        j                  g t        j                               t        j                  g t        j                               t        j                  g t        j                               t        j                  g t        j                               gg d      }|j                  |      sJ y )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 I{L.IKF__Fxx
qcA3&(H ==""" $%((288C=!4rxxr7RRI I{L.IKF__Fxx	I@&(H ==""" ))D/K#5U%'I I{L.IKF__Fxx
Q!Q!Q!Q(&H ==""" 99U#L#5U&(I I{L.IKF__FxxHHRbhhj)HHRbhhj)HHRbhhj)HHRbhhj)		
 '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   )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     sD   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%%%		&
&r    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   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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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      s7  $    !		 	 	 - [[
  ,*3#	   BOOXy)*BHHh	"#$ 4	4@0f+\"MJ;0|=#@&D  1  1[  		  	Bs"   C, C7 ,C43C47D D