U
    -e$                     @   s  d dl Z d dlZd dlmZ ddlmZ zd dlm	Z
 W n ek
rL   Y nX zd dlmZmZ W n ek
rv   Y nX e jjZdd Ze jdddd	gd
dgdfddd	gddgdfddgdgdfddgdgdfddd	gd
dgdd	gddgdfddd	dgd
ddgdd	dgdddgdfddd	dgd
ddgdd	dgdddgdfddd	ddgd
dddgdd	ddgddddgdfge jdddge jdddge jd de jde jj	d!gd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 ZdS )2    N   )IntegerType)_perform_join_filter_tablec               	   C   s   t jddddddgddd	d
ddgd} t jdddddgdddddgd}tt j td| d|d W 5 Q R X tt tdd d|d W 5 Q R X tt td| d|d W 5 Q R X d S )Nr                  abcdefcolAcol2ABCDEcolBcol3
left outer r   r   zsuper mario join)	paTablefrom_pydictpytestraisesArrowInvalidr   	TypeError
ValueError)t1t2 r(   ]/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/pyarrow/tests/test_exec_plan.pytest_joins_corner_cases$   s    r*   zjointype,expectedz	left semir   r   r   r   z
right semir   r   r   z	left antir
   r   z
right antic   Zinner)r   r   r   r   r   right outer
full outeruse_threadsTFcoalesce_keysuse_datasets)Zmarksc              	   C   s  t |}t jdddgdddgd}t jdddgd	d
dgd}|rbt|g}t|g}t| |d|d||d}| }d| kr|d}n
|d}|r| dkr|	dg}n>| dkr|	dg}n(| dkr|	dg
ddddddgg}||kstd S )Nr   r   r
   r   r   r   r   r+   r,   r   r   r   r   r   )r0   r1   right)r-   r   r.   r/   r   )r   tabler   r    dsdatasetr   combine_chunkssort_byZdropZ
set_columnAssertionError)Zjointypeexpectedr0   r1   r2   r&   r'   rr(   r(   r)   
test_joins9   s8    1
 
 r<   c                  C   s  t dddgdddgddd	gd
} t dddgdddgdddgdddgd}td| ddg|ddg}| }|d}|t jd dddgd dddgd ddd	gdddd gdddd gdddd gdddd ggdddddddgdksttd| d|dddd}| }|d}|t dddd gdddd gddd	d gddd dgddd dgddd dgddd dgdkshttd| d|dddd}| }|d}|t ddddgdddd gddd	d gddd dgddd dgddd dgdkstd S )Nr   r   r
   
      <   r   r   r   r   r   colValsr+   r,   r   r   d      i,  )r   rA   colUniqr   r/   r   r   rD   rA   )names_rF)right_suffixr1   )r   r   rA   colB_r	colVals_rrD   ZcolA_rT)r   r   rA   rH   rI   rD   r   r4   r   r7   r8   r9   r&   r'   resultr(   r(   r)   test_table_join_collisions   s        








  








  






rM   c               
   C   s   t dddgdddgddd	gd
} t dddgdddgd}td| d|ddddd}| }|d}|t dddd gddddgddd	d gddd dgdkstd S )Nr=   r>   r?   r   r   r
   r   r   r   )r   r   rA   r,   r   r   r+   )rA   colXr/   r   rN   Z_lrF   T)Zleft_suffixrG   r1   )r   r   Z	colVals_lrI   rJ   rK   r(   r(   r)   test_table_join_keys_order   s,     




rO   c               	   C   s   t dddddgdddd	d
gd} tt j$ t| ttdt	d W 5 Q R X tt j
  t| tdt	dk W 5 Q R X d S )Nr   r   r   r   r	   r=   r>      (   2   r   r   r   r,   )r   r4   r!   r"   ZArrowTypeErrorr   pcdividefieldscalarr#   )tr(   r(   r)   test_filter_table_errors   s    (rY   c                  C   s   t dddddgdddd	d
gd} t| tdtdktdtdk@ }|t dgdgdksntt| tdtdk}|t ddgd	d
gdkstd S )Nr   r   r   r   r	   r=   r>   rP   rQ   rR   rS   r   r   )r   r4   r   rT   rV   rW   r9   rX   rL   r(   r(   r)   test_filter_table   s"     &r[   c                  C   s   t ddddgdgd d} t ddddgdgd d}t | |g}tdD ]6}t|tddk}|d t dgdggksRtqRd S )	Nr   r   r   r   r   rS   r   r>   )	r   r4   Zconcat_tablesranger   rT   rV   chunked_arrayr9   )Ztable1Ztable2r4   _r;   r(   r(   r)   test_filter_table_ordering   s    r_   c               
   C   s   t dddddddgddd	d
dddgd} t| ttdtdtdkttdtdtdk@ }|t dddgdd
dgdkstd S )Nr   r   r   r   r	   r
   r=   r>   rP   rQ   rR   r?   =   rS   r   r   r   )	r   r4   r   rT   Zbit_wise_andrV   rW   multiplyr9   rZ   r(   r(   r)   test_complex_filter_table  s       rb   c                  C   sH  t jdddgt  d} t }t j|| }t jt dddgt dddg}t ddd	g||d
}t dddg|d}t dddg||d}t	d|dg|dg}|d t 
|kstt	d|dg|dg}|d t 
|kstt	d|dg|dg}|d t 
|kstt	d|dg|dg}|d t 
|ksDtd S )Nr   r   r   )typer   r   r   r   r
   r@   r+   )r   colC)r   rd   ZcolDr   r   rA   r   rd   )r   arrayZint64r   ZExtensionArrayZfrom_storageZDictionaryArrayZfrom_arraysr4   r   r]   r9   )ZstoragetyZ	ext_arrayZ
dict_arrayr&   r'   t3rL   r(   r(   r)    test_join_extension_array_column  sj                     rh   )r!   Zpyarrowr   Zpyarrow.computeZcomputerT   Ztest_extension_typer   Zpyarrow.datasetr6   r5   ImportErrorZpyarrow.aceror   r   markZaceroZ
pytestmarkr*   Zparametrizeparamr<   rM   rO   rY   r[   r_   rb   rh   r(   r(   r(   r)   <module>   s   



*$: