1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
U
­ý°dõã@svUddlmZddlmZddlmZddlZddlZddlZddl    Z
ddl Z ddl m Z mZmZddlmmZddlmZmZmZmZddlZddlmZmZmZddlmZ ddl!m"Z"m#Z#dd    l$m%Z%dd
l&m'Z'm(Z(m)Z)dd l*m+Z+m,Z,dd l-m.Z.m/Z/m0Z0m1Z1m2Z2dd l3m4Z4e j5dd„e%Dƒddd„ƒZ6e j5e"j7ddd„ƒZ8dd„Z9e j5e:e;dƒƒdddddgddd„ƒZ<e<Z=e<Z>Gd d!„d!ƒZ?d"d#„Z@Gd$d%„d%ƒZAd&d'„ZBGd(d)„d)ƒZCGd*d+„d+ƒZDGd,d-„d-ƒZEe
j Fd.¡ZGGd/d0„d0ƒZHejId1d2„ƒZJejIe jK Ld3d4¡d5d6„ƒƒZMejId7d8„ƒZNejId9d:„ƒZOe)e#jPe(d;œZQd<eRd=<e jK Lde%¡e jK LdeQ¡d>d?„ƒƒZSd@dA„ZTdBdC„ZUe jK LdDdEdFdGg¡dHdI„ƒZVdJdK„ZWdLdM„ZXdNdO„ZYdPdQ„ZZe jK LdRdS¡e jK Lde[e\f¡e jK LdTe[e\f¡dUdV„ƒƒƒZ]e jK LdWdXdYg¡dZd[„ƒZ^d\d]„Z_e jK Ld^d_d`g¡dadb„ƒZ`dcdd„Zae jK Ld^e4 b¡¡dedf„ƒZcdgdh„ZdGdidj„djƒZedS)ké)Ú annotations)Úreduce)ÚproductN)ÚNumExprClobberingErrorÚPerformanceWarningÚUndefinedVariableError)Úis_boolÚis_floatÚ is_list_likeÚ    is_scalar)Ú    DataFrameÚSeriesÚ
date_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    csD|]<}tj|tjj|dkot dt›dt›dtjgdVqdS)Únumexprznumexpr enabled->z , installed->©Úreason©ZmarksN)ÚpytestÚparamÚmarkÚskipifrrÚtdÚ skip_if_no_ne)Ú.0Úengine©r)úYd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\pandas/tests/computation/test_eval.pyÚ    <genexpr>:s õ þúþr+)ÚparamscCs|jS©N©r"©Úrequestr)r)r*r(9sr(cCs|jSr-r.r/r)r)r*ÚparserMsr1c
Csjt|}t|jr`z |||ƒWStk
r^}z"t|ƒ d¡rLtjWY¢S‚W5d}~XYnX|||ƒS)Nz6negative number cannot be raised to a fractional power)rrZ has_neg_fracÚ
ValueErrorÚstrÚ
startswithÚnpÚnan)ÚlhsÚcmp1Úrhsr(ÚcÚer)r)r*Ú_eval_single_binRs
 ÿr<ér r Z    SeriesNaNZ DataFrameNaNÚfloat)r,ÚidscCsjttj dd¡ƒ}tj||dk<ttj dd¡ƒttj d¡ƒtddtjtjdgƒ|tj ¡f}||jS)Né
r=çà?éé)r r5ÚrandomÚrandr6Úrandnr r")r0Znan_df1Úoptsr)r)r*r7asûr7c
@sPeZdZejjdddddddgdd    d
d d d gdejjdddgd d gdej dej¡dd„ƒƒƒZej dej    ¡dd„ƒZ
ej dej    ¡dd„ƒZ ej dddg¡ej dddg¡dd„ƒƒZ ej de eeƒ e¡ƒ¡dd„ƒZdd„Zd d!„Zejd"d#„ƒZd$d%„Zd&d'„Zd(d)„Zd*d+„Zd,d-„Zej d.eej  d/d0¡ƒeejj!d/d1d2ƒeej "d/d0¡d3kƒg¡d4d5„ƒZ#ej d.e$ej  d/¡ƒe$ejj!d/d/d2ƒe$ej "d/¡d3kƒg¡d6d7„ƒZ%d8d9„Z&d:d;„Z'ej d<ej(ej)g¡ej d=d>d?g¡d@dA„ƒƒZ*dBdC„Z+ej dDdE¡dFdG„ƒZ,dHdI„Z-dJdK„Z.dLdM„Z/dNdO„Z0dPdQ„Z1dRdS„Z2dTS)UÚTestEvalr8z!=z==z<=z>=ú<ú>ÚneÚeqÚleÚgeÚltÚgt)r?Úcmp2Úbinopc    Cs¼|dkrZ|dkrZd}tjt|d.d|›d|›d|›d}    tj|    ||d    W5QRXdSt||||ƒ}
t||||ƒ} t|
|| |ƒ} d|›d|›d|›d}    tj|    ||d    } t | | ¡dS)
NÚpython©ÚandÚorú"'BoolOp' nodes are not implemented©Úmatchú(lhs z rhs) z (lhs ú rhs)©r(r1)r!ÚraisesÚNotImplementedErrorÚpdÚevalr<ÚtmÚ assert_equal)Úselfr8rQrRr7r9r(r1ÚmsgÚexÚlhs_newÚrhs_newÚexpectedÚresultr)r)r*Útest_complex_cmp_opsxszTestEval.test_complex_cmp_opsÚcmp_opc
    Csê|dk}|dk}|dkr^|dkr^d}tjt|d"d|›d}tj|||dW5QRXdSd|›d}d     d
d g¡}|dkr¼t|ƒs¼tjt|dtj|||||d œd W5QRXn*t||||ƒ}tj|||d}    t     
|    |¡dS)NrrS©Úinúnot inú&'(In|NotIn)' nodes are not implementedrXúlhs ú rhsr\ú|zxonly 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©r7r9©r(r1Ú
local_dict) r!r]r^r_r`Újoinr
Ú    TypeErrorr<rarb)
rcrkr7r9r(r1rdrerhrir)r)r*Útest_simple_cmp_opss2  üÿüzTestEval.test_simple_cmp_opsÚopc     Csf|dkrN|dkrNd}tjt|d"d|›d}tj|||dW5QRXdSt|ƒrt|ƒs|dkr|dkr|dkrtjjd    d
}    |j     |    ¡d d g}
d|›d}d  
ddg¡}t |ƒrö||
krötjt |dtj|||||dœdW5QRXnlt |ƒr t |ƒr t dd„||fƒ\}}t||||ƒ} t | ƒr@| } n| } tj|||d} t | | ¡dS)NrSrlrorXz~(lhs r[r\Úpandasz]Looks like expected is negative, unclear whether expected is incorrect or result is incorrectrrmrnrrzyonly 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 iterablersrtcSs t |g¡Sr-)r5Úarray©Úxr)r)r*Ú<lambda>Ýóz2TestEval.test_compound_invert_op.<locals>.<lambda>)r!r]r^r_r`r    r#ÚxfailÚnodeÚ
add_markerrvr rwÚmapr<raÚassert_almost_equal) rcryr7r9r0r(r1rdrer#Z
skip_theserhrir)r)r*Útest_compound_invert_op²sV ÿþýüûÿ  üÿü
z TestEval.test_compound_invert_opc    Csð|}|dkrPd|›d|›d}    d}
tjt|
dtj|    ||dW5QRXdSt||||ƒ} t||||ƒ} | dk    rì| dk    rìd|›d|›d}    d|›d|›d} d    |›d
|›d }t| d | |ƒ}|    | |fD] }tj|||d}t ||¡qÊdS) NrSrpú mid rqrWrXr\ú  mid and mid rZú  mid) & (mid r[ú&)r!r]r^r_r`r<rar„)rcr8rQr7Úmidhsr9r(r1ÚmidÚex1rdrfrgÚex2Úex3rhrerir)r)r*Útest_chained_cmp_opæs"zTestEval.test_chained_cmp_opÚarith1c
Csèd|›d}tj|||d}t||||ƒ}t ||¡d|›d|›d}tj|||d}t||||ƒ}    z|     |¡\}    }
Wntttfk
r”YdSX|dkrÈddl    } |  
d|›d¡}t |j |¡ntd|›dƒ}t ||¡dS)    Nrprqr\z rhs rrznlhs z ghs) r_r`r<rar„Zalignr2rwÚAttributeErrorrÚevaluateÚvalues) rcrr7r9r(r1rerirhZnlhsZghsrKr)r)r*Útest_binary_arith_opsÿs"  zTestEval.test_binary_arith_opsc    Csd}tj|||d}||}t ||¡|dkrrddl}| d¡}t|ttfƒr`t |j    |¡qŒt || 
¡¡nt |d||ƒ}t ||¡dS)Nz    lhs % rhsr\rrzexpected % rhsú%) r_r`rar„rr’Ú
isinstancer r r“Úitemr<)    rcr7r9r(r1rerirhrKr)r)r*Ú test_modulus"s 
zTestEval.test_modulusc        Csld}|dkr2tj|||d}||}t ||¡n6d}tjt|dtj|||dœ||dW5QRXdS)Nz
lhs // rhsrSr\zGunsupported operand type\(s\) for //: 'VariableNode' and 'VariableNode'rXrs©rur(r1)r_r`rarbr!r]rw)    rcr7r9r(r1reÚresrhrdr)r)r*Útest_floor_division4sÿüzTestEval.test_floor_divisionc
    CsÄd}t|d||ƒ}tj|||d}t|ƒrxt|ƒrxt|ttjfƒrxt |¡rxd}t    j
t |dt   ||¡W5QRXnHt  ||¡d}tj|||d}t|d||ƒ}    t|    d||ƒ}t  ||¡dS)Nz
lhs ** rhsú**r\z-(DataFrame.columns|numpy array) are differentrXz(lhs ** rhs) ** rhs)r<r_r`r r–Úcomplexr5ZcomplexfloatingÚisnanr!r]ÚAssertionErrorraÚassert_numpy_array_equalr„)
rcr7r9r(r1rerhrirdZmiddler)r)r*Útest_powHs(ÿþýü zTestEval.test_powcCsZz| t¡}Wn$tk
r2t t|ƒg¡}YnX|}tjd||d}t ||¡dS)Nz~elbr\)    ÚastypeÚboolr‘r5r{r_r`rar„)rcr7r(r1Zelbrhrir)r)r*Útest_check_single_invert_opbsz$TestEval.test_check_single_invert_opc    Csªd}ttj dd¡ƒ}|dkrNd}tjt|dtj|||dW5QRXn.d}tjt    |dtj|||dW5QRXttjj
dd    d
ƒ}|dkrÈd }tjt|dtj|||dW5QRXn"|}tj|||d}t   ||¡ttj  dd¡d kƒ}|}tj|||d}t   ||¡td ddgtj  d¡d kdœƒ}|dkrxtjtddtj|||dW5QRXn.d}tjt    |dtj|||dW5QRXdS)Nú~lhsr=rCrú-couldn't find matching opcode for 'invert_dd'rXr\ú0ufunc 'invert' not supported for the input types©r=rC©Úsizeú)couldn't find matching opcode for 'invertrAÚarBç@é)Úbr:úunknown type objectú#bad operand type for unary ~: 'str')r r5rDrFr!r]r^r_r`rwÚrandintraÚassert_frame_equalrEr2)rcr(r1rr7rdÚexpectrir)r)r*Útest_frame_invertls8   
zTestEval.test_frame_invertc    Cs”d}ttj d¡ƒ}|dkrLd}tjt|dtj|||d}W5QRXn.d}tjt    |dtj|||dW5QRXttjj
dddƒ}|dkrÆd    }tjt|dtj|||dW5QRXn"|}tj|||d}t   ||¡ttj  d¡d
kƒ}|}tj|||d}t   ||¡td d d gƒ}|dkrbtjtddtj|||dW5QRXn.d}tjt    |dtj|||dW5QRXdS)Nr¥r=rr¦rXr\r§r©r«rAr¬rBr­r°r±)r r5rDrFr!r]r^r_r`rwr²raÚassert_series_equalrEr2)rcr(r1rr7rdrir´r)r)r*Útest_series_invert—s8  
zTestEval.test_series_invertc    Csâd}ttj dd¡ƒ}| }tj|||d}t ||¡ttjjdddƒ}| }tj|||d}t ||¡ttj     dd¡dkƒ}|dkr¼d    }t
j t |d
tj|||dW5QRXn"| }tj|||d}t ||¡dS) Nú-lhsr=rCr\r¨r©rArú*couldn't find matching opcode for 'neg_bb'rX) r r5rDrFr_r`rar³r²rEr!r]r^©rcr(r1rr7r´rirdr)r)r*Útest_frame_negateÆs"  zTestEval.test_frame_negatec    CsÞd}ttj d¡ƒ}| }tj|||d}t ||¡ttjjdddƒ}| }tj|||d}t ||¡ttj     d¡dkƒ}|dkr¸d}t
j t |dtj|||dW5QRXn"| }tj|||d}t ||¡dS)    Nr¸r=r\r©rArr¹rX) r r5rDrFr_r`rar¶r²rEr!r]r^rºr)r)r*Útest_series_negateàs"  zTestEval.test_series_negater7r=rCr¨r©rAcCs(d}|}tj|||d}t ||¡dS©Nz+lhsr\)r_r`rar³©rcr7r(r1rr´rir)r)r*Útest_frame_posús zTestEval.test_frame_poscCs(d}|}tj|||d}t ||¡dSr½)r_r`rar¶r¾r)r)r*Útest_series_pos s zTestEval.test_series_posc    Cs@d}tjt|dtjd||dW5QRXtjd||ddksFt‚tjd||dd    ks^t‚tjd
||dd ksvt‚tjd ||dd ksŽt‚tjd||ddks¦t‚tjd||dd ks¾t‚tjd||dd ksÖt‚tjd||dd ksît‚tjd||ddkst‚tjd||ddks"t‚tjd||ddks<t‚dS)Nz%bad operand type for unary ~: 'float'rXz~1.0r\z-1.0©r1r(gð¿z+1.0gð?z~1éþÿÿÿz-1éÿÿÿÿz+1rBz~Truez~Falsez-Truez-Falserz+Truez+False)r!r]rwr_r`rŸ)rcr(r1rdr)r)r*Útest_scalar_unaryszTestEval.test_scalar_unaryc CsNtjt d¡tjd}tjddddddddd    d
d d
g tjd}t ||¡dS) NzK[-True, True, ~True, +True,-False, False, ~False, +False,-37, 37, ~37, +37]©ÚdtyperÃTrÂrBrFiÛÿÿÿé%iÚÿÿÿ)r5r{r_r`Zobject_rar )rcrirhr)r)r*Útest_unary_in_array/s.ÿúôñzTestEval.test_unary_in_arrayrÆrzx < -0.1z-5 > xcCs<tdtjdg|diƒ}| |¡}|jt dg¡ks8t‚dS)Nr}rrÅF)r r5r{r`r“rŸ)rcrÆrÚdfršr)r)r*Útest_float_comparison_bin_opNs
z%TestEval.test_float_comparison_bin_opcCsltdddtjgiƒ}| d¡}|j d¡}tj||t d| d¡}|jj    ddd}tj||t ddS)    Nr}rrBz x.fillna(-1)réZ check_nameszx.shift(1, fill_value=-1))Z
fill_value)
r r5r6r`r}Zfillnarar¶rÚshift©rcrÉrirhr)r)r*Útest_unary_in_functionVs
 
zTestEval.test_unary_in_functionre)z1 or 2z1 and 2za and bza or bz1 or 2 and (3 + 2) > 3z2 * x > 2 or 1 and 2z2 * df > 3 and 1 or ac        Cs\tj d¡dd}}}ttj dd¡ƒ}d}tjt|dtj|||dW5QRXdS)Nr®rBrCú;cannot evaluate scalar only bool ops|'BoolOp' nodes are notrXr\)    r5rDrFr r!r]r^r_r`)    rcrer(r1r}r¬r¯rÉrdr)r)r*Útest_disallow_scalar_bool_opsds
z&TestEval.test_disallow_scalar_bool_opscCsNd}tjd||d}|dks t‚t|ƒs,t‚d}tjd||d}|dksLt‚t|ƒsXt‚d}tjd||d}|rtt‚t|ƒs€t‚t|ƒsŒt‚t dg¡}tjd||d}t |t dg¡¡|j    dksÊt‚t dg¡}tjd||d}t |t dg¡¡|j    dks
t‚t dg¡}tjd||d}t |t dg¡¡|j    dksJt‚dS)NrBr}r\gø?F)rB)
r_r`rŸr rr5r{rar Úshape)rcr(r1r}rir)r)r*Útest_identicalxs2         zTestEval.test_identicalcCs$d}tj|||d}|dks t‚dS)Nz1 + 2 *         5 - 1 + 2 r\é ©r_r`rŸ)rcr(r1Úexprir)r)r*Útest_line_continuation™szTestEval.test_line_continuationc    CsÎd}tj|||d}t |¡}||ks*t‚tddddgiƒ}d}| d|d    ›¡}|js\t‚d
}| d |d    ›¡}|jd d gdd…f}t     
||¡d}| d|d    ›¡}|jd gdd…f}t     
||¡dS)Nz1000000000.006r\ÚAg~eÍÍAg $eÍÍAg'1eÍÍAg©eÍÍAzA < z.4fgÅ eÍÍAzA > rBrCúA == ) r_r`r5Úfloat64rŸr ÚqueryÚemptyÚlocrar³)    rcr(r1rÕrirhrÉÚcutoffÚexactr)r)r*Útest_float_truncation s 
 
 zTestEval.test_float_truncationc    Csxtdddggdddgd}d}tjt|d| d¡W5QRXtƒ}d    |j_tjt|d| d
¡W5QRXdS) NrZfooÚbarÚclass©Úcolumnsz4Python keyword not valid identifier in numexpr queryrXz
class == 0Úlambdaz lambda == 0)r r!r]Ú SyntaxErrorrÚÚindexÚname©rcrÉrdr)r)r*Útest_disallow_python_keywords¶sz&TestEval.test_disallow_python_keywordscCs:t d¡dkst‚t d¡dks$t‚t d¡dks6t‚dS)Nznot TruerÂz    not FalserÃzTrue and not TruerrÔ)rcr)r)r*Útest_true_false_logicÂszTestEval.test_true_false_logiccCsRtddiƒ}t |j d¡j›¡s&t‚t |j d¡joD|j d¡j›¡sNt‚dS)Nr¬Zhello)r r_r`r3rYr¬rŸ)rcÚ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_SYMSrjÚ CMP_OPS_SYMSrxr…rÚsortedÚsetrÚ
differencerr”r˜r›r%Úskip_if_windowsr¡r¤rµr·r»r¼r r5rDrFr²rEr¿r rÀrÄrÈÚfloat32rÙrÊrÎrÐrÒrÖrßrérêrìr)r)r)r*rHws|ý
"
3 ÿ
 
 
+/úþ
úþ
 þ
! rHcOs
tj ¡Sr-)r5rDrF)ÚargsÚkwargsr)r)r*r~Ïrr~c@sTeZdZej ddddddg¡ej dejejg¡ej dd    d
g¡d d „ƒƒƒZ    d S)ÚTestTypeCastingryú+ú-Ú*rœú/ÚdtÚ
left_right)rÉÚ3)rrÉc Csrtjddt|d}|\}}|›d|›d|›}    tj|    ||d}
|jj|ksNt‚|
jj|ks^t‚t |
t|    ƒ¡dS)Nr=r®)Ú
data_gen_frÆú r\)    raÚmakeCustomDataframeÚfr_r`r“rÆrŸr³) rcr(r1ryrÿrrÉÚleftÚrightÚsršr)r)r*Útest_binop_typecasting×sz&TestTypeCasting.test_binop_typecastingN)
rírîrïr!r#rðr5r÷rÙr    r)r)r)r*rúÖsrúcGs4ttt d¡|ƒƒ }ttjtdd„|ƒƒ}|o2|S)NZis_monotonic_increasingcSst|jjtjƒSr-)Ú
issubclassrÆÚtyper5Z
datetime64r|r)r)r*r~írzshould_warn.<locals>.<lambda>)ÚanyrƒÚoperatorÚ
attrgetterrÚxor)røZnot_monoZ only_one_dtr)r)r*Ú should_warnês  ÿrc    @sÐeZdZdddgZedgZdd„Zej de¡ej de¡ej de¡d    d
„ƒƒƒZ    ej d e¡ej de¡d d „ƒƒZ
ej de¡ej de¡ej de¡ej de¡dd„ƒƒƒƒZ ej dddg¡ej de¡ej d e¡dd„ƒƒƒZ ej dddg¡ej de eddgddgƒƒdg¡ej d¡dd„ƒƒƒZej de¡ej d e¡ej dddg¡ej ddd g¡d!d"„ƒƒƒƒZej de¡ej de¡ej de¡ej de¡d#d$„ƒƒƒƒZd%d&„Zd'S)(Ú TestAlignmentÚirrÿcCs8d}tjddtd}tj|||d}t ||d¡dS)Nzdf * ~2r=r®)rr\éýÿÿÿ)rarrr_r`r³)rcr(r1rrÉršr)r)r*Útest_align_nested_unary_opösz(TestAlignment.test_align_nested_unary_opÚ lr_idx_typeÚ rr_idx_typeÚ
c_idx_typec    
Cs¦tjddt dt¡tjddt||d}tjddt||d}t|j|jƒrxt     t¡t
j d||d}W5QRXnt
j d||d}t  |||¡W5QRXdS)    NT©ÚrecordÚalwaysr@©rÚ
r_idx_typerézdf + df2r\© ÚwarningsÚcatch_warningsÚ simplefilterÚRuntimeWarningrarrrræÚassert_produces_warningr_r`r³)    rcr(r1rrrrÉÚdf2ršr)r)r*Útest_basic_frame_alignmentüs* ÿÿ z(TestAlignment.test_basic_frame_alignmentrcCsttjddt||d}tjd||d}t ||dk¡ttjj    |j
Ž|j |j d}tjd||d}t |||k¡dS)Nr@rúdf < 2r\rC)rærãzdf < df3) rarrr_r`r³r r5rDrFrÑrærã)rcr(r1rrrÉršÚdf3r)r)r*Útest_frame_comparisonsÿz#TestAlignment.test_frame_comparisonÚr1Úc1Úr2Úc2c
CsÂtjdd¬t dt¡tjddt||d}tjddt||d}tjddt||d}    t|j|j|    jƒrt     t¡t
j d    ||d
}
W5QRXnt
j d    ||d
}
t  |
|||    ¡W5QRXdS) NTrrr®rCrér=zdf + df2 + df3r\r) rcr(r1r)r*r+r,rÉr$r'ršr)r)r*Ú#test_medium_complex_frame_alignment s8 ÿÿÿ z1TestAlignment.test_medium_complex_frame_alignmentÚ
index_namerærãc
CsætjddÐt dt¡tjddt||d}t||ƒ}tt    j
  d¡|dd…ƒ}t |j |j ƒrˆt t¡tjd||d}    W5QRXntjd||d}    |d    ks¨|d    krÄ|d
krº| |¡n||}
n||}
t |    |
¡W5QRXdS) NTrrr@rr=údf + sr\rÿr)rr r!r"rarrÚgetattrr r5rDrFrrær#r_r`Úaddr³) rcr(r1r/rrrÉrærršrhr)r)r*Ú!test_basic_frame_series_alignment8s& ÿ
 z/TestAlignment.test_basic_frame_series_alignmentzr_idx_type, c_idx_type)rÿrÿzignore::RuntimeWarningc
Cs(|dkrb|dkrb|dkrb|dkrb|dkrbd|›d|›d|›d    |›d
|›
}|j tjj|d d ¡tjd dt||d}t||ƒ}    t    t
j   d¡|    dd…ƒ}
t |
j|jƒrÐt t¡tjd||d} W5QRXntjd||d} |dksò|dkr|dkr| |
¡n|
|} n|
|} t | | ¡dS)Nr)rzrSrærrz"Flaky column ordering when engine=z    , parser=z , index_name=z , r_idx_type=z , c_idx_type=F)rÚstrictr@érr=zs + dfr\rÿ)rr‚r!r#r€rarrr1r r5rDrFrrær#r"r_r`r2r³) rcr0r(r1r/rrrrÉrærršrhr)r)r*Ú!test_basic_series_frame_alignmentRs<
ÿþýüû ÿÿ
 z/TestAlignment.test_basic_series_frame_alignmentryrûrýc
Cs tjddt dt¡tjddt||d}t||ƒ}tt    j
  d¡|dd…ƒ}    d|›d}
d    |›d
} t |j |    j ƒrÈt t¡tj|
||d } W5QRXt t¡tj| ||d } W5QRXn tj|
||d } tj| ||d } |d kr|d kr|d krt | | ¡W5QRXdS)NTrrr@rr=zs z dfzdf z sr\rÿr)rr r!r"rarrr1r r5rDrFrrær#r_r`r³)rcr(r1r/ryrrrÉrærr7r9r¬r¯r)r)r*Útest_series_frame_commutativityys. ÿ
 
z-TestAlignment.test_series_frame_commutativityc
Cs‚d}d}d|}    tjddZt dt¡t ddg¡}
t d    d
g¡} tj||t||d } tj|    |t||d } t    t
ƒ  | ¡|
ƒ}t t j |¡|d|…ƒ}|d ks¬|d krÊ|d krÀ|  |¡}qÒ| |}n| |}|d ksä|d kr|d krø| | ¡}n|| }n|| }t| j|j| jƒrFt t¡tjd||d}W5QRXntjd||d}|j|jksht‚t ||¡W5QRXdS)Nr®r=rCTrrrærãrÉr$rrÿrzdf2 + ser + dfr\)rr r!r"rDÚchoicerarrr1ÚlocalsÚgetr r5rFr2rrær#r_r`rÑrŸr³)rcr(r1r)r*r+r,ÚnÚm1Úm2r/Zobj_namerÉr$ræÚserZ    expected2rhršr)r)r*Ú#test_complex_series_frame_alignment˜sN ÿÿ 
 
 z1TestAlignment.test_complex_series_frame_alignmentc     Cs”ttj dd¡ƒ}ttj d¡ƒ}|dkr0t}nd}t |¡tj    d||dW5QRXttj d¡ƒ}t d¡tj    d||dW5QRXttj dd¡ƒ}ttj d¡ƒ}t d¡tj    d||dW5QRXttj dd¡ƒ}ttj d¡ƒ}|dk}|st}nd}t |¡n}tj    d||d|s†t
|ƒd    ksFt ‚t |d
j ƒ}    t |j|jd    ¡}
d |
d ›d } |    | ks†t ‚W5QRXdS)Nièr@i'rFr0r\rSrBrz_Alignment difference on axis 1 is larger than an order of magnitude on term 'df', by more than z.4gz; performance may suffer.)r r5rDrFr rrar#r_r`ÚlenrŸr3ÚmessageÚlog10rªrÑ) rcr(r1rÉrÚseenZis_python_engineZwrnÚwrdZloggedrhr)r)r*Ú+test_performance_warning_for_poor_alignmentÈs:     ÿz9TestAlignment.test_performance_warning_for_poor_alignmentN)rírîrïZ index_typesZlhs_index_typesrr!r#rðr%r(r.r3ÚlistrÚfilterwarningsr6r7r?rEr)r)r)r*ròsJ
 
           þ
!      ,rc
@sFeZdZdd„Zdd„Zej dddg¡ej dddg¡ej d    ej    ¡d
d „ƒƒƒZ
ej dddg¡ej dddg¡ej d    ej    ¡d d „ƒƒƒZ dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zd d!„Zd"d#„Zd$d%„Zd&d'„Zd(d)„Zd*d+„Zd,d-„Zd.d/„Zejjd0d1d2d3„ƒZd4d5„Zd6d7„Z d8d9„Z!d:d;„Z"d<d=„Z#d>d?„Z$d@dA„Z%ej dBdCdDdCdEge& 'g¡dFg¡dGdH„ƒZ(ej dBdCdDdFg¡dIdJ„ƒZ)ej dKdCdDdCdEge& 'g¡dFdCdEig¡dLdM„ƒZ*dNdO„Z+dPdQ„Z,dRdS„Z-dTdU„Z.dVdW„Z/dXdY„Z0ej dZd[d\d]g¡d^d_„ƒZ1ej d`dadbg¡dcdd„ƒZ2deS)fÚTestOperationscOs | dd¡d|d<tj||ŽS©NÚlevelrrB©Úpopr_r`©rcrørùr)r)r*r`úszTestOperations.evalc
s4g‰|dkrddg‰‡fdd„tjtjDƒ}dd„|Dƒ}|D]î}d|›d    }d
|›d    }d|›d }|d kr d }    tjt|    dtj|||dW5QRXq@td|d|ƒ}
|j|||d} | |
ksÊt    ‚t| |d|ƒ}
|j|d| i||d} | |
ksút    ‚td|| d|ƒ}
|j|d| i||d} | |
ks@t    ‚q@dS)NrSrmrncsg|]}|ˆkr|‘qSr)r)©r'ry©Z exclude_arithr)r*Ú
<listcomp>sþz8TestOperations.test_simple_arith_ops.<locals>.<listcomp>css|]}|dkr|VqdS)z//Nr)rNr)r)r*r+    sz7TestOperations.test_simple_arith_ops.<locals>.<genexpr>z1 z 1zx z (x + 1)rlz&argument of type 'int' is not iterablerXr\rBr}r™)
rrròr!r]rwr_r`r<rŸ) rcr(r1Z    arith_opsÚopsryrerrŽrdÚexpecr}Úyr)rOr*Útest_simple_arith_opsþs0
 
þ     z$TestOperations.test_simple_arith_opsr9TFr7ryc    Csr|›d|›d|›}tdkrP|dkrPd}tjt|d| |¡W5QRXdS| |¡}t|ƒ}||ksnt‚dS©NrrSrTrWrX©r1r!r]r^r`rŸ©rcr9r7ryrerdršrÕr)r)r*Útest_simple_bool_ops!s
z#TestOperations.test_simple_bool_opsc    Csr|›d|›d|›}tdkrP|dkrPd}tjt|d| |¡W5QRXdS| |¡}t|ƒ}||ksnt‚dSrUrVrWr)r)r*Útest_bool_ops_with_constants1s
z+TestOperations.test_bool_ops_with_constantsc    CsXtj dddd¡}ttj d¡ƒ}d}tjt|d|jd||d    œd
W5QRXdS) Nr®r-r=ér@z?N-dimensional objects, where N > 2, are not supported with evalrXúx + y©r}rS©ru)r5rDrFr r!r]r^r`)rcr}rSrdr)r)r*Útest_4d_ndarray_failsAs
z$TestOperations.test_4d_ndarray_failscCs| d¡}|dkst‚dS)NÚ1rB)r`rŸ)rcr}r)r)r*Ú test_constantHs
zTestOperations.test_constantcCs4ttj dd¡ƒ}|jdd|id}t ||¡dS)Nr@rCrÉr]©r r5rDrFr`rar³)rcrÉr$r)r)r*Útest_single_variableLsz#TestOperations.test_single_variablec    Cs:ttj dd¡ƒ}tjtdd| d¡W5QRXdS)Nr=r®úname 'x' is not definedrXz df[x > 2] > 2)r r5rDrFr!r]Ú    NameErrorr`©rcrÉr)r)r*Ú&test_failing_subscript_with_name_errorQsz5TestOperations.test_failing_subscript_with_name_errorcCsDttj dd¡ƒ}|jdd|id}|d|dk}t ||¡dS)Nr=r®z(df + 1)[df > 2]rÉr]rBrCrarÍr)r)r*Útest_lhs_expression_subscriptVsz,TestOperations.test_lhs_expression_subscriptc Cs¦ttj dd¡tdƒd}d}|j|jk}d}|j|j|j}d}|j|j|j|jdk}|||f}|||f}    t||    ƒD]"\}
} t     
| |j |
d    |id
¡q~dS) Nr=r®Úabcrâz df.a < df.bzdf.a + df.b + df.czdf.a + df.b + df.c[df.b < 0]rrÉr]) r r5rDrFrFr¬r¯r:Úziprar¶r`) rcrÉÚexpr1Zexpec1Zexpr2Zexpec2Zexpr3Zexpec3ÚexprsZexpecsr;rRr)r)r*Útest_attr_expression\s 
 
z#TestOperations.test_attr_expressionc    Csfttj dd¡tdƒd}ttj dd¡ƒ}d}d}tjt|d|j|||dœd    W5QRXdS)
Nr=r®rhrâzdf = df2ú%cannot assign without a target objectrX)rÉr$r])    r r5rDrFrFr!r]r2r`)rcrÉr$rjrdr)r)r*Útest_assignment_failsis z$TestOperations.test_assignment_failsc    CsBttj dd¡tdƒd}tjtdd| d¡W5QRXdS)Nr=rCÚabrâúinvalid syntaxrXz d c = a + b©    r r5rDrFrFr!r]rår`rer)r)r*Ú%test_assignment_column_multiple_raiseqsz4TestOperations.test_assignment_column_multiple_raisec    CsFttj dd¡tdƒd}d}tjt|d| d¡W5QRXdS)Nr=rCrorâz5left hand side of an assignment must be a single namerXz d,c = a + brqrèr)r)r*Ú%test_assignment_column_invalid_assignwsz4TestOperations.test_assignment_column_invalid_assignc    CsFttj dd¡tdƒd}d}tjt|d| d¡W5QRXdS)Nr=rCrorâzcannot assign to function callrXzTimestamp("20131001") = a + brqrèr)r)r*Ú3test_assignment_column_invalid_assign_function_call~szBTestOperations.test_assignment_column_invalid_assign_function_callcCsTttj dd¡tdƒd}| ¡}|d|d|d<|jddd    t ||¡dS)
Nr=rCrorâr¬r¯ú    a = a + bT©Úinplace©    r r5rDrFrFÚcopyr`rar³©rcrÉrhr)r)r*Ú&test_assignment_single_assign_existing„s
z5TestOperations.test_assignment_single_assign_existingcCsTttj dd¡tdƒd}| ¡}|d|d|d<|jdd    d
t ||¡dS) Nr=rCrorâr¬r¯r:ú    c = a + bTrvrxrzr)r)r*Ú!test_assignment_single_assign_newŒs
z0TestOperations.test_assignment_single_assign_newcCs\ttj dd¡tdƒd}| ¡}d}|jddd| ¡}d|d    |d
<t ||¡dS) Nr=rCrorârBz    a = 1 + bTrvr¯r¬rx)rcrÉr¬rhr)r)r*Ú+test_assignment_single_assign_local_overlap”sz:TestOperations.test_assignment_single_assign_local_overlapcCsdttj dd¡tdƒd}d}|j ¡}|jddd||j}t    j
||jd    d
|j dks`t ‚dS) Nr=rCrorârBruTrvFrË) r r5rDrFrFr¬ryr`r¯rar¶rçrŸ)rcrÉr¬Zold_arir)r)r*Ú"test_assignment_single_assign_namežs
 
z1TestOperations.test_assignment_single_assign_namec    CsTttj dd¡tdƒd}|jdddd}tjt|d    | d
¡W5QRXdS) Nr=rCrorâr|Trvz#can only assign a single expressionrXz    c = a = b)    r r5rDrFrFr`r!r]rårèr)r)r*Útest_assignment_multiple_raises¨s
z.TestOperations.test_assignment_multiple_raisescCs\ttj dd¡tdƒd}|jdd|i|dd| ¡}|d    |d
|d <t ||¡dS) Nr=rCrorâzc = df.a + df.brÉT)ruÚtargetrwr¬r¯r:)    r r5rDrFrFr`ryrar³rzr)r)r*Útest_assignment_explicit°s
z'TestOperations.test_assignment_explicitcCs:tdgdgdœƒ}| d¡}tdgƒ}tj||dddS)Né iàÿÿÿ©r¬r¯za in [11, -32]TFrË)r r`r rar¶rÍr)r)r*Útest_column_in¸s
 
zTestOperations.test_column_inz%Unknown: Omitted test_ in name prior.rcCs`ttj dd¡tdƒd}|jddd}|dk    s4t‚| ¡}|d|d    |d
<t     ||¡dS) Nr=rCrorâr|Frvr¬r¯r:)
r r5rDrFrFr`rŸryrar³)rcrÉÚactualrhr)r)r*Útest_assignment_not_inplaceÁs  z*TestOperations.test_assignment_not_inplacec    Csætdddgdddgdœƒ}| ¡}|d|d    |d
<|d
|d    |d <|jd d d}t ||¡|dkspt‚|dd|d<|dd|d<|jdd d}t ||¡|dks¶t‚d}tjt|d|jdddW5QRXdS)NrBrCr®r-r=rZr„r¬r¯r:Údú$
        c = a + b
        d = c + bTrvr;ú$
        a = a - 1
        e = a + 2z@Multi-line expressions are only valid if all expressions containrXz(
            a = b + 2
            b - 2F)    r ryr`rar³rŸr!r]r2)rcrÉrhÚanswerrdr)r)r*Útest_multi_line_expressionÍs0ü  ü  üz)TestOperations.test_multi_line_expressioncCs¢tdddgdddgdœƒ}| ¡}|d|d    |d
<|d
|d    |d <|jd d d}t ||¡|dd|d<|dd|d<|jdd d}t ||¡dS)NrBrCr®r-r=rZr„r¬r¯r:rˆr‰Frvr;rŠ)r ryr`rar³rzr)r)r*Ú&test_multi_line_expression_not_inplaceòs ü üz5TestOperations.test_multi_line_expression_not_inplacecCsptdddgdddgdœƒ}| ¡}d}|d    ||d
<|d
||d <|jd d d}t ||¡|dkslt‚dS)NrBrCr®r-r=rZr„r5r¬r:rˆz?
        c = a * @local_var
        d = c + @local_var
        Trv©r ryr`rar³rŸ)rcrÉrhZ    local_varr‹r)r)r*Ú)test_multi_line_expression_local_variable sû z8TestOperations.test_multi_line_expression_local_variablecCs€tdddgdddgdœƒ}dd    „}| ¡}|d
|dd ƒ|d <|d |dd ƒ|d <|jddd}t ||¡|dks|t‚dS)NrBrCr®r-r=rZr„cSs|Sr-r)r„r)r)r*Ú
local_func!szUTestOperations.test_multi_line_expression_callable_local_variable.<locals>.local_funcr¬r5r:rˆzM
        c = a * @local_func(1, 7)
        d = c + @local_func(1, 7)
        TrvrŽ©rcrÉrrhr‹r)r)r*Ú2test_multi_line_expression_callable_local_variablesû zATestOperations.test_multi_line_expression_callable_local_variablecCs„tdddgdddgdœƒ}dd    „}| ¡}|d
|d dd |d <|d |d dd |d<|jddd}t ||¡|dks€t‚dS)NrBrCr®r-r=rZr„cSs|Sr-r)r„r)r)r*r5szaTestOperations.test_multi_line_expression_callable_local_variable_with_kwargs.<locals>.local_funcr¬r5)r¯r¬r:rˆzU
        c = a * @local_func(b=7, a=1)
        d = c + @local_func(b=7, a=1)
        TrvrŽr‘r)r)r*Ú>test_multi_line_expression_callable_local_variable_with_kwargs1sû zMTestOperations.test_multi_line_expression_callable_local_variable_with_kwargsc    CsZtdddgdddgdœƒ}| ¡}d}tjt|d    | d
¡W5QRXt ||¡dS) NrBrCr®r-r=rZr„rmrXza = 1)r ryr!r]r2rÚrar³)rcrÉZdf_origrdr)r)r*Útest_assignment_in_queryEs z'TestOperations.test_assignment_in_querycCsxtdddgdddgdœƒ}| ¡}||ddk}|jd    d
d t ||¡i}ddi}|jd |d
d t ||¡dS)NrBrCr®r-r=rZr„r¬za == 2Trvú    a = 1 + 2©rrw)r ryrÚrar³r`Zassert_dict_equalrzr)r)r*Útest_query_inplaceNs z!TestOperations.test_query_inplaceÚinvalid_targetrBÚcatrC)rBr®c    Csjd}d}tjt|d|j||ddW5QRXt|dƒrftjt|d|j||ddW5QRXdS)Nz)Cannot assign expression output to targetr•rXTr–ryF)r!r]r2r`Úhasattr©rcr˜rdÚ
expressionr)r)r*Útest_cannot_item_assign\s
z&TestOperations.test_cannot_item_assignc    Cs6d}d}tjt|d|j||ddW5QRXdS)Nz"Cannot return a copy of the targetr•rXFr–)r!r]r2r`r›r)r)r*Útest_cannot_copy_itemhsz$TestOperations.test_cannot_copy_itemrc    CsNd}|j||dddkst‚d}tjt|d|j||ddW5QRXdS)Nú1 + 2Fr–r®z0Cannot operate inplace if there is no assignmentrXT)r`rŸr!r]r2)rcrrœrdr)r)r*Útest_inplace_no_assignmentps
z)TestOperations.test_inplace_no_assignmentcCsRtjddtddd}|dk}|jdd|id}|dk}t ||¡t ||¡dS)NrCÚpr©rrrr&rÉr]©rarrr`r³)rcrÉr;Úrr}r)r)r*Ú*test_basic_period_index_boolean_expressionzs  z9TestOperations.test_basic_period_index_boolean_expressioncCsBtjddtddd}|jdd|id}||dk}t ||¡dS)    NrCr¡rr¢zdf[df < 2 + 3]rÉr]r=r£©rcrÉr¤r;r)r)r*Ú,test_basic_period_index_subscript_expression„s z;TestOperations.test_basic_period_index_subscript_expressioncCsRtjddtddd}|jdd|id}|||dkdk|d}t ||¡dS)NrCr¡rr¢zdf[df[df < 2] < 2] + df * 2rÉr]r£r¦r)r)r*Ú-test_nested_period_index_subscript_expressionŠsz<TestOperations.test_nested_period_index_subscript_expressioncCsVttj dd¡ƒ}tddd|d<|jdd|i||d}|jd    k}tj||d
d dS) Nr=r®z1/1/2012)ZperiodsÚdates1zdf.dates1 < 20130101rÉr™Z20130101FrË)    r r5rDrFrr`r©rar¶)rcr(r1rÉršrRr)r)r*Útest_date_booleansü
z TestOperations.test_date_booleanc    Cs|dkrütjd||d}|s t‚tjd||d}|s8t‚tjd||d}|rPt‚tjd||d}|sht‚tjd||d}|s€t‚tjd||d}|s˜t‚tjd    ||d}|s°t‚tjd
||d}|sÈt‚tjd ||d}|ràt‚tjd ||d}|søt‚nd }tjt|dtjd||dW5QRXtjt|dtjd||dW5QRXtjt|dtjd||dW5QRXtjt|dtjd||dW5QRXd}tjt|dtjd||dW5QRXtjt|dtjd||dW5QRXdS)NrSz 1 in [1, 2]r\z 2 in (1, 2)z 3 in (1, 2)z3 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 implementedrXz[(3,)] in (1, 2, [(3,)])z!'NotIn' nodes are not implementedz[3] not in (1, 2, [[3]]))r_r`rŸr!r]r^)rcr(r1ršrdr)r)r*Útest_simple_in_opsœsF z!TestOperations.test_simple_in_opscCs2d}d d¡}d}tj|||d}||ks.t‚dS)NrBz * Z!aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar\)rvr_r`rŸ)rcr(r1r¬rrhršr)r)r*Útest_check_many_exprsËs
 
z$TestOperations.test_check_many_exprsrzdf > 2 and df > 3zdf > 2 or df > 3z
not df > 2c    Csvttj dd¡ƒ}|dkr\d}d|kr*d}tjt|dtj|d|i||d    W5QRXntj|d|i||d    dS)
Nr=r®rSrWÚnotú'Not' nodes are not implementedrXrÉ)rur1r(©    r r5rDrFr!r]r^r_r`)rcrr(r1rÉrdr)r)r*Útest_fails_and_or_notÒs$    üüz$TestOperations.test_fails_and_or_notÚcharrrr‰c    Csjttj dd¡ƒ}d|›d}|dkrVd}tjt|dtj|||dW5QRXntj|||ddS)    Nr=r®z(df + 2)[df > 1] > 0 z     (df > 0)rSz$cannot evaluate scalar only bool opsrXrÁr¯)rcr±r(r1rÉrerdr)r)r*Útest_fails_ampersand_pipeñs z(TestOperations.test_fails_ampersand_pipeN)3rírîrïr`rTr!r#rðrrñrXrYr^r`rbrfrgrlrnrrrsrtr{r}r~rr€r‚r…r€r‡rŒrrr’r“r”r—r5r{rržr r¥r§r¨rªr«r¬r°r²r)r)r)r*rHùst#   
 
     
%     
 
&
    
 /ýþ
rHc @sÄeZdZdd„Zejje ddej de    ¡dd„ƒƒZ
ej de ¡dd    „ƒZ d
d „Z d d „Zej dejejfejejfejejfejejfejejejejdg¡dd„ƒZdd„Zdd„ZdS)ÚTestMathcOs | dd¡d|d<tj||ŽSrIrKrMr)r)r*r`ÿsz TestMath.evalz&Unary ops only implemented for numexprrÚfnc    Cshtdtj d¡iƒ}|j}|›d}| |¡}tjddtt|ƒ|ƒ}W5QRXtj    ||dddS)Nr¬r@z(a)Úignore©ÚallFrË)
r r5rDrFr¬r`Úerrstater1rar¶)rcr´rÉr¬rÚgotr´r)r)r*Útest_unary_functionss
 
zTestMath.test_unary_functionsc    Cszttj d¡tj d¡dœƒ}|j}|j}|›d}| |¡}tjddtt|ƒ||ƒ}W5QRXt    j
||dddS)Nr@r„z(a, b)rµr¶FrË) r r5rDrFr¬r¯r`r¸r1rar„)rcr´rÉr¬r¯rr¹r´r)r)r*Útest_binary_functionss
 
zTestMath.test_binary_functionscCs`ttj d¡tj d¡dœƒ}|jd||dd|j}t t |j¡|j    ¡}t
j ||dddS)Nr@r„ze = arctan2(sin(a), b)T©r(r1rwFrË) r r5rDrFr`r;Zarctan2Úsinr¬r¯rar¶©rcr(r1rÉr¹r´r)r)r*Útest_df_use_casesüzTestMath.test_df_use_casecCs\ttj d¡tj d¡dœƒ}|jd||dd|j}t |j|j¡}t    j
||dddS)Nr@r„ze = sin(a + b)Tr¼FrË) r r5rDrFr`r;r½r¬r¯rar¶r¾r)r)r*Ú test_df_arithmetic_subexpression)s
z)TestMath.test_df_arithmetic_subexpressionzdtype, expect_dtyper cCs€tdtj d¡ |¡iƒ}|jj|ks*t‚|jd||dd|j    }t 
|j¡}|j|jks^t‚||jkslt‚t j ||dddS)Nr¬r@z
b = sin(a)Tr¼FrË) r r5rDrFr¢r¬rÆrŸr`r¯r½rar¶)rcrÆZ expect_dtyper(r1rÉr¹r´r)r)r*Útest_result_types0s zTestMath.test_result_typesc    CsFtdtj d¡iƒ}d}tjt|d|jd||dW5QRXdS)Nr¬r@z#"mysin" is not a supported functionrXzmysin(a)r\)r r5rDrFr!r]r2r`©rcr(r1rÉrdr)r)r*Útest_undefined_funcIszTestMath.test_undefined_funcc    CsFtdtj d¡iƒ}d}tjt|d|jd||dW5QRXdS)Nr¬r@z1Function "sin" does not support keyword argumentsrXzsin(x=a)r\)r r5rDrFr!r]rwr`rÂr)r)r*Útest_keyword_argPszTestMath.test_keyword_argN)rírîrïr`r!r#r$rrðrrºrr»r¿rÀr5Úint32rÙÚint64r÷r"Z
complex128r%rörÁrÃrÄr)r)r)r*r³þs.ÿ 
 
 
 
 
 
ûþ
 
r³r@c@s4eZdZdd„Zdd„Zdd„Zdd„Zd    d
„Zd S) Ú    TestScopecCs$d}t tdtj|||d¡dS)Nú
_var_s * 2rCr\)rar Ú_var_sr_r`)rcr(r1r;r)r)r*Útest_global_scope\s
ÿzTestScope.test_global_scopecCsDd}tƒ ¡}tjd|||dtƒ ¡}| d¡||ks@t‚dS)NrBúx + 1r™Úlcls)r9ryr_r`rLrŸ)rcr(r1r}rÌZlcls2r)r)r*Útest_no_new_localsbs 
 
 
zTestScope.test_no_new_localscCs8d}tƒ ¡}tjd||dtƒ ¡}||ks4t‚dS)NrBrËr\)Úglobalsryr_r`rŸ)rcr(r1r}ZgblsZgbls2r)r)r*Útest_no_new_globalsjs
 
 
zTestScope.test_no_new_globalsc    Cs8d}d}tjt|dtjd||idW5QRXdS)NrBrcrXrËrt©r!r]rr_r`)rcr(r1r}rdr)r)r*Útest_empty_localsqszTestScope.test_empty_localsc    Cs8d}d}tjt|dtj|||idW5QRXdS)Nzname '_var_s' is not definedrÈrX)r(r1Z global_dictrÐ)rcr(r1rdr;r)r)r*Útest_empty_globalsxszTestScope.test_empty_globalsN)rírîrïrÊrÍrÏrÑrÒr)r)r)r*rÇ[s
rÇc    Cs8d}tjt|dtjddddœddW5QRXdS)    NzInvalid engine 'asdf' passedrXr[rBrCr\Úasdf)rur(©r!r]ÚKeyErrorr_r`©rdr)r)r*Útest_invalid_engine€sr×)Ú use_numexprrh))Tr)FrSc    Cs<ddlm}t d|¡|dƒ}||ks.t‚W5QRXdS)Nr)Ú _check_engineúcompute.use_numexpr)Zpandas.core.computation.evalrÙr_Úoption_contextrŸ)rØrhrÙrir)r)r*Útest_numexpr_option_respected‡s
rÜc    Csvt dd¡`tddddddgdddddd    gd
œƒ}| d ¡}tddgdd    gd
œddgd }t ||¡W5QRXdS) NrÚFTrBrCr®r-r=rZ)r×ÚBz
A.isnull())ræ)r_rÛr rÚrar³)rÉrirhr)r)r*Ú#test_numexpr_option_incompatible_op˜s ÿ
rÞc    Cs8d}tjt|dtjddddœddW5QRXdS)    NzInvalid parser 'asdf' passedrXr[rBrCr\rÓ)rur1rÔrÖr)r)r*Útest_invalid_parser¤srß)rSrrzz dict[str, type[BaseExprVisitor]]Ú_parsersc
CsNt|}|d||ƒ}|jD].}d}tjt|dt||ƒƒW5QRXqdS)NrËznodes are not implementedrX)ràZunsupported_nodesr!r]r^r1)r(r1Z VisitorClassÚinstrQrdr)r)r*Útest_disallowed_nodes²s  
râc    Cs2d}tjtddtj|||dW5QRXdS)Nzs +rprXr\©r!r]rår_r`)r(r1r;r)r)r*Útest_syntax_error_exprs¾sräc    Cs6d}d}tjt|dtj|||dW5QRXdS)Nzs + tzname 's' is not definedrXr\)r!r]rdr_r`)r(r1r;rdr)r)r*Útest_name_error_exprsÄsråÚexpressza + @bz@a + bz@a + @bc    Csjd\}}|dkr<tjtddtj|||dW5QRXn*tjtddtj|||dW5QRXdS)N©rBrCrzzThe '@' prefix is onlyrXr\zThe '@' prefix is notrã)r(r1rær¬r¯r)r)r*Ú%test_invalid_local_variable_referenceËs rèc    Csdd\}}|dkr@d}tjt|dtjd||dW5QRXn tjd||d}|||ks`t‚dS)NrçrzVariables in expression .+rXzsin + dotted_liner\)r!r]rr_r`rŸ)r(r1r½Z dotted_linerdršr)r)r*Útest_numexpr_builtin_raises×sréc    Cs4d}tjtddtjd|||dW5QRXdS)N)é*g@zResolver of type .+rXrŸ)Z    resolversr(r1)r!r]rwr_r`)r(r1Zcannot_resolver)r)r*Útest_bad_resolver_raisesâsrëc    Cs.tjtddtjd||dW5QRXdS)Nzexpr cannot be an empty stringrXÚr\©r!r]r2r_r`r\r)r)r*Útest_empty_string_raisesèsrîc    Cs.tjtddtjd||dW5QRXdS)Nz#only a single expression is allowedrXz 1 + 1; 2 + 2r\rãr\r)r)r*Ú$test_more_than_one_expression_raisesîsrïÚcmprTr9c
Csªtdd„ttjji}||ƒ}||ƒ}||ƒ}d|›d|›d}d|›d|›d}d|›d|›d    }    |||    fD]2}
d
} tjt| d tj    |
||d W5QRXqrdS) NcSs tj d¡S)Nr@)r5rDr²r)r)r)r*r~÷rz0test_bool_ops_fails_on_scalars.<locals>.<lambda>rpr†rqr‡rZrˆr[rÏrXr\)
Úintr>r5rDrFr!r]r^r_r`) r7rðr9r(r1Úgenr‹rŒrrŽrerdr)r)r*Útest_bool_ops_fails_on_scalarsós
 
 
róÚotherz'x'z...cCsNtddddgiƒ}| d|›¡}tdddgdd}tr>d|_t ||¡dS)Nr×r¬r¯r:rØF©rç)r r`r rrçrar¶)rôrÉrirhr)r)r*Útest_equals_variouss röcCs*d}tj}tj|||d}||ks&t‚dS)Nzinf + 1r\)r5Úinfr_r`rŸ)r(r1rrhrir)r)r*Útest_infsrøÚcolumnu    Temp(°C)uCapacitance(μF)cCsTttj dd¡|dgd}|||dk}d|›d}|j||d}t ||¡dS)Nr=rCr¯râú`z` > 5)r()r r5rDrFrÚrar³)r(rùrÉrhZ query_stringrir)r)r*Útest_query_tokens
 rûc    Cs tddgddggddgd}||jdk}|jd||d    }t ||¡|d
kr€d }tjt|d |jd ||d    W5QRXn|jd ||d    }t ||¡dS)Nrr@rBrr™Úcountrâz
~(cat > 0)r\rSr®rXz not (cat > 0))r r™rÚrar³r!r]r^)r(r1rÉrhrirdr)r)r*Útest_negate_lt_eq_le)s rýcCst|dkr&|j tjjtd|›d¡ttjj    dddd|dgd    }|||d
k}| 
|›d ¡}t   ||¡dS) N)ÚTrueÚFalser÷ZInfz+GH 47859 DataFrame eval not supported with )r]rréd)r@rCr©Zcol1rârZz>6) rr‚r!r#r€rÕr r5rDr²rÚrar³)r0rùrÉrhrir)r)r*Ú test_eval_no_support_column_name9sþÿrcCsÎtdddgdddgddd    gd
œƒ}|dd…}|d }|jd d dtdddgdddgddd    gd
œƒ}t ||¡|sœt ||d ¡t |d |d ¡n.tdddgd d}t ||¡t |d |¡dS)NrBrCr®r-r=rZr5éé    )r×rÝÚCr×z    A = B + CTrvrƒé érõ)r r`rar³r¶r )Zusing_copy_on_writerÉZ result_viewr>rhr)r)r*Útest_set_inplaceNs" "  rc@s0eZdZej ddddddgdg¡dd„ƒZd    S)
Ú TestValidateÚvaluerBrþrCr®g@c    Cs0d}tjt|dtjd|dW5QRXdS)Nz8For argument "inplace" expected type bool, received typerXz2+2rvrí)rcr    rdr)r)r*Útest_validate_bool_argsbsz$TestValidate.test_validate_bool_argsN)rírîrïr!r#rðr
r)r)r)r*rasr)fÚ
__future__rÚ    functoolsrÚ    itertoolsrr rDrÚnumpyr5r!Z pandas.errorsrrrZpandas.util._test_decoratorsÚutilZ_test_decoratorsr%Zpandas.core.dtypes.commonrr    r
r rzr_r r rZpandas._testingZ_testingraZpandas.core.computationrrZpandas.core.computation.enginesrZpandas.core.computation.exprrrrZ#pandas.core.computation.expressionsrrZpandas.core.computation.opsrrrrrZpandas.core.computation.scoperZfixturer(ZPARSERSr1r<rFÚranger7r9rŠrHrrúrrrHr³rFrÉrÇr&r×r#rðrÜrÞrßZPyTablesExprVisitorràÚ__annotations__rârärårèrérërîrïrñr>rórörørûrýÚkeysrrrr)r)r)r*Ú<module>sÐ       ôÿ
 
 
 þ
\        Z %
þ     
 
ý  
 
  þþ
 
    þ