zmc
2023-12-22 9fdbf60165db0400c2e8e6be2dc6e88138ac719a
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
U
¬ý°dd7ã@s ddlZddlZddlZddlZddlZddlmZddlm    Z
ddl m Z m Z mZddlmZejdd„ƒZejdd„ƒZejd    d
„ƒZejd d „ƒZejd d„ƒZejdd„ƒZejdd„ƒZejdd„ƒZejdd„ƒZejdd„ƒZejdd„ƒZejjej  ddGdd„dƒƒZ!dS)éN)Úoption_context)Ú    DataFrameÚIndexÚSeries)Ú expressionscCsttj dd¡tdƒddS)Né'éÚABCDÚfloat64©ÚcolumnsÚdtype©rÚnpÚrandomÚrandnÚlist©rrúTd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\pandas/tests/test_expressions.pyÚ_framesrcCsttj dd¡tdƒddS)Nédrr    r
r rrrrrÚ_frame2srcCs8t|d ¡|d d¡|d d¡|d d¡dœƒS©    NÚAÚBÚfloat32ÚCÚint64ÚDÚint32)rrrr©rÚcopyZastype©rrrrÚ_mixeds
   üÿr#cCs8t|d ¡|d d¡|d d¡|d d¡dœƒSrr ©rrrrÚ_mixed2(s
   üÿr%cCs ttjjddddtdƒddS)Nér)rr©Úsizer    rr ©rrrÚrandintrrrrrÚ_integer4s
ÿr+cCs|tjjddt |¡dS)Nrér')rrr*Úshape)r+rrrÚ_integer_randint;sr.cCs ttjjddddtdƒddS)Nr&r)éerr'r    rr r)rrrrÚ    _integer2As
ÿr0cCs|dj ¡S©Nr©Úvaluesr!r"rrrÚ_arrayHsr4cCs|dj ¡Sr1r2r$rrrÚ_array2Msr5cCs|dj ¡S©Nrr2)r#rrrÚ _array_mixedRsr7cCs|dj ¡Sr6r2)r%rrrÚ _array_mixed2Wsr8znot using numexpr)Úreasonc @s”eZdZejdddd„ƒZeeedœdd„ƒZ    ej
  dd    d
d d d ddg¡ej
  dddg¡ej
  dddddddg¡dd„ƒƒƒZ ej
  dd    d
d d d ddg¡ej
  dddg¡dd„ƒƒZ dd„Zej
 d¡ej
  d d!d"d#d$d%g¡ej
  d&d'd(g¡d)d*„ƒƒƒZej
  d&d'd(g¡d+d,„ƒZej
  d-ddg¡ej
  dd d ddg¡d.d/„ƒƒZej
  d0d1d2d3g¡d4d5„ƒZej
  d0d6d7d8g¡d9d:„ƒZej
  d;ed<d=d>d?gd<d=d>d?ggd@dAdBdCgdDeddgddggd@dCgdDfed<dEd>d?gd<dFd>d?gd<d=d=dGggd@dAdBdCgdDeddgddgddggd@dCgdDfg¡dHdI„ƒZej
  ddJ¡ej
  dKdL¡dMdN„ƒƒZej
  dOdPdQdRdSg¡ej
  dTeeeg¡ej
  dUdVdWg¡dXdY„ƒƒƒZdZS)[ÚTestExpressionsT)Zautouseccstj}dV|t_dS©N)ÚexprÚ _MIN_ELEMENTS)ÚselfÚ min_elementsrrrÚsave_min_elements^sz!TestExpressions.save_min_elements)ÚflexÚopnamec    s\|r‡fdd„}ˆ|_n
ttˆƒ}tddƒ|||ƒ}W5QRXt ¡|||ƒ}||fS)Ncst|ˆƒ|ƒSr;)Úgetattr)ÚxÚy©rBrrÚ<lambda>góz)TestExpressions.call_op.<locals>.<lambda>úcompute.use_numexprF)Ú__name__rCÚoperatorrr<Úget_test_result)ÚdfÚotherrArBÚopÚexpectedÚresultrrFrÚcall_opds 
 
zTestExpressions.call_opÚfixturer+r0r.rrr#r%rAFÚarithÚaddÚsubÚmulÚmodÚtruedivÚfloordivc    Cs¾| |¡}dt_| ||||¡\}}|dkrFtdd„|jjDƒƒsFt‚t     ||¡t
t |j ƒƒD]X}| |j dd…|f|j dd…|f||¡\}}|dkr¬|jjdks¬t‚t     ||¡q`dS)NrrYcss|]}|jdkVqdS)ÚfN)Úkind)Ú.0rDrrrÚ    <genexpr>Šsz6TestExpressions.test_run_arithmetic.<locals>.<genexpr>r[)Úgetfixturevaluer<r=rRÚallZdtypesr3ÚAssertionErrorÚtmÚ assert_equalÚrangeÚlenr Úilocr r\)    r>ÚrequestrSrArTrMrQrPÚirrrÚtest_run_arithmeticts
 0z#TestExpressions.test_run_arithmeticc     Csz| |¡}|j}tddƒ| ¡d}W5QRXdt_t d¡| ||||¡\}}    t ¡}
|
sjt    dƒ‚t
  |    |¡dS)z²
        tests solely that the result is the same whether or not numexpr is
        enabled.  Need to test whether the function does the correct thing
        elsewhere.
        rIFr&rTz Did not use numexpr as expected.N) r_rJrr!r<r=Z set_test_moderRrLrarbrc) r>rgrSrAÚ comparison_oprMrTrNrQrPZ used_numexprrrrÚtest_run_binary“s
 
 zTestExpressions.test_run_binarycCsptj d¡}tj d¡}t tjd||d¡}|r4t‚t tjd||d¡}|rPt‚t tjd||d¡}|slt‚dS)NiABrÚevaluateú+)rrrr<Ú_can_use_numexprrKrUra)r>ÚarrayZarray2rQrrrÚ test_invalidºs  zTestExpressions.test_invalidz>ignore:invalid value encountered in true_divide:RuntimeWarningz opname,op_str)rUrm)rVú-)rWÚ*)rYú/)Úpowú**zleft_fix,right_fix)r4r5)r7r8c    sd| |¡‰| |¡‰‡‡‡‡fdd„}tddƒ |ƒW5QRXt d¡|ƒt ¡|ƒdS)Nc    sŠˆdkr dSttˆƒ}t ¡<d}t d|t¡tj|ˆˆdd}tj|ˆˆdd}W5QRXt     ||¡t 
|ˆˆˆd¡}|r†t ‚dS)Nrtz/invalid value encountered in divide|true_divideÚignoreT©Ú use_numexprFrl) rCrKÚwarningsÚcatch_warningsÚfilterwarningsÚRuntimeWarningr<rlrbÚassert_numpy_array_equalrnra)rOÚmsgrQrP©ÚleftÚop_strrBÚrightrrÚtestitØs
 
 z/TestExpressions.test_binary_ops.<locals>.testitrIFr&©r_rr<Zset_numexpr_threads)r>rgrBrÚleft_fixÚ    right_fixrƒrrrÚtest_binary_opsÊs
 
 
zTestExpressions.test_binary_opsc    sb| |¡‰| |¡‰‡‡‡fdd„}tddƒ |ƒW5QRXt d¡|ƒt ¡|ƒdS)Ncsbˆd}ˆd}ˆ}tj|ˆ|dd}tj|ˆ|dd}t ||¡t ||ˆ|d¡}|r^t‚dS)Nr&TrwFrl)r<rlrbr}rnra)Zf12Zf22rOrQrP©rjr€r‚rrrƒùs z3TestExpressions.test_comparison_ops.<locals>.testitrIFr&r„)r>rgrjr…r†rƒrrˆrÚtest_comparison_opsòs
 
 
z#TestExpressions.test_comparison_opsÚcondc    sV| |¡‰‡‡fdd„}tddƒ |ƒW5QRXt d¡|ƒt ¡|ƒdS)NcsXtjˆjtjd}| ˆ¡t |ˆjˆjd¡}t |ˆjˆjd¡}t     ||¡dS)N)r r&)
rÚemptyr-Zbool_Úfillr<Úwherer3rbr})ÚcrQrP©rŠrMrrrƒs
 
z*TestExpressions.test_where.<locals>.testitrIFr&r„)r>rgrŠrSrƒrrrÚ
test_wheres
 
zTestExpressions.test_wherez op_str,opname)rsrY)z//rZ)rurtc    Cs*ttj d¡dktj d¡dkdœƒ}d|›d}tt|ƒ}t |¡}tj    t
|d|||ƒW5QRXtj    t
|d||j |j ƒW5QRXtj    t
|d||j dƒW5QRXtj    t
|d|d|j ƒW5QRXtj    t
|d|d|ƒW5QRXtj    t
|d||dƒW5QRXdS)    Né
çà?©ÚaÚbz
operator 'z!' not implemented for bool dtypes)ÚmatchTF) rrrÚrandrCrKÚreÚescapeÚpytestZraisesÚNotImplementedErrorr”r•)r>rrBrMr~r[Úerr_msgrrrÚ!test_bool_ops_raise_on_arithmetic"s & 
 
z1TestExpressions.test_bool_ops_raise_on_arithmetic)rmrU)rrrW)rqrVc
CsÒd}ttj |¡dktj |¡dkdœƒ}ddddœ}dd    d
d œ}tt|ƒ}tt|||ƒ}|d krjdStjd ddNt ¡&|||ƒ}    |||ƒ}
t     |    |
¡W5QRXt ¡.||j
|j ƒ}    ||j
|j ƒ}
t  |    |
¡W5QRXt ¡*||j
d ƒ}    ||j
d ƒ}
t  |    |
¡W5QRXt ¡*|d|j
ƒ}    |d|j
ƒ}
t  |    |
¡W5QRXt ¡&|d|ƒ}    |d|ƒ}
t     |    |
¡W5QRXt ¡&||d ƒ}    ||d ƒ}
t     |    |
¡W5QRXW5QRXdS)Nr‘r’r“ú|ú&ú^)rmrrrqÚor_Úand_Úxor)ržrŸr rqTé)r?F) rrrr—rCrKrbrxZassert_produces_warningÚassert_frame_equalr”r•Zassert_series_equal) r>rrBÚnrMÚsubsZ    sub_funcsr[ZfeÚrÚerrrÚ test_bool_ops_warn_on_arithmetic>sB&  
 
 
 
 
 
 
 
 
 
 
 
 
z0TestExpressions.test_bool_ops_warn_on_arithmeticztest_input,expectedrr&r,Zaar”r•rŽr )r érZbbcCs>|jdd…ddgf |jdd…ddgf¡}t ||¡dS)Nr”r )ÚlocÚnerbr¥)r>Z
test_inputrPrQrrrÚtest_bool_ops_column_name_dtypens.z/TestExpressions.test_bool_ops_column_name_dtype)rUrVrWrXrYrZÚaxis)rr&c        Cs€|}|dkr |jddd…f}n|jdd…df}dt_t||ƒ}tddƒ|||d}W5QRX|||d}t ||¡dS)Nr&rrIF)r¯)rfr<r=rCrrbr¥)    r>r¯rTrrMrNZop_funcrPrQrrrÚtest_frame_series_axisˆs
  z&TestExpressions.test_frame_series_axisrOÚ__mod__Ú__rmod__Ú __floordiv__Ú __rfloordiv__ÚboxÚscalaréûÿÿÿr¤c     CsÄdt_t dd¡}||ƒ}t||ƒ}||ƒ}tddƒ||ƒ}W5QRXt ||¡t|ƒD]`\}    }
|t    kr~|j
|    df} n||    } ztt |
ƒ|ƒ|ƒ}Wnt k
r°Yq^X| |ks^t ‚q^dS)NriÎÿÿÿé2rIF)r<r=rZarangerCrrbrcÚ    enumeraterrfÚintÚZeroDivisionErrorra) r>rOrµr¶ÚdataÚobjÚmethodrQrPrhÚelemZ scalar_resultrrrÚ,test_python_semantics_with_numexpr_installedŸs"  
  z<TestExpressions.test_python_semantics_with_numexpr_installedN)rJÚ
__module__Ú __qualname__ršrSr@Ú staticmethodÚboolÚstrrRÚmarkZ parametrizerirkrpr{r‡r‰rrrªrr®r°rrrÀrrrrr:\sÌ
 
ùþ ÿùþ  ÿ þÿÿ
 ÿ
ÿ
-
ÿü 
þþûùþ
ÿ  üþ    r:)"rKr˜ryÚnumpyrršZpandasrZpandas._testingZ_testingrbZpandas.core.apirrrZpandas.core.computationrr<rSrrr#r%r+r.r0r4r5r7r8rÆZskipifZ USE_NUMEXPRr:rrrrÚ<module>s@