o
    �¨Êh; ã                   @  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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-m.Z.m/Z/ d dl0m1Z1m2Z2m3Z3m4Z4m5Z5 d dl6m7Z7 e	j8dd„ e(D ƒd�dd„ ƒZ9e	j8e%j:d�dd„ ƒZ;dd„ Z<e	j8e=e>dƒƒg d¢d�dd„ ƒZ?e?Z@e?ZAe	j8dd„ ƒZBG dd „ d ƒZCG d!d"„ d"ƒZDd#d$„ ZEG d%d&„ d&ƒZFG d'd(„ d(ƒZGG d)d*„ d*ƒZHejI Jd+¡ Kd,¡ZLG d-d.„ d.ƒZMe Nd/¡d0d1„ ƒZOe Nd/¡e	jP Qd2d3¡d4d5„ ƒƒZRe Nd/¡d6d7„ ƒZSe Nd/¡d8d9„ ƒZTe,e&jUe+d:œZVd;eWd<< e	jP Qde(¡e	jP QdeV¡d=d>„ ƒƒZXd?d@„ ZYdAdB„ ZZe	jP QdCg dD¢¡dEdF„ ƒZ[dGdH„ Z\dIdJ„ Z]dKdL„ Z^dMdN„ Z_e	jP QdOdP¡e	jP Qde`eaf¡e	jP QdQe`eaf¡dRdS„ ƒƒƒZbe	jP QdTdUdVg¡dWdX„ ƒZcdYdZ„ Zde	jP Qd[d\d]g¡d^d_„ ƒZed`da„ Zfe	jP Qd[e7 g¡ ¡dbdc„ ƒZhddde„ ZiG dfdg„ dgƒZjdS )hé    )Úannotations)Úreduce)ÚproductN)ÚPY312)Ú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_GLOBALSc              	   c  sJ   � | ] }t j|t jj|d kot dt› dt› �d�t d ¡gd�V  qdS )Únumexprznumexpr enabled->z, installed->©Úreason©ÚmarksN)ÚpytestÚparamÚmarkÚskipifr   r   ÚtdÚ
skip_if_no)Ú.0Úengine© r.   úT/var/www/html/env/lib/python3.10/site-packages/pandas/tests/computation/test_eval.pyÚ	<genexpr><   s   € õÿþúþ
ÿr0   )Úparamsc                 C  ó   | j S ©N©r'   ©Úrequestr.   r.   r/   r-   ;   s   r-   c                 C  r2   r3   r4   r5   r.   r.   r/   ÚparserO   s   r7   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Úrhsr-   ÚcÚer.   r.   r/   Ú_eval_single_binT   s   
ÿ€û
rC   é   )r   r   Ú	SeriesNaNÚDataFrameNaNÚfloat)r1   Ú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é   )é
   rD   ç      à?rD   é   )r   r<   ÚrandomÚdefault_rngÚstandard_normalr=   r   r'   )r6   Únan_df1Úoptsr.   r.   r/   r>   c   s   û
r>   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©Únr.   r.   r/   Ú<lambda>|   ó    zidx_func_dict.<locals>.<lambda>c                 S  rR   rS   )r   r<   rV   Úfloat64rX   r.   r.   r/   rZ   }   r[   c                 S  s   t dd„ tdd|  ƒD ƒƒS )Nc                 S  s   g | ]}|› d t |ƒ› �‘qS )Ú_)Úchr)r,   Úir.   r.   r/   Ú
<listcomp>~   s    z3idx_func_dict.<locals>.<lambda>.<locals>.<listcomp>éa   )r   ÚrangerX   r.   r.   r/   rZ   ~   s    c                 S  ó   t d| d�S )Nú
2020-01-01©Úperiods)r   rX   r.   r.   r/   rZ      ó    c                 S  rc   )Nz1 dayre   )r   rX   r.   r.   r/   rZ   €   rg   c                 S  s   t d| dd�S )Nrd   ÚD)rf   Úfreq)r   rX   r.   r.   r/   rZ   �   s    )r_   ÚfÚsÚdtr*   Úpr.   r.   r.   r.   r/   Úidx_func_dicty   s   úrn   c                	   @  s`  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 d6ej(ej)g¡ej d7d8d9g¡d:d;„ ƒƒZ*d<d=„ Z+ej d>d?¡d@dA„ ƒZ,dBdC„ Z-dDdE„ Z.dFdG„ Z/dHdI„ Z0dJdK„ Z1dLdM„ Z2dNS )OÚTestEvalr?   )z!=z==z<=z>=ú<ú>)ÚneÚeqÚleÚgeÚltÚgt)rH   Úcmp2rq   rp   rw   rv   Ú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)©r-   r7   )r&   ÚraisesÚNotImplementedErrorÚpdÚevalrC   ÚtmÚassert_equal)Úselfr?   rx   ry   r>   r@   r-   r7   ÚmsgÚexÚlhs_newÚrhs_newÚexpectedÚresultr.   r.   r/   Ú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   rz   ©Ú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©r>   r@   ©r-   r7   Ú
local_dict)r&   r„   r…   r†   r‡   Újoinr   Ú	TypeErrorrC   rˆ   r‰   )
rŠ   r’   r>   r@   r-   r7   r‹   rŒ   r�   r�   r.   r.   r/   Ú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 )Nrz   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 r3   )r<   Úarray©r,   Úxr.   r.   r/   r0   ë   ó   € z3TestEval.test_compound_invert_op.<locals>.<genexpr>)r&   r„   r…   r†   r‡   r
   r(   ÚxfailÚapplymarkerr�   r   rž   rC   rˆ   Úassert_almost_equal)rŠ   r    r>   r@   r6   r-   r7   r‹   rŒ   r(   Ú
skip_theser�   r�   r.   r.   r/   Ú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 )Nrz   r—   ú mid r˜   r~   r   rƒ   ú mid and mid r�   ú mid) & (mid r‚   ú&)r&   r„   r…   r†   r‡   rC   rˆ   r¨   )rŠ   r?   rx   r>   Úmidhsr@   r-   r7   ÚmidÚex1r‹   r�   rŽ   Úex2Úex3r�   rŒ   r�   r.   r.   r/   Ú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‡   rC   rˆ   r¨   Úalignr9   rž   ÚAttributeErrorr!   ÚevaluateÚvalues)rŠ   rµ   r>   r@   r-   r7   rŒ   r�   r�   ÚnlhsÚghsrr   r.   r.   r/   Ú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¹   ÚitemrC   )	rŠ   r>   r@   r-   r7   rŒ   r�   r�   rr   r.   r.   r/   Útest_modulus0  s   
zTestEval.test_modulusc           	      C  s„   d}|dkrt j|||d�}|| }t ||¡ d S d}tjt|d�� t j|||dœ||d� W d   ƒ d S 1 s;w   Y  d S )Nz
lhs // rhsrz   rƒ   zGunsupported operand type\(s\) for //: 'VariableNode' and 'VariableNode'r   rš   ©rœ   r-   r7   )r†   r‡   rˆ   r‰   r&   r„   rž   )	rŠ   r>   r@   r-   r7   rŒ   Úresr�   r‹   r.   r.   r/   Útest_floor_divisionB  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)rC   r†   r‡   r   r¾   Úcomplexr<   ÚcomplexfloatingÚisnanr&   r„   ÚAssertionErrorrˆ   Úassert_numpy_array_equalr¨   )
rŠ   r>   r@   r-   r7   rŒ   r�   r�   r‹   Úmiddler.   r.   r/   Útest_powV  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Š   r>   r-   r7   Úelbr�   r�   r.   r.   r/   Útest_check_single_invert_opp  s   ÿz$TestEval.test_check_single_invert_opc                 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‡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ú~lhsrI   ©rD   rI   r!   ú-couldn't find matching opcode for 'invert_dd'r   rƒ   ú0ufunc 'invert' not supported for the input typesrD   ©Úsizeú)couldn't find matching opcode for 'invertrK   ©ÚarL   g       @é   )ÚbrA   úunknown type objectú#bad operand type for unary ~: 'str')r   r<   rM   rN   rO   r&   r„   r…   r†   r‡   rž   Úintegersrˆ   Úassert_frame_equalr9   )rŠ   r-   r7   r   r>   r‹   Úexpectr�   r.   r.   r/   Útest_frame_invertz  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‡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Ð   rI   rD   r!   rÒ   r   rƒ   rÓ   rÔ   rÖ   rK   r×   rÛ   rÜ   )r   r<   rM   rN   rO   r&   r„   r…   r†   r‡   rž   rÝ   rˆ   Úassert_series_equalr9   )rŠ   r-   r7   r   r>   r‹   r�   rß   r.   r.   r/   Ú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ú-lhsrI   rÑ   rƒ   rD   rÔ   rK   r!   ú*couldn't find matching opcode for 'neg_bb'r   )r   r<   rM   rN   rO   r†   r‡   rˆ   rÞ   rÝ   r&   r„   r…   ©rŠ   r-   r7   r   r>   rß   r�   r‹   r.   r.   r/   Ú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ã   rI   rD   rƒ   rÔ   rK   r!   rä   r   )r   r<   rM   rN   rO   r†   r‡   rˆ   rá   rÝ   r&   r„   r…   rå   r.   r.   r/   Útest_series_negateð  rç   zTestEval.test_series_negater>   rI   rÑ   rD   rÔ   rK   c                 C  ó(   d}|}t j|||d�}t ||¡ d S ©Nz+lhsrƒ   )r†   r‡   rˆ   rÞ   ©rŠ   r>   r-   r7   r   rß   r�   r.   r.   r/   Útest_frame_pos
  ó   zTestEval.test_frame_posc                 C  ré   rê   )r†   r‡   rˆ   rá   rë   r.   r.   r/   Ú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©r7   r-   g      ð¿z+1.0g      ð?z~1éþÿÿÿz-1éÿÿÿÿz+1rL   zBitwise inversionF)r€   Úcheck_stacklevelz~Truez~Falsez-Truez-Falser   z+Truez+False)	r   ÚDeprecationWarningr&   r„   rž   r†   r‡   rˆ   Úassert_produces_warning)rŠ   r-   r7   r‹   Úwarnr.   r.   r/   Útest_scalar_unary.  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]rT   )
rñ   TrL   r   Fr   iÛÿÿÿé%   iÚÿÿÿr÷   )r<   r¢   r†   r‡   Úobject_rˆ   rÉ   )rŠ   r�   r�   r.   r.   r/   Útest_unary_in_arrayH  s   þózTestEval.test_unary_in_arrayrU   r   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   rT   F)r   r<   r¢   r‡   r¹   )rŠ   rU   r   ÚdfrÂ   r.   r.   r/   Útest_float_comparison_bin_opa  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   rL   zx.fillna(-1)rñ   ©Úcheck_nameszx.shift(1, fill_value=-1))Ú
fill_value)
r   r<   r=   r‡   r¤   Úfillnarˆ   rá   r   Úshift©rŠ   rú   r�   r�   r.   r.   r/   Útest_unary_in_functioni  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 )NrI   rÙ   rL   ©rÙ   rI   ú;cannot evaluate scalar only bool ops|'BoolOp' nodes are notr   rƒ   )
r<   rM   rN   rO   r   r&   r„   r…   r†   r‡   )	rŠ   rŒ   r-   r7   r¤   rØ   rÚ   rú   r‹   r.   r.   r/   Útest_disallow_scalar_bool_opsw  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 )NrL   r¤   rƒ   g      ø?F)rL   )	r†   r‡   r   r	   r<   r¢   rˆ   rÉ   Úshape)rŠ   r-   r7   r¤   r�   r.   r.   r/   Ú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Š   r-   r7   Úexpr�   r.   r.   r/   Ú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 > rL   rI   r  úA == )
r†   r‡   r<   r\   r   ÚqueryÚemptyÚlocrˆ   rÞ   )	rŠ   r-   r7   r	  r�   r�   rú   ÚcutoffÚexactr.   r.   r/   Ú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‹   r.   r.   r/   Ú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Š   r.   r.   r/   Ú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Š   Úeventr.   r.   r/   Útest_and_logic_string_matchß  s   ,z$TestEval.test_and_logic_string_matchN)3Ú__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<   rM   rN   rO   rÝ   rì   r   rî   rö   rù   Úfloat32r\   rû   r  r  r  r
  r  r  r   r#  r.   r.   r.   r/   ro   …   s|    ý
"
3ÿ
 

-/úþ
úþ
þ
!
ro   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)r5  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 )NrI   ©rD   rÙ   rT   ú rƒ   Ú	complex64r!   zfnumexpr issue with complex that are upcast to complex 128 https://github.com/pydata/numexpr/issues/492r"   F)Úcheck_exact)r   r<   rM   rN   rO   r†   r‡   r&   r(   r¦   r§   r¹   rU   rˆ   rÞ   )rŠ   r-   r7   r    Úcomplex_or_float_dtyper4  r6   rU   rú   ÚleftÚrightrk   rÂ   r(   r.   r.   r/   Útest_binop_typecastingë  s   ÿ
z&TestTypeCasting.test_binop_typecastingN)r$  r%  r&  r&   r(   r'  r=  r.   r.   r.   r/   r/  ê  s    r/  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 r3   )Ú
issubclassrU   Útyper<   Ú
datetime64r£   r.   r.   r/   r0     s   € zshould_warn.<locals>.<genexpr>)ÚanyÚmapÚoperatorÚ
attrgetterr   Úxor)ÚargsÚnot_monoÚonly_one_dtr.   r.   r/   Úshould_warn  s
   ÿrJ  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_   rk   rl   rk   c                 C  s>   d}t tj d¡ d¡ƒ}tj|||d�}t ||d ¡ d S )Nzdf * ~2rI   r6  rƒ   éýÿÿÿ)	r   r<   rM   rN   rO   r†   r‡   rˆ   rÞ   )rŠ   r-   r7   rk   rú   rÂ   r.   r.   r/   Ú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 )	NrI   ©rJ   rJ   rJ   ©r  r  )é   rJ   rS  zdf + df2rƒ   ©r   r<   rM   rN   rO   rJ  r  rˆ   rô   ÚRuntimeWarningr†   r‡   rÞ   )
rŠ   r-   r7   rN  rO  rP  rn   rú   Údf2rÂ   r.   r.   r/   Ú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 )NrI   rQ  rJ   rR  údf < 2rƒ   zdf < df3)r   r<   rM   rN   rO   r†   r‡   rˆ   rÞ   r  r  r  )	rŠ   r-   r7   rX  rP  rn   rú   rÂ   Údf3r.   r.   r/   Útest_frame_comparison3  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 )NrI   r  rÙ   rR  )é   rI   r`  rÑ   rD   zdf + df2 + df3rƒ   rT  )rŠ   r-   r7   r\  r]  r^  r_  rn   rú   rV  rZ  rÂ   r.   r.   r/   Ú#test_medium_complex_frame_alignmentH  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 )
NrI   rQ  rJ   rR  rD   údf + srƒ   rl   r!   )r   r<   rM   rN   rO   Úgetattrr   rJ  r  rˆ   rô   rU  r†   r‡   ÚaddrÞ   )rŠ   r-   r7   rb  rX  rP  rn   rú   r  rk   rÂ   r�   r.   r.   r/   Ú!test_basic_frame_series_alignmentf  s"   

ý
 ÿ€z/TestAlignment.test_basic_frame_series_alignmentzr_idx_type, c_idx_typer_   )rl   rl   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¡   rz   r  r_   rk   z"Flaky column ordering when engine=z	, parser=z, index_name=z, r_idx_type=z, c_idx_type=F)r#   ÚstrictrI   )rJ   é   rJ   rh  rR  rD   zs + dfrƒ   rl   )r§   r&   r(   r¦   r   r<   rM   rN   rO   rd  r   rJ  r  rˆ   rô   rU  r†   r‡   re  rÞ   )rŠ   r6   r-   r7   rb  rX  rP  rn   r#   rú   r  rk   rÂ   r�   r.   r.   r/   Ú!test_basic_series_frame_alignment�  sB   
ÿÿþþÿ

ý
 ÿ€z/TestAlignment.test_basic_series_frame_alignmentr    r0  r2  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 )NrI   rQ  rJ   rR  rD   zs z dfzdf z srƒ   rl   r!   )r   r<   rM   rN   rO   rd  r   rJ  r  rˆ   rô   rU  r†   r‡   rÞ   )rŠ   r-   r7   rb  r    rX  rP  rn   rú   r  rk   r>   r@   rØ   rÚ   r.   r.   r/   Ú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Ù   rD   rI   rR  rl   r!   zdf2 + ser + dfrƒ   )r   r<   rM   rN   rO   r  r   re  rJ  r  rˆ   rô   rU  r†   r‡   r  rÞ   )rŠ   r-   r7   r\  r]  r^  r_  rn   rY   Úm1Úm2rú   rV  r  ÚserÚ	expected2r�   rÂ   r.   r.   r/   Ú#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 )NrI   )éè  rJ   é'  r!   Frc  rƒ   rp  )rJ   rq  rQ  rz   rL   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<   rM   rN   rO   r   r   rˆ   rô   r†   r‡   Úlenr:   ÚmessageÚlog10rÕ   r  )rŠ   r-   r7   rú   rk   ÚseenÚis_python_engineÚwrnÚwr‹   Úloggedr�   r.   r.   r/   Ú+test_performance_warning_for_poor_alignmentù  sL   ÿÿÿþÿ÷ý$ôz9TestAlignment.test_performance_warning_for_poor_alignmentN)r$  r%  r&  Úindex_typesÚlhs_index_typesrM  r&   r(   Úfilterwarningsr'  rW  r[  ra  rf  Úlistr   ri  rj  ro  rz  r.   r.   r.   r/   rK    sV    



þ

#
+rK  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   rL   ©Úpopr†   r‡   ©rŠ   rG  Úkwargsr.   r.   r/   r‡   +  ó   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 )Nrz   r”   r•   c                   s   g | ]}|ˆ vr|‘qS r.   r.   ©r,   r    ©Úexclude_arithr.   r/   r`   4  s
    þz8TestOperations.test_simple_arith_ops.<locals>.<listcomp>c                 s  s   � | ]	}|d kr|V  qdS )z//Nr.   rˆ  r.   r.   r/   r0   :  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ƒ   rL   r¤   rÁ   )	r   r   r)  r&   r„   rž   r†   r‡   rC   )rŠ   r-   r7   Ú	arith_opsÚopsr    rŒ   r²   r³   r‹   Úexpecr¤   Úyr.   r‰  r/   Útest_simple_arith_ops/  s6   

þÿ€ìz$TestOperations.test_simple_arith_opsr@   TFr>   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 ©Nr7  rz   r{   r~   r   ©r7   r&   r„   r…   r‡   ©rŠ   r@   r>   r    rŒ   r‹   rÂ   r	  r.   r.   r/   Útest_simple_bool_opsR  ó   
ÿþ
z#TestOperations.test_simple_bool_opsc                 C  r�  r‘  r’  r“  r.   r.   r/   Útest_bool_ops_with_constantsb  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 )	NrI   )rÙ   r`  rD   é   rJ   z?N-dimensional objects, where N > 2, are not supported with evalr   úx + y©r¤   rŽ  ©rœ   )	r<   rM   rN   rO   r   r&   r„   r…   r‡   )rŠ   r¤   rŽ  r‹   r.   r.   r/   Útest_4d_ndarray_failsr  s   "ÿz$TestOperations.test_4d_ndarray_failsc                 C  s   |   d¡}|dksJ ‚d S )NÚ1rL   )r‡   )rŠ   r¤   r.   r.   r/   Útest_constanty  s   
zTestOperations.test_constantc                 C  s8   t tj d¡ d¡ƒ}| jdd|id�}t ||¡ d S )NrI   ©rJ   rI   rú   rš  ©r   r<   rM   rN   rO   r‡   rˆ   rÞ   )rŠ   rú   rV  r.   r.   r/   Ú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 )NrI   r6  úname 'x' is not definedr   zdf[x > 2] > 2)	r   r<   rM   rN   rO   r&   r„   Ú	NameErrorr‡   ©rŠ   rú   r.   r.   r/   Ú&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 )NrI   r6  z(df + 1)[df > 2]rú   rš  rL   rŸ  r  r.   r.   r/   Ú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 )NrI   r6  Ú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<   rM   rN   rO   r~  rØ   rÚ   rA   Úziprˆ   rá   r‡   )rŠ   rú   Úexpr1Úexpec1Úexpr2Úexpec2Úexpr3Úexpec3ÚexprsÚexpecsrB   r�  r.   r.   r/   Ú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 )
NrI   r6  r¦  r  zdf = df2ú%cannot assign without a target objectr   )rú   rV  rš  )
r   r<   rM   rN   rO   r~  r&   r„   r9   r‡   )rŠ   rú   rV  r¨  r‹   r.   r.   r/   Ú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 )NrI   rÑ   Úabr  úinvalid syntaxr   zd c = a + b©
r   r<   rM   rN   rO   r~  r&   r„   r  r‡   r£  r.   r.   r/   Ú%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 )NrI   rÑ   r³  r  z5left hand side of an assignment must be a single namer   zd,c = a + brµ  r  r.   r.   r/   Ú%test_assignment_column_invalid_assign®  s   ÿ"ÿz4TestOperations.test_assignment_column_invalid_assignc                 C  r·  )NrI   rÑ   r³  r  zcannot assign to function callr   zTimestamp("20131001") = a + brµ  r  r.   r.   r/   Ú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 )
NrI   rÑ   r³  r  rØ   rÚ   ú	a = a + bT©Úinplace©
r   r<   rM   rN   rO   r~  Úcopyr‡   rˆ   rÞ   ©rŠ   rú   r�   r.   r.   r/   Ú&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 )NrI   rÑ   r³  r  rØ   rÚ   rA   ú	c = a + bTr»  r½  r¿  r.   r.   r/   Ú!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 )NrI   rÑ   r³  r  rL   z	a = 1 + bTr»  rÚ   rØ   r½  )rŠ   rú   rØ   r�   r.   r.   r/   Ú+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 )NrI   rÑ   r³  r  rL   rº  Tr»  Frü   )r   r<   rM   rN   rO   r~  rØ   r¾  r‡   rÚ   rˆ   rá   r  )rŠ   rú   rØ   Úold_ar�   r.   r.   r/   Ú"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 )NrI   rÑ   r³  r  rÂ  Tr»  z#can only assign a single expressionr   z	c = a = b)
r   r<   rM   rN   rO   r~  r‡   r&   r„   r  r  r.   r.   r/   Ú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 )NrI   rÑ   r³  r  zc = df.a + df.brú   T)rœ   Útargetr¼  rØ   rÚ   rA   ©
r   r<   rM   rN   rO   r~  r‡   r¾  rˆ   rÞ   r¿  r.   r.   r/   Ú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  r.   r.   r/   Ú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 )NrI   rÑ   r³  r  rÂ  Fr»  rØ   rÚ   rA   rÉ  )rŠ   rú   Úactualr�   r.   r.   r/   Ú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©rL   rI   rÙ   ©r`  rD   r—  rÌ  rØ   rÚ   rA   Údú$
        c = a + b
        d = c + bTr»  rL   rI   rB   ú$
        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„   r9   )rŠ   Úwarn_copy_on_writerú   r�   Úanswerr‹   r.   r.   r/   Ú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Ú   rA   rÒ  rÓ  Fr»  rL   rI   rB   rÔ  ©r   r¾  r‡   rˆ   rÞ   r¿  r.   r.   r/   Ú&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Ì  rh  rØ   rA   rÒ  z?
        c = a * @local_var
        d = c + @local_var
        Tr»  rØ  )rŠ   rú   r�   Ú	local_varrÖ  r.   r.   r/   Ú)test_multi_line_expression_local_variableT  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 r3   r.   rÌ  r.   r.   r/   Ú
local_funcj  ó   zUTestOperations.test_multi_line_expression_callable_local_variable.<locals>.local_funcrØ   rL   rh  rA   rÒ  zM
        c = a * @local_func(1, 7)
        d = c + @local_func(1, 7)
        Tr»  rØ  ©rŠ   rú   rÝ  r�   rÖ  r.   r.   r/   Ú2test_multi_line_expression_callable_local_variablef  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Ü  r3   r.   rÌ  r.   r.   r/   rÝ  ~  rÞ  zaTestOperations.test_multi_line_expression_callable_local_variable_with_kwargs.<locals>.local_funcrØ   rh  rL   )rÚ   rØ   rA   rÒ  zU
        c = a * @local_func(b=7, a=1)
        d = c + @local_func(b=7, a=1)
        Tr»  rØ  rß  r.   r.   r/   Ú>test_multi_line_expression_callable_local_variable_with_kwargsz  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„   r9   r  rˆ   rÞ   )rŠ   rú   Údf_origr‹   r.   r.   r/   Ú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Ø   rI   za == 2Tr»  rÙ   ú	a = 1 + 2©rÈ  r¼  )r   r¾  r  rˆ   rÞ   r‡   Úassert_dict_equalr¿  r.   r.   r/   Útest_query_inplace—  s   z!TestOperations.test_query_inplaceÚinvalid_targetrL   ÚcatrI   ©rL   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„   r9   r‡   Úhasattr©rŠ   rè  r‹   Ú
expressionr.   r.   r/   Útest_cannot_item_assign¥  s   ÿ
"ÿÿz&TestOperations.test_cannot_item_assign)rL   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„   r9   r‡   rì  r.   r.   r/   Ú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„   r9   )rŠ   rÈ  rí  r‹   r.   r.   r/   Ú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 )
NrI   ©rI   rI   rd   rh   ©ri   rf   r  rY  rú   rš  ©	r   r<   rM   rN   rO   r   r‡   rˆ   rÞ   )rŠ   rú   rB   Úrr¤   r.   r.   r/   Ú*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 )NrI   rò  rd   rh   ró  r  zdf[df < 2 + 3]rú   rš  rD   rô  ©rŠ   rú   rõ  rB   r.   r.   r/   Ú,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 )
NrI   rò  rd   rh   ró  r  zdf[df[df < 2] < 2] + df * 2rú   rš  rô  r÷  r.   r.   r/   Ú-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 )NrI   r6  z1/1/2012rD   re   Údates1zdf.dates1 < 20130101rú   rÁ   Ú20130101Frü   )
r   r<   rM   rN   rO   r   r‡   rú  rˆ   rá   )rŠ   r-   r7   rú   rÂ   r�  r.   r.   r/   Ú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 )Nrz   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Š   r-   r7   rÂ   r‹   r.   r.   r/   Ú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 )NrL   z * Ú!aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarƒ   )r�   r†   r‡   )rŠ   r-   r7   rØ   r   r�   rÂ   r.   r.   r/   Ú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 )
NrI   r6  rz   r~   Únotú'Not' nodes are not implementedr   rú   )rœ   r7   r-   ©
r   r<   rM   rN   rO   r&   r„   r…   r†   r‡   )rŠ   r   r-   r7   rú   r‹   r.   r.   r/   Ú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 )	NrI   r6  z(df + 2)[df > 1] > 0 z	 (df > 0)rz   z$cannot evaluate scalar only bool opsr   rï   r  )rŠ   r  r-   r7   rú   rŒ   r‹   r.   r.   r/   Útest_fails_ampersand_pipeB  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  r.   r.   r.   r/   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…  r.   r.   r/   r‡   P  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Ø   rI   rJ   z(a)Úignore©ÚallFrü   )r   r<   rM   rN   rO   rØ   r‡   Úerrstaterd  rˆ   rá   )rŠ   r  rú   rØ   r   Úgotrß   r.   r.   r/   Útest_unary_functionsT  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 )	NrI   rJ   rÌ  z(a, b)r  r	  Frü   )r   r<   rM   rN   rO   rØ   rÚ   r‡   r  rd  rˆ   r¨   )rŠ   r  rú   rØ   rÚ   r   r  rß   r.   r.   r/   Útest_binary_functionsb  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 )	NrI   rJ   rÌ  ze = arctan2(sin(a), b)T©r-   r7   r¼  Frü   )r   r<   rM   rN   rO   r‡   rB   Úarctan2ÚsinrØ   rÚ   rˆ   rá   ©rŠ   r-   r7   rú   r  rß   r.   r.   r/   Útest_df_use_cases  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 )	NrI   rJ   rÌ  ze = sin(a + b)Tr  Frü   )r   r<   rM   rN   rO   r‡   rB   r  rØ   rÚ   rˆ   rá   r  r.   r.   r/   Ú 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Ø   rI   rJ   z
b = sin(a)Tr  Frü   )r   r<   rM   rN   rO   rÌ   rØ   rU   r‡   rÚ   r  rˆ   rá   )rŠ   rU   Úexpect_dtyper-   r7   rú   r  rß   r.   r.   r/   Ú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Ø   rI   rJ   z#"mysin" is not a supported functionr   zmysin(a)rƒ   )	r   r<   rM   rN   rO   r&   r„   r9   r‡   ©rŠ   r-   r7   rú   r‹   r.   r.   r/   Útest_undefined_func«  ó
   "ÿzTestMath.test_undefined_funcc                 C  r  )NrØ   rI   rJ   z1Function "sin" does not support keyword argumentsr   zsin(x=a)rƒ   )	r   r<   rM   rN   rO   r&   r„   rž   r‡   r  r.   r.   r/   Ú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\   rW   r.  r'   Ú
complex128r*   r-  r  r  r  r.   r.   r.   r/   r  O  s.    ÿ

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

r  rI   rJ   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 * 2rI   rƒ   )rˆ   rÉ   Ú_var_sr†   r‡   )rŠ   r-   r7   rB   r.   r.   r/   Útest_global_scope¾  s   ÿzTestScope.test_global_scopec                 C  sD   d}t ƒ  ¡ }tjd|||d� t ƒ  ¡ }| d¡ ||ks J ‚d S )NrL   úx + 1rÁ   Úlcls)Úlocalsr¾  r†   r‡   r„  )rŠ   r-   r7   r¤   r#  Úlcls2r.   r.   r/   Ú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 )NrL   r"  rƒ   )Úglobalsr¾  r†   r‡   )rŠ   r-   r7   r¤   ÚgblsÚgbls2r.   r.   r/   Ú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 )NrL   r¡  r   r"  r›   ©r&   r„   r   r†   r‡   )rŠ   r-   r7   r¤   r‹   r.   r.   r/   Ú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   )r-   r7   Úglobal_dictr+  )rŠ   r-   r7   r‹   rB   r.   r.   r/   Útest_empty_globalsÚ  r-  zTestScope.test_empty_globalsN)r$  r%  r&  r!  r&  r*  r,  r/  r.   r.   r.   r/   r  ½  s    r  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˜  rL   rI   r™  Úasdf)rœ   r-   ©r&   r„   ÚKeyErrorr†   r‡   ©r‹   r.   r.   r/   Útest_invalid_engineâ  ó   "ÿr5  )Úuse_numexprr�   ))Tr!   )Frz   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.evalr8  r†   Úoption_context)r7  r�   r8  r�   r.   r.   r/   Útest_numexpr_option_respectedé  s
   
"þr<  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 )Nr9  F)TFTFNN)rL   rI   rÙ   r`  rD   r—  )r  ÚBz
A.isnull()rD   r—  r`  )r  )r†   r;  r   r  rˆ   rÞ   )rú   r�   r�   r.   r.   r/   Ú#test_numexpr_option_incompatible_opú  s   ÿ
"úr>  c                  C  r0  )	NzInvalid parser 'asdf' passedr   r˜  rL   rI   r™  r1  )rœ   r7   r2  r4  r.   r.   r/   Útest_invalid_parser  r6  r?  )rz   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   )r@  Úunsupported_nodesr&   r„   r…   rd  )r-   r7   ÚVisitorClassÚinstrŒ  r‹   r.   r.   r/   Útest_disallowed_nodes  s   
ÿ€þrD  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‡   )r-   r7   rB   r.   r.   r/   Útest_syntax_error_exprs   s   "ÿrF  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‡   )r-   r7   rB   r‹   r.   r.   r/   Útest_name_error_exprs&  s
   "ÿrG  Ú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©rL   rI   r¡   zThe '@' prefix is onlyr   rƒ   zThe '@' prefix is notrE  )r-   r7   rH  rØ   rÚ   r.   r.   r/   Ú%test_invalid_local_variable_reference-  s   "ÿ"ÿrJ  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 )NrI  r!   zVariables in expression .+r   zsin + dotted_linerƒ   )r&   r„   r   r†   r‡   )r-   r7   r  Údotted_liner‹   rÂ   r.   r.   r/   Útest_numexpr_builtin_raises9  s   "ÿrL  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ð  )Ú	resolversr-   r7   )r&   r„   rž   r†   r‡   )r-   r7   Úcannot_resolver.   r.   r/   Útest_bad_resolver_raisesD  s   "ÿrP  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„   r9   r†   r‡   rƒ   r.   r.   r/   Útest_empty_string_raisesJ  s   "ÿrT  c                 C  rQ  )Nz#only a single expression is allowedr   z1 + 1; 2 + 2rƒ   rE  rƒ   r.   r.   r/   Ú$test_more_than_one_expression_raisesP  s   "ÿrU  Úcmpr{   r@   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 )NrI   rJ   )r<   rM   rN   rÝ   r.   r.   r.   r/   rZ   Z  s    z0test_bool_ops_fails_on_scalars.<locals>.<lambda>rI   r—   r«   r˜   r¬   r�   r­   r‚   r  r   rƒ   )ÚintrG   r<   rM   rN   rO   r&   r„   r…   r†   r‡   )r>   rV  r@   r-   r7   Úgenr°   r±   r²   r³   rŒ   r‹   r.   r.   r/   Útest_bool_ops_fails_on_scalarsU  s    þ


ÿ€þrY  Ú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Ú   rA   rT   r  )FFF©r  )r   Úobjectr‡   r   r   r  rˆ   rá   )rZ  rú   r�   r�   r.   r.   r/   Útest_equals_variousk  s   r]  c                 C  s*   d}t j}tj|| |d�}||ksJ ‚d S )Nzinf + 1rƒ   )r<   Úinfr†   r‡   )r-   r7   rk   r�   r�   r.   r.   r/   Ú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 )	NrI   rÑ   rÚ   r  rD   ú`z` > 5)r-   )r   r<   rM   rN   rO   r  rˆ   rÞ   )r-   r`  rú   r�   Úquery_stringr�   r.   r.   r/   Útest_query_token„  s   ÿrc  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   rJ   rL   rS  ré  Úcountr  z
~(cat > 0)rƒ   rz   r  r   znot (cat > 0))r   ré  r  rˆ   rÞ   r&   r„   r…   )r-   r7   rú   r�   r�   r‹   r.   r.   r/   Útest_negate_lt_eq_le�  s   "ÿre  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^  ÚInfz+GH 47859 DataFrame eval not supported with )r„   r#   rI   r   éd   rž  rÔ   Úcol1r  r—  z>6)r§   r&   r(   r¦   r3  r   r<   rM   rN   rÝ   r  rˆ   rÞ   )r6   r`  rú   r�   r�   r.   r.   r/   Ú test_eval_no_support_column_name   s   þÿþrk  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Ñ  )rh  é   é	   )r  r=  ÚCr  z	A = B + CTr»  )rË  é   é   r[  )r   rˆ   Úassert_cow_warningr‡   rÞ   rá   r   )Úusing_copy_on_writerÕ  rú   Úresult_viewrm  r�   r.   r.   r/   Útest_set_inplace¸  s   ÿrt  c                   @  s.   e Zd Zej dddg d¢dg¡dd„ ƒZdS )	ÚTestValidateÚvaluerL   rf  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»  rS  )rŠ   rv  r‹   r.   r.   r/   Útest_validate_bool_argsÍ  s   "ÿz$TestValidate.test_validate_bool_argsN)r$  r%  r&  r&   r(   r'  rw  r.   r.   r.   r/   ru  Ì  s    ru  )kÚ
__future__r   Ú	functoolsr   Ú	itertoolsr   rD  Únumpyr<   r&   Úpandas.compatr   Ú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    Úfixturer-   ÚPARSERSr7   rC   r~  rb   r>   r@   r¯   rn   ro   r/  rJ  rK  r  r  rM   rN   rO   r   r  r+   r5  r(   r'  r<  r>  r?  ÚPyTablesExprVisitorr@  Ú__annotations__rD  rF  rG  rJ  rL  rP  rT  rU  rW  rG   rY  r]  r_  rc  re  Úkeysrk  rt  ru  r.   r.   r.   r/   Ú<module>   sÐ     ôÿ


þ

    i      )k%
þ	

ý

þþ

þ
