a
    é´«j°7  ã                   @   s  d dl Z d dlZ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 d dlmZ ejdd„ ƒZejdd„ ƒZejd	d
„ ƒZejdd„ ƒZejdd„ ƒZejdd„ ƒZejdd„ ƒZejdd„ ƒZejdd„ ƒZejdd„ ƒZejdd„ ƒZejjej dd�G dd„ dƒƒZ dS )é    N)Úoption_context)Ú	DataFrameÚIndexÚSeries)Úexpressionsc                   C   s    t tj d¡ d¡tdƒdd�S )Né   ©i'  é   ÚABCDÚfloat64©ÚcolumnsÚdtype©r   ÚnpÚrandomÚdefault_rngÚstandard_normalÚlist© r   r   ú\/var/www/html/laksyashrimp/venv/lib/python3.9/site-packages/pandas/tests/test_expressions.pyÚ_frame   s
    ýr   c                   C   s    t tj d¡ d¡tdƒdd�S )Nr   )éd   r	   r
   r   r   r   r   r   r   r   Ú_frame2   s
    ýr   c                 C   s8   t | d  ¡ | d  d¡| d  d¡| d  d¡dœƒS ©	NÚAÚBZfloat32ÚCÚint64ÚDZint32)r   r   r   r   ©r   ÚcopyZastype©r   r   r   r   Ú_mixed#   s    
üÿr#   c                 C   s8   t | d  ¡ | d  d¡| d  d¡| d  d¡dœƒS r   r    ©r   r   r   r   Ú_mixed2/   s    
üÿr%   c                   C   s&   t tj d¡jdddd�tdƒdd�S )	Nr   é   r   r   ©Úsizer
   r   r   ©r   r   r   r   Úintegersr   r   r   r   r   Ú_integer;   s
    ýr+   c                 C   s"   | t j d¡jddt  | ¡d� S )Nr   r   r'   )r   r   r   r*   Úshape)r+   r   r   r   Ú_integer_integersD   s    r-   c                   C   s&   t tj d¡jdddd�tdƒdd�S )	Nr   r&   r   )ée   r	   r'   r
   r   r   r)   r   r   r   r   Ú	_integer2J   s
    ýr/   c                 C   s   | d j  ¡ S ©Nr   ©Úvaluesr!   r"   r   r   r   Ú_arrayS   s    r3   c                 C   s   | d j  ¡ S r0   r1   r$   r   r   r   Ú_array2X   s    r4   c                 C   s   | d j  ¡ S ©Nr   r1   )r#   r   r   r   Ú_array_mixed]   s    r6   c                 C   s   | d j  ¡ S r5   r1   )r%   r   r   r   Ú_array_mixed2b   s    r7   znot using numexpr)Úreasonc                
   @   s6  e Zd Zeeedœdd„ƒZej 	dg d¢¡ej 	dddg¡ej 	d	g d
¢¡dd„ ƒƒƒZ
ej 	dg d¢¡ej 	dddg¡dd„ ƒƒZdd„ Zej d¡ej 	dg d¢¡ej 	dddg¡dd„ ƒƒƒZej 	dddg¡dd„ ƒZej 	dddg¡ej 	dg d¢¡dd„ ƒƒZej 	dg d ¢¡d!d"„ ƒZej 	dg d#¢¡d$d%„ ƒZej 	d&eg d'¢g d'¢gg d(¢d)�eddgddggd*d+gd)�feg d,¢g d-¢g d.¢gg d(¢d)�eddgddgddggd*d+gd)�fg¡d/d0„ ƒZej 	d	d
¡ej 	d1d2¡d3d4„ ƒƒZej 	d5g d6¢¡ej 	d7eeeg¡ej 	d8d9d:g¡d;d<„ ƒƒƒZd=S )>ÚTestExpressions)ÚflexÚopnamec                    sp   |r‡ fdd„}ˆ |_ n
ttˆ ƒ}tddƒ� || |ƒ}W d   ƒ n1 sL0    Y  t ¡  || |ƒ}||fS )Nc                    s   t | ˆ ƒ|ƒS )N)Úgetattr)ÚxÚy©r;   r   r   Ú<lambda>l   ó    z)TestExpressions.call_op.<locals>.<lambda>úcompute.use_numexprF)Ú__name__r<   Úoperatorr   ÚexprÚget_test_result)ÚdfÚotherr:   r;   ÚopÚexpectedÚresultr   r?   r   Úcall_opi   s    
(
zTestExpressions.call_opÚfixture)r+   r/   r-   r   r   r#   r%   r:   TFÚarith)ÚaddÚsubÚmulÚmodÚtruedivÚfloordivc                 C   sî   |  |¡}| ¡ �È}| tdd¡ |  ||||¡\}}	|dkrXtdd„ |	jjD ƒƒsXJ ‚t 	|	|¡ t
t|jƒƒD ]X}
|  |jd d …|
f |jd d …|
f ||¡\}}	|dkr¾|	jjdks¾J ‚t 	|	|¡ qrW d   ƒ n1 sà0    Y  d S )NÚ_MIN_ELEMENTSr   rS   c                 s   s   | ]}|j d kV  qdS )ÚfN)Úkind)Ú.0r=   r   r   r   Ú	<genexpr>�   rA   z6TestExpressions.test_run_arithmetic.<locals>.<genexpr>rV   )ÚgetfixturevalueÚcontextÚsetattrrE   rL   ÚallZdtypesr2   ÚtmÚassert_equalÚrangeÚlenr   Úilocr   rW   )ÚselfÚrequestrM   r:   rN   ÚmonkeypatchrG   ÚmrK   rJ   Úir   r   r   Útest_run_arithmeticy   s    

$ÿz#TestExpressions.test_run_arithmeticc                 C   s  |  |¡}|j}tddƒ� | ¡ d }W d  ƒ n1 s<0    Y  | ¡ �¤}	|	 tdd¡ t d¡ |  ||||¡\}
}t 	¡ }|s�J dƒ‚t
 ||
¡ tt|jƒƒD ]8}|jdd…|f d }|  |jdd…|f ||d	¡ qªW d  ƒ n1 sø0    Y  dS )
z²
        tests solely that the result is the same whether or not numexpr is
        enabled.  Need to test whether the function does the correct thing
        elsewhere.
        rB   Fr&   NrU   r   Tz Did not use numexpr as expected.rO   )rZ   rC   r   r!   r[   r\   rE   Zset_test_moderL   rF   r^   r_   r`   ra   r   rb   )rc   rd   rM   r:   Úcomparison_opre   rG   rN   rH   rf   rK   rJ   Zused_numexprrg   Zbinary_compr   r   r   Útest_run_binary›   s    
*

zTestExpressions.test_run_binaryc                 C   s|   t j d¡ d¡}t j d¡ d¡}t tjd ||d¡}|r@J ‚t tjd||d¡}|r\J ‚t tjd||d¡}|sxJ ‚d S )Nr   iAB r   Úevaluateú+)r   r   r   r   rE   Ú_can_use_numexprrD   rO   )rc   ÚarrayZarray2rK   r   r   r   Útest_invalidÁ   s    zTestExpressions.test_invalidz2ignore:invalid value encountered in:RuntimeWarningzopname,op_str))rO   rl   )rP   ú-)rQ   Ú*)rS   ú/)Úpowú**zleft_fix,right_fix)r3   r4   )r6   r7   c           	      C   s†   |  |¡}|  |¡}dd„ }tddƒ� |||||ƒ W d   ƒ n1 sJ0    Y  t d¡ |||||ƒ t ¡  |||||ƒ d S )Nc                 S   sj   |dkrt  | ¡} tt|ƒ}tj|| | dd�}tj|| | dd�}t ||¡ t ||||d¡}|rfJ ‚d S )Nrs   T©Úuse_numexprFrk   )	r   Úabsr<   rD   rE   rk   r^   Úassert_numpy_array_equalrm   )ÚleftÚrightr;   Úop_strrI   rK   rJ   r   r   r   ÚtestitÝ   s    

z/TestExpressions.test_binary_ops.<locals>.testitrB   Fr&   ©rZ   r   rE   Zset_numexpr_threads)	rc   rd   r;   r{   Úleft_fixÚ	right_fixry   rz   r|   r   r   r   Útest_binary_opsÑ   s    	

,
zTestExpressions.test_binary_opsc                    sv   |  |¡‰|  |¡‰‡ ‡‡fdd„}tddƒ� |ƒ  W d   ƒ n1 sJ0    Y  t d¡ |ƒ  t ¡  |ƒ  d S )Nc                     sb   ˆd } ˆd }ˆ }t j|ˆ| dd�}t j|ˆ| dd�}t ||¡ t  ||ˆ|d¡}|r^J ‚d S )Nr&   Tru   Frk   )rE   rk   r^   rx   rm   )Zf12Zf22rI   rK   rJ   ©ri   ry   rz   r   r   r|   ú   s    z3TestExpressions.test_comparison_ops.<locals>.testitrB   Fr&   r}   )rc   rd   ri   r~   r   r|   r   r�   r   Útest_comparison_opsó   s    

$
z#TestExpressions.test_comparison_opsÚcond)r   r   r#   r%   c                    sj   |  |¡‰‡ ‡fdd„}tddƒ� |ƒ  W d   ƒ n1 s>0    Y  t d¡ |ƒ  t ¡  |ƒ  d S )Nc                     sX   t jˆjt jd�} |  ˆ ¡ t | ˆjˆjd ¡}t  | ˆjˆjd ¡}t 	||¡ d S )N)r   r&   )
r   Úemptyr,   Zbool_ÚfillrE   Úwherer2   r^   rx   )ÚcrK   rJ   ©rƒ   rG   r   r   r|     s
    
z*TestExpressions.test_where.<locals>.testitrB   Fr&   r}   )rc   rd   rƒ   rM   r|   r   rˆ   r   Ú
test_where  s    
$
zTestExpressions.test_wherezop_str,opname))rr   rS   )z//rT   )rt   rs   c                 C   s´  t tj d¡ d¡dktj d¡ d¡dkdœƒ}d|› d�}tt|ƒ}t |¡}tj	t
|d�� |||ƒ W d   ƒ n1 s€0    Y  tj	t
|d�� ||j|jƒ W d   ƒ n1 s¼0    Y  tj	t
|d�� ||jdƒ W d   ƒ n1 sö0    Y  tj	t
|d�� |d	|jƒ W d   ƒ n1 �s20    Y  tj	t
|d�� |d	|ƒ W d   ƒ n1 �sl0    Y  tj	t
|d�� ||dƒ W d   ƒ n1 �s¦0    Y  d S )
Nr   é
   ç      à?©ÚaÚbz
operator 'z!' not implemented for bool dtypes)ÚmatchTF)r   r   r   r   r<   rD   ÚreÚescapeÚpytestZraisesÚNotImplementedErrorr�   rŽ   )rc   r{   r;   rG   ÚmsgrV   Úerr_msgr   r   r   Ú!test_bool_ops_raise_on_arithmetic#  s(    þÿ

(,*,*z1TestExpressions.test_bool_ops_raise_on_arithmetic))rl   rO   )rq   rQ   )rp   rP   c              	   C   sv  d}t tj d¡ |¡dktj d¡ |¡dkdœƒ}ddddœ}d	d
ddœ}tt|ƒ}tt|||  ƒ}|dkrvd S tjddd���Ú t ¡ �0 |||ƒ}	|||ƒ}
t 	|	|
¡ W d   ƒ n1 sÆ0    Y  t ¡ �8 ||j
|jƒ}	||j
|jƒ}
t |	|
¡ W d   ƒ n1 �s0    Y  t ¡ �4 ||j
dƒ}	||j
dƒ}
t |	|
¡ W d   ƒ n1 �sf0    Y  t ¡ �4 |d|j
ƒ}	|d|j
ƒ}
t |	|
¡ W d   ƒ n1 �s´0    Y  t ¡ �0 |d|ƒ}	|d|ƒ}
t 	|	|
¡ W d   ƒ n1 �sþ0    Y  t ¡ �0 ||dƒ}	||dƒ}
t 	|	|
¡ W d   ƒ n1 �sH0    Y  W d   ƒ n1 �sh0    Y  d S )NrŠ   r   r‹   rŒ   ú|ú&ú^)rl   rq   rp   Úor_Úand_Úxor)r—   r˜   r™   rp   Té   )Zmin_elementsF)r   r   r   r   r<   rD   r^   rv   Zassert_produces_warningÚassert_frame_equalr�   rŽ   Zassert_series_equal)rc   r{   r;   ÚnrG   ÚsubsZ	sub_funcsrV   ZfeÚrÚer   r   r   Ú test_bool_ops_warn_on_arithmeticD  sJ    þÿ



*
,
,
,


,


z0TestExpressions.test_bool_ops_warn_on_arithmeticztest_input,expected)r   r&   r   Úaa)r�   rŽ   r‡   r   )r   r�   r   )r   é   r   r¤   )r   r	   r   r¤   )r   r&   r&   Zbbc                 C   s>   |j d d …ddgf  |j d d …ddgf ¡}t ||¡ d S )Nr�   r   )ÚlocÚner^   rž   )rc   Z
test_inputrJ   rK   r   r   r   Útest_bool_ops_column_name_dtypey  s    .z/TestExpressions.test_bool_ops_column_name_dtypeÚaxis)r   r&   c              	   C   sÄ   |}|dkr |j dd d …f }n|j d d …df }| ¡ �v}| tdd¡ t||ƒ}tddƒ� |||d�}	W d   ƒ n1 s€0    Y  |||d�}
t |	|
¡ W d   ƒ n1 s¶0    Y  d S )Nr&   r   rU   rB   F)r©   )rb   r[   r\   rE   r<   r   r^   rž   )rc   r©   rN   r   re   rG   rH   rf   Zop_funcrJ   rK   r   r   r   Útest_frame_series_axis“  s    

*z&TestExpressions.test_frame_series_axisrI   )Ú__mod__Ú__rmod__Ú__floordiv__Ú__rfloordiv__ÚboxÚscalaréûÿÿÿr�   c              
   C   s  |  ¡ �ê}| tdd¡ t dd¡}||ƒ}t||ƒ}||ƒ}	tddƒ� ||ƒ}
W d   ƒ n1 sf0    Y  t |	|
¡ t	|ƒD ]^\}}|t
kr¤|	j|df }n|	| }ztt|ƒ|ƒ|ƒ}
W n tyÔ   Y q„0 ||
ks„J ‚q„W d   ƒ n1 sø0    Y  d S )NrU   r   iÎÿÿÿé2   rB   F)r[   r\   rE   r   Zaranger<   r   r^   r_   Ú	enumerater   rb   ÚintÚZeroDivisionError)rc   rI   r¯   r°   re   rf   ÚdataÚobjÚmethodrK   rJ   rg   ÚelemZscalar_resultr   r   r   Ú,test_python_semantics_with_numexpr_installed«  s$    

&z<TestExpressions.test_python_semantics_with_numexpr_installedN)rC   Ú
__module__Ú__qualname__ÚstaticmethodÚboolÚstrrL   r’   ÚmarkZparametrizerh   rj   ro   Úfilterwarningsr€   r‚   r‰   r–   r£   r   r¨   rª   r   r   rº   r   r   r   r   r9   g   s’   þÿþ
þÿÿ
ÿ
ÿ
2ÿüþþûùþ
ÿþ	r9   )!rD   r�   Únumpyr   r’   Zpandasr   Zpandas._testingZ_testingr^   Zpandas.core.apir   r   r   Zpandas.core.computationr   rE   rM   r   r   r#   r%   r+   r-   r/   r3   r4   r6   r7   rÀ   ZskipifZUSE_NUMEXPRr9   r   r   r   r   Ú<module>   s>   










