a
    é´«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  sH   | ]@}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©ZmarksN)ÚpytestÚparamÚmarkÚskipifr   r   ÚtdÚ
skip_if_no)Ú.0Úengine© r1   úa/var/www/html/laksyashrimp/venv/lib/python3.9/site-packages/pandas/tests/computation/test_eval.pyÚ	<genexpr>@   s   õÿþúþr3   )Úparamsc                 C  s   | j S ©N©r*   ©Úrequestr1   r1   r2   r0   ?   s    r0   c                 C  s   | j S r5   r6   r7   r1   r1   r2   ÚparserS   s    r9   c              
   C  sp   t | }t| jrfz|| |ƒW S  tyd } z.t|ƒ d¡rNtjW  Y d }~S ‚ W Y d }~n
d }~0 0 || |ƒS )Nz6negative number cannot be raised to a fractional power)r   r   Zhas_neg_fracÚ
ValueErrorÚstrÚ
startswithÚnpÚnan)ÚlhsÚcmp1Úrhsr0   ÚcÚer1   r1   r2   Ú_eval_single_binX   s    
ÿrD   é   )r   r   Z	SeriesNaNZDataFrameNaNÚfloat)r4   Ú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é   )é
   rE   ç      à?rE   é   )r   r=   ÚrandomÚdefault_rngÚstandard_normalr>   r   r*   )r8   Znan_df1Úoptsr1   r1   r2   r?   g   s    ûr?   c                   C  s*   dd„ dd„ dd„ dd„ dd„ dd„ dœS )	Nc                 S  s   t t | ¡tjd�S ©N©Údtype)r   r=   ÚarangeÚint64©Únr1   r1   r2   Ú<lambda>€   ó    zidx_func_dict.<locals>.<lambda>c                 S  s   t t | ¡tjd�S rP   )r   r=   rS   Úfloat64rU   r1   r1   r2   rW   �   rX   c                 S  s   t dd„ tdd|  ƒD ƒƒS )Nc                 S  s   g | ]}|› d t |ƒ› �‘qS )Ú_)Úchr)r/   Úir1   r1   r2   Ú
<listcomp>‚   rX   z3idx_func_dict.<locals>.<lambda>.<locals>.<listcomp>éa   )r   ÚrangerU   r1   r1   r2   rW   ‚   rX   c                 S  s   t d| d�S )Nú
2020-01-01©Úperiods)r   rU   r1   r1   r2   rW   ƒ   rX   c                 S  s   t d| d�S )Nz1 dayra   )r   rU   r1   r1   r2   rW   „   rX   c                 S  s   t d| dd�S )Nr`   ÚD)rb   Úfreq)r   rU   r1   r1   r2   rW   …   rX   )r\   ÚfÚsÚdtr-   Úpr1   r1   r1   r1   r2   Úidx_func_dict}   s    úri   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ÚTestEvalr@   )z!=z==z<=z>=ú<ú>)ÚneÚeqÚleÚgeÚltÚgt)rG   Úcmp2rl   rk   rr   rq   Úbinopc                 C  sÐ   |dkrn|dv rnd}t jt|d��8 d|› d|› d|› d�}	tj|	||d	� W d   ƒ n1 s`0    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)©r0   r9   )r)   ÚraisesÚNotImplementedErrorÚpdÚevalrD   ÚtmÚassert_equal)Úselfr@   rs   rt   r?   rA   r0   r9   ÚmsgÚexÚlhs_newÚrhs_newÚexpectedÚresultr1   r1   r2   Útest_complex_cmp_opsŠ   s    .zTestEval.test_complex_cmp_opsÚcmp_opc           
      C  s  |dk }|dk }|dkrr|dv rrd}t jt|d��, d|› d�}tj|||d� W d   ƒ n1 sd0    Y  d S d|› d�}d	 d
dg¡}|dv rät|ƒsät jt|d��( tj|||||dœd� W d   ƒ n1 sØ0    Y  n*t||||ƒ}tj|||d�}	t	 
|	|¡ d S )Nr   ru   ©Úinúnot inú&'(In|NotIn)' nodes are not implementedrz   ú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©r?   rA   ©r0   r9   Ú
local_dict)r)   r   r€   r�   r‚   Újoinr   Ú	TypeErrorrD   rƒ   r„   )
r…   r�   r?   rA   r0   r9   r†   r‡   rŠ   r‹   r1   r1   r2   Útest_simple_cmp_ops¡   s2    .üÿü&zTestEval.test_simple_cmp_opsÚopc                 C  s’  |dkrb|dv rbd}t jt|d��, d|› d�}tj|||d� W d   ƒ n1 sT0    Y  d S t|ƒr¢t|ƒs¢|dv r¢|dkr¢|dkr¢t 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   ƒ n1 �s0    Y  nlt
|ƒ�rLt
|ƒ�rLdd„ ||fD ƒ\}}t||||ƒ}t
|ƒ�rl| }n| }tj|||d�}t ||¡ d S )Nru   rŽ   r‘   rz   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 r5   )r=   Úarray©r/   Úxr1   r1   r2   r3   ï   rX   z3TestEval.test_compound_invert_op.<locals>.<genexpr>)r)   r   r€   r�   r‚   r   r+   ÚxfailÚapplymarkerr˜   r   r™   rD   rƒ   Úassert_almost_equal)r…   r›   r?   rA   r8   r0   r9   r†   r‡   r+   Z
skip_theserŠ   r‹   r1   r1   r2   Útest_compound_invert_opÄ   sV    .ÿþýüûÿ
üÿü(
z TestEval.test_compound_invert_opc                 C  s  |}|dkrdd|› d|› d�}	d}
t jt|
d��  tj|	||d� W d   ƒ n1 sV0    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 ||¡ qâd S )Nru   r’   ú mid r“   ry   rz   r~   ú mid and mid r|   ú mid) & (mid r}   ú&)r)   r   r€   r�   r‚   rD   rƒ   r¢   )r…   r@   rs   r?   ÚmidhsrA   r0   r9   ÚmidÚex1r†   rˆ   r‰   Úex2Úex3rŠ   r‡   r‹   r1   r1   r2   Ú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y’   Y d S 0 |dkrÆdd l	}| 
d|› d�¡}t |j|¡ ntd|› d�ƒ}t ||¡ d S )	Nr’   r“   r~   z rhs r#   r   znlhs z ghs)r�   r‚   rD   rƒ   r¢   Úalignr:   r™   ÚAttributeErrorr#   ÚevaluateÚvalues)r…   r®   r?   rA   r0   r9   r‡   r‹   rŠ   ZnlhsZghsrm   r1   r1   r2   Útest_binary_arith_ops  s"    zTestEval.test_binary_arith_opsc           	      C  s�   d}t j|||d�}|| }t ||¡ |dkrrdd l}| d¡}t|ttfƒr`t |j	|¡ qŒt || 
¡ ¡ nt|d||ƒ}t ||¡ d S )Nz	lhs % rhsr~   r#   r   zexpected % rhsú%)r�   r‚   rƒ   r¢   r#   r±   Ú
isinstancer   r   r²   ÚitemrD   )	r…   r?   rA   r0   r9   r‡   r‹   rŠ   rm   r1   r1   r2   Útest_modulus4  s    
zTestEval.test_modulusc           	      C  sš   d}|dks&|dkrLt tjƒt dƒkrLtj|||d�}|| }t ||¡ nJd}tjt	|d��( tj|||dœ||d	� W d   ƒ n1 sŒ0    Y  d S )
Nz
lhs // rhsru   r#   ú2.13.0r~   zGunsupported operand type\(s\) for //: 'VariableNode' and 'VariableNode'rz   r•   ©r—   r0   r9   )
r"   r#   Ú__version__r�   r‚   rƒ   r„   r)   r   r™   )	r…   r?   rA   r0   r9   r‡   ÚresrŠ   r†   r1   r1   r2   Útest_floor_divisionF  s$    ÿÿÿüzTestEval.test_floor_divisionc           
      C  sØ   d}t |d||ƒ}tj|||d�}t|ƒrŒt|ƒrŒt|ttjfƒrŒt |¡rŒd}t	j
t|d�� t ||¡ W d   ƒ qÔ1 s€0    Y  nHt ||¡ d}tj|||d�}t |d||ƒ}	t |	d||ƒ}t ||¡ d S )Nz
lhs ** rhsú**r~   z-(DataFrame.columns|numpy array) are differentrz   z(lhs ** rhs) ** rhs)rD   r�   r‚   r   rµ   Úcomplexr=   ZcomplexfloatingÚisnanr)   r   ÚAssertionErrorrƒ   Úassert_numpy_array_equalr¢   )
r…   r?   rA   r0   r9   r‡   rŠ   r‹   r†   Úmiddler1   r1   r2   Útest_pow\  s(    ÿþýü,zTestEval.test_powc                 C  sX   z|  t¡}W n" ty0   t t|ƒg¡}Y n0 | }tjd||d�}t ||¡ d S )Nz~elbr~   )	ÚastypeÚboolr°   r=   r�   r�   r‚   rƒ   r¢   )r…   r?   r0   r9   ZelbrŠ   r‹   r1   r1   r2   Útest_check_single_invert_opv  s    z$TestEval.test_check_single_invert_opc                 C  s<  d}t tj d¡ d¡ƒ}|dkrfd}tjt|d��  tj	|||d� W d   ƒ q¨1 sZ0    Y  nBd}tjt
|d��  tj	|||d� W d   ƒ n1 sž0    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0    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   ƒ n1 �sè0    Y  nDd}tjt
|d��  tj	|||d� W d   ƒ n1 �s.0    Y  d S )Nú~lhsrH   ©rE   rH   r#   ú-couldn't find matching opcode for 'invert_dd'rz   r~   ú0ufunc 'invert' not supported for the input typesrE   ©Úsizer¸   ú)couldn't find matching opcode for 'invertrJ   ©ÚarK   g       @é   )ÚbrB   úunknown type objectú#bad operand type for unary ~: 'str')r   r=   rL   rM   rN   r)   r   r€   r�   r‚   r™   Úintegersr"   r#   rº   rƒ   Úassert_frame_equalr:   )r…   r0   r9   r   r?   r†   Úexpectr‹   r1   r1   r2   Útest_frame_invert€  s<    0.2ÿ
2zTestEval.test_frame_invertc                 C  s$  d}t tj d¡ d¡ƒ}|dkrfd}tjt|d��  tj	|||d�}W d   ƒ q¨1 sZ0    Y  nBd}tjt
|d��  tj	|||d� W d   ƒ n1 sž0    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0    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   ƒ n1 �sÐ0    Y  nDd}tjt
|d��  tj	|||d� W d   ƒ n1 �s0    Y  d S )NrÇ   rH   rE   r#   rÉ   rz   r~   rÊ   rË   r¸   rÍ   rJ   rÎ   rÒ   rÓ   )r   r=   rL   rM   rN   r)   r   r€   r�   r‚   r™   rÔ   r"   r#   rº   rƒ   Úassert_series_equalr:   )r…   r0   r9   r   r?   r†   r‹   rÖ   r1   r1   r2   Útest_series_invert­  s8    0.2
2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rÞd	}t
jt|d
��  tj|||d� W d   ƒ n1 sÒ0    Y  n"| }tj|||d�}t ||¡ d S )Nú-lhsrH   rÈ   r~   rE   rË   rJ   r#   ú*couldn't find matching opcode for 'neg_bb'rz   )r   r=   rL   rM   rN   r�   r‚   rƒ   rÕ   rÔ   r)   r   r€   ©r…   r0   r9   r   r?   rÖ   r‹   r†   r1   r1   r2   Útest_frame_negateÜ  s"    0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rÞd}t
jt|d	��  tj|||d� W d   ƒ n1 sÒ0    Y  n"| }tj|||d�}t ||¡ d S )
NrÚ   rH   rE   r~   rË   rJ   r#   rÛ   rz   )r   r=   rL   rM   rN   r�   r‚   rƒ   rØ   rÔ   r)   r   r€   rÜ   r1   r1   r2   Útest_series_negateö  s"    0zTestEval.test_series_negater?   rH   rÈ   rE   rË   rJ   c                 C  s(   d}|}t j|||d�}t ||¡ d S ©Nz+lhsr~   )r�   r‚   rƒ   rÕ   ©r…   r?   r0   r9   r   rÖ   r‹   r1   r1   r2   Útest_frame_pos  s    zTestEval.test_frame_posc                 C  s(   d}|}t j|||d�}t ||¡ d S rß   )r�   r‚   rƒ   rØ   rà   r1   r1   r2   Útest_series_pos"  s    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 sT0    Y  tjd||d�d	ksvJ ‚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 ‚tj|ddd��* tjd||d�dk�sJ ‚W d   ƒ n1 �s0    Y  tj|ddd��* tjd||d�dk�sNJ ‚W d   ƒ n1 �sd0    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œ   rz   z~1.0r~   z-1.0©r9   r0   g      ð¿z+1.0g      ð?z~1éþÿÿÿz-1éÿÿÿÿz+1rK   zBitwise inversionF)r{   Úcheck_stacklevelz~Truez~Falsez-Truez-Falser   z+Truez+False)	r   ÚDeprecationWarningr)   r   r™   r�   r‚   rƒ   Úassert_produces_warning)r…   r0   r9   r†   Úwarnr1   r1   r2   Útest_scalar_unary4  s.    .ÿ:ÿ: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]rQ   )
rå   TrK   r   Fr   iÛÿÿÿé%   iÚÿÿÿrë   )r=   r�   r�   r‚   Zobject_rƒ   rÁ   )r…   r‹   rŠ   r1   r1   r2   Ú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s8J ‚d S )NrŸ   r   rQ   F)r   r=   r�   r‚   r²   )r…   Zfloat_numpy_dtyper   Údfr»   r1   r1   r2   Ú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   rK   zx.fillna(-1)rå   ©Zcheck_nameszx.shift(1, fill_value=-1))Z
fill_value)
r   r=   r>   r‚   rŸ   Zfillnarƒ   rØ   r   Úshift©r…   rí   r‹   rŠ   r1   r1   r2   Ú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  sz   t j d¡ d¡dd  }}}tt j d¡ d¡ƒ}d}tjt|d��  tj	|||d� W d   ƒ n1 sl0    Y  d S )NrH   rÐ   rK   ©rÐ   rH   ú;cannot evaluate scalar only bool ops|'BoolOp' nodes are notrz   r~   )
r=   rL   rM   rN   r   r)   r   r€   r�   r‚   )	r…   r‡   r0   r9   rŸ   rÏ   rÑ   rí   r†   r1   r1   r2   Útest_disallow_scalar_bool_ops|  s
    z&TestEval.test_disallow_scalar_bool_opsc                 C  sN  d}t jd||d�}|dks J ‚t|ƒs,J ‚d}t jd||d�}|dksLJ ‚t|ƒsXJ ‚d}t jd||d�}|rtJ ‚t|ƒs€J ‚t|ƒsŒJ ‚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 ‚t dg¡}t jd||d�}t |t dg¡¡ |jdk�sJJ ‚d S )NrK   rŸ   r~   g      ø?F)rK   )	r�   r‚   r   r
   r=   r�   rƒ   rÁ   Úshape)r…   r0   r9   rŸ   r‹   r1   r1   r2   Ú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…   r0   r9   Úexpr‹   r1   r1   r2   Ú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sZJ ‚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 > rK   rH   rü   úA == )
r�   r‚   r=   rY   r   ÚqueryÚemptyÚlocrƒ   rÕ   )	r…   r0   r9   rù   r‹   rŠ   rí   ÚcutoffÚexactr1   r1   r2   Ú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 sH0    Y  t ƒ }d|j_tjt|d�� | d¡ W d   ƒ n1 sŽ0    Y  d S )	N)r   r   r   )ZfooÚbarÚclass©Úcolumnsz4Python keyword not valid identifier in numexpr queryrz   z
class == 0Úlambdazlambda == 0)r   r)   r   ÚSyntaxErrorrþ   ÚindexÚname©r…   rí   r†   r1   r1   r2   Útest_disallow_python_keywordsÎ  s    (z&TestEval.test_disallow_python_keywordsc                 C  sj   t jttdd��F t d¡dks$J ‚t d¡dks6J ‚t d¡dksHJ ‚W d   ƒ n1 s\0    Y  d S )	NF)ræ   znot Truerä   z	not Falserå   zTrue and not Truer   )rƒ   Zmaybe_produces_warningrç   r   r�   r‚   )r…   r1   r1   r2   Ú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oD|j d¡j› ¡sNJ ‚d S )NrÏ   Zhello)r   r�   r‚   r;   r{   rÏ   )r…   Úeventr1   r1   r2   Ú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=   rL   rM   rN   rÔ   rá   r   râ   rê   rì   rî   rò   rõ   r÷   rú   r  r  r  r  r1   r1   r1   r2   rj   ‰   sx   ý
"
3ÿ
 

-/úþ
úþ

þ
!
rj   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rr|dkrrtjj	dd	�}| 
|¡ |jj|ks‚J ‚|jj|ks’J ‚tj|t|ƒd
d� d S )NrH   ©rE   rÐ   rQ   ú r~   Z	complex64r#   zfnumexpr issue with complex that are upcast to complex 128 https://github.com/pydata/numexpr/issues/492r&   F)Zcheck_exact)r   r=   rL   rM   rN   r�   r‚   r)   r+   r    r¡   r²   rR   rƒ   rÕ   )r…   r0   r9   r›   Zcomplex_or_float_dtyper   r8   rR   rí   ÚleftÚrightrf   r»   r+   r1   r1   r2   Útest_binop_typecastingð  s    ÿ
z&TestTypeCasting.test_binop_typecastingN)r  r  r  r)   r+   r  r&  r1   r1   r1   r2   r  ï  s   r  c                  G  s4   t tt d¡| ƒƒ }ttjdd„ | D ƒƒ}|o2|S )NZis_monotonic_increasingc                 s  s   | ]}t |jjtjƒV  qd S r5   )Ú
issubclassrR   Útyper=   Z
datetime64rž   r1   r1   r2   r3     rX   zshould_warn.<locals>.<genexpr>)ÚanyÚmapÚoperatorÚ
attrgetterr   Úxor)ÚargsZnot_monoZonly_one_dtr1   r1   r2   Úshould_warn  s
    ÿr/  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)r\   rf   rg   rf   c                 C  s>   d}t tj d¡ d¡ƒ}tj|||d�}t ||d ¡ d S )Nzdf * ~2rH   r"  r~   éýÿÿÿ)	r   r=   rL   rM   rN   r�   r‚   rƒ   rÕ   )r…   r0   r9   rf   rí   r»   r1   r1   r2   Ú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ƒr¢t t	¡�  t
jd||d�}	W d   ƒ q²1 s–0    Y  nt
jd||d�}	t |	|| ¡ d S )	NrH   ©rI   rI   rI   ©r
  r  )é   rI   r8  zdf + df2r~   ©r   r=   rL   rM   rN   r/  r
  rƒ   rè   ÚRuntimeWarningr�   r‚   rÕ   )
r…   r0   r9   r3  r4  r5  ri   rí   Údf2r»   r1   r1   r2   Útest_basic_frame_alignment  s    

ý

ý0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 )NrH   r6  rI   r7  údf < 2r~   zdf < df3)r   r=   rL   rM   rN   r�   r‚   rƒ   rÕ   rö   r
  r  )	r…   r0   r9   r=  r5  ri   rí   r»   Údf3r1   r1   r2   Ú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ƒrÒt t	¡�  t
jd	||d
�}W d   ƒ qâ1 sÆ0    Y  nt
jd	||d
�}t |||	 |
 ¡ d S )NrH   ró   rÐ   r7  )é   rH   rE  rÈ   rE   zdf + df2 + df3r~   r9  )r…   r0   r9   rA  rB  rC  rD  ri   rí   r;  r?  r»   r1   r1   r2   Ú#test_medium_complex_frame_alignmentM  s(    

ý

ý

ý0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ƒr t	 
t¡�  tjd||d�}
W d   ƒ q°1 s”0    Y  ntjd||d�}
|dksÀ|dkrÜ|d	krÒ| |	¡n||	 }n||	 }t	 |
|¡ d S )
NrH   r6  rI   r7  rE   údf + sr~   rg   r#   )r   r=   rL   rM   rN   Úgetattrr   r/  r
  rƒ   rè   r:  r�   r‚   ÚaddrÕ   )r…   r0   r9   rG  r=  r5  ri   rí   r
  rf   r»   rŠ   r1   r1   r2   Ú!test_basic_frame_series_alignmentk  s    

ý
 0z/TestAlignment.test_basic_frame_series_alignmentzr_idx_type, c_idx_typer\   )rg   rg   c              
   C  s\  |dkr`|dv r`|dkr`|dkr`|dkr`d|› 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 sö0    Y  ntjd||d�}|dk�s&|dk�rD|dk�r:|	 |¡n||	 }n||	 }t ||¡ d S )Nr#   )rœ   ru   r
  r\   rf   z"Flaky column ordering when engine=z	, parser=z, index_name=z, r_idx_type=z, c_idx_type=F)r'   ÚstrictrH   )rI   é   rI   rM  r7  rE   zs + dfr~   rg   )r¡   r)   r+   r    r   r=   rL   rM   rN   rI  r   r/  r
  rƒ   rè   r:  r�   r‚   rJ  rÕ   )r…   r8   r0   r9   rG  r=  r5  ri   r'   rí   r
  rf   r»   rŠ   r1   r1   r2   Ú!test_basic_series_frame_alignment†  sH    
ÿþýüûÿÿþþÿ

ý
 0z/TestAlignment.test_basic_series_frame_alignmentr›   r  r  c                 C  s@  t tj d¡ d¡|| dƒ|| dƒd�}t||ƒ}	ttj d¡ d¡|	d d… ƒ}
d|› d�}d|› d	�}t|j|
jƒròt	 
t¡�  tj|||d
�}W d   ƒ n1 s¬0    Y  t	 
t¡�  tj|||d
�}W d   ƒ n1 sæ0    Y  n tj|||d
�}tj|||d
�}|dk�r<|dk�r<|dk�r<t	 ||¡ d S )NrH   r6  rI   r7  rE   zs z dfzdf z sr~   rg   r#   )r   r=   rL   rM   rN   rI  r   r/  r
  rƒ   rè   r:  r�   r‚   rÕ   )r…   r0   r9   rG  r›   r=  r5  ri   rí   r
  rf   r?   rA   rÏ   rÑ   r1   r1   r2   Útest_series_frame_commutativity¯  s&    

ý
 .0
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s¦|dkrÄ|dkrº| |¡}qÌ|| }n|| }|dksÜ|dkrú|dkrð| |¡}n|| }n|| }t|j	|j	|j	ƒ�rTt
 t¡�  tjd||d�}W d   ƒ n1 �sH0    Y  ntjd||d�}|j|jk�svJ ‚t
 ||¡ d S )	NrÐ   rE   rH   r7  rg   r#   zdf2 + ser + dfr~   )r   r=   rL   rM   rN   r  r   rJ  r/  r
  rƒ   rè   r:  r�   r‚   rö   rÕ   )r…   r0   r9   rA  rB  rC  rD  ri   rV   Úm1Úm2rí   r;  r
  ÚserZ	expected2rŠ   r»   r1   r1   r2   Ú#test_complex_series_frame_alignmentÎ  s>    

ý

ý 

2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 sn0    Y  ttj d¡ d¡ƒ}t d¡�  t	j
d||d� W d   ƒ n1 s¾0    Y  t tj d¡ d	¡ƒ}ttj d¡ d¡ƒ}t d¡�  t	j
d||d� W d   ƒ n1 �s&0    Y  t tj d¡ d
¡ƒ}ttj d¡ d¡ƒ}|dk}|�spt}nd}t |¡�x}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   ƒ n1 �sþ0    Y  d S )NrH   )éè  rI   é'  r#   FrH  r~   rT  )rI   rU  r6  ru   rK   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=   rL   rM   rN   r   r   rƒ   rè   r�   r‚   Úlenr;   ÚmessageÚlog10rÌ   rö   )r…   r0   r9   rí   rf   ÚseenZis_python_engineZwrnÚwr†   ZloggedrŠ   r1   r1   r2   Ú+test_performance_warning_for_poor_alignmentþ  s>    ..0þÿz9TestAlignment.test_performance_warning_for_poor_alignmentN)r  r  r  Zindex_typesZlhs_index_typesr2  r)   r+   Úfilterwarningsr  r<  r@  rF  rK  Úlistr   rN  rO  rS  r[  r1   r1   r1   r2   r0    sT   



þ
#

+r0  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  s$   |  dd¡d |d< tj|i |¤ŽS ©NÚlevelr   rK   ©Úpopr�   r‚   ©r…   r.  Úkwargsr1   r1   r2   r‚   0  s    zTestOperations.evalc              	     sL  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 r¶d}	tjt|	d��  tj|||d� W d   ƒ n1 sª0    Y  q@td|d|ƒ}
| j|||d�}||
ksàJ ‚t||d|ƒ}
| j|d|i||d�}||
k�sJ ‚td||d |ƒ}
| j|d|i||d�}||
ks@J ‚q@d S )Nru   r�   r�   c                   s   g | ]}|ˆ vr|‘qS r1   r1   ©r/   r›   ©Zexclude_arithr1   r2   r]   9  s   þz8TestOperations.test_simple_arith_ops.<locals>.<listcomp>c                 s  s   | ]}|d kr|V  qdS )z//Nr1   re  r1   r1   r2   r3   ?  rX   z7TestOperations.test_simple_arith_ops.<locals>.<genexpr>z1 z 1zx z (x + 1)rŽ   z&argument of type 'int' is not iterablerz   r~   rK   rŸ   r¹   )	r   r   r  r)   r   r™   r�   r‚   rD   )r…   r0   r9   Z	arith_opsÚopsr›   r‡   r«   r¬   r†   ÚexpecrŸ   Úyr1   rf  r2   Útest_simple_arith_ops4  s0    

þ
0z$TestOperations.test_simple_arith_opsrA   TFr?   r›   c                 C  s†   |› d|› d|› �}t dkrd|dv rdd}tjt|d�� |  |¡ W d   ƒ n1 sV0    Y  d S |  |¡}t|ƒ}||ks‚J ‚d S ©Nr#  ru   rv   ry   rz   ©r9   r)   r   r€   r‚   ©r…   rA   r?   r›   r‡   r†   r»   rù   r1   r1   r2   Útest_simple_bool_opsW  s    (
z#TestOperations.test_simple_bool_opsc                 C  s†   |› d|› d|› �}t dkrd|dv rdd}tjt|d�� |  |¡ W d   ƒ n1 sV0    Y  d S |  |¡}t|ƒ}||ks‚J ‚d S rk  rl  rm  r1   r1   r2   Útest_bool_ops_with_constantsg  s    (
z+TestOperations.test_bool_ops_with_constantsc                 C  sr   t j d¡ d¡}tt j d¡ d¡ƒ}d}tjt|d��$ | jd||dœd� W d   ƒ n1 sd0    Y  d S )	NrH   )rÐ   rE  rE   é   rI   z?N-dimensional objects, where N > 2, are not supported with evalrz   úx + y©rŸ   ri  ©r—   )	r=   rL   rM   rN   r   r)   r   r€   r‚   )r…   rŸ   ri  r†   r1   r1   r2   Útest_4d_ndarray_failsw  s
    z$TestOperations.test_4d_ndarray_failsc                 C  s   |   d¡}|dksJ ‚d S )NÚ1rK   )r‚   )r…   rŸ   r1   r1   r2   Útest_constant~  s    
zTestOperations.test_constantc                 C  s8   t tj d¡ d¡ƒ}| jdd|id�}t ||¡ d S )NrH   ©rI   rH   rí   rs  ©r   r=   rL   rM   rN   r‚   rƒ   rÕ   )r…   rí   r;  r1   r1   r2   Útest_single_variable‚  s    z#TestOperations.test_single_variablec                 C  sR   t tj d¡ d¡ƒ}tjtdd�� |  d¡ W d   ƒ n1 sD0    Y  d S )NrH   r"  úname 'x' is not definedrz   zdf[x > 2] > 2)	r   r=   rL   rM   rN   r)   r   Ú	NameErrorr‚   ©r…   rí   r1   r1   r2   Ú&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 )NrH   r"  z(df + 1)[df > 2]rí   rs  rK   rx  rñ   r1   r1   r2   Ú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
�¡ q‚d S )NrH   r"  Úabcr  zdf.a < df.bzdf.a + df.b + df.czdf.a + df.b + df.c[df.b < 0]r   rí   rs  )r   r=   rL   rM   rN   r]  rÏ   rÑ   rB   Úziprƒ   rØ   r‚   )r…   rí   Úexpr1Zexpec1Zexpr2Zexpec2Zexpr3Zexpec3ÚexprsZexpecsrC   rh  r1   r1   r2   Ú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   ƒ n1 st0    Y  d S )
NrH   r"  r  r  zdf = df2ú%cannot assign without a target objectrz   )rí   r;  rs  )
r   r=   rL   rM   rN   r]  r)   r   r:   r‚   )r…   rí   r;  r�  r†   r1   r1   r2   Útest_assignment_fails¡  s    ÿz$TestOperations.test_assignment_failsc                 C  sZ   t tj d¡ d¡tdƒd�}tjtdd�� | 	d¡ W d   ƒ n1 sL0    Y  d S )NrH   rÈ   Úabr  úinvalid syntaxrz   zd c = a + b©
r   r=   rL   rM   rN   r]  r)   r   r	  r‚   r|  r1   r1   r2   Ú%test_assignment_column_multiple_raise«  s
    ÿz4TestOperations.test_assignment_column_multiple_raisec                 C  s^   t tj d¡ d¡tdƒd�}d}tjt|d�� | 	d¡ W d   ƒ n1 sP0    Y  d S )NrH   rÈ   r†  r  z5left hand side of an assignment must be a single namerz   zd,c = a + brˆ  r  r1   r1   r2   Ú%test_assignment_column_invalid_assign³  s    ÿz4TestOperations.test_assignment_column_invalid_assignc                 C  s^   t tj d¡ d¡tdƒd�}d}tjt|d�� | 	d¡ W d   ƒ n1 sP0    Y  d S )NrH   rÈ   r†  r  zcannot assign to function callrz   zTimestamp("20131001") = a + brˆ  r  r1   r1   r2   Ú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 )
NrH   rÈ   r†  r  rÏ   rÑ   ú	a = a + bT©Úinplace©
r   r=   rL   rM   rN   r]  Úcopyr‚   rƒ   rÕ   ©r…   rí   rŠ   r1   r1   r2   Ú&test_assignment_single_assign_existingÄ  s    ÿ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 )NrH   rÈ   r†  r  rÏ   rÑ   rB   ú	c = a + bTr�  r�  r‘  r1   r1   r2   Ú!test_assignment_single_assign_newÎ  s    ÿ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 )NrH   rÈ   r†  r  rK   z	a = 1 + bTr�  rÑ   rÏ   r�  )r…   rí   rÏ   rŠ   r1   r1   r2   Ú+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 sdJ ‚d S )NrH   rÈ   r†  r  rK   rŒ  Tr�  Frï   )r   r=   rL   rM   rN   r]  rÏ   r�  r‚   rÑ   rƒ   rØ   r  )r…   rí   rÏ   Zold_ar‹   r1   r1   r2   Ú"test_assignment_single_assign_nameä  s    ÿ

z1TestOperations.test_assignment_single_assign_namec                 C  sl   t tj d¡ d¡tdƒd�}|jddd� d}tjt	|d	�� | d
¡ W d   ƒ n1 s^0    Y  d S )NrH   rÈ   r†  r  r“  Tr�  z#can only assign a single expressionrz   z	c = a = b)
r   r=   rL   rM   rN   r]  r‚   r)   r   r	  r  r1   r1   r2   Ú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 )NrH   rÈ   r†  r  zc = df.a + df.brí   T)r—   ÚtargetrŽ  rÏ   rÑ   rB   ©
r   r=   rL   rM   rN   r]  r‚   r�  rƒ   rÕ   r‘  r1   r1   r2   Ú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ñ   r1   r1   r2   Ú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s8J ‚| ¡ }|d |d	  |d
< t 	||¡ d S )NrH   rÈ   r†  r  r“  Fr�  rÏ   rÑ   rB   r™  )r…   rí   ÚactualrŠ   r1   r1   r2   Ú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 slJ ‚|d d |d< |d d |d< |jdd	d
�}t ||¡ |d u s²J ‚d}tjt|d�� |jddd
� W d   ƒ n1 sè0    Y  d S )N©rK   rH   rÐ   ©rE  rE   rp  rœ  rÏ   rÑ   rB   Údú$
        c = a + b
        d = c + bTr�  rK   rH   rC   ú$
        a = a - 1
        e = a + 2z@Multi-line expressions are only valid if all expressions containrz   z(
            a = b + 2
            b - 2F)r   r�  r‚   rƒ   rÕ   r)   r   r:   )r…   Úwarn_copy_on_writerí   rŠ   Úanswerr†   r1   r1   r2   Útest_multi_line_expression  s0    üüü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Ñ   rB   r¢  r£  Fr�  rK   rH   rC   r¤  ©r   r�  r‚   rƒ   rÕ   r‘  r1   r1   r2   Ú&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 shJ ‚d S )Nr   r¡  rœ  rM  rÏ   rB   r¢  z?
        c = a * @local_var
        d = c + @local_var
        Tr�  r¨  )r…   rí   rŠ   Z	local_varr¦  r1   r1   r2   Ú)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 sxJ ‚d S )Nr   r¡  rœ  c                 S  s   |S r5   r1   rœ  r1   r1   r2   Ú
local_funco  s    zUTestOperations.test_multi_line_expression_callable_local_variable.<locals>.local_funcrÏ   rK   rM  rB   r¢  zM
        c = a * @local_func(1, 7)
        d = c + @local_func(1, 7)
        Tr�  r¨  ©r…   rí   r«  rŠ   r¦  r1   r1   r2   Ú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  s   |S r5   r1   rœ  r1   r1   r2   r«  ƒ  s    zaTestOperations.test_multi_line_expression_callable_local_variable_with_kwargs.<locals>.local_funcrÏ   rM  rK   )rÑ   rÏ   rB   r¢  zU
        c = a * @local_func(b=7, a=1)
        d = c + @local_func(b=7, a=1)
        Tr�  r¨  r¬  r1   r1   r2   Ú>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 sP0    Y  t ||¡ d S )Nr   r¡  rœ  r„  rz   za = 1)r   r�  r)   r   r:   rþ   rƒ   rÕ   )r…   rí   Zdf_origr†   r1   r1   r2   Ú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Ï   rH   za == 2Tr�  rÐ   ú	a = 1 + 2©r˜  rŽ  )r   r�  rþ   rƒ   rÕ   r‚   Zassert_dict_equalr‘  r1   r1   r2   Útest_query_inplaceœ  s    z!TestOperations.test_query_inplaceÚinvalid_targetrK   ÚcatrH   ©rK   rÐ   c                 C  s’   d}d}t jt|d��  | j||dd� W d   ƒ n1 s<0    Y  t|dƒrŽt jt|d��  | j||dd� W d   ƒ n1 s„0    Y  d S )Nz)Cannot assign expression output to targetr°  rz   Tr±  r�  F)r)   r   r:   r‚   Úhasattr©r…   r³  r†   Ú
expressionr1   r1   r2   Útest_cannot_item_assignª  s    .
z&TestOperations.test_cannot_item_assign)rK   r´  rµ  c                 C  sJ   d}d}t jt|d��  | j||dd� W d   ƒ n1 s<0    Y  d S )Nz"Cannot return a copy of the targetr°  rz   Fr±  )r)   r   r:   r‚   r·  r1   r1   r2   Útest_cannot_copy_item¶  s    z$TestOperations.test_cannot_copy_itemr˜  c                 C  sb   d}| j ||dd�dksJ ‚d}tjt|d��  | j ||dd� W d   ƒ n1 sT0    Y  d S )Nú1 + 2Fr±  rÐ   z0Cannot operate inplace if there is no assignmentrz   T)r‚   r)   r   r:   )r…   r˜  r¸  r†   r1   r1   r2   Ú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 )
NrH   ©rH   rH   r`   rc   ©rd   rb   r  r>  rí   rs  ©	r   r=   rL   rM   rN   r   r‚   rƒ   rÕ   )r…   rí   rC   ÚrrŸ   r1   r1   r2   Ú*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 )NrH   r½  r`   rc   r¾  r  zdf[df < 2 + 3]rí   rs  rE   r¿  ©r…   rí   rÀ  rC   r1   r1   r2   Ú,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 )
NrH   r½  r`   rc   r¾  r  zdf[df[df < 2] < 2] + df * 2rí   rs  r¿  rÂ  r1   r1   r2   Ú-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 )NrH   r"  z1/1/2012rE   ra   Údates1zdf.dates1 < 20130101rí   r¹   Z20130101Frï   )
r   r=   rL   rM   rN   r   r‚   rÅ  rƒ   rØ   )r…   r0   r9   rí   r»   rh  r1   r1   r2   Útest_date_booleanæ  s    ü
z TestOperations.test_date_booleanc                 C  sˆ  |dkrüt jd||d�}|s J ‚t jd||d�}|s8J ‚t jd||d�}|rPJ ‚t jd||d�}|shJ ‚t jd||d�}|s€J ‚t jd||d�}|s˜J ‚t jd	||d�}|s°J ‚t jd
||d�}|sÈJ ‚t jd||d�}|ràJ ‚t jd||d�}|søJ ‚�nˆd}tjt|d��  t jd||d� W d   ƒ n1 �s60    Y  tjt|d��  t jd||d� W d   ƒ n1 �sv0    Y  tjt|d��  t jd||d� W d   ƒ n1 �s¶0    Y  tjt|d��  t jd||d� W d   ƒ n1 �sö0    Y  d}tjt|d��  t jd||d� W d   ƒ n1 �s:0    Y  tjt|d��  t jd||d� W d   ƒ n1 �sz0    Y  d S )Nru   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 implementedrz   z[(3,)] in (1, 2, [(3,)])z!'NotIn' nodes are not implementedz[3] not in (1, 2, [[3]]))r�   r‚   r)   r   r€   )r…   r0   r9   r»   r†   r1   r1   r2   Útest_simple_in_opsò  sF    00000z!TestOperations.test_simple_in_opsc                 C  s2   d}d  d¡}d}tj|||d�}||ks.J ‚d S )NrK   z * Z!aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar~   )r˜   r�   r‚   )r…   r0   r9   rÏ   r   rŠ   r»   r1   r1   r2   Ú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rtd}d|v r.d}tjt|d��& tj	|d|i||d	� W d   ƒ qŠ1 sh0    Y  ntj	|d|i||d	� d S )
NrH   r"  ru   ry   Únotú'Not' nodes are not implementedrz   rí   )r—   r9   r0   ©
r   r=   rL   rM   rN   r)   r   r€   r�   r‚   )r…   r   r0   r9   rí   r†   r1   r1   r2   Ú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rnd}tjt|d��  tj	|||d� W d   ƒ q~1 sb0    Y  ntj	|||d� d S )	NrH   r"  z(df + 2)[df > 1] > 0 z	 (df > 0)ru   z$cannot evaluate scalar only bool opsrz   rã   rË  )r…   rÍ  r0   r9   rí   r‡   r†   r1   r1   r2   Útest_fails_ampersand_pipeG  s    0z(TestOperations.test_fails_ampersand_pipeN)3r  r  r  r‚   rj  r)   r+   r  r   r  rn  ro  rt  rv  ry  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Î  r1   r1   r1   r2   r^  /  sn   #
	



	
%	 

&
			/þ
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  s$   |  dd¡d |d< tj|i |¤ŽS r_  ra  rc  r1   r1   r2   r‚   U  s    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 sd0    Y  t	j
||dd� d S )	NrÏ   rH   rI   z(a)r$   ©ÚallFrï   )r   r=   rL   rM   rN   rÏ   r‚   ÚerrstaterI  rƒ   rØ   )r…   rÐ  rí   rÏ   r   ÚgotrÖ   r1   r1   r2   Ú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|0    Y  t
j||dd� d S )	NrH   rI   rœ  z(a, b)r$   rÑ  Frï   )r   r=   rL   rM   rN   rÏ   rÑ   r‚   rÓ  rI  rƒ   r¢   )r…   rÐ  rí   rÏ   rÑ   r   rÔ  rÖ   r1   r1   r2   Ú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 )	NrH   rI   rœ  ze = arctan2(sin(a), b)T©r0   r9   rŽ  Frï   )r   r=   rL   rM   rN   r‚   rC   Zarctan2ÚsinrÏ   rÑ   rƒ   rØ   ©r…   r0   r9   rí   rÔ  rÖ   r1   r1   r2   Ú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 )	NrH   rI   rœ  ze = sin(a + b)Tr×  Frï   )r   r=   rL   rM   rN   r‚   rC   rØ  rÏ   rÑ   rƒ   rØ   rÙ  r1   r1   r2   Ú 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s0J ‚|jd||dd� |j	}t 
|j¡}|j|jksdJ ‚||jksrJ ‚tj||dd� d S )	NrÏ   rH   rI   z
b = sin(a)Tr×  Frï   )r   r=   rL   rM   rN   rÄ   rÏ   rR   r‚   rÑ   rØ  rƒ   rØ   )r…   rR   Zexpect_dtyper0   r9   rí   rÔ  rÖ   r1   r1   r2   Útest_result_types•  s    ÿzTestMath.test_result_typesc                 C  s`   t dtj d¡ d¡iƒ}d}tjt|d��  |jd||d� W d   ƒ n1 sR0    Y  d S )NrÏ   rH   rI   z#"mysin" is not a supported functionrz   zmysin(a)r~   )	r   r=   rL   rM   rN   r)   r   r:   r‚   ©r…   r0   r9   rí   r†   r1   r1   r2   Útest_undefined_func°  s    zTestMath.test_undefined_funcc                 C  s`   t dtj d¡ d¡iƒ}d}tjt|d��  |jd||d� W d   ƒ n1 sR0    Y  d S )NrÏ   rH   rI   z1Function "sin" does not support keyword argumentsrz   zsin(x=a)r~   )	r   r=   rL   rM   rN   r)   r   r™   r‚   rÝ  r1   r1   r2   Útest_keyword_arg·  s    zTestMath.test_keyword_argN)r  r  r  r‚   r)   r+   r,   r   r  r    rÕ  r   rÖ  rÚ  rÛ  r=   Zint32rY   rT   Zfloat32r*   Z
complex128r-   r  rÜ  rÞ  rß  r1   r1   r1   r2   rÏ  T  s,   ÿ





ûþ

rÏ  rH   rI   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 * 2rH   r~   )rƒ   rÁ   Ú_var_sr�   r‚   )r…   r0   r9   rC   r1   r1   r2   Útest_global_scopeÃ  s    ÿzTestScope.test_global_scopec                 C  sD   d}t ƒ  ¡ }tjd|||d� t ƒ  ¡ }| d¡ ||ks@J ‚d S )NrK   úx + 1r¹   Úlcls)Úlocalsr�  r�   r‚   rb  )r…   r0   r9   rŸ   rå  Zlcls2r1   r1   r2   Útest_no_new_localsÉ  s    


zTestScope.test_no_new_localsc                 C  s8   d}t ƒ  ¡ }tjd||d� t ƒ  ¡ }||ks4J ‚d S )NrK   rä  r~   )Úglobalsr�  r�   r‚   )r…   r0   r9   rŸ   ZgblsZgbls2r1   r1   r2   Útest_no_new_globalsÑ  s
    

zTestScope.test_no_new_globalsc                 C  sL   d}d}t jt|d��" tjd||i d� W d   ƒ n1 s>0    Y  d S )NrK   rz  rz   rä  r–   ©r)   r   r	   r�   r‚   )r…   r0   r9   rŸ   r†   r1   r1   r2   Útest_empty_localsØ  s    zTestScope.test_empty_localsc                 C  sL   d}d}t jt|d��" tj|||i d� W d   ƒ n1 s>0    Y  d S )Nzname '_var_s' is not definedrá  rz   )r0   r9   Zglobal_dictrê  )r…   r0   r9   r†   rC   r1   r1   r2   Útest_empty_globalsß  s    zTestScope.test_empty_globalsN)r  r  r  rã  rç  ré  rë  rì  r1   r1   r1   r2   rà  Â  s
   rà  c                  C  sL   d} t jt| d��& tjddddœdd� W d   ƒ n1 s>0    Y  d S )	NzInvalid engine 'asdf' passedrz   rq  rK   rH   rr  Úasdf)r—   r0   ©r)   r   ÚKeyErrorr�   r‚   ©r†   r1   r1   r2   Útest_invalid_engineç  s    rñ  )Úuse_numexprrŠ   ))Tr#   )Fru   c                 C  sP   ddl m} t d| ¡�$ |d ƒ}||ks.J ‚W d   ƒ n1 sB0    Y  d S )Nr   )Ú_check_engineúcompute.use_numexpr)Zpandas.core.computation.evalró  r�   Úoption_context)rò  rŠ   ró  r‹   r1   r1   r2   Útest_numexpr_option_respectedî  s    
rö  c                  C  sz   t  dd¡�Z tg d¢g d¢dœƒ} |  d¡}td d gddgdœd	dgd
�}t ||¡ W d   ƒ n1 sl0    Y  d S )Nrô  F)TFTFNN)rK   rH   rÐ   rE  rE   rp  )rû   ÚBz
A.isnull()rE   rp  rE  )r
  )r�   rõ  r   rþ   rƒ   rÕ   )rí   r‹   rŠ   r1   r1   r2   Ú#test_numexpr_option_incompatible_opÿ  s    ÿ
rø  c                  C  sL   d} t jt| d��& tjddddœdd� W d   ƒ n1 s>0    Y  d S )	NzInvalid parser 'asdf' passedrz   rq  rK   rH   rr  rí  )r—   r9   rî  rð  r1   r1   r2   Útest_invalid_parser  s    rù  )ru   r   rœ   z dict[str, type[BaseExprVisitor]]Ú_parsersc              	   C  sb   t | }|d| |ƒ}|jD ]B}d}tjt|d�� t||ƒƒ  W d   ƒ q1 sR0    Y  qd S )Nrä  znodes are not implementedrz   )rú  Zunsupported_nodesr)   r   r€   rI  )r0   r9   ZVisitorClassÚinstrg  r†   r1   r1   r2   Útest_disallowed_nodes  s    
rü  c                 C  sF   d}t jtdd��  tj|| |d� W d   ƒ n1 s80    Y  d S )Nzs +r‡  rz   r~   ©r)   r   r	  r�   r‚   )r0   r9   rC   r1   r1   r2   Útest_syntax_error_exprs%  s    rþ  c                 C  sJ   d}d}t jt|d��  tj|| |d� W d   ƒ n1 s<0    Y  d S )Nzs + tzname 's' is not definedrz   r~   )r)   r   r{  r�   r‚   )r0   r9   rC   r†   r1   r1   r2   Útest_name_error_exprs+  s    rÿ  Úexpress)za + @bz@a + bz@a + @bc                 C  s’   d\}}|dkrPt jtdd��  tj|| |d� W d   ƒ qŽ1 sD0    Y  n>t jtdd��  tj|| |d� W d   ƒ n1 s„0    Y  d S )N©rK   rH   rœ   zThe '@' prefix is onlyrz   r~   zThe '@' prefix is notrý  )r0   r9   r   rÏ   rÑ   r1   r1   r2   Ú%test_invalid_local_variable_reference2  s    0r  c                 C  sx   d\}}| dkrTd}t jt|d��  tjd| |d� W d   ƒ qt1 sH0    Y  n tjd| |d�}||| kstJ ‚d S )Nr  r#   zVariables in expression .+rz   zsin + dotted_liner~   )r)   r   r   r�   r‚   )r0   r9   rØ  Zdotted_liner†   r»   r1   r1   r2   Útest_numexpr_builtin_raises>  s    0r  c                 C  sH   d}t jtdd��" tjd|| |d� W d   ƒ n1 s:0    Y  d S )N)é*   g      @zResolver of type .+rz   r»  )Ú	resolversr0   r9   )r)   r   r™   r�   r‚   )r0   r9   Zcannot_resolver1   r1   r2   Útest_bad_resolver_raisesI  s    r  c                 C  sB   t jtdd��  tjd| |d� W d   ƒ n1 s40    Y  d S )Nzexpr cannot be an empty stringrz   Ú r~   ©r)   r   r:   r�   r‚   r~   r1   r1   r2   Útest_empty_string_raisesO  s    r	  c                 C  sB   t jtdd��  tjd| |d� W d   ƒ n1 s40    Y  d S )Nz#only a single expression is allowedrz   z1 + 1; 2 + 2r~   rý  r~   r1   r1   r2   Ú$test_more_than_one_expression_raisesU  s    r
  Úcmprv   rA   c              	   C  sÄ   t dd„ ttj d¡ji}||  ƒ }||  ƒ } || ƒ }d|› d|› d�}d|› d|› d�}d|› d	|› d
�}	|||	fD ]F}
d}tjt|d��  t	j
|
||d� W d   ƒ qx1 s´0    Y  qxd S )Nc                   S  s   t j d¡ d¡S )NrH   rI   )r=   rL   rM   rÔ   r1   r1   r1   r2   rW   _  rX   z0test_bool_ops_fails_on_scalars.<locals>.<lambda>rH   r’   r¤   r“   r¥   r|   r¦   r}   rô   rz   r~   )ÚintrF   r=   rL   rM   rN   r)   r   r€   r�   r‚   )r?   r  rA   r0   r9   Úgenr©   rª   r«   r¬   r‡   r†   r1   r1   r2   Ú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Ñ   rB   rQ   rý   )FFF©r  )r   Úobjectr‚   r   r   r  rƒ   rØ   )r  rí   r‹   rŠ   r1   r1   r2   Útest_equals_variousp  s    r  c                 C  s*   d}t j}tj|| |d�}||ks&J ‚d S )Nzinf + 1r~   )r=   Úinfr�   r‚   )r0   r9   rf   rŠ   r‹   r1   r1   r2   Útest_inf‚  s    r  Ú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 )	NrH   rÈ   rÑ   r  rE   ú`z` > 5)r0   )r   r=   rL   rM   rN   rþ   rƒ   rÕ   )r0   r  rí   rŠ   Zquery_stringr‹   r1   r1   r2   Útest_query_token‰  s    ÿr  c                 C  s´   t ddgddggddgd�}||jdk  }|jd| |d	�}t ||¡ |d
kr”d}tjt|d��  |jd| |d	� W d   ƒ q°1 sˆ0    Y  n|jd| |d	�}t ||¡ d S )Nr   rI   rK   r8  r´  Úcountr  z
~(cat > 0)r~   ru   rÊ  rz   znot (cat > 0))r   r´  rþ   rƒ   rÕ   r)   r   r€   )r0   r9   rí   rŠ   r‹   r†   r1   r1   r2   Útest_negate_lt_eq_le•  s    0r  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ÚFalser  ZInfz+GH 47859 DataFrame eval not supported with )r   r'   rH   r   éd   rw  rË   Zcol1r  rp  z>6)r¡   r)   r+   r    rï  r   r=   rL   rM   rÔ   rþ   rƒ   rÕ   )r8   r  rí   rŠ   r‹   r1   r1   r2   Ú test_eval_no_support_column_name¥  s    þÿþr  c                 C  sê   t g d¢g d¢g d¢dœƒ}|d d … }|d }t |¡� |jddd� W d   ƒ n1 s^0    Y  t g d	¢g d¢g d¢dœƒ}t ||¡ | sºt ||d ¡ t |d |d ¡ n,tg d¢dd
�}t ||¡ t |d |¡ d S )Nr   r¡  )rM  é   é	   )rû   r÷  ÚCrû   z	A = B + CTr�  )r›  é   é   r  )r   rƒ   Zassert_cow_warningr‚   rÕ   rØ   r   )Zusing_copy_on_writer¥  rí   Zresult_viewrR  rŠ   r1   r1   r2   Útest_set_inplace½  s    ,r#  c                   @  s.   e Zd Zej dddg d¢dg¡dd„ ƒZdS )	ÚTestValidateÚvaluerK   r  r   g      @c                 C  sD   d}t jt|d�� tjd|d� W d   ƒ n1 s60    Y  d S )Nz8For argument "inplace" expected type bool, received typerz   z2+2r�  r  )r…   r%  r†   r1   r1   r2   Útest_validate_bool_argsÒ  s    z$TestValidate.test_validate_bool_argsN)r  r  r  r)   r+   r  r&  r1   r1   r1   r2   r$  Ñ  s   r$  )pÚ
__future__r   Ú	functoolsr   Ú	itertoolsr   r+  Únumpyr=   r)   Zpandas.compatr   Zpandas.compat._optionalr   Zpandas.errorsr   r   r	   Zpandas.util._test_decoratorsÚutilZ_test_decoratorsr-   Zpandas.core.dtypes.commonr
   r   r   r   rœ   r�   r   r   r   r   r   r   Zpandas._testingZ_testingrƒ   Zpandas.core.computationr   r   Zpandas.core.computation.enginesr   Zpandas.core.computation.exprr   r   r   Z#pandas.core.computation.expressionsr   r   Zpandas.core.computation.opsr   r   r   r   r    Zpandas.core.computation.scoper!   Zpandas.util.versionr"   r#   Zfixturer0   ZPARSERSr9   rD   r]  r_   r?   rA   r¨   ri   rj   r  r/  r0  r^  rÏ  rL   rM   rN   râ  rà  r.   rñ  r+   r  rö  rø  rù  ZPyTablesExprVisitorrú  Ú__annotations__rü  rþ  rÿ  r  r  r  r	  r
  r  rF   r  r  r  r  r  Úkeysr  r#  r$  r1   r1   r1   r2   Ú<module>   sÔ    ôÿ


þ

    j      )k%
þ	

ý

þþ

þ
