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
U
®ý°dN2ã
@sêddlZddlZddlmZddlmZejddgddd„ƒZejdd    gdd
d „ƒZ    d d „Z
ej   dddg¡dd„ƒZ ej   deddddgiƒedddddgiƒfedddgdddgdœƒeddddgiƒfg¡dd„ƒZej   dejddgddgdœd gd!ejd"d#gddgdœd gd!d$fejddgd%d&gddgd'œd d(gd!ejd"d#gd%d&gddgd'œd d(gd!d)fg¡d*d+„ƒZd,d-„Zej   dddg¡d.d/„ƒZej   dddg¡d0d1„ƒZd2d3„Zej   ded4d5d6gd7d8d9gd:œƒed4d5d6gd7d8d;gd:œƒd<fed4d5d6gd7d8d9gd:œƒed d d gd=d=d=gd:œƒd>fg¡d?d@„ƒZdAdB„ZdCdD„Zej   dEdFdGg¡dHdI„ƒZej   dJdKdLdMg¡dNdO„ƒZdPdQ„ZdRdS„ZdTdU„Zej   dVdWdXg¡dYdZ„ƒZd[d\„Zd]d^„Zd_d`„Z dadb„Z!dcdd„Z"dedf„Z#dS)géN)Ú    DataFrameTF)ÚparamscCs|jS©N©Úparam©Úrequest©r    ú`d:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\pandas/tests/util/test_assert_frame_equal.pyÚby_blocks_fixturesr rÚSeriescCs|jSrrrr    r    r
Ú obj_fixture sr cKs$tj||f|Žtj||f|ŽdS)a4
    Check that two DataFrame equal.
 
    This check is performed commutatively.
 
    Parameters
    ----------
    a : DataFrame
        The first DataFrame to compare.
    b : DataFrame
        The second DataFrame to compare.
    kwargs : dict
        The arguments passed to `tm.assert_frame_equal`.
    N)ÚtmÚassert_frame_equal)ÚaÚbÚkwargsr    r    r
Ú_assert_frame_equal_bothsrÚ
check_likec    Cs˜tdddgdddgdœdd    d
gd }tdddgdddgdœd
d    dgd }|s„|›d }tjt|d tj||||dW5QRXnt||||ddS)Néééééé©ÚAÚBrrÚc©Úindexz.index are different©Úmatch©rÚobj)rÚpytestÚraisesÚAssertionErrorrrr)rr Údf1Údf2Úmsgr    r    r
Ú#test_frame_equal_row_order_mismatch%s$$
r+zdf1,df2rrrrrrrrc    Cs8|›d}tjt|dtj|||dW5QRXdS)Nz are differentr!©r$©r%r&r'rr)r(r)r r*r    r    r
Útest_frame_equal_shape_mismatch2s
r.z df1,df2,msgÚl1Úl2)rrrrgð?g@zDataFrame\.index are differentgÍÌÌÌÌÌ@gø?)rrrrz$MultiIndex level \[0\] are differentc    CsLd|i}|r8tjt|dtj||f|ŽW5QRXntj||f|ŽdS)NÚcheck_index_typer!r-)r(r)r*r1rr    r    r
Ú%test_frame_equal_index_dtype_mismatch@s
r2c    Cs~ddg}t|d}t|d}d|i}|d d¡|d<|rjd}tjt|dtj||f|ŽW5QRXntj||f|ŽdS)NZcol1Zcol2)ÚcolumnsÚ check_dtypeÚint64z)Attributes of DataFrame\..* are differentr!)rÚastyper%r&r'rr)r4r3r(r)rr*r    r    r
Útest_empty_dtypes_s
 
r7c    Csˆ|›d|›d}tdddgdddgd    œd
d d gd }tdddgdddgd    œd
d dgd }tjt|dtj||||dW5QRXdS)Nz\.index are different
 
zÂ\.index values are different \(33\.33333 %\)
\[left\]:  Index\(\['a', 'b', 'c'\], dtype='object'\)
\[right\]: Index\(\['a', 'b', 'd'\], dtype='object'\)
At positional index 2, first diff: c != drrrrrrrrrrrÚdr!r#©rr%r&r'rr©rr r*r(r)r    r    r
Útest_frame_equal_index_mismatchos
$$r;c    Csˆ|›d|›d}tdddgdddgd    œd
d d gd }tdddgdddgdœd
d d gd }tjt|dtj||||dW5QRXdS)Nz\.columns are different
 
zŒ\.columns values are different \(50\.0 %\)
\[left\]:  Index\(\['A', 'B'\], dtype='object'\)
\[right\]: Index\(\['A', 'b'\], dtype='object'\)rrrrrrrrrrr)rrr!r#r9r:r    r    r
Ú!test_frame_equal_columns_mismatchs
$$r<c    Csx|}|›d|›d}tdddgdddgd    œƒ}tdddgddd
gd    œƒ}tjt|d tj||||d W5QRXdS) Nz2\.iloc\[:, 1\] \(column name="B"\) are different
 
zŒ\.iloc\[:, 1\] \(column name="B"\) values are different \(33\.33333 %\)
\[index\]: \[0, 1, 2\]
\[left\]:  \[4, 5, 6\]
\[right\]: \[4, 5, 7\]rrrrrrrér!©Z    by_blocksr$r9)r r r$r*r(r)r    r    r
Útest_frame_equal_block_mismatchŽs r?õáõàõäõéõèõë)rÚEue̊uÏ{obj}\.iloc\[:, 1\] \(column name="E"\) are different
 
{obj}\.iloc\[:, 1\] \(column name="E"\) values are different \(33\.33333 %\)
\[index\]: \[0, 1, 2\]
\[left\]:  \[é, Ã¨, Ã«\]
\[right\]: \[é, Ã¨, e̊\]ÚeuÈ{obj}\.iloc\[:, 0\] \(column name="A"\) are different
 
{obj}\.iloc\[:, 0\] \(column name="A"\) values are different \(100\.0 %\)
\[index\]: \[0, 1, 2\]
\[left\]:  \[á, Ã , Ã¤\]
\[right\]: \[a, a, a\]c    Cs<|j|d}tjt|dtj||||dW5QRXdS)Nr,r!r>)Úformatr%r&r'rr)r(r)r*r r r    r    r
Útest_frame_equal_unicodežs rIc    Csbtddddgidd}| t¡}d}tj||dd    tjt|d
tj||d d    W5QRXdS) NrrrrÚInt64©ÚdtypezAttributes of DataFrame\.iloc\[:, 0\] \(column name="a"\) are different
 
Attribute "dtype" are different
\[left\]:  Int64
\[right\]: int[32|64]F©r4r!T)rr6Úintrrr%r&r'©ÚleftÚrightr*r    r    r
Ú0test_assert_frame_equal_extension_dtype_mismatchÁs
ÿrRc    Csftdt dd¡gidd}| t¡}d}tj||ddtjt    |d    tj||d
dW5QRXdS) NrrrÚintervalrKzžAttributes of DataFrame\.iloc\[:, 0\] \(column name="a"\) are different
 
Attribute "dtype" are different
\[left\]:  interval\[int64, right\]
\[right\]: objectFrMr!T)
rÚpdZIntervalr6Úobjectrrr%r&r'rOr    r    r
Ú/test_assert_frame_equal_interval_dtype_mismatchÔs
ÿrVÚ right_dtypeZInt32r5cCs@tddddgidd}tddddgi|d}tj||dddS)    NrrrrrJrKFrM©rrr)rWrPrQr    r    r
Ú7test_assert_frame_equal_ignore_extension_dtype_mismatchçsrYrLztimedelta64[ns]zdatetime64[ns, UTC]z    Period[D]cCs0tdgi|d}tdgiƒ}tj||dddS)NrrKFrMrX)rLr(r)r    r    r
Ú4test_assert_frame_equal_datetime_like_dtype_mismatchïs     rZc    Csœtƒ}tƒjdd}t ||¡t ||¡tj||ddtj||ddtjtddt ||¡W5QRXtjtddt ||¡W5QRXdS)NF)Úallows_duplicate_labels©Z check_flagsz<Flagsr!)rZ    set_flagsrrr%r&r'©rPrQr    r    r
Útest_allows_duplicate_labelsýs  r^cCs6tdddggdddgdddgd}tj||d    d
dS) NrrrZfooÚbaré*Útest)r3r T©rrX)Zdfr    r    r
Ú+test_assert_frame_equal_columns_mixed_dtype s"rccCs$|ddg|d}tj||dddS)NrrrKT©Ú check_exact)rÚ assert_equal)Úframe_or_seriesÚany_numeric_ea_dtyper$r    r    r
Ú test_frame_equal_extension_dtypesriÚindexer)rr)rrc    Csl|df}|ddg||dd}|ddg||dd}d}tjt|dtj||dd    d
W5QRXdS) Nr5rrrrKzI(Series|DataFrame.iloc\[:, 0\] \(column name="0"\) classes) are differentr!TF)rer4)r%r&r'rrf)rgrhrjZdtypesZobj1Úobj2r*r    r    r
Útest_frame_equal_mixed_dtypess rlc    CsXttjgddd}ttjddddd}tjtddtj||d    d
W5QRXdS) NrUrKrrr)ÚstartÚstopÚstepzDataFrame.index are differentr!Trb)    rrTZIndexZ
RangeIndexr%r&r'rr)r(r)r    r    r
Ú4test_assert_frame_equal_check_like_different_indexes"srpc    Csvtddgddggƒ}d|j_tddgddggƒ}d|j_tj||ddtjtdd    tj||ddW5QRXdS)
NrrrrFTr\r[r!)rÚflagsr[rrr%r&r'r]r    r    r
Ú0test_assert_frame_equal_checking_allow_dups_flag*srrc
CsŒtdgdgdggtj t dddg¡t dddg¡g¡d}tdgdgdggtj t dddg¡t dddg¡g¡d}tj||dd    dS)
NrrrrrrrTrb)rrTZ
MultiIndexZ from_arraysZ Categoricalrrr]r    r    r
Ú3test_assert_frame_equal_check_like_categorical_midx7s"þÿþ    þÿþ    rsc    Csdtdtjtjdgddiƒ}tdtjddgddiƒ}d}tjt|dt ||¡W5QRXdS)NrrrJrKzGDataFrame.iloc\[:, 0\] \(column name="a"\) NA mask values are differentr!©    rrTr ZNAr%r&r'rr©r(r)r*r    r    r
Ú>test_assert_frame_equal_ea_column_definition_in_exception_maskNs
rvc    Cstdtjtjdgddiƒ}tdtjtjdgddiƒ}d}tjt|dt ||¡W5QRXtjt|dtj||dd    W5QRXdS)
NrrrJrKrú?DataFrame.iloc\[:, 0\] \(column name="a"\) values are differentr!Trdrtrur    r    r
Ú9test_assert_frame_equal_ea_column_definition_in_exceptionXsrxc    Csftdt d¡t d¡giƒ}tdt d¡t d¡giƒ}d}tjt|dt ||¡W5QRXdS)Nrz
2019-12-31z
2020-12-31rwr!)rrTÚ    Timestampr%r&r'rrrur    r    r
Ú!test_assert_frame_equal_ts_columnes
rz)$r%ZpandasrTrZpandas._testingZ_testingrZfixturer r rÚmarkZ parametrizer+r.Z from_recordsr2r7r;r<r?rIrRrVrYrZr^rcrirlrprrrsrvrxrzr    r    r    r
Ú<module>sœ  
 
 
$*þþ
ýÿÿùøþ
 
 
 
ý ýõþ
 
 
ýþ