zmc
2023-08-08 e792e9a60d958b93aef96050644f369feb25d61b
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
U
­ý°d5ã@s>dZddlZddlZddlmZddlZddlm    Z
ddl m Z ddl mZdd„Zejdd    „ƒZejd
d „ƒZejd d „ƒZejdd„ƒZejdd„ƒZejdd„ƒZejdd„ƒZejdd„ƒZejdd„ƒZGdd„dejƒZGdd„dejƒZGdd„dejƒZGd d!„d!ej ƒZ!Gd"d#„d#ej"ƒZ#Gd$d%„d%ej$ƒZ%Gd&d'„d'ej&ƒZ'Gd(d)„d)ej(ƒZ)Gd*d+„d+ej*ƒZ+Gd,d-„d-ej,ƒZ-Gd.d/„d/ej.ƒZ/Gd0d1„d1ej0ƒZ1Gd2d3„d3ej2ƒZ3Gd4d5„d5ej4ƒZ5Gd6d7„d7ej6ƒZ7Gd8d9„d9ej8ƒZ9Gd:d;„d;ej:ƒZ;Gd<d=„d=ej<ƒZ=Gd>d?„d?ej>ƒZ?Gd@dA„dAej@ƒZAdS)Baj
This file contains a minimal set of tests for compliance with the extension
array interface test suite, and should contain no other tests.
The test suite for the full functionality of the array is located in
`pandas/tests/arrays/`.
 
The tests in this file are inherited from the BaseExtensionTests, and only
minimal tweaks should be applied to get the tests passing (by overwriting a
parent method).
 
Additional tests should either be added to one of the BaseExtensionTests
classes (if they are relevant for the extension interface for all dtypes), or
be added to the array-specific tests in `pandas/tests/arrays/`.
 
éN)Ú is_bool_dtype©Ú BooleanDtype)ÚbasecCs0ddgdtjgddgdtjgddgS)NTFéé,)ÚnpÚnan©r
r
úZd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\pandas/tests/extension/test_boolean.pyÚ    make_datasr cCstƒS©Nrr
r
r
r ÚdtypesrcCstjtƒ|dS)N©r)ÚpdÚarrayr rr
r
r Údata$srcCstjt d¡|dS)Nédr)rrrZonesrr
r
r Ú data_for_twos)srcCstjtjdg|dS)NTr©rrrr    rr
r
r Ú data_missing.srcCstjdddg|dS©NTFr)rrrr
r
r Údata_for_sorting3srcCstjdtjdg|dSrrrr
r
r Údata_missing_for_sorting8srcCsdd„S)NcSs|tjko|tjkSr ©rÚNA)ÚxÚyr
r
r Ú<lambda>@ózna_cmp.<locals>.<lambda>r
r
r
r
r Úna_cmp=sr cCstjSr rr
r
r
r Úna_valueCsr!cCs*d}d}tj}tj|||||||g|dSr)rr    rr)rÚbÚaÚnar
r
r Údata_for_groupingHsr%c@s eZdZdS)Ú    TestDtypeN©Ú__name__Ú
__module__Ú __qualname__r
r
r
r r&Psr&c@s eZdZdS)Ú TestInterfaceNr'r
r
r
r r+Tsr+c@s eZdZdS)ÚTestConstructorsNr'r
r
r
r r,Xsr,c@s eZdZdS)Ú TestGetitemNr'r
r
r
r r-\sr-c@s eZdZdS)Ú TestSetitemNr'r
r
r
r r.`sr.c@s eZdZdS)Ú    TestIndexNr'r
r
r
r r/dsr/c@s eZdZdS)Ú TestMissingNr'r
r
r
r r0hsr0csfeZdZddhZd‡fdd„    Zefdd„Zejj    dd    ‡fd
d „ƒZ
ejj    dd    ‡fd d „ƒZ ‡Z S)ÚTestArithmeticOpsÚ__sub__Ú__rsub__Ncs4d}| d¡ d¡dkrt}tƒj||||ddS)NÚ_Úr)ÚpowÚtruedivÚfloordiv©Úexc)ÚstripÚlstripÚNotImplementedErrorÚsuperÚ check_opname©ÚselfÚsÚop_nameÚotherr:©Ú    __class__r
r r?oszTestArithmeticOps.check_opnamec        CsØ|dkr´||jkr>d}tjt|d|||ƒW5QRXdS|||ƒ}| |||¡}|dkrj| d¡}n&|dkr| | t¡||¡}| d¡}|dkr¦tj||     ¡<| 
||¡n t |¡|||ƒW5QRXdS)Nznumpy boolean subtract)Úmatch)Ú __floordiv__Ú __rfloordiv__Ú__pow__Ú__rpow__Ú__mod__Ú__rmod__ZInt8)Ú __truediv__Ú __rtruediv__ZFloat64rK) Ú
implementsÚpytestZraisesÚ    TypeErrorZ_combineÚastypeÚfloatrr    ÚisnaZ assert_equal)    rAÚobjÚoprDrCr:ÚmsgÚresultÚexpectedr
r
r Ú    _check_opws$
 
     
 zTestArithmeticOps._check_opz‡Inconsistency between floordiv and divmod; we raise for floordiv but not for divmod. This matches what we do for non-masked bool dtype.)Úreasoncstƒ ||¡dSr )r>Útest_divmod_series_array)rArrrEr
r r]™sz*TestArithmeticOps.test_divmod_series_arraycstƒ |¡dSr )r>Ú test_divmod)rArrEr
r r^ szTestArithmeticOps.test_divmod)N) r(r)r*rPr?r=r[rQÚmarkZxfailr]r^Ú __classcell__r
r
rEr r1ls "ÿÿr1cseZdZd‡fdd„    Z‡ZS)ÚTestComparisonOpsNcstƒj|||dddS)Nr9)r>r?r@rEr
r r?©szTestComparisonOps.check_opname)N)r(r)r*r?r`r
r
rEr ra¨srac@s eZdZdS)Ú TestReshapingNr'r
r
r
r rb®srbc@s(eZdZdZdd„Zdd„Zdd„ZdS)    Ú TestMethodsÚbooleancCsZtj|dd\}}tjdddddddgtjd}| ddg¡}t ||¡| ||¡dS)NT)Zuse_na_sentinelréÿÿÿÿérr)    rÚ    factorizerrÚintpÚtakeÚtmÚassert_numpy_array_equalÚassert_extension_array_equal)rAr%ÚlabelsÚuniquesZexpected_labelsZexpected_uniquesr
r
r Útest_factorizeµs
 zTestMethods.test_factorizec    Csætjddgdd}|\}}t|ƒ ||g¡}|r:t |¡}| |¡dksLt‚|j|dddksbt‚| |¡dkstt‚|j|ddd    ksŠt‚| | ddg¡¡}tjddgtj    d}t
  ||¡t ddg¡}|j||d
dksât‚dS) NTFrdrrÚright)Zsiderfé)Úsorter) rrÚtypeZ_from_sequenceÚSeriesZ searchsortedÚAssertionErrorrirrhrjrk)    rArZ    as_seriesr"r#ZarrrYrZrrr
r
r Útest_searchsorted¾s
 zTestMethods.test_searchsortedcCsz| ¡dkst‚| ¡dks t‚| ddddddg¡}| ¡dksFt‚| ¡dksVt‚| ¡dksft‚| ¡dksvt‚dS)Nrrqrf)ZargmaxruZargminri)rArrrr
r
r Útest_argmin_argmaxÕszTestMethods.test_argmin_argmaxN)r(r)r*Z_combine_le_expected_dtyperorvrwr
r
r
r rc²s    rcc@s eZdZdS)Ú TestCastingNr'r
r
r
r rxçsrxc@s|eZdZdZdd„Zej dddg¡dd„ƒZd    d
„Z    d d „Z
d d„Z dd„Z dd„Z dd„Zej dddg¡dd„ƒZdS)Ú TestGroupbyzw
    Groupby-specific tests are overridden because boolean only has 2
    unique values, base tests uses 3 groups.
    c    Csft dddddddg|dœ¡}| d¡jjd}| d¡jjd}t |j|jj    ¡t 
|j|¡dS)NÚBÚA©r{rzr) rÚ    DataFrameÚgroupbyZgrouperZ    groupingsrjrkZgrouping_vectorr{Úvaluesrl)rAr%ÚdfZgr1Zgr2r
r
r Útest_grouping_grouperñsÿz!TestGroupby.test_grouping_grouperÚas_indexTFc        Csœt dddddddg|dœ¡}|jd|dj ¡}tj|dd\}}|rxtj|dd    }tjd
d g|d d }| ||¡n t |d
d gdœ¡}|     ||¡dS)Nrfrqér|rz)r‚T©Úsort©Únameç@çð?r{©Úindexr‡)rzr{)
rr}r~r{ÚmeanrgÚIndexrtÚassert_series_equalÚassert_frame_equal)    rAr‚r%r€rYr4rnr‹rZr
r
r Útest_groupby_extension_aggûsz&TestGroupby.test_groupby_extension_aggc    Cs’t dddddddg|dœ¡}|jdddg}| d¡}| d¡ dd    i¡}| ||¡| d¡ d    ¡}| ||¡| d¡ ¡}| ||¡dS)
Nrfrqrƒr|rrr{rzÚfirst)rr}ÚilocZ    set_indexr~Zaggrr‘)rAr%r€rZrYr
r
r Útest_groupby_agg_extension    s
  z&TestGroupby.test_groupby_agg_extensionc    Csvt dddddddg|dœ¡}|jdddj ¡}tj|dd\}}tj|dd}tjd    d
g|d d }| ||¡dS) Nrfrqrƒr|rzFr„r†r‰rˆr{rŠ)    rr}r~r{rŒrgrrtrŽ)rAr%r€rYr4r‹rZr
r
r Útest_groupby_extension_no_sorts z*TestGroupby.test_groupby_extension_no_sortcCsb|| ¡}t dddddg|dœ¡}| d¡j t¡}tjdddddgdd}| ||¡dS)Nrfrƒr|rzrqr{r†)    rUrr}r~r{Z    transformÚlenrtrŽ)rAr%Zvalidr€rYrZr
r
r Ú test_groupby_extension_transform"s
z,TestGroupby.test_groupby_extension_transformc    Csvt dddddddg|dœ¡}|jddd |¡|jdddj |¡|jddd |¡|jdddj |¡dS)    Nrfrqrƒr|rzF)Z
group_keysr{)rr}r~Úapplyr{rz)rAr%Zgroupby_apply_opr€r
r
r Útest_groupby_extension_apply+s
z(TestGroupby.test_groupby_extension_applyc    Cs–t dddddddg|dœ¡}| d¡j dd„¡}tj|jjddd    gj|jjddgj|jjd
d gjgtjdddgdd d d}|     ||¡dS)Nrfrqrƒr|r{cSs|jSr )r)rr
r
r r4rz9TestGroupby.test_groupby_apply_identity.<locals>.<lambda>rérér†rzrŠ)
rr}r~rzr—rtr’rrrŽ©rAr%r€rYrZr
r
r Útest_groupby_apply_identity2sýù    z'TestGroupby.test_groupby_apply_identityc Csrt dddddddg|dddddddgdœ¡}| d¡ ¡j}|jjrVt ddg¡}n t dg¡}t     ||¡dS)Nrfrqrƒ)r{rzÚCr{rzr)
rr}r~ÚsumÚcolumnsrZ _is_numericrrjZassert_index_equalr›r
r
r Útest_in_numeric_groupby@sýÿ z#TestGroupby.test_in_numeric_groupbyÚ    min_countré
c    Cs¼t dddddddg|dœ¡}| d¡j|d}|dkrxtjdtjdddgd    d
itjdddgdd d }t ||¡n@tjdtjtjgdd    d
itjdddgdd d }t ||¡dS) Nrfrqrƒr|r{)r¡rrzZInt64rr†)r‹)    rr}r~ržrrrjrr)rAr%r¡r€rYrZr
r
r Útest_groupby_sum_mincountQsþþz%TestGroupby.test_groupby_sum_mincountN)r(r)r*Ú__doc__rrQr_Ú parametrizerr“r”r–r˜rœr r£r
r
r
r ryës
 
        ryc@seZdZdd„ZdS)ÚTestNumericReducecCs€|dkr(t||ƒƒ}t| d¡|ƒƒ}n&t||ƒ|d}t| d¡|ƒ|d}t |¡r`tj}n|dkrpt|ƒ}t ||¡dS)NÚcountÚfloat64©Úskipna)ÚminÚmax)    ÚgetattrrSrÚisnanrrÚboolrjZassert_almost_equal©rArBrCrªrYrZr
r
r Ú check_reduceds 
zTestNumericReduce.check_reduceN)r(r)r*r±r
r
r
r r¦csr¦c@s eZdZdS)ÚTestBooleanReduceNr'r
r
r
r r²ssr²c@s eZdZdS)Ú TestPrintingNr'r
r
r
r r³wsr³c@s eZdZdS)Ú TestUnaryOpsNr'r
r
r
r r´{sr´c@s.eZdZdd„Zej dddg¡dd„ƒZdS)    ÚTestAccumulationcCsTt||ƒ|d}tt | d¡¡|ƒ|d}tj||dd|dkrPt|ƒsPt‚dS)Nr©r¨F)Z check_dtype)ZcumminZcummax)r­rrtrSrjrŽrrur°r
r
r Úcheck_accumulate€s
z!TestAccumulation.check_accumulaterªTFcCsdSr r
)rArZall_numeric_accumulationsrªr
r
r Útest_accumulate_series_raises‡sz.TestAccumulation.test_accumulate_series_raisesN)r(r)r*r¶rQr_r¥r·r
r
r
r rµsrµc@s eZdZdS)Ú TestParsingNr'r
r
r
r r¸Œsr¸c@s eZdZdS)Ú Test2DCompatNr'r
r
r
r r¹sr¹)Br¤ÚnumpyrrQZpandas.core.dtypes.commonrZpandasrZpandas._testingZ_testingrjZpandas.core.arrays.booleanrZpandas.tests.extensionrr Zfixturerrrrrrr r!r%ZBaseDtypeTestsr&ZBaseInterfaceTestsr+ZBaseConstructorsTestsr,ZBaseGetitemTestsr-ZBaseSetitemTestsr.ZBaseIndexTestsr/ZBaseMissingTestsr0ZBaseArithmeticOpsTestsr1ZBaseComparisonOpsTestsraZBaseReshapingTestsrbZBaseMethodsTestsrcZBaseCastingTestsrxZBaseGroupbyTestsryZBaseNumericReduceTestsr¦ZBaseBooleanReduceTestsr²ZBasePrintingTestsr³ZBaseUnaryOpsTestsr´ZBaseAccumulateTestsrµZBaseParsingTestsr¸ZDim2CompatTestsr¹r
r
r
r Ú<module>s\    
 
 
 
 
 
 
 
 
<5x