o
    Û­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   ó    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   úZ/var/www/html/CropPilot/venv/lib/python3.10/site-packages/pandas/tests/test_expressions.pyÚ_frame   ó
   ýr   c                   C   r   )Nr   )éd   r
   r   r   r   r   r   r   r   r   Ú_frame2   r   r   c                 C   ó8   t | d  ¡ | d  d¡| d  d¡| d  d¡dœƒS ©	NÚAÚBÚfloat32ÚCÚint64ÚDÚint32)r   r   r!   r#   ©r   ÚcopyÚastype©r   r   r   r   Ú_mixed#   ó   
üÿr)   c                 C   r   r   r%   ©r   r   r   r   Ú_mixed2/   r*   r,   c                   C   ó&   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;   ó
   ýr3   c                 C   s"   | t j d¡jddt  | ¡d� S )Nr   r   r/   )r   r   r   r2   Úshape)r3   r   r   r   Ú_integer_integersD   s   "r6   c                   C   r-   )	Nr   r.   r   )ée   r
   r/   r   r"   r   r1   r   r   r   r   Ú	_integer2J   r4   r8   c                 C   ó   | d j  ¡ S ©Nr   ©Úvaluesr&   r(   r   r   r   Ú_arrayS   ó   r=   c                 C   r9   r:   r;   r+   r   r   r   Ú_array2X   r>   r?   c                 C   r9   ©Nr#   r;   )r)   r   r   r   Ú_array_mixed]   r>   rA   c                 C   r9   r@   r;   )r,   r   r   r   Ú_array_mixed2b   r>   rB   znot using numexpr)Úreasonc                
   @   s8  e Zd Zededef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 s&w   Y  t ¡  || |ƒ}||fS )Nc                    s   t | ˆ ƒ|ƒS )N)Úgetattr)ÚxÚy©rF   r   r   Ú<lambda>l   s    z)TestExpressions.call_op.<locals>.<lambda>úcompute.use_numexprF)Ú__name__rG   Úoperatorr   ÚexprÚget_test_result)ÚdfÚotherrE   rF   ÚopÚexpectedÚresultr   rJ   r   Úcall_opi   s   
ÿ
zTestExpressions.call_opÚfixture)r3   r8   r6   r   r   r)   r,   TFÚarith)ÚaddÚsubÚmulÚmodÚtruedivÚfloordivc                 C   sð   |  |¡}| ¡ �e}| tdd¡ |  ||||¡\}}	|dkr,tdd„ |	jjD ƒƒs,J ‚t 	|	|¡ t
t|jƒƒD ],}
|  |jd d …|
f |jd d …|
f ||¡\}}	|dkr_|	jjdks_J ‚t 	|	|¡ q9W d   ƒ d S 1 sqw   Y  d S )NÚ_MIN_ELEMENTSr   r]   c                 s   s   � | ]}|j d kV  qdS )ÚfN)Úkind)Ú.0rH   r   r   r   Ú	<genexpr>�   s   € z6TestExpressions.test_run_arithmetic.<locals>.<genexpr>r`   )ÚgetfixturevalueÚcontextÚsetattrrO   rV   ÚallÚdtypesr<   ÚtmÚassert_equalÚrangeÚlenr   Úilocr   ra   )ÚselfÚrequestrW   rE   rX   ÚmonkeypatchrQ   ÚmrU   rT   Úir   r   r   Útest_run_arithmeticy   s    

$ÿú"øz#TestExpressions.test_run_arithmeticc                 C   s  |  |¡}|j}tddƒ� | ¡ d }W d  ƒ n1 sw   Y  | ¡ �S}	|	 tdd¡ t d¡ |  ||||¡\}
}t 	¡ }|sHJ dƒ‚t
 ||
¡ tt|jƒƒD ]}|jdd…|f d }|  |jdd…|f ||d	¡ qUW d  ƒ dS 1 s}w   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.
        rL   Fr.   Nr_   r   Tz Did not use numexpr as expected.rY   )rd   rM   r   r&   re   rf   rO   Úset_test_moderV   rP   ri   rj   rk   rl   r   rm   )rn   ro   rW   rE   Úcomparison_oprp   rQ   rX   rR   rq   rU   rT   Úused_numexprrr   Ú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¡}|s<J ‚d S )Nr   iAB r   Úevaluateú+)r   r   r   r   rO   Ú_can_use_numexprrN   rY   )rn   ÚarrayÚarray2rU   r   r   r   Útest_invalidÁ   s   zTestExpressions.test_invalidz2ignore:invalid value encountered in:RuntimeWarningzopname,op_str))rY   rz   )rZ   ú-)r[   Ú*)r]   ú/)Úpowú**zleft_fix,right_fix)r=   r?   )rA   rB   c           	      C   s†   |  |¡}|  |¡}dd„ }tddƒ� |||||ƒ W d   ƒ n1 s%w   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¡}|r3J ‚d S )Nr‚   T©Úuse_numexprFry   )	r   ÚabsrG   rN   rO   ry   ri   Úassert_numpy_array_equalr{   )ÚleftÚrightrF   Úop_strrS   rU   rT   r   r   r   ÚtestitÝ   s   

z/TestExpressions.test_binary_ops.<locals>.testitrL   Fr.   ©rd   r   rO   Úset_numexpr_threads)	rn   ro   rF   rŠ   Úleft_fixÚ	right_fixrˆ   r‰   r‹   r   r   r   Útest_binary_opsÑ   s   
	
ÿ
zTestExpressions.test_binary_opsc                    sv   |  |¡‰|  |¡‰‡ ‡‡fdd„}tddƒ� |ƒ  W d   ƒ n1 s%w   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.   Tr„   Fry   )rO   ry   ri   r‡   r{   )Úf12Úf22rS   rU   rT   ©ru   rˆ   r‰   r   r   r‹   ú   s   z3TestExpressions.test_comparison_ops.<locals>.testitrL   Fr.   rŒ   )rn   ro   ru   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w   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   Úemptyr5   Úbool_ÚfillrO   Úwherer<   ri   r‡   )ÚcrU   rT   ©r•   rQ   r   r   r‹     s
   
z*TestExpressions.test_where.<locals>.testitrL   Fr.   rŒ   )rn   ro   r•   rW   r‹   r   r›   r   Ú
test_where  s   
ÿ

zTestExpressions.test_wherezop_str,opname))r�   r]   )z//r^   )rƒ   r‚   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@w   Y  tj	t
|d�� ||j|jƒ W d   ƒ n1 s^w   Y  tj	t
|d�� ||jdƒ W d   ƒ n1 s{w   Y  tj	t
|d�� |d	|jƒ W d   ƒ n1 s˜w   Y  tj	t
|d�� |d	|ƒ W d   ƒ n1 s´w   Y  tj	t
|d�� ||dƒ W d   ƒ d S 1 sÑw   Y  d S )
Nr   é
   ç      à?©ÚaÚbz
operator 'z!' not implemented for bool dtypes)ÚmatchTF)r   r   r   r   rG   rN   ÚreÚescapeÚpytestÚraisesÚNotImplementedErrorr    r¡   )rn   rŠ   rF   rQ   Úmsgr`   Úerr_msgr   r   r   Ú!test_bool_ops_raise_on_arithmetic#  s4   þÿ

ÿÿÿÿÿ"ÿz1TestExpressions.test_bool_ops_raise_on_arithmetic))rz   rY   )r€   r[   )r   rZ   c              	   C   s~  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r;d S tjddd��ò t ¡ � |||ƒ}	|||ƒ}
t 	|	|
¡ W d   ƒ n1 sbw   Y  t ¡ � ||j
|jƒ}	||j
|jƒ}
t |	|
¡ W d   ƒ n1 sŠw   Y  t ¡ � ||j
dƒ}	||j
dƒ}
t |	|
¡ W d   ƒ n1 s°w   Y  t ¡ � |d|j
ƒ}	|d|j
ƒ}
t |	|
¡ W d   ƒ n1 sÖw   Y  t ¡ � |d|ƒ}	|d|ƒ}
t 	|	|
¡ W d   ƒ n1 súw   Y  t ¡ � ||dƒ}	||dƒ}
t 	|	|
¡ W d   ƒ n1 �sw   Y  W d   ƒ d S W d   ƒ d S 1 �s8w   Y  d S )Nr�   r   rž   rŸ   ú|ú&ú^)rz   r€   r   Úor_Úand_Úxor)r«   r¬   r­   r   Té   )Úmin_elementsF)r   r   r   r   rG   rN   ri   r…   Úassert_produces_warningÚassert_frame_equalr    r¡   Úassert_series_equal)rn   rŠ   rF   ÚnrQ   ÚsubsÚ	sub_funcsr`   ÚfeÚrÚer   r   r   Ú test_bool_ops_warn_on_arithmeticD  s\   þÿ



ý
ý
ý
ý


ý


 ýæ$æ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.   Úbbc                 C   s>   |j d d …ddgf  |j d d …ddgf ¡}t ||¡ d S )Nr    r   )ÚlocÚneri   r´   )rn   Ú
test_inputrT   rU   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 }| ¡ �<}| tdd¡ t||ƒ}tddƒ� |||d�}	W d   ƒ n1 s@w   Y  |||d�}
t |	|
¡ W d   ƒ d S 1 s\w   Y  d S )Nr.   r   r_   rL   F)rÄ   )rm   re   rf   rO   rG   r   ri   r´   )rn   rÄ   rX   r   rp   rQ   rR   rq   Úop_funcrT   rU   r   r   r   Útest_frame_series_axis“  s   

ÿ"÷z&TestExpressions.test_frame_series_axisrS   )Ú__mod__Ú__rmod__Ú__floordiv__Ú__rfloordiv__ÚboxÚscalaréûÿÿÿr±   c              
   C   s  |  ¡ �v}| tdd¡ t dd¡}||ƒ}t||ƒ}||ƒ}	tddƒ� ||ƒ}
W d   ƒ n1 s3w   Y  t |	|
¡ t	|ƒD ]/\}}|t
krR|	j|df }n|	| }ztt|ƒ|ƒ|ƒ}
W n	 tyj   Y qBw ||
ksqJ ‚qBW d   ƒ d S 1 s}w   Y  d S )Nr_   r   iÎÿÿÿé2   rL   F)re   rf   rO   r   ÚarangerG   r   ri   rj   Ú	enumerater   rm   ÚintÚZeroDivisionError)rn   rS   rË   rÌ   rp   rq   ÚdataÚobjÚmethodrU   rT   rr   ÚelemÚscalar_resultr   r   r   Ú,test_python_semantics_with_numexpr_installed«  s,   


ÿÿö"òz<TestExpressions.test_python_semantics_with_numexpr_installedN)rM   Ú
__module__Ú__qualname__ÚstaticmethodÚboolÚstrrV   r¥   ÚmarkÚparametrizers   rx   r~   Úfilterwarningsr�   r”   rœ   rª   r¼   r   rÃ   rÆ   r   r   rØ   r   r   r   r   rD   g   s”    þÿþ
þÿÿ
ÿ
ÿ
2ÿüþþûùþ
ÿþ	rD   )!rN   r£   Únumpyr   r¥   Úpandasr   Úpandas._testingÚ_testingri   Úpandas.core.apir   r   r   Úpandas.core.computationr   rO   rW   r   r   r)   r,   r3   r6   r8   r=   r?   rA   rB   rÞ   ÚskipifÚUSE_NUMEXPRrD   r   r   r   r   Ú<module>   s@    










