U
    âÇ-e<  ã                   @   sâ   d dl Z d dlZd dlZejjdd„ ƒZejjdd„ ƒZejjdd„ ƒZejjdd	„ ƒZ	ejj
d
ddd„ ƒZejjdd„ ƒZejjdd„ ƒZejjdd„ ƒZejjdd„ ƒZejjdd„ ƒZejjdd„ ƒZejjdd„ ƒZdS )é    Nc                  C   sr  dd l m}  |  ¡ }t dt ¡ ¡}t dt ¡ ¡}t ||g¡}t dt ¡ ¡}| |¡}| |¡}| ¡ |j	ksxt
‚| d||gt ¡ ¡}| |||t ¡ ¡}	| |	|¡}
|
 ¡ j	t ¡ ksÄt
‚|  ||
gt ¡ ¡}|j d¡dksìt
‚tjdd	d
dgt ¡ d}tjddddgt ¡ d}tjddddgt ¡ d}tjj||gddgd}| |¡\}| |¡snt
‚d S )Nr   ÚaÚbÚresÚgreater_thanú@expr_éÿÿÿÿé
   é   éìÿÿÿé   ©Útypeé   é   ©Únames)Úpyarrow.gandivaÚgandivaÚTreeExprBuilderÚpaÚfieldÚint32ÚschemaÚ
make_fieldÚreturn_typer   ÚAssertionErrorÚmake_functionÚbool_Úmake_ifÚmake_expressionÚresultÚmake_projectorÚdefault_memory_poolÚllvm_irÚfindÚarrayZRecordBatchÚfrom_arraysÚevaluateÚequals)r   ÚbuilderZfield_aZfield_br   Úfield_resultÚnode_aÚnode_bÚ	conditionÚif_nodeÚexprÚ	projectorr   r   ÚeZinput_batchÚr© r3   ú[/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/pyarrow/tests/test_gandiva.pyÚtest_tree_exp_builder   s6    

ÿ  ÿr5   c                  C   sÞ   dd l m}  tj t ddg¡t ddg¡gddg¡}|  ¡ }| |j 	d¡¡}| |j 	d¡¡}| 
d||gt ¡ ¡}t 	d	t ¡ ¡}| ||¡}|  |j|gt ¡ ¡}| | ¡ d ¡\}	t dd
g¡}
|	 |
¡sÚt‚d S )Nr   ç      ð?ç       @ç      @g      @r   r   ÚaddÚcg      @)r   r   r   ÚTabler&   r%   r   r   r   r   r   Úfloat64r   r!   r"   r'   Ú
to_batchesr(   r   )r   Útabler)   r+   r,   Úsumr*   r/   r0   r2   r1   r3   r3   r4   Ú
test_tableA   s$     ÿ  ÿr@   c            	      C   sô   dd l m}  tj t dd„ tdƒD ƒ¡gdg¡}|  ¡ }| |j	 
d¡¡}| dt ¡ ¡}| d||gt ¡ ¡}| |¡}| ¡ jt ¡ ks’t‚|  |j	|¡}|j d¡d	ks´t‚| | ¡ d t ¡ ¡}| ¡  tjtd
ƒt ¡ d¡sðt‚d S )Nr   c                 S   s   g | ]}d | ‘qS )r6   r3   )Ú.0Úir3   r3   r4   Ú
<listcomp>`   s     ztest_filter.<locals>.<listcomp>i'  r   g     @@Ú	less_thanr   r   iè  r   )r   r   r   r;   r&   r%   Úranger   r   r   r   Úmake_literalr<   r   r   Úmake_conditionr    r   r   Úmake_filterr#   r$   r'   r=   r"   Úto_arrayr(   Úuint32)	r   r>   r)   r+   ZthousandÚcondr-   Úfilterr    r3   r3   r4   Útest_filter\   s    ÿ
rM   c            	      C   s*  dd l m}  t ddddddg¡}tj |gdg¡}|  ¡ }| |j 	d¡¡}| 
|ddgt ¡ ¡}| |¡}|  |j|¡}| | ¡ d t ¡ ¡}| ¡  tjd	d
gt ¡ d¡s¸t‚t dd	dd	ddd
dddg
¡}tj | t ¡ ¡gdg¡}| |j 	d¡¡}| 
|d	dgt ¡ ¡}| |¡}|  |j|¡}| | ¡ d t ¡ ¡}| ¡  tjd	dddgt ¡ d¡stt‚t dd	dd	ddd
dddg
¡}tj |gdg¡}| |j 	d¡¡}| 
|d	dgt ¡ ¡}| |¡}|  |j|¡}| | ¡ d t ¡ ¡}| ¡  tjd	dddgt ¡ d¡s&t‚d S )Nr   ÚgaZanÚndZdiZivÚvar   é   é   r   é   é   r   é	   é   é   )r   r   r   r%   r;   r&   r   r   r   r   Úmake_in_expressionÚstringrG   rH   r'   r=   r"   rI   r(   rJ   r   Úcastr   Úint64)	r   Úarrr>   r)   r+   rK   r-   rL   r    r3   r3   r4   Útest_in_exprs   s4    
$
*
r]   z>Gandiva C++ did not have *real* binary, time and date support.)Úreasonc                  C   sÜ  dd l m}  t ddddddg¡}tj |gdg¡}|  ¡ }| |j 	d¡¡}| 
|ddgt ¡ ¡}| |¡}|  |j|¡}| | ¡ d t ¡ ¡}| ¡  tjd	d
gt ¡ d¡s¸t‚tj d¡}	tj d¡}
tj d¡}t |	|
|g¡}tj |gdg¡}|  ¡ }| |j 	d¡¡}| 
||
gt d¡¡}| |¡}|  |j|¡}| | ¡ d t ¡ ¡}t| ¡ ƒd	gksvt‚|	 ¡ }|
 ¡ }| ¡ }t |||g¡}tj |gdg¡}|  ¡ }| |j 	d¡¡}| 
||gt d¡¡}| |¡}|  |j|¡}| | ¡ d t ¡ ¡}t| ¡ ƒd	gks(t‚|	 ¡ }|
 ¡ }| ¡ }t |||g¡}tj |gdg¡}|  ¡ }| |j 	d¡¡}| 
||gt ¡ ¡}| |¡}|  |j|¡}| | ¡ d t ¡ ¡}t| ¡ ƒd	gksØt‚d S )Nr   s   gas   ans   nds   dis   ivs   var   rQ   rR   r   gÕÌç¹,ûÖAgÕÌç¯,ûÖAgÕÌçØ+ûÖAÚms)r   r   r   r%   r;   r&   r   r   r   r   rX   ÚbinaryrG   rH   r'   r=   r"   rI   r(   rJ   r   ÚdatetimeÚutcfromtimestampÚ	timestampÚlistÚtimeZtime64ÚdateZdate32)r   r\   r>   r)   r+   rK   r-   rL   r    Z
datetime_1Z
datetime_2Z
datetime_3Ztime_1Ztime_2Ztime_3Zdate_1Zdate_2Zdate_3r3   r3   r4   Útest_in_expr_todo˜   s\    
$


rg   c                  C   sL  dd l m}  tj t dddddddg¡t d	d
dddddg¡gddg¡}|  ¡ }| |j 	d¡¡}| |j 	d¡¡}| 
dt ¡ ¡}| 
dt ¡ ¡}| d||gt ¡ ¡}| d||gt ¡ ¡}| d||gt ¡ ¡}	| | ||g¡|	g¡}
| |
¡}|  |j|¡}| | ¡ d t ¡ ¡}| ¡  tjdddgt ¡ d¡sHt‚d S )Nr   r6   g      ?@g      G@r8   g     €L@g      F@g      6@g      @g     €F@g      B@g     @R@g     ÀT@g      7@g      S@r   r   g      I@g      &@rD   r   rR   r   r   )r   r   r   r;   r&   r%   r   r   r   r   rF   r<   r   r   Úmake_orÚmake_andrG   rH   r'   r=   r"   rI   r(   rJ   r   )r   r>   r)   r+   r,   ZfiftyZelevenZcond_1Zcond_2Zcond_3rK   r-   rL   r    r3   r3   r4   Útest_booleanâ   s,    þýÿ
rj   c               	   C   sÌ  dd l m}  |  ¡ }| dt ¡ ¡ | dt ¡ ¡ | dt ¡ ¡ | dt ¡ ¡ | dt 	¡ ¡ | dt 
¡ ¡ | dt ¡ ¡ | dt ¡ ¡ | d	t ¡ ¡ | d
t ¡ ¡ | dt ¡ ¡ | dt ¡ ¡ | dt ¡ ¡ | dd¡ | dd¡ | dd¡ | dd¡ | dd¡ | dd¡ | dd¡ | dd¡ | d	d¡ | d
d¡ | dd¡ | dd¡ | dd¡ t t¡ | dt ¡ ¡ W 5 Q R X t t¡ | dd ¡ W 5 Q R X d S )Nr   TrQ   rR   rS   rT   r   rV   é   g       @g      "@Zhellos   worldÚboolÚuint8Úuint16rJ   Úuint64Úint8Úint16r   r[   Úfloat32r<   rY   r`   )r   r   r   rF   r   r   rm   rn   rJ   ro   rp   rq   r   r[   rr   r<   rY   r`   ÚpytestÚraisesÚ	TypeError)r   r)   r3   r3   r4   Útest_literalsý   s@    rv   c                  C   sð   dd l m}  ddddg}tj|t ¡ d}tjj|gdgd}|  ¡ }| |j	 
d¡¡}| d	t ¡ ¡}| d
||gt ¡ ¡}t 
dt ¡ ¡}| ||¡}	|  |j	|	gt ¡ ¡}
|
 | ¡ d ¡\}tjddddgt ¡ d}| |¡sìt‚d S )Nr   ZparkÚsparklezbright spark and fireZsparkr   r   r   z%spark%Úliker   FT)r   r   r   r%   rY   r;   r&   r   r   r   r   rF   r   r   r   r!   r"   r'   r=   r(   r   )r   ÚelementsÚdatar>   r)   r+   Úregexrx   r*   r/   r0   r2   r   r3   r3   r4   Ú
test_regex%  s$      ÿr|   c                  C   s\   dd l m}  |  ¡ }t|d  ¡ ƒtjks.t‚t|d  ¡ ƒt	ksFt‚t
|d dƒsXt‚d S )Nr   Úname)r   r   Z"get_registered_function_signaturesr   r   r   ZDataTyper   Zparam_typesrd   Úhasattr)r   Z
signaturesr3   r3   r4   Ú'test_get_registered_function_signatures=  s
    r   c                  C   sœ  dd l m}  t ¡ }t ddddddgt ¡ ¡}t dddd	dd
gt ¡ ¡}t dddddd gt ¡ ¡}tj |||gdddg¡}t dt ¡ ¡}|  	¡ }| 
|j d¡¡}| 
|j d¡¡}	| 
|j d¡¡}
| d||	gt ¡ ¡}| |¡}| d|	|
gt ¡ ¡}| ||	|
t ¡ ¡}| ||¡}|  |j|¡}|  |j|g|d¡}| | ¡ d |¡}| | ¡ d |¡\}t ddd gt ¡ ¡}| |¡s˜t‚d S )Nr   r   r	   r
   r   é   é   r   r   rS   rQ   é   é   é   iëÿÿÿr   r   r:   r   r   rD   ZUINT32)r   r   r   r"   r%   r   r;   r&   r   r   r   r   r   r   rG   r   r   rH   r!   r'   r=   r(   r   )r   ZmpoolZarray0Zarray1Zarray2r>   r*   r)   r+   r,   Znode_cZgreater_than_functionZfilter_conditionZproject_conditionr.   r/   rL   r0   Zselection_vectorr2   Úexpr3   r3   r4   Útest_filter_projectG  sT     ÿÿ ÿ  ÿ   ÿ
 ÿr†   c                  C   s  dd l m}  |  ¡ }t| dt ¡ ¡ƒ d¡s2t‚t| dt 	¡ ¡ƒdksNt‚t| 
t dt ¡ ¡¡ƒdkspt‚t| 
t dt ¡ ¡¡ƒd	ks’t‚| 
t d
t ¡ ¡¡}| d|gt ¡ ¡}t|ƒdksÌt‚| 
t dt ¡ ¡¡}| ||g¡}t|ƒdkst‚d S )Nr   r7   z(const double) 2 raw(rR   z(const int64) 2Úxz
(double) xÚyz
(string) yÚzÚnotzbool not((bool) z)zbool not((bool) z) && (bool) y)r   r   r   ÚstrrF   r   r<   Ú
startswithr   r[   r   r   rY   r   r   ri   )r   r)   Zfield_zZ	func_nodeZfield_yZand_noder3   r3   r4   Útest_to_stringv  s    ÿ""r   c               	   C   s´  dd l m}  |  ¡ }t dt ¡ ¡}t |g¡}| dt ¡ ¡}t	 
t¡ | d ¡ W 5 Q R X t	 
t¡ | |d d d ¡ W 5 Q R X t	 
t¡ | |d g¡ W 5 Q R X t	 
t¡ | d |g¡ W 5 Q R X t	 
t¡ | d dddgt ¡ ¡ W 5 Q R X t	 
t¡ | d |¡ W 5 Q R X t	 
t¡ | d ¡ W 5 Q R X t	 
t¡ | d|d gt ¡ ¡ W 5 Q R X t	 
t¡ |  |d g¡ W 5 Q R X t	 
t¡ |  |d ¡ W 5 Q R X d S )Nr   r‡   TrQ   rR   rS   rD   )r   r   r   r   r   r   r   rF   r   rs   rt   ru   r   r   ri   rh   rX   r   rG   r   r!   rH   )r   r)   Zfield_xr   Zliteral_truer3   r3   r4   Útest_rejects_noneŠ  s2    " rŽ   )ra   rs   Zpyarrowr   Úmarkr   r5   r@   rM   r]   Úskiprg   rj   rv   r|   r   r†   r   rŽ   r3   r3   r3   r4   Ú<module>   s4   
(


$
H

'

	
.
