o
    Û­j‹ ã                   @  s¶  U d dl mZ d dlmZ d dlm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  mZ d dlmZmZmZmZ d dlZd d	lmZmZmZm Z m!Z!m"Z" d dl#m$Z% d d
l&m'Z'm(Z( d dl)m*Z* d dl+m,Z,m-Z-m.Z. d dl/m0Z0m1Z1 d dl2m3Z3m4Z4m5Z5m6Z6m7Z7 d dl8m9Z9 d dl:m;Z; eddd�Z<e	j=dd„ e*D ƒd�dd„ ƒZ>e	j=e'j?d�dd„ ƒZ@dd„ ZAe	j=eBeCdƒƒg d¢d�d d!„ ƒZDeDZEeDZFe	j=d"d#„ ƒZGG d$d%„ d%ƒZHG d&d'„ d'ƒZId(d)„ ZJG d*d+„ d+ƒZKG d,d-„ d-ƒZLG d.d/„ d/ƒZMejN Od0¡ Pd1¡ZQG d2d3„ d3ƒZRe Sd¡d4d5„ ƒZTe Sd¡e	jU Vd6d7¡d8d9„ ƒƒZWe Sd¡d:d;„ ƒZXe Sd¡d<d=„ ƒZYe.e(jZe-d>œZ[d?e\d@< e	jU Vde*¡e	jU Vde[¡dAdB„ ƒƒZ]dCdD„ Z^dEdF„ Z_e	jU VdGg dH¢¡dIdJ„ ƒZ`dKdL„ ZadMdN„ ZbdOdP„ ZcdQdR„ Zde	jU VdSdT¡e	jU Vd!eeeff¡e	jU VdUeeeff¡dVdW„ ƒƒƒZge	jU VdXdYdZg¡d[d\„ ƒZhd]d^„ Zie	jU Vd_d`dag¡dbdc„ ƒZjddde„ Zke	jU Vd_e9 l¡ ¡dfdg„ ƒZmdhdi„ ZnG djdk„ dkƒZodS )lé    )Úannotations)Úreduce)ÚproductN)ÚPY312)Úimport_optional_dependency)ÚNumExprClobberingErrorÚPerformanceWarningÚUndefinedVariableError)Úis_boolÚis_floatÚis_list_likeÚ	is_scalar)Ú	DataFrameÚIndexÚSeriesÚ
date_rangeÚperiod_rangeÚtimedelta_range)ÚexprÚpytables)ÚENGINES)ÚBaseExprVisitorÚPandasExprVisitorÚPythonExprVisitor)ÚNUMEXPR_INSTALLEDÚUSE_NUMEXPR)ÚARITH_OPS_SYMSÚSPECIAL_CASE_ARITH_OPS_SYMSÚ_binary_math_opsÚ_binary_ops_dictÚ_unary_math_ops)ÚDEFAULT_GLOBALS)ÚVersionÚnumexprÚignore)Úerrorsc              	   c  sJ   � | ] }t j|t jj|d kot dt› dt› �d�t d ¡gd�V  qdS )r#   znumexpr enabled->z, installed->©Úreason©ÚmarksN)ÚpytestÚparamÚmarkÚskipifr   r   ÚtdÚ
skip_if_no)Ú.0Úengine© r2   ú_/var/www/html/CropPilot/venv/lib/python3.10/site-packages/pandas/tests/computation/test_eval.pyÚ	<genexpr>@   s   € õÿþúþ
ÿr4   )Úparamsc                 C  ó   | j S ©N©r+   ©Úrequestr2   r2   r3   r1   ?   s   r1   c                 C  r6   r7   r8   r9   r2   r2   r3   ÚparserS   s   r;   c              
   C  sd   t | }t| jr-z|| |ƒW S  ty, } zt|ƒ d¡r'tjW  Y d }~S ‚ d }~ww || |ƒS )Nz6negative number cannot be raised to a fractional power)r   r   Úhas_neg_fracÚ
ValueErrorÚstrÚ
startswithÚnpÚnan)ÚlhsÚcmp1Úrhsr1   ÚcÚer2   r2   r3   Ú_eval_single_binX   s   
ÿ€û
rG   é   )r   r   Ú	SeriesNaNÚDataFrameNaNÚfloat)r5   Úidsc                 C  s~   t tj d¡ d¡ƒ}tj||dk< t tj d¡ d¡ƒttj d¡ d¡ƒtddtjtjdgƒ|tj d¡ ¡ f}|| j S )Né   )é
   rH   ç      à?rH   é   )r   r@   ÚrandomÚdefault_rngÚstandard_normalrA   r   r+   )r:   Únan_df1Úoptsr2   r2   r3   rB   g   s   û
rB   c                   C  s*   dd„ dd„ dd„ dd„ dd„ dd„ dœS )	Nc                 S  ó   t t | ¡tjd�S ©N©Údtype)r   r@   ÚarangeÚint64©Únr2   r2   r3   Ú<lambda>€   ó    zidx_func_dict.<locals>.<lambda>c                 S  rV   rW   )r   r@   rZ   Úfloat64r\   r2   r2   r3   r^   �   r_   c                 S  s   t dd„ tdd|  ƒD ƒƒS )Nc                 S  s   g | ]}|› d t |ƒ› �‘qS )Ú_)Úchr)r0   Úir2   r2   r3   Ú
<listcomp>‚   s    z3idx_func_dict.<locals>.<lambda>.<locals>.<listcomp>éa   )r   Úranger\   r2   r2   r3   r^   ‚   s    c                 S  ó   t d| d�S )Nú
2020-01-01©Úperiods)r   r\   r2   r2   r3   r^   ƒ   ó    c                 S  rg   )Nz1 dayri   )r   r\   r2   r2   r3   r^   „   rk   c                 S  s   t d| dd�S )Nrh   ÚD)rj   Úfreq)r   r\   r2   r2   r3   r^   …   s    )rc   ÚfÚsÚdtr.   Úpr2   r2   r2   r2   r3   Úidx_func_dict}   s   úrr   c                	   @  sJ  e Zd Zejjdg d¢g d¢d�ejjdddgdd	gd�ej d
ej¡dd„ ƒƒƒZej dej	¡dd„ ƒZ
ej dej	¡dd„ ƒZej dddg¡ej dddg¡dd„ ƒƒZej deeeƒ e¡ƒ¡dd„ ƒZdd„ Zdd„ Zejdd„ ƒZdd„ Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Zej d(eej  d)¡ !d*¡ƒeej  d)¡j"d+d*d,�ƒeej  d)¡ !d*¡d-kƒg¡d.d/„ ƒZ#ej d(e$ej  d)¡ !d+¡ƒe$ej  d)¡j"d+d+d,�ƒe$ej  d)¡ !d+¡d-kƒg¡d0d1„ ƒZ%d2d3„ Z&d4d5„ Z'ej d6d7d8g¡d9d:„ ƒZ(d;d<„ Z)ej d=d>¡d?d@„ ƒZ*dAdB„ Z+dCdD„ Z,dEdF„ Z-dGdH„ Z.dIdJ„ Z/dKdL„ Z0dMS )NÚTestEvalrC   )z!=z==z<=z>=ú<ú>)ÚneÚeqÚleÚgeÚltÚgt)rL   Úcmp2ru   rt   r{   rz   Úbinopc                 C  sÒ   |dkr8|dv r8d}t jt|d�� d|› d|› d|› d�}	tj|	||d	� W d   ƒ d S 1 s1w   Y  d S t||||ƒ}
t||||ƒ}t|
|||ƒ}d|› d|› d|› d�}	tj|	||d	�}t ||¡ d S )
NÚpython©ÚandÚorú"'BoolOp' nodes are not implemented©Úmatchú(lhs z rhs) z (lhs ú rhs)©r1   r;   )r*   ÚraisesÚNotImplementedErrorÚpdÚevalrG   ÚtmÚassert_equal)ÚselfrC   r|   r}   rB   rD   r1   r;   ÚmsgÚexÚlhs_newÚrhs_newÚexpectedÚresultr2   r2   r3   Útest_complex_cmp_opsŠ   s   
þýzTestEval.test_complex_cmp_opsÚcmp_opc           
      C  s  |dk }|dk }|dkr:|dv r:d}t jt|d�� d|› d�}tj|||d� W d   ƒ d S 1 s3w   Y  d S d|› d�}d	 d
dg¡}|dv rut|ƒsut jt|d�� tj|||||dœd� W d   ƒ d S 1 snw   Y  d S t||||ƒ}tj|||d�}	t	 
|	|¡ d S )Nr   r~   ©Úinúnot inú&'(In|NotIn)' nodes are not implementedrƒ   úlhs ú rhsr‡   ú|zvonly list-like( or dict-like)? objects are allowed to be passed to (DataFrame\.)?isin\(\), you passed a (`|')bool(`|')z'argument of type 'bool' is not iterable©rB   rD   ©r1   r;   Ú
local_dict)r*   rˆ   r‰   rŠ   r‹   Újoinr   Ú	TypeErrorrG   rŒ   r�   )
rŽ   r–   rB   rD   r1   r;   r�   r�   r“   r”   r2   r2   r3   Útest_simple_cmp_ops¡   s:   
þýüÿü"ÿzTestEval.test_simple_cmp_opsÚopc                 C  sŒ  |dkr2|dv r2d}t jt|d�� d|› d�}tj|||d� W d   ƒ d S 1 s+w   Y  d S t|ƒrRt|ƒsR|dv rR|dkrR|dkrRt jjd	d
�}	| |	¡ ddg}
d|› d�}d 	ddg¡}t
|ƒr‘||
v r‘t jt|d�� tj|||||dœd� W d   ƒ d S 1 sŠw   Y  d S t
|ƒr¤t
|ƒr¤dd„ ||fD ƒ\}}t||||ƒ}t
|ƒr³| }n| }tj|||d�}t ||¡ d S )Nr~   r—   rš   rƒ   z~(lhs r†   r‡   Úpandasz]Looks like expected is negative, unclear whether expected is incorrect or result is incorrectr&   r˜   r™   r�   zwonly list-like( or dict-like)? objects are allowed to be passed to (DataFrame\.)?isin\(\), you passed a (`|')float(`|')z(argument of type 'float' is not iterablerž   rŸ   c                 s  s   � | ]	}t  |g¡V  qd S r7   )r@   Úarray©r0   Úxr2   r2   r3   r4   ï   ó   € z3TestEval.test_compound_invert_op.<locals>.<genexpr>)r*   rˆ   r‰   rŠ   r‹   r   r,   ÚxfailÚapplymarkerr¡   r   r¢   rG   rŒ   Úassert_almost_equal)rŽ   r¤   rB   rD   r:   r1   r;   r�   r�   r,   Ú
skip_theser“   r”   r2   r2   r3   Útest_compound_invert_opÄ   sX   
þýÿþÿ
üÿü"ÿ	z TestEval.test_compound_invert_opc                 C  s  |}|dkr3d|› d|› d�}	d}
t jt|
d�� tj|	||d� W d   ƒ d S 1 s,w   Y  d S t||||ƒ}t||||ƒ}|d ur�|d urƒd|› d|› d�}	d|› d|› d�}d	|› d
|› d�}t|d||ƒ}|	||fD ]}tj|||d�}t ||¡ qpd S d S d S )Nr~   r›   ú mid rœ   r‚   rƒ   r‡   ú mid and mid r…   ú mid) & (mid r†   ú&)r*   rˆ   r‰   rŠ   r‹   rG   rŒ   r¬   )rŽ   rC   r|   rB   ÚmidhsrD   r1   r;   ÚmidÚex1r�   r‘   r’   Úex2Úex3r“   r�   r”   r2   r2   r3   Útest_chained_cmp_opø   s,   
ÿþ÷zTestEval.test_chained_cmp_opÚarith1c              
   C  sè   d|› d�}t j|||d�}t||||ƒ}t ||¡ d|› d|› d�}t j|||d�}t||||ƒ}	z	|	 |¡\}	}
W n tttfyI   Y d S w |dkrddd l	}| 
d|› d�¡}t |j|¡ d S td|› d�ƒ}t ||¡ d S )	Nr›   rœ   r‡   z rhs r#   r   znlhs z ghs)rŠ   r‹   rG   rŒ   r¬   Úalignr=   r¢   ÚAttributeErrorr#   ÚevaluateÚvalues)rŽ   r¹   rB   rD   r1   r;   r�   r”   r“   ÚnlhsÚghsrv   r2   r2   r3   Útest_binary_arith_ops  s$   ýzTestEval.test_binary_arith_opsc           	      C  s”   d}t j|||d�}|| }t ||¡ |dkr;dd l}| d¡}t|ttfƒr1t |j	|¡ d S t || 
¡ ¡ d S t|d||ƒ}t ||¡ d S )Nz	lhs % rhsr‡   r#   r   zexpected % rhsú%)rŠ   r‹   rŒ   r¬   r#   r¼   Ú
isinstancer   r   r½   ÚitemrG   )	rŽ   rB   rD   r1   r;   r�   r”   r“   rv   r2   r2   r3   Útest_modulus4  s   
zTestEval.test_modulusc           	      C  sž   d}|dks|dkr't tjƒt dƒkr'tj|||d�}|| }t ||¡ d S d}tjt	|d�� tj|||dœ||d	� W d   ƒ d S 1 sHw   Y  d S )
Nz
lhs // rhsr~   r#   ú2.13.0r‡   zGunsupported operand type\(s\) for //: 'VariableNode' and 'VariableNode'rƒ   rž   ©r    r1   r;   )
r"   r#   Ú__version__rŠ   r‹   rŒ   r�   r*   rˆ   r¢   )	rŽ   rB   rD   r1   r;   r�   Úresr“   r�   r2   r2   r3   Útest_floor_divisionF  s    ÿü"ÿzTestEval.test_floor_divisionc           
      C  sÜ   d}t |d||ƒ}tj|||d�}t|ƒrHt|ƒrHt|ttjfƒrHt |¡rHd}t	j
t|d�� t ||¡ W d   ƒ d S 1 sAw   Y  d S t ||¡ d}tj|||d�}t |d||ƒ}	t |	d||ƒ}t ||¡ d S )Nz
lhs ** rhsú**r‡   z-(DataFrame.columns|numpy array) are differentrƒ   z(lhs ** rhs) ** rhs)rG   rŠ   r‹   r   rÂ   Úcomplexr@   ÚcomplexfloatingÚisnanr*   rˆ   ÚAssertionErrorrŒ   Úassert_numpy_array_equalr¬   )
rŽ   rB   rD   r1   r;   r�   r“   r”   r�   Úmiddler2   r2   r3   Útest_pow\  s*   ÿþýü"ÿzTestEval.test_powc                 C  sX   z|  t¡}W n ty   t t|ƒg¡}Y nw | }tjd||d�}t ||¡ d S )Nz~elbr‡   )	ÚastypeÚboolr»   r@   r¦   rŠ   r‹   rŒ   r¬   )rŽ   rB   r1   r;   Úelbr“   r”   r2   r2   r3   Útest_check_single_invert_opv  s   ÿz$TestEval.test_check_single_invert_opc                 C  s8  d}t tj d¡ d¡ƒ}|dkr3d}tjt|d�� tj	|||d� W d   ƒ n1 s-w   Y  n!d}tjt
|d�� tj	|||d� W d   ƒ n1 sOw   Y  t tj d¡jd	dd
�ƒ}|dkr�ttjƒtdƒk r�d}tjt|d�� tj	|||d� W d   ƒ n1 sŠw   Y  n| }tj	|||d�}t ||¡ t tj d¡ d¡dkƒ}| }tj	|||d�}t ||¡ t g d¢tj d¡ d¡dkdœƒ}|dkr÷tjtdd�� tj	|||d� W d   ƒ d S 1 sðw   Y  d S d}tjt
|d�� tj	|||d� W d   ƒ d S 1 �sw   Y  d S )Nú~lhsrM   ©rH   rM   r#   ú-couldn't find matching opcode for 'invert_dd'rƒ   r‡   ú0ufunc 'invert' not supported for the input typesrH   ©ÚsizerÅ   ú)couldn't find matching opcode for 'invertrO   ©ÚarP   g       @é   )ÚbrE   úunknown type objectú#bad operand type for unary ~: 'str')r   r@   rQ   rR   rS   r*   rˆ   r‰   rŠ   r‹   r¢   Úintegersr"   r#   rÇ   rŒ   Úassert_frame_equalr=   )rŽ   r1   r;   r   rB   r�   Úexpectr”   r2   r2   r3   Útest_frame_invert€  sJ   ÿ€ÿÿ€ÿ"ÿ$ÿzTestEval.test_frame_invertc                 C  s   d}t tj d¡ d¡ƒ}|dkr3d}tjt|d�� tj	|||d�}W d   ƒ n1 s-w   Y  n!d}tjt
|d�� tj	|||d� W d   ƒ n1 sOw   Y  t tj d¡jddd	�ƒ}|dkr�ttjƒtd
ƒk r�d}tjt|d�� tj	|||d� W d   ƒ n1 sŠw   Y  n| }tj	|||d�}t ||¡ t tj d¡ d¡dkƒ}| }tj	|||d�}t ||¡ t g d¢ƒ}|dkrëtjtdd�� tj	|||d� W d   ƒ d S 1 säw   Y  d S d}tjt
|d�� tj	|||d� W d   ƒ d S 1 �s	w   Y  d S )NrÖ   rM   rH   r#   rØ   rƒ   r‡   rÙ   rÚ   rÅ   rÜ   rO   rÝ   rá   râ   )r   r@   rQ   rR   rS   r*   rˆ   r‰   rŠ   r‹   r¢   rã   r"   r#   rÇ   rŒ   Úassert_series_equalr=   )rŽ   r1   r;   r   rB   r�   r”   rå   r2   r2   r3   Útest_series_invert­  sF   ÿ€ÿÿ€"ÿ$ÿzTestEval.test_series_invertc                 C  s  d}t tj d¡ d¡ƒ}| }tj|||d�}t ||¡ t tj d¡j	ddd�ƒ}| }tj|||d�}t ||¡ t tj d¡ d¡dkƒ}|dkrqd	}t
jt|d
�� tj|||d� W d   ƒ d S 1 sjw   Y  d S | }tj|||d�}t ||¡ d S )Nú-lhsrM   r×   r‡   rH   rÚ   rO   r#   ú*couldn't find matching opcode for 'neg_bb'rƒ   )r   r@   rQ   rR   rS   rŠ   r‹   rŒ   rä   rã   r*   rˆ   r‰   ©rŽ   r1   r;   r   rB   rå   r”   r�   r2   r2   r3   Útest_frame_negateÜ  ó$   "ÿzTestEval.test_frame_negatec                 C  s  d}t tj d¡ d¡ƒ}| }tj|||d�}t ||¡ t tj d¡j	ddd�ƒ}| }tj|||d�}t ||¡ t tj d¡ d¡dkƒ}|dkrqd}t
jt|d	�� tj|||d� W d   ƒ d S 1 sjw   Y  d S | }tj|||d�}t ||¡ d S )
Nré   rM   rH   r‡   rÚ   rO   r#   rê   rƒ   )r   r@   rQ   rR   rS   rŠ   r‹   rŒ   rç   rã   r*   rˆ   r‰   rë   r2   r2   r3   Útest_series_negateö  rí   zTestEval.test_series_negaterB   rM   r×   rH   rÚ   rO   c                 C  ó(   d}|}t j|||d�}t ||¡ d S ©Nz+lhsr‡   )rŠ   r‹   rŒ   rä   ©rŽ   rB   r1   r;   r   rå   r”   r2   r2   r3   Útest_frame_pos  ó   zTestEval.test_frame_posc                 C  rï   rð   )rŠ   r‹   rŒ   rç   rñ   r2   r2   r3   Útest_series_pos"  ró   zTestEval.test_series_posc                 C  sÊ  d}d }t r|dkr|dkst}tjt|d�� tjd||d� W d   ƒ n1 s*w   Y  tjd||d�d	ks;J ‚tjd
||d�dksGJ ‚tjd||d�dksSJ ‚tjd||d�dks_J ‚tjd||d�dkskJ ‚tj|ddd�� tjd||d�dks€J ‚W d   ƒ n1 sŠw   Y  tj|ddd�� tjd||d�dks¤J ‚W d   ƒ n1 s®w   Y  tjd||d�dks¿J ‚tjd||d�dksËJ ‚tjd||d�dks×J ‚tjd||d�dksãJ ‚d S )Nz%bad operand type for unary ~: 'float'r#   r¥   rƒ   z~1.0r‡   z-1.0©r;   r1   g      ð¿z+1.0g      ð?z~1éþÿÿÿz-1éÿÿÿÿz+1rP   zBitwise inversionF)r„   Úcheck_stacklevelz~Truez~Falsez-Truez-Falser   z+Truez+False)	r   ÚDeprecationWarningr*   rˆ   r¢   rŠ   r‹   rŒ   Úassert_produces_warning)rŽ   r1   r;   r�   Úwarnr2   r2   r3   Útest_scalar_unary4  s4   ÿÿýÿýzTestEval.test_scalar_unaryc                 C  s:   t jt d¡t jd�}t jg d¢t jd�}t ||¡ d S )Nz>[-True, True, +True, -False, False, +False, -37, 37, ~37, +37]rX   )
r÷   TrP   r   Fr   iÛÿÿÿé%   iÚÿÿÿrý   )r@   r¦   rŠ   r‹   Úobject_rŒ   rÏ   )rŽ   r”   r“   r2   r2   r3   Útest_unary_in_arrayN  s   þózTestEval.test_unary_in_arrayr   zx < -0.1z-5 > xc                 C  s<   t dtjdg|d�iƒ}| |¡}|jt dg¡ksJ ‚d S )Nr¨   r   rX   F)r   r@   r¦   r‹   r½   )rŽ   Úfloat_numpy_dtyper   ÚdfrÈ   r2   r2   r3   Útest_float_comparison_bin_opg  s   
z%TestEval.test_float_comparison_bin_opc                 C  sl   t dddtjgiƒ}| d¡}|j d¡}tj||t d� | d¡}|jj	ddd�}tj||t d� d S )	Nr¨   r   rP   zx.fillna(-1)r÷   ©Úcheck_nameszx.shift(1, fill_value=-1))Ú
fill_value)
r   r@   rA   r‹   r¨   ÚfillnarŒ   rç   r   Úshift©rŽ   r  r”   r“   r2   r2   r3   Útest_unary_in_functionn  s   

zTestEval.test_unary_in_functionr�   )z1 or 2z1 and 2za and bza or bz1 or 2 and (3 + 2) > 3z2 * x > 2 or 1 and 2z2 * df > 3 and 1 or ac           	      C  s|   t j d¡ d¡dd}}}tt j d¡ d¡ƒ}d}tjt|d�� tj	|||d� W d   ƒ d S 1 s7w   Y  d S )NrM   rß   rP   ©rß   rM   ú;cannot evaluate scalar only bool ops|'BoolOp' nodes are notrƒ   r‡   )
r@   rQ   rR   rS   r   r*   rˆ   r‰   rŠ   r‹   )	rŽ   r�   r1   r;   r¨   rÞ   rà   r  r�   r2   r2   r3   Útest_disallow_scalar_bool_ops|  s   "ÿz&TestEval.test_disallow_scalar_bool_opsc                 C  sJ  d}t jd||d�}|dksJ ‚t|ƒsJ ‚d}t jd||d�}|dks&J ‚t|ƒs,J ‚d}t jd||d�}|r:J ‚t|ƒs@J ‚t|ƒsFJ ‚t dg¡}t jd||d�}t |t dg¡¡ |jdkseJ ‚t dg¡}t jd||d�}t |t dg¡¡ |jdks„J ‚t dg¡}t jd||d�}t |t dg¡¡ |jdks£J ‚d S )NrP   r¨   r‡   g      ø?F)rP   )	rŠ   r‹   r   r
   r@   r¦   rŒ   rÏ   Úshape)rŽ   r1   r;   r¨   r”   r2   r2   r3   Útest_identical�  s2   zTestEval.test_identicalc                 C  s$   d}t j|||d�}|dksJ ‚d S )Nz1 + 2 *         5 - 1 + 2 r‡   é   )rŠ   r‹   )rŽ   r1   r;   Úexpr”   r2   r2   r3   Útest_line_continuation±  s   zTestEval.test_line_continuationc           	      C  sÌ   d}t j|||d�}t |¡}||ksJ ‚tdg d¢iƒ}d}| d|d›�¡}|js-J ‚d}| d	|d›�¡}|jd
dgd d …f }t 	||¡ d}| d|d›�¡}|jd
gd d …f }t 	||¡ d S )Nz1000000000.006r‡   ÚA)g~  eÍÍAç$  eÍÍAg'1  eÍÍAg©  eÍÍAzA < z.4fgÅ   eÍÍAzA > rP   rM   r  úA == )
rŠ   r‹   r@   r`   r   ÚqueryÚemptyÚlocrŒ   rä   )	rŽ   r1   r;   r  r”   r“   r  ÚcutoffÚexactr2   r2   r3   Útest_float_truncation¸  s    

zTestEval.test_float_truncationc                 C  sž   t g d¢gg d¢d�}d}tjt|d�� | d¡ W d   ƒ n1 s$w   Y  t ƒ }d|j_tjt|d�� | d¡ W d   ƒ d S 1 sHw   Y  d S )	N)r   r   r   )ÚfooÚbarÚclass©Úcolumnsz4Python keyword not valid identifier in numexpr queryrƒ   z
class == 0Úlambdazlambda == 0)r   r*   rˆ   ÚSyntaxErrorr  ÚindexÚname©rŽ   r  r�   r2   r2   r3   Útest_disallow_python_keywordsÎ  s   ÿ"ÿz&TestEval.test_disallow_python_keywordsc                 C  sl   t jttdd��$ t d¡dksJ ‚t d¡dksJ ‚t d¡dks$J ‚W d   ƒ d S 1 s/w   Y  d S )	NF)rø   znot Truerö   z	not Falser÷   zTrue and not Truer   )rŒ   Úmaybe_produces_warningrù   r   rŠ   r‹   )rŽ   r2   r2   r3   Útest_true_false_logicÚ  s   ÿ"ûzTestEval.test_true_false_logicc                 C  sR   t ddiƒ}t |j d¡j› ¡sJ ‚t |j d¡jo"|j d¡j› ¡s'J ‚d S )NrÞ   Úhello)r   rŠ   r‹   r>   r„   rÞ   )rŽ   Úeventr2   r2   r3   Útest_and_logic_string_matchä  s   ,z$TestEval.test_and_logic_string_matchN)1Ú__name__Ú
__module__Ú__qualname__r*   r,   Úparametrizer   ÚBOOL_OPS_SYMSr•   ÚCMP_OPS_SYMSr£   r®   r¸   ÚsortedÚsetr   Ú
differencer   rÀ   rÄ   rÉ   r.   Úskip_if_windowsrÑ   rÕ   ræ   rè   rì   rî   r   r@   rQ   rR   rS   rã   rò   r   rô   rü   rÿ   r  r	  r  r  r  r  r%  r'  r*  r2   r2   r2   r3   rs   ‰   sz    ý
"
3ÿ
 

-/úþ
úþ

þ
!
rs   c                   @  s8   e Zd Zej dg d¢¡ej dddg¡dd„ ƒƒZdS )	ÚTestTypeCastingr¤   )ú+ú-Ú*rÊ   ú/Ú
left_right)r  Ú3)r;  r  c                 C  sª   |}t tj d¡ d¡|d�}|\}	}
|	› d|› d|
› �}tj|||d�}|dkr9|dkr9tjj	dd	�}| 
|¡ |jj|ksAJ ‚|jj|ksIJ ‚tj|t|ƒd
d� d S )NrM   ©rH   rß   rX   ú r‡   Ú	complex64r#   zfnumexpr issue with complex that are upcast to complex 128 https://github.com/pydata/numexpr/issues/492r&   F)Úcheck_exact)r   r@   rQ   rR   rS   rŠ   r‹   r*   r,   rª   r«   r½   rY   rŒ   rä   )rŽ   r1   r;   r¤   Úcomplex_or_float_dtyper:  r:   rY   r  ÚleftÚrightro   rÈ   r,   r2   r2   r3   Útest_binop_typecastingð  s   ÿ
z&TestTypeCasting.test_binop_typecastingN)r+  r,  r-  r*   r,   r.  rC  r2   r2   r2   r3   r5  ï  s    r5  c                  G  s4   t tt d¡| ƒƒ }ttjdd„ | D ƒƒ}|o|S )NÚis_monotonic_increasingc                 s  s    � | ]}t |jjtjƒV  qd S r7   )Ú
issubclassrY   Útyper@   Ú
datetime64r§   r2   r2   r3   r4     s   € zshould_warn.<locals>.<genexpr>)ÚanyÚmapÚoperatorÚ
attrgetterr   Úxor)ÚargsÚnot_monoÚonly_one_dtr2   r2   r3   Úshould_warn  s
   ÿrP  c                	   @  s
  e Zd Zg d¢Zedg Zdd„ Zej d¡ej 	de¡ej 	de¡ej 	de¡d	d
„ ƒƒƒƒZ
ej 	de¡ej 	de¡dd„ ƒƒZej d¡ej 	de¡ej 	de¡ej 	de¡ej 	de¡dd„ ƒƒƒƒƒZej d¡ej 	dddg¡ej 	de¡ej 	de¡dd„ ƒƒƒƒZej 	dddg¡ej 	deeddgddgƒƒdg ¡ej d¡dd„ ƒƒƒZej d¡ej 	de¡ej 	de¡ej 	dddg¡ej 	dd d!g¡d"d#„ ƒƒƒƒƒZej d¡ej 	de¡ej 	de¡ej 	de¡ej 	de¡d$d%„ ƒƒƒƒƒZd&d'„ Zd(S ))ÚTestAlignment)rc   ro   rp   ro   c                 C  s>   d}t tj d¡ d¡ƒ}tj|||d�}t ||d ¡ d S )Nzdf * ~2rM   r<  r‡   éýÿÿÿ)	r   r@   rQ   rR   rS   rŠ   r‹   rŒ   rä   )rŽ   r1   r;   ro   r  rÈ   r2   r2   r3   Útest_align_nested_unary_op  s   z(TestAlignment.test_align_nested_unary_opzalways::RuntimeWarningÚlr_idx_typeÚrr_idx_typeÚ
c_idx_typec           
      C  sÆ   t tj d¡ d¡|| dƒ|| dƒd�}t tj d¡ d¡|| dƒ|| dƒd�}t|j|jƒrQt t	¡� t
jd||d�}	W d   ƒ n1 sKw   Y  nt
jd||d�}	t |	|| ¡ d S )	NrM   ©rN   rN   rN   ©r"  r  )é   rN   rY  zdf + df2r‡   ©r   r@   rQ   rR   rS   rP  r"  rŒ   rú   ÚRuntimeWarningrŠ   r‹   rä   )
rŽ   r1   r;   rT  rU  rV  rr   r  Údf2rÈ   r2   r2   r3   Útest_basic_frame_alignment  s"   

ý

ýÿ€z(TestAlignment.test_basic_frame_alignmentÚ
r_idx_typec           	      C  s’   t tj d¡ d¡|| dƒ|| dƒd�}tjd||d�}t ||dk ¡ t tj d¡ |j	¡|j
|jd�}tjd||d�}t |||k ¡ d S )NrM   rW  rN   rX  údf < 2r‡   zdf < df3)r   r@   rQ   rR   rS   rŠ   r‹   rŒ   rä   r  r"  r  )	rŽ   r1   r;   r^  rV  rr   r  rÈ   Údf3r2   r2   r3   Útest_frame_comparison8  s   

ýýz#TestAlignment.test_frame_comparisonzignore::RuntimeWarningÚr1Úc1Úr2Úc2c                 C  sú   t tj d¡ d¡|| dƒ|| dƒd�}t tj d¡ d¡|| dƒ|| dƒd�}	t tj d¡ d¡|| dƒ|| dƒd�}
t|j|	j|
jƒrit t	¡� t
jd	||d
�}W d   ƒ n1 scw   Y  nt
jd	||d
�}t |||	 |
 ¡ d S )NrM   r
  rß   rX  )é   rM   rf  r×   rH   zdf + df2 + df3r‡   rZ  )rŽ   r1   r;   rb  rc  rd  re  rr   r  r\  r`  rÈ   r2   r2   r3   Ú#test_medium_complex_frame_alignmentM  s,   

ý

ý

ýÿ€z1TestAlignment.test_medium_complex_frame_alignmentÚ
index_namer"  r  c                 C  sô   t tj d¡ d¡|| dƒ|| dƒd�}t||ƒ}ttj d¡ d¡|d d… ƒ}	t|j|	jƒrPt	 
t¡� tjd||d�}
W d   ƒ n1 sJw   Y  ntjd||d�}
|dks`|dkrn|d	kri| |	¡n||	 }n||	 }t	 |
|¡ d S )
NrM   rW  rN   rX  rH   údf + sr‡   rp   r#   )r   r@   rQ   rR   rS   Úgetattrr   rP  r"  rŒ   rú   r[  rŠ   r‹   Úaddrä   )rŽ   r1   r;   rh  r^  rV  rr   r  r"  ro   rÈ   r“   r2   r2   r3   Ú!test_basic_frame_series_alignmentk  s"   

ý
 ÿ€z/TestAlignment.test_basic_frame_series_alignmentzr_idx_type, c_idx_typerc   )rp   rp   c              
   C  sT  |dkr0|dv r0|dkr0|dkr0|dkr0d|› d|› d|› d	|› d
|› �
}|  tjj|dd�¡ ttj d¡ d¡|| dƒ|| dƒd�}	t	|	|ƒ}
t
tj d¡ d¡|
d d… ƒ}t|j|	jƒr€t t¡� tjd||d�}W d   ƒ n1 szw   Y  ntjd||d�}|dks�|dkrž|dkr™|	 |¡n||	 }n||	 }t ||¡ d S )Nr#   )r¥   r~   r"  rc   ro   z"Flaky column ordering when engine=z	, parser=z, index_name=z, r_idx_type=z, c_idx_type=F)r'   ÚstrictrM   )rN   é   rN   rn  rX  rH   zs + dfr‡   rp   )r«   r*   r,   rª   r   r@   rQ   rR   rS   rj  r   rP  r"  rŒ   rú   r[  rŠ   r‹   rk  rä   )rŽ   r:   r1   r;   rh  r^  rV  rr   r'   r  r"  ro   rÈ   r“   r2   r2   r3   Ú!test_basic_series_frame_alignment†  sB   
ÿÿþþÿ

ý
 ÿ€z/TestAlignment.test_basic_series_frame_alignmentr¤   r6  r8  c                 C  sF  t tj d¡ d¡|| dƒ|| dƒd�}t||ƒ}	ttj d¡ d¡|	d d… ƒ}
d|› d�}d|› d	�}t|j|
jƒryt	 
t¡� tj|||d
�}W d   ƒ n1 sVw   Y  t	 
t¡� tj|||d
�}W d   ƒ n1 ssw   Y  ntj|||d
�}tj|||d
�}|dkr�|dkrŸ|dkr¡t	 ||¡ d S d S d S d S )NrM   rW  rN   rX  rH   zs z dfzdf z sr‡   rp   r#   )r   r@   rQ   rR   rS   rj  r   rP  r"  rŒ   rú   r[  rŠ   r‹   rä   )rŽ   r1   r;   rh  r¤   r^  rV  rr   r  r"  ro   rB   rD   rÞ   rà   r2   r2   r3   Útest_series_frame_commutativity¯  s0   

ý
 ÿÿ€þz-TestAlignment.test_series_frame_commutativityc                 C  s€  d}d}	d|	 }
t tj d¡ |	|f¡|| |	ƒ|| |ƒd�}t tj d¡ |
|f¡|| |
ƒ|| |ƒd�}|j}ttj d¡ |¡|d |… ƒ}|dksS|dkrb|dkr]| |¡}n	|| }n|| }|dksn|dkr}|dkrx| |¡}n	|| }n|| }t|j	|j	|j	ƒr¨t
 t¡� tjd||d�}W d   ƒ n1 s¢w   Y  ntjd||d�}|j|jks¸J ‚t
 ||¡ d S )	Nrß   rH   rM   rX  rp   r#   zdf2 + ser + dfr‡   )r   r@   rQ   rR   rS   r  r   rk  rP  r"  rŒ   rú   r[  rŠ   r‹   r  rä   )rŽ   r1   r;   rb  rc  rd  re  rr   r]   Úm1Úm2r  r\  r"  ÚserÚ	expected2r“   rÈ   r2   r2   r3   Ú#test_complex_series_frame_alignmentÎ  sB   

ý

ý 

ÿ€z1TestAlignment.test_complex_series_frame_alignmentc                 C  s  t tj d¡ d¡ƒ}ttj d¡ d¡ƒ}|dkrt}nd}t |¡� t	j
d||d� W d   ƒ n1 s7w   Y  ttj d¡ d¡ƒ}t d¡� t	j
d||d� W d   ƒ n1 s_w   Y  t tj d¡ d	¡ƒ}ttj d¡ d¡ƒ}t d¡� t	j
d||d� W d   ƒ n1 s’w   Y  t tj d¡ d
¡ƒ}ttj d¡ d¡ƒ}|dk}|s¶t}nd}t |¡�B}t	j
d||d� |sït|ƒdksÐJ ‚t|d jƒ}	t |j|jd  ¡}
d|
d›d�}|	|ks÷J ‚W d   ƒ d S W d   ƒ d S 1 �sw   Y  d S )NrM   )éè  rN   é'  r#   Fri  r‡   rv  )rN   rw  rW  r~   rP   r   z_Alignment difference on axis 1 is larger than an order of magnitude on term 'df', by more than z.4gz; performance may suffer.)r   r@   rQ   rR   rS   r   r   rŒ   rú   rŠ   r‹   Úlenr>   ÚmessageÚlog10rÛ   r  )rŽ   r1   r;   r  ro   ÚseenÚis_python_engineÚwrnÚwr�   Úloggedr“   r2   r2   r3   Ú+test_performance_warning_for_poor_alignmentþ  sL   ÿÿÿþÿ÷ý$ôz9TestAlignment.test_performance_warning_for_poor_alignmentN)r+  r,  r-  Úindex_typesÚlhs_index_typesrS  r*   r,   Úfilterwarningsr.  r]  ra  rg  rl  Úlistr   ro  rp  ru  r€  r2   r2   r2   r3   rQ    sV    



þ

#
+rQ  c                
   @  sB  e Zd Zdd„ Zdd„ Zej dddg¡ej dddg¡ej d	ej	¡d
d„ ƒƒƒZ
ej dddg¡ej dddg¡ej d	ej	¡dd„ ƒƒƒZdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ Zejjd0d1�d2d3„ ƒZd4d5„ Zd6d7„ Z d8d9„ Z!d:d;„ Z"d<d=„ Z#d>d?„ Z$d@dA„ Z%ej dBdCdDdCdEge& 'g ¡dFg¡dGdH„ ƒZ(ej dBg dI¢¡dJdK„ ƒZ)ej dLdCdDdCdEge& 'g ¡dFdCdEig¡dMdN„ ƒZ*dOdP„ Z+dQdR„ Z,dSdT„ Z-dUdV„ Z.dWdX„ Z/dYdZ„ Z0ej d[g d\¢¡d]d^„ ƒZ1ej d_d`dag¡dbdc„ ƒZ2ddS )eÚTestOperationsc                 O  ó$   |  dd¡d |d< tj|i |¤ŽS ©NÚlevelr   rP   ©ÚpoprŠ   r‹   ©rŽ   rM  Úkwargsr2   r2   r3   r‹   0  ó   zTestOperations.evalc              	     sH  g ‰ |dkr
ddg‰ ‡ fdd„t jt j D ƒ}dd„ |D ƒ}|D ]�}d|› d	�}d
|› d	�}d|› d�}|dv rZd}	tjt|	d�� tj|||d� W d   ƒ n1 sTw   Y  q td|d|ƒ}
| j|||d�}||
ksoJ ‚t||d|ƒ}
| j|d|i||d�}||
ks‡J ‚td||d |ƒ}
| j|d|i||d�}||
ks¡J ‚q d S )Nr~   r˜   r™   c                   s   g | ]}|ˆ vr|‘qS r2   r2   ©r0   r¤   ©Úexclude_arithr2   r3   rd   9  s
    þz8TestOperations.test_simple_arith_ops.<locals>.<listcomp>c                 s  s   � | ]	}|d kr|V  qdS )z//Nr2   rŽ  r2   r2   r3   r4   ?  r©   z7TestOperations.test_simple_arith_ops.<locals>.<genexpr>z1 z 1zx z (x + 1)r—   z&argument of type 'int' is not iterablerƒ   r‡   rP   r¨   rÆ   )	r   r   r0  r*   rˆ   r¢   rŠ   r‹   rG   )rŽ   r1   r;   Ú	arith_opsÚopsr¤   r�   r¶   r·   r�   Úexpecr¨   Úyr2   r�  r3   Útest_simple_arith_ops4  s6   

þÿ€ìz$TestOperations.test_simple_arith_opsrD   TFrB   r¤   c                 C  óˆ   |› d|› d|› �}t dkr3|dv r3d}tjt|d�� |  |¡ W d   ƒ d S 1 s,w   Y  d S |  |¡}t|ƒ}||ksBJ ‚d S ©Nr=  r~   r   r‚   rƒ   ©r;   r*   rˆ   r‰   r‹   ©rŽ   rD   rB   r¤   r�   r�   rÈ   r  r2   r2   r3   Útest_simple_bool_opsW  ó   
ÿþ
z#TestOperations.test_simple_bool_opsc                 C  r–  r—  r˜  r™  r2   r2   r3   Útest_bool_ops_with_constantsg  r›  z+TestOperations.test_bool_ops_with_constantsc                 C  st   t j d¡ d¡}tt j d¡ d¡ƒ}d}tjt|d�� | jd||dœd� W d   ƒ d S 1 s3w   Y  d S )	NrM   )rß   rf  rH   é   rN   z?N-dimensional objects, where N > 2, are not supported with evalrƒ   úx + y©r¨   r”  ©r    )	r@   rQ   rR   rS   r   r*   rˆ   r‰   r‹   )rŽ   r¨   r”  r�   r2   r2   r3   Útest_4d_ndarray_failsw  s   "ÿz$TestOperations.test_4d_ndarray_failsc                 C  s   |   d¡}|dksJ ‚d S )NÚ1rP   )r‹   )rŽ   r¨   r2   r2   r3   Útest_constant~  s   
zTestOperations.test_constantc                 C  s8   t tj d¡ d¡ƒ}| jdd|id�}t ||¡ d S )NrM   ©rN   rM   r  r   ©r   r@   rQ   rR   rS   r‹   rŒ   rä   )rŽ   r  r\  r2   r2   r3   Útest_single_variable‚  s   z#TestOperations.test_single_variablec                 C  sT   t tj d¡ d¡ƒ}tjtdd�� |  d¡ W d   ƒ d S 1 s#w   Y  d S )NrM   r<  úname 'x' is not definedrƒ   zdf[x > 2] > 2)	r   r@   rQ   rR   rS   r*   rˆ   Ú	NameErrorr‹   ©rŽ   r  r2   r2   r3   Ú&test_failing_subscript_with_name_error‡  s   "ÿz5TestOperations.test_failing_subscript_with_name_errorc                 C  sH   t tj d¡ d¡ƒ}| jdd|id�}|d |dk }t ||¡ d S )NrM   r<  z(df + 1)[df > 2]r  r   rP   r¥  r  r2   r2   r3   Útest_lhs_expression_subscriptŒ  s   z,TestOperations.test_lhs_expression_subscriptc                 C  sª   t tj d¡ d¡tdƒd�}d}|j|jk }d}|j|j |j }d}|j|j |j|jdk   }|||f}|||f}	t	||	ƒD ]\}
}t
 || j|
d	|id
�¡ qAd S )NrM   r<  Úabcr  zdf.a < df.bzdf.a + df.b + df.czdf.a + df.b + df.c[df.b < 0]r   r  r   )r   r@   rQ   rR   rS   r„  rÞ   rà   rE   ÚziprŒ   rç   r‹   )rŽ   r  Úexpr1Úexpec1Úexpr2Úexpec2Úexpr3Úexpec3ÚexprsÚexpecsrF   r“  r2   r2   r3   Útest_attr_expression’  s   ÿ

ÿz#TestOperations.test_attr_expressionc                 C  s„   t tj d¡ d¡tdƒd�}t tj d¡ d¡ƒ}d}d}tjt|d�� | j	|||dœd	� W d   ƒ d S 1 s;w   Y  d S )
NrM   r<  r¬  r  zdf = df2ú%cannot assign without a target objectrƒ   )r  r\  r   )
r   r@   rQ   rR   rS   r„  r*   rˆ   r=   r‹   )rŽ   r  r\  r®  r�   r2   r2   r3   Útest_assignment_fails¡  s   ÿ"ÿz$TestOperations.test_assignment_failsc                 C  s\   t tj d¡ d¡tdƒd�}tjtdd�� | 	d¡ W d   ƒ d S 1 s'w   Y  d S )NrM   r×   Úabr  úinvalid syntaxrƒ   zd c = a + b©
r   r@   rQ   rR   rS   r„  r*   rˆ   r!  r‹   r©  r2   r2   r3   Ú%test_assignment_column_multiple_raise«  s   ÿ"ÿz4TestOperations.test_assignment_column_multiple_raisec                 C  ó`   t tj d¡ d¡tdƒd�}d}tjt|d�� | 	d¡ W d   ƒ d S 1 s)w   Y  d S )NrM   r×   r¹  r  z5left hand side of an assignment must be a single namerƒ   zd,c = a + br»  r$  r2   r2   r3   Ú%test_assignment_column_invalid_assign³  s   ÿ"ÿz4TestOperations.test_assignment_column_invalid_assignc                 C  r½  )NrM   r×   r¹  r  zcannot assign to function callrƒ   zTimestamp("20131001") = a + br»  r$  r2   r2   r3   Ú3test_assignment_column_invalid_assign_function_call¼  s   ÿ"ÿzBTestOperations.test_assignment_column_invalid_assign_function_callc                 C  sX   t tj d¡ d¡tdƒd�}| ¡ }|d |d  |d< |jddd	� t 	||¡ d S )
NrM   r×   r¹  r  rÞ   rà   ú	a = a + bT©Úinplace©
r   r@   rQ   rR   rS   r„  Úcopyr‹   rŒ   rä   ©rŽ   r  r“   r2   r2   r3   Ú&test_assignment_single_assign_existingÄ  ó   ÿz5TestOperations.test_assignment_single_assign_existingc                 C  sX   t tj d¡ d¡tdƒd�}| ¡ }|d |d  |d< |jdd	d
� t 	||¡ d S )NrM   r×   r¹  r  rÞ   rà   rE   ú	c = a + bTrÁ  rÃ  rÅ  r2   r2   r3   Ú!test_assignment_single_assign_newÎ  rÇ  z0TestOperations.test_assignment_single_assign_newc                 C  s`   t tj d¡ d¡tdƒd�}| ¡ }d}|jddd� | ¡ }d|d	  |d
< t 	||¡ d S )NrM   r×   r¹  r  rP   z	a = 1 + bTrÁ  rà   rÞ   rÃ  )rŽ   r  rÞ   r“   r2   r2   r3   Ú+test_assignment_single_assign_local_overlapØ  s   ÿz:TestOperations.test_assignment_single_assign_local_overlapc                 C  sh   t tj d¡ d¡tdƒd�}d}|j ¡ }|jddd� ||j	 }t
j||jd	d
� |jd u s2J ‚d S )NrM   r×   r¹  r  rP   rÀ  TrÁ  Fr  )r   r@   rQ   rR   rS   r„  rÞ   rÄ  r‹   rà   rŒ   rç   r#  )rŽ   r  rÞ   Úold_ar”   r2   r2   r3   Ú"test_assignment_single_assign_nameä  s   ÿ

z1TestOperations.test_assignment_single_assign_namec                 C  sn   t tj d¡ d¡tdƒd�}|jddd� d}tjt	|d	�� | d
¡ W d   ƒ d S 1 s0w   Y  d S )NrM   r×   r¹  r  rÈ  TrÁ  z#can only assign a single expressionrƒ   z	c = a = b)
r   r@   rQ   rR   rS   r„  r‹   r*   rˆ   r!  r$  r2   r2   r3   Útest_assignment_multiple_raisesð  s   ÿ"ÿz.TestOperations.test_assignment_multiple_raisesc                 C  s`   t tj d¡ d¡tdƒd�}| jdd|i|dd� | ¡ }|d	 |d
  |d< t 	||¡ d S )NrM   r×   r¹  r  zc = df.a + df.br  T)r    ÚtargetrÂ  rÞ   rà   rE   ©
r   r@   rQ   rR   rS   r„  r‹   rÄ  rŒ   rä   rÅ  r2   r2   r3   Útest_assignment_explicitú  s   ÿz'TestOperations.test_assignment_explicitc                 C  s:   t dgdgdœƒ}| d¡}tdgƒ}tj||dd� d S )Né   iàÿÿÿ©rÞ   rà   za in [11, -32]TFr  )r   r‹   r   rŒ   rç   r  r2   r2   r3   Útest_column_in  s   

zTestOperations.test_column_inz%Unknown: Omitted test_ in name prior.r&   c                 C  sd   t tj d¡ d¡tdƒd�}|jddd�}|d usJ ‚| ¡ }|d |d	  |d
< t 	||¡ d S )NrM   r×   r¹  r  rÈ  FrÁ  rÞ   rà   rE   rÏ  )rŽ   r  Úactualr“   r2   r2   r3   Útest_assignment_not_inplace  s   ÿz*TestOperations.test_assignment_not_inplacec                 C  sø   t g d¢g d¢dœƒ}| ¡ }|d |d  |d< |d |d  |d< |jdd	d
�}t ||¡ |d u s6J ‚|d d |d< |d d |d< |jdd	d
�}t ||¡ |d u sYJ ‚d}tjt|d�� |jddd
� W d   ƒ d S 1 suw   Y  d S )N©rP   rM   rß   ©rf  rH   r�  rÒ  rÞ   rà   rE   Údú$
        c = a + b
        d = c + bTrÁ  rP   rM   rF   ú$
        a = a - 1
        e = a + 2z@Multi-line expressions are only valid if all expressions containrƒ   z(
            a = b + 2
            b - 2F)r   rÄ  r‹   rŒ   rä   r*   rˆ   r=   )rŽ   Úwarn_copy_on_writer  r“   Úanswerr�   r2   r2   r3   Útest_multi_line_expression  s2   üüü"ÿz)TestOperations.test_multi_line_expressionc                 C  sž   t g d¢g d¢dœƒ}| ¡ }|d |d  |d< |d |d  |d< |jdd	d
�}t ||¡ |d d |d< |d d |d< |jdd	d
�}t ||¡ d S )NrÖ  r×  rÒ  rÞ   rà   rE   rØ  rÙ  FrÁ  rP   rM   rF   rÚ  ©r   rÄ  r‹   rŒ   rä   rÅ  r2   r2   r3   Ú&test_multi_line_expression_not_inplace@  s    üüz5TestOperations.test_multi_line_expression_not_inplacec                 C  sl   t g d¢g d¢dœƒ}| ¡ }d}|d | |d< |d | |d< |jdd	d
�}t ||¡ |d u s4J ‚d S )NrÖ  r×  rÒ  rn  rÞ   rE   rØ  z?
        c = a * @local_var
        d = c + @local_var
        TrÁ  rÞ  )rŽ   r  r“   Ú	local_varrÜ  r2   r2   r3   Ú)test_multi_line_expression_local_variableY  s   ûz8TestOperations.test_multi_line_expression_local_variablec                 C  s|   t g d¢g d¢dœƒ}dd„ }| ¡ }|d |ddƒ |d	< |d	 |ddƒ |d
< |jddd�}t ||¡ |d u s<J ‚d S )NrÖ  r×  rÒ  c                 S  ó   |S r7   r2   rÒ  r2   r2   r3   Ú
local_funco  ó   zUTestOperations.test_multi_line_expression_callable_local_variable.<locals>.local_funcrÞ   rP   rn  rE   rØ  zM
        c = a * @local_func(1, 7)
        d = c + @local_func(1, 7)
        TrÁ  rÞ  ©rŽ   r  rã  r“   rÜ  r2   r2   r3   Ú2test_multi_line_expression_callable_local_variablek  s   ûzATestOperations.test_multi_line_expression_callable_local_variablec                 C  s€   t g d¢g d¢dœƒ}dd„ }| ¡ }|d |ddd	� |d
< |d
 |ddd	� |d< |jddd�}t ||¡ |d u s>J ‚d S )NrÖ  r×  rÒ  c                 S  râ  r7   r2   rÒ  r2   r2   r3   rã  ƒ  rä  zaTestOperations.test_multi_line_expression_callable_local_variable_with_kwargs.<locals>.local_funcrÞ   rn  rP   )rà   rÞ   rE   rØ  zU
        c = a * @local_func(b=7, a=1)
        d = c + @local_func(b=7, a=1)
        TrÁ  rÞ  rå  r2   r2   r3   Ú>test_multi_line_expression_callable_local_variable_with_kwargs  s   ûzMTestOperations.test_multi_line_expression_callable_local_variable_with_kwargsc                 C  sj   t g d¢g d¢dœƒ}| ¡ }d}tjt|d�� | d¡ W d   ƒ n1 s(w   Y  t ||¡ d S )NrÖ  r×  rÒ  r·  rƒ   za = 1)r   rÄ  r*   rˆ   r=   r  rŒ   rä   )rŽ   r  Údf_origr�   r2   r2   r3   Útest_assignment_in_query“  s   ÿz'TestOperations.test_assignment_in_queryc                 C  st   t g d¢g d¢dœƒ}| ¡ }||d dk }|jddd� t ||¡ i }dd	i}| jd
|dd� t ||¡ d S )NrÖ  r×  rÒ  rÞ   rM   za == 2TrÁ  rß   ú	a = 1 + 2©rÎ  rÂ  )r   rÄ  r  rŒ   rä   r‹   Úassert_dict_equalrÅ  r2   r2   r3   Útest_query_inplaceœ  s   z!TestOperations.test_query_inplaceÚinvalid_targetrP   ÚcatrM   ©rP   rß   c                 C  s˜   d}d}t jt|d�� | j||dd� W d   ƒ n1 sw   Y  t|dƒrJt jt|d�� | j||dd� W d   ƒ d S 1 sCw   Y  d S d S )Nz)Cannot assign expression output to targetrê  rƒ   Trë  rÄ  F)r*   rˆ   r=   r‹   Úhasattr©rŽ   rî  r�   Ú
expressionr2   r2   r3   Útest_cannot_item_assignª  s   ÿ
"ÿÿz&TestOperations.test_cannot_item_assign)rP   rï  rð  c                 C  sL   d}d}t jt|d�� | j||dd� W d   ƒ d S 1 sw   Y  d S )Nz"Cannot return a copy of the targetrê  rƒ   Frë  )r*   rˆ   r=   r‹   rò  r2   r2   r3   Útest_cannot_copy_item¶  s
   "ÿz$TestOperations.test_cannot_copy_itemrÎ  c                 C  sd   d}| j ||dd�dksJ ‚d}tjt|d�� | j ||dd� W d   ƒ d S 1 s+w   Y  d S )Nú1 + 2Frë  rß   z0Cannot operate inplace if there is no assignmentrƒ   T)r‹   r*   rˆ   r=   )rŽ   rÎ  ró  r�   r2   r2   r3   Útest_inplace_no_assignment¾  s   "ÿz)TestOperations.test_inplace_no_assignmentc                 C  sb   t tj d¡ d¡tdddd�d�}|dk }| jdd|id	�}|dk }t ||¡ t ||¡ d S )
NrM   ©rM   rM   rh   rl   ©rm   rj   r  r_  r  r   ©	r   r@   rQ   rR   rS   r   r‹   rŒ   rä   )rŽ   r  rF   Úrr¨   r2   r2   r3   Ú*test_basic_period_index_boolean_expressionÈ  s   þz9TestOperations.test_basic_period_index_boolean_expressionc                 C  sR   t tj d¡ d¡tdddd�d�}| jdd|id	�}||d
k  }t ||¡ d S )NrM   rø  rh   rl   rù  r  zdf[df < 2 + 3]r  r   rH   rú  ©rŽ   r  rû  rF   r2   r2   r3   Ú,test_basic_period_index_subscript_expressionÔ  s   þz;TestOperations.test_basic_period_index_subscript_expressionc                 C  sb   t tj d¡ d¡tdddd�d�}| jdd|id	�}|||dk  dk  |d  }t ||¡ d S )
NrM   rø  rh   rl   rù  r  zdf[df[df < 2] < 2] + df * 2r  r   rú  rý  r2   r2   r3   Ú-test_nested_period_index_subscript_expressionÝ  s   þz<TestOperations.test_nested_period_index_subscript_expressionc                 C  sZ   t tj d¡ d¡ƒ}tddd�|d< | jdd|i||d	�}|jd
k }tj	||dd� d S )NrM   r<  z1/1/2012rH   ri   Údates1zdf.dates1 < 20130101r  rÆ   Ú20130101Fr  )
r   r@   rQ   rR   rS   r   r‹   r   rŒ   rç   )rŽ   r1   r;   r  rÈ   r“  r2   r2   r3   Útest_date_booleanæ  s   ü
z TestOperations.test_date_booleanc                 C  s‚  |dkr~t jd||d�}|sJ ‚t jd||d�}|sJ ‚t jd||d�}|r(J ‚t jd||d�}|s4J ‚t jd||d�}|s@J ‚t jd||d�}|sLJ ‚t jd	||d�}|sXJ ‚t jd
||d�}|sdJ ‚t jd||d�}|rpJ ‚t jd||d�}|s|J ‚d S d}tjt|d�� t jd||d� W d   ƒ n1 sšw   Y  tjt|d�� t jd||d� W d   ƒ n1 s¹w   Y  tjt|d�� t jd||d� W d   ƒ n1 sØw   Y  tjt|d�� t jd||d� W d   ƒ n1 s÷w   Y  d}tjt|d�� t jd||d� W d   ƒ n	1 �sw   Y  tjt|d�� t jd||d� W d   ƒ d S 1 �s:w   Y  d S )Nr~   z1 in [1, 2]r‡   z2 in (1, 2)z3 in (1, 2)z3 not in (1, 2)z[3] not in (1, 2)z[3] in ([3], 2)z[[3]] in [[[3]], 2]z(3,) in [(3,), 2]z(3,) not in [(3,), 2]z[(3,)] in [[(3,)], 2]z'In' nodes are not implementedrƒ   z[(3,)] in (1, 2, [(3,)])z!'NotIn' nodes are not implementedz[3] not in (1, 2, [[3]]))rŠ   r‹   r*   rˆ   r‰   )rŽ   r1   r;   rÈ   r�   r2   r2   r3   Útest_simple_in_opsò  sR   ÿÿÿÿÿ$ÿz!TestOperations.test_simple_in_opsc                 C  s2   d}d  d¡}d}tj|||d�}||ksJ ‚d S )NrP   z * Ú!aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar‡   )r¡   rŠ   r‹   )rŽ   r1   r;   rÞ   r   r“   rÈ   r2   r2   r3   Útest_check_many_exprs!  s
   
z$TestOperations.test_check_many_exprsr   )zdf > 2 and df > 3zdf > 2 or df > 3z
not df > 2c                 C  s’   t tj d¡ d¡ƒ}|dkr<d}d|v rd}tjt|d�� tj	|d|i||d	� W d   ƒ d S 1 s5w   Y  d S tj	|d|i||d	� d S )
NrM   r<  r~   r‚   Únotú'Not' nodes are not implementedrƒ   r  )r    r;   r1   ©
r   r@   rQ   rR   rS   r*   rˆ   r‰   rŠ   r‹   )rŽ   r   r1   r;   r  r�   r2   r2   r3   Útest_fails_and_or_not(  s&   	ü"ÿ	
üz$TestOperations.test_fails_and_or_notÚcharr�   r²   c                 C  s†   t tj d¡ d¡ƒ}d|› d�}|dkr9d}tjt|d�� tj	|||d� W d   ƒ d S 1 s2w   Y  d S tj	|||d� d S )	NrM   r<  z(df + 2)[df > 1] > 0 z	 (df > 0)r~   z$cannot evaluate scalar only bool opsrƒ   rõ   r  )rŽ   r
  r1   r;   r  r�   r�   r2   r2   r3   Útest_fails_ampersand_pipeG  s   "ÿz(TestOperations.test_fails_ampersand_pipeN)3r+  r,  r-  r‹   r•  r*   r,   r.  r   r/  rš  rœ  r¡  r£  r¦  rª  r«  r¶  r¸  r¼  r¾  r¿  rÆ  rÉ  rÊ  rÌ  rÍ  rÐ  rÓ  rª   rÕ  rÝ  rß  rá  ræ  rç  ré  rí  r@   r¦   rô  rõ  r÷  rü  rþ  rÿ  r  r  r  r	  r  r2   r2   r2   r3   r…  /  sp    #
	



	
%	 

&
			/þ
r…  c                   @  sÄ   e Zd Zdd„ Zejje dd�ej de	¡dd„ ƒƒZ
ej de¡dd	„ ƒZd
d„ Zdd„ Zej dejejfejejfejejfejejfejejejejd�g¡dd„ ƒZdd„ Zdd„ ZdS )ÚTestMathc                 O  r†  r‡  r‰  r‹  r2   r2   r3   r‹   U  r�  zTestMath.evalz&Unary ops only implemented for numexprr&   Úfnc                 C  s‚   t dtj d¡ d¡iƒ}|j}|› d�}|  |¡}tjdd�� tt|ƒ|ƒ}W d   ƒ n1 s2w   Y  t	j
||dd� d S )	NrÞ   rM   rN   z(a)r$   ©ÚallFr  )r   r@   rQ   rR   rS   rÞ   r‹   Úerrstaterj  rŒ   rç   )rŽ   r  r  rÞ   r   Úgotrå   r2   r2   r3   Útest_unary_functionsY  s   

ÿzTestMath.test_unary_functionsc                 C  sš   t tj d¡ d¡tj d¡ d¡dœƒ}|j}|j}|› d�}|  |¡}tjdd�� t	t|ƒ||ƒ}W d   ƒ n1 s>w   Y  t
j||dd� d S )	NrM   rN   rÒ  z(a, b)r$   r  Fr  )r   r@   rQ   rR   rS   rÞ   rà   r‹   r  rj  rŒ   r¬   )rŽ   r  r  rÞ   rà   r   r  rå   r2   r2   r3   Útest_binary_functionsg  s   þÿ

ÿzTestMath.test_binary_functionsc                 C  sl   t tj d¡ d¡tj d¡ d¡dœƒ}|jd||dd� |j}t t |j	¡|j
¡}tj||dd� d S )	NrM   rN   rÒ  ze = arctan2(sin(a), b)T©r1   r;   rÂ  Fr  )r   r@   rQ   rR   rS   r‹   rF   Úarctan2ÚsinrÞ   rà   rŒ   rç   ©rŽ   r1   r;   r  r  rå   r2   r2   r3   Útest_df_use_casex  s   þÿüzTestMath.test_df_use_casec                 C  sh   t tj d¡ d¡tj d¡ d¡dœƒ}|jd||dd� |j}t |j|j	 ¡}t
j||dd� d S )	NrM   rN   rÒ  ze = sin(a + b)Tr  Fr  )r   r@   rQ   rR   rS   r‹   rF   r  rÞ   rà   rŒ   rç   r  r2   r2   r3   Ú test_df_arithmetic_subexpression‰  s   þÿz)TestMath.test_df_arithmetic_subexpressionzdtype, expect_dtyper(   c                 C  s†   t dtj d¡ d¡ |¡iƒ}|jj|ksJ ‚|jd||dd� |j	}t 
|j¡}|j|jks2J ‚||jks9J ‚tj||dd� d S )	NrÞ   rM   rN   z
b = sin(a)Tr  Fr  )r   r@   rQ   rR   rS   rÒ   rÞ   rY   r‹   rà   r  rŒ   rç   )rŽ   rY   Úexpect_dtyper1   r;   r  r  rå   r2   r2   r3   Útest_result_types•  s   ÿzTestMath.test_result_typesc                 C  ób   t dtj d¡ d¡iƒ}d}tjt|d�� |jd||d� W d   ƒ d S 1 s*w   Y  d S )NrÞ   rM   rN   z#"mysin" is not a supported functionrƒ   zmysin(a)r‡   )	r   r@   rQ   rR   rS   r*   rˆ   r=   r‹   ©rŽ   r1   r;   r  r�   r2   r2   r3   Útest_undefined_func°  ó
   "ÿzTestMath.test_undefined_funcc                 C  r  )NrÞ   rM   rN   z1Function "sin" does not support keyword argumentsrƒ   zsin(x=a)r‡   )	r   r@   rQ   rR   rS   r*   rˆ   r¢   r‹   r  r2   r2   r3   Útest_keyword_arg·  r  zTestMath.test_keyword_argN)r+  r,  r-  r‹   r*   r,   r-   r   r.  r    r  r   r  r  r  r@   Úint32r`   r[   Úfloat32r+   Ú
complex128r.   r4  r  r  r   r2   r2   r2   r3   r  T  s.    ÿ





ûþ

r  rM   rN   c                   @  s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )Ú	TestScopec                 C  s$   d}t  td tj|||d�¡ d S )Nú
_var_s * 2rM   r‡   )rŒ   rÏ   Ú_var_srŠ   r‹   )rŽ   r1   r;   rF   r2   r2   r3   Útest_global_scopeÃ  s   ÿzTestScope.test_global_scopec                 C  sD   d}t ƒ  ¡ }tjd|||d� t ƒ  ¡ }| d¡ ||ks J ‚d S )NrP   úx + 1rÆ   Úlcls)ÚlocalsrÄ  rŠ   r‹   rŠ  )rŽ   r1   r;   r¨   r)  Úlcls2r2   r2   r3   Útest_no_new_localsÉ  s   


zTestScope.test_no_new_localsc                 C  s8   d}t ƒ  ¡ }tjd||d� t ƒ  ¡ }||ksJ ‚d S )NrP   r(  r‡   )ÚglobalsrÄ  rŠ   r‹   )rŽ   r1   r;   r¨   ÚgblsÚgbls2r2   r2   r3   Útest_no_new_globalsÑ  s
   

zTestScope.test_no_new_globalsc                 C  sN   d}d}t jt|d�� tjd||i d� W d   ƒ d S 1 s w   Y  d S )NrP   r§  rƒ   r(  rŸ   ©r*   rˆ   r	   rŠ   r‹   )rŽ   r1   r;   r¨   r�   r2   r2   r3   Útest_empty_localsØ  ó
   "ÿzTestScope.test_empty_localsc                 C  sN   d}d}t jt|d�� tj|||i d� W d   ƒ d S 1 s w   Y  d S )Nzname '_var_s' is not definedr%  rƒ   )r1   r;   Úglobal_dictr1  )rŽ   r1   r;   r�   rF   r2   r2   r3   Útest_empty_globalsß  r3  zTestScope.test_empty_globalsN)r+  r,  r-  r'  r,  r0  r2  r5  r2   r2   r2   r3   r$  Â  s    r$  c                  C  óN   d} t jt| d�� tjddddœdd� W d   ƒ d S 1 s w   Y  d S )	NzInvalid engine 'asdf' passedrƒ   rž  rP   rM   rŸ  Úasdf)r    r1   ©r*   rˆ   ÚKeyErrorrŠ   r‹   ©r�   r2   r2   r3   Útest_invalid_engineç  ó   "ÿr;  )Úuse_numexprr“   ))Tr#   )Fr~   c                 C  sR   ddl m} t d| ¡� |d ƒ}||ksJ ‚W d   ƒ d S 1 s"w   Y  d S )Nr   )Ú_check_engineúcompute.use_numexpr)Úpandas.core.computation.evalr>  rŠ   Úoption_context)r=  r“   r>  r”   r2   r2   r3   Útest_numexpr_option_respectedî  s
   
"þrB  c                  C  s|   t  dd¡�. tg d¢g d¢dœƒ} |  d¡}td d gddgdœd	dgd
�}t ||¡ W d   ƒ d S 1 s7w   Y  d S )Nr?  F)TFTFNN)rP   rM   rß   rf  rH   r�  )r  ÚBz
A.isnull()rH   r�  rf  )r"  )rŠ   rA  r   r  rŒ   rä   )r  r”   r“   r2   r2   r3   Ú#test_numexpr_option_incompatible_opÿ  s   ÿ
"úrD  c                  C  r6  )	NzInvalid parser 'asdf' passedrƒ   rž  rP   rM   rŸ  r7  )r    r;   r8  r:  r2   r2   r3   Útest_invalid_parser  r<  rE  )r~   r   r¥   z dict[str, type[BaseExprVisitor]]Ú_parsersc              	   C  sb   t | }|d| |ƒ}|jD ]!}d}tjt|d�� t||ƒƒ  W d   ƒ n1 s)w   Y  qd S )Nr(  znodes are not implementedrƒ   )rF  Úunsupported_nodesr*   rˆ   r‰   rj  )r1   r;   ÚVisitorClassÚinstr’  r�   r2   r2   r3   Útest_disallowed_nodes  s   
ÿ€þrJ  c                 C  sH   d}t jtdd�� tj|| |d� W d   ƒ d S 1 sw   Y  d S )Nzs +rº  rƒ   r‡   ©r*   rˆ   r!  rŠ   r‹   )r1   r;   rF   r2   r2   r3   Útest_syntax_error_exprs%  s   "ÿrL  c                 C  sL   d}d}t jt|d�� tj|| |d� W d   ƒ d S 1 sw   Y  d S )Nzs + tzname 's' is not definedrƒ   r‡   )r*   rˆ   r¨  rŠ   r‹   )r1   r;   rF   r�   r2   r2   r3   Útest_name_error_exprs+  s
   "ÿrM  Úexpress)za + @bz@a + bz@a + @bc                 C  s˜   d\}}|dkr*t jtdd�� tj|| |d� W d   ƒ d S 1 s#w   Y  d S t jtdd�� tj|| |d� W d   ƒ d S 1 sEw   Y  d S )N©rP   rM   r¥   zThe '@' prefix is onlyrƒ   r‡   zThe '@' prefix is notrK  )r1   r;   rN  rÞ   rà   r2   r2   r3   Ú%test_invalid_local_variable_reference2  s   "ÿ"ÿrP  c                 C  s|   d\}}| dkr,d}t jt|d�� tjd| |d� W d   ƒ d S 1 s%w   Y  d S tjd| |d�}||| ks<J ‚d S )NrO  r#   zVariables in expression .+rƒ   zsin + dotted_liner‡   )r*   rˆ   r   rŠ   r‹   )r1   r;   r  Údotted_liner�   rÈ   r2   r2   r3   Útest_numexpr_builtin_raises>  s   "ÿrR  c                 C  sJ   d}t jtdd�� tjd|| |d� W d   ƒ d S 1 sw   Y  d S )N)é*   g      @zResolver of type .+rƒ   rö  )Ú	resolversr1   r;   )r*   rˆ   r¢   rŠ   r‹   )r1   r;   Úcannot_resolver2   r2   r3   Útest_bad_resolver_raisesI  s   "ÿrV  c                 C  óD   t jtdd�� tjd| |d� W d   ƒ d S 1 sw   Y  d S )Nzexpr cannot be an empty stringrƒ   Ú r‡   ©r*   rˆ   r=   rŠ   r‹   r‡   r2   r2   r3   Útest_empty_string_raisesO  s   "ÿrZ  c                 C  rW  )Nz#only a single expression is allowedrƒ   z1 + 1; 2 + 2r‡   rK  r‡   r2   r2   r3   Ú$test_more_than_one_expression_raisesU  s   "ÿr[  Úcmpr   rD   c              	   C  sÄ   t dd„ ttj d¡ji}||  ƒ }||  ƒ } || ƒ }d|› d|› d�}d|› d|› d�}d|› d	|› d
�}	|||	fD ]#}
d}tjt|d�� t	j
|
||d� W d   ƒ n1 sZw   Y  q<d S )Nc                   S  s   t j d¡ d¡S )NrM   rN   )r@   rQ   rR   rã   r2   r2   r2   r3   r^   _  s    z0test_bool_ops_fails_on_scalars.<locals>.<lambda>rM   r›   r¯   rœ   r°   r…   r±   r†   r  rƒ   r‡   )ÚintrK   r@   rQ   rR   rS   r*   rˆ   r‰   rŠ   r‹   )rB   r\  rD   r1   r;   Úgenr´   rµ   r¶   r·   r�   r�   r2   r2   r3   Útest_bool_ops_fails_on_scalarsZ  s    þ


ÿ€þr_  Úotherz'x'z...c                 C  sN   t dg d¢itd�}| d| › �¡}tg d¢dd�}trd |_t ||¡ d S )Nr  )rÞ   rà   rE   rX   r  )FFF©r#  )r   Úobjectr‹   r   r   r#  rŒ   rç   )r`  r  r”   r“   r2   r2   r3   Útest_equals_variousp  s   rc  c                 C  s*   d}t j}tj|| |d�}||ksJ ‚d S )Nzinf + 1r‡   )r@   ÚinfrŠ   r‹   )r1   r;   ro   r“   r”   r2   r2   r3   Útest_inf‚  s   re  Úcolumnu	   Temp(Â°C)u   Capacitance(Î¼F)c                 C  sX   t tj d¡ d¡|dgd�}||| dk }d|› d�}|j|| d�}t ||¡ d S )	NrM   r×   rà   r  rH   ú`z` > 5)r1   )r   r@   rQ   rR   rS   r  rŒ   rä   )r1   rf  r  r“   Úquery_stringr”   r2   r2   r3   Útest_query_token‰  s   ÿri  c                 C  s¸   t ddgddggddgd�}||jdk  }|jd| |d	�}t ||¡ |d
krLd}tjt|d�� |jd| |d	� W d   ƒ d S 1 sEw   Y  d S |jd| |d	�}t ||¡ d S )Nr   rN   rP   rY  rï  Úcountr  z
~(cat > 0)r‡   r~   r  rƒ   znot (cat > 0))r   rï  r  rŒ   rä   r*   rˆ   r‰   )r1   r;   r  r“   r”   r�   r2   r2   r3   Útest_negate_lt_eq_le•  s   "ÿrk  c                 C  sx   |dv r|   tjjtd|› �d�¡ ttj d¡j	dddd�|d	gd
�}||| dk }| 
|› d�¡}t ||¡ d S )N)ÚTrueÚFalserd  ÚInfz+GH 47859 DataFrame eval not supported with )rˆ   r'   rM   r   éd   r¤  rÚ   Úcol1r  r�  z>6)r«   r*   r,   rª   r9  r   r@   rQ   rR   rã   r  rŒ   rä   )r:   rf  r  r“   r”   r2   r2   r3   Ú test_eval_no_support_column_name¥  s   þÿþrq  c                 C  sì   t g d¢g d¢g d¢dœƒ}|d d … }|d }t |¡� |jddd� W d   ƒ n1 s/w   Y  t g d	¢g d¢g d¢dœƒ}t ||¡ | s^t ||d ¡ t |d |d ¡ d S tg d¢dd
�}t ||¡ t |d |¡ d S )NrÖ  r×  )rn  é   é	   )r  rC  ÚCr  z	A = B + CTrÁ  )rÑ  é   é   ra  )r   rŒ   Úassert_cow_warningr‹   rä   rç   r   )Úusing_copy_on_writerÛ  r  Úresult_viewrs  r“   r2   r2   r3   Útest_set_inplace½  s   ÿrz  c                   @  s.   e Zd Zej dddg d¢dg¡dd„ ƒZdS )	ÚTestValidateÚvaluerP   rl  rÖ  g      @c                 C  sF   d}t jt|d�� tjd|d� W d   ƒ d S 1 sw   Y  d S )Nz8For argument "inplace" expected type bool, received typerƒ   z2+2rÁ  rY  )rŽ   r|  r�   r2   r2   r3   Útest_validate_bool_argsÒ  s   "ÿz$TestValidate.test_validate_bool_argsN)r+  r,  r-  r*   r,   r.  r}  r2   r2   r2   r3   r{  Ñ  s    r{  )pÚ
__future__r   Ú	functoolsr   Ú	itertoolsr   rJ  Únumpyr@   r*   Úpandas.compatr   Úpandas.compat._optionalr   Úpandas.errorsr   r   r	   Úpandas.util._test_decoratorsÚutilÚ_test_decoratorsr.   Úpandas.core.dtypes.commonr
   r   r   r   r¥   rŠ   r   r   r   r   r   r   Úpandas._testingÚ_testingrŒ   Úpandas.core.computationr   r   Úpandas.core.computation.enginesr   Úpandas.core.computation.exprr   r   r   Ú#pandas.core.computation.expressionsr   r   Úpandas.core.computation.opsr   r   r   r   r    Úpandas.core.computation.scoper!   Úpandas.util.versionr"   r#   Úfixturer1   ÚPARSERSr;   rG   r„  rf   rB   rD   r³   rr   rs   r5  rP  rQ  r…  r  rQ   rR   rS   r&  r$  r/   r;  r,   r.  rB  rD  rE  ÚPyTablesExprVisitorrF  Ú__annotations__rJ  rL  rM  rP  rR  rV  rZ  r[  r]  rK   r_  rc  re  ri  rk  Úkeysrq  rz  r{  r2   r2   r2   r3   Ú<module>   sÖ     ôÿ


þ

    j      )k%
þ	

ý

þþ

þ
