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
U
¬ý°d    Gã@s®ddlmZddlmZddlmZddlZddlZddlm    Z    m
Z
ddl m Z m Z mZmZmZmZmZddlmZddlmZddlmmZddlmZmZmZm Z m!Z!ej"d    d
„ƒZ#Gd d „d ƒZ$Gd d„dƒZ%ej& 'de (ddddddddgd¡ )ej*¡e (ddddddddgd¡ )ej*¡e (ddddddddgd¡ )ej*¡gdge (ej+dej*dd¡e (ej+dej*dd¡gdgg¡dd„ƒZ,Gdd„dƒZ-dd„Z.d d!„Z/dS)"é)Ú defaultdict)Údatetime)ÚproductN)Úis_ci_environmentÚis_platform_windows)ÚNAÚ    DataFrameÚ
MultiIndexÚSeriesÚarrayÚconcatÚmerge)Ú    safe_sort)Ú_decons_group_indexÚget_group_indexÚis_int64_overflow_possibleÚlexsort_indexerÚnargsortcCsšd\}}}ttj |||df¡tdƒd}|jdd|d<tj t|ƒ¡}|j|     ¡}|j
dd…  ¡d    g|_
t  t|ƒ¡|_ |d    d9<||fS)
N)éüÿÿéiéÚABCDEFG©Úcolumnsé©ZaxisÚleftéÿÿÿÿÚright)rÚnpÚrandomÚrandintÚlistÚsumÚ permutationÚlenÚilocÚcopyrÚtolistÚarangeÚindex)ÚlowÚhighÚnrÚir©r/úPd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\pandas/tests/test_sorting.pyÚ
left_right"s
 r1c@s¦eZdZejjdd„ƒZdd„Zej dddg¡dd    „ƒZ    ej d
d d e
e d dƒƒe
e d ƒƒe
e ddƒƒgd de
e d ƒƒe
e ddƒƒe
e d dƒƒgdd e
e dddƒƒe
e d ƒƒe
e ddƒƒgdde
e d ƒƒe
e ddƒƒe
e dddƒƒgg¡dd„ƒZ ej dd d e
e d dƒƒe
e d ƒƒe
e ddƒƒe
gd de
e d ƒƒe
e ddƒƒe
e d dƒƒe
gdd e
e dddƒƒe
e d ƒƒe
e ddƒƒe
gdde
e d ƒƒe
e ddƒƒe
e dddƒƒe
gd d e
e d dƒƒe
e d ƒƒe
e ddƒƒdd„gd de
e d ƒƒe
e ddƒƒe
e d dƒƒdd„gdd e
e dddƒƒe
e d ƒƒe
e ddƒƒdd„gdde
e d ƒƒe
e ddƒƒe
e dddƒƒdd„gg¡dd„ƒZ dS) Ú TestSortingc Csvt t d¡t d¡t d¡f¡}t d¡}t||||||||tj d¡dœ    ƒ}| ddddd    d
d d g¡}| d d d
d    ddddg¡}| ¡d }| ¡d }|j     ¡\}}    t
  |j|¡|j     d¡\}}    t
  |j|¡t t t|ddddd    d
d d gjƒƒ}
t |
¡}
| |
¡ ¡d } |  ¡D]<\} } || || ddd…ksFt‚|| | kst‚qt|ƒt|ƒksrt‚dS)NéèiôiÄ    )    ÚAÚBÚCÚDÚEÚFÚGÚHÚvaluesr4r5r6r7r8r9r:r;r<rr)rZ concatenater)rr ÚrandnÚgroupbyr#r*Z    sortlevelÚtmÚassert_index_equalr"ÚmapÚtupler<ÚcomZasarray_tuplesafeÚitemsÚAssertionErrorr%)Úselfr5r4ÚdfZlgZrgrrZ    exp_indexÚ_ZtupsÚexpectedÚkÚvr/r/r0Útest_int64_overflow2s:"
 
÷ÿ  $
 zTestSorting.test_int64_overflowcCsFtdƒ}t ||||dœ¡}| ddddg¡}t|ƒt|ƒksBt‚dS)NiE×)ÚaÚbÚcÚdrMrNrOrP)ÚrangerÚ    from_dictr>r%rE)rFr<ÚdataZgroupedr/r/r0Ú'test_int64_overflow_groupby_large_rangeZsz3TestSorting.test_int64_overflow_groupby_large_rangeÚaggZmeanZmediancs~tj ddd¡}tj t|ƒt|ƒd¡}t |||f¡}tj t|ƒ¡}||}t|tdƒd}tj     dt|ƒ¡d\|d    <|d
<| 
tdƒ¡}t |j j ƒs¤t‚ttƒttƒ}}ttt|ƒ|d    |d
ƒD]&\}}    }
|| |    ¡|| |
¡qÐt|ƒt|ƒkst‚tj| ¡tdƒd } ‡fd d „} t | | ¡ƒ| | ¡ƒf¡j}t|d    d
g| d ¡} t t|ˆƒƒ| ¡dS)Niðÿÿi)i€ééZabcderéé
ÚjimÚjoe)Únamescstjtttˆƒ|ƒddS)NZf8©Zdtype)rZfromiterrAÚgetattr)rM©rUr/r0Ú<lambda>zózKTestSorting.test_int64_overflow_groupby_large_df_shuffled.<locals>.<lambda>)rr*)rr r!Úchoicer%Zvstackr$rr"r=r>rZgrouperÚshaperErÚziprArBÚappendr    Ú from_tuplesÚkeysr<ÚTZ
sort_indexr?Úassert_frame_equalr^)rFrUÚarrr.rGZgrrZr[ÚkeyrMrNÚmiÚfÚresr/r_r0Ú-test_int64_overflow_groupby_large_df_shuffledas&"$  z9TestSorting.test_int64_overflow_groupby_large_df_shuffledzorder, na_position, expTÚlastrVéiénÚfirstFéhrWrcCsPtjgdttdƒƒtjgdg}t|||d}t |tj|tjd¡dS)NrVéd)ZordersÚ na_positionr])    rÚnanr"rQrr?Úassert_numpy_array_equalr Úintp)rFÚorderrvÚexprgÚresultr/r/r0Útest_lexsort_indexer€s&z TestSorting.test_lexsort_indexerz ascending, na_position, exp, boxcCstj|ddS©NÚOr]©rr ©Úxr/r/r0r`½razTestSorting.<lambda>cCstj|ddSr~r€rr/r/r0r`ÃracCstj|ddSr~r€rr/r/r0r`ÉracCstj|ddSr~r€rr/r/r0r`ÏracCsR|tjgdttdƒƒtjgdƒ}t|d||d}tj|t |¡dddS)NrVruÚ    mergesort)ÚkindÚ    ascendingrvF)Z check_dtype)rrwr"rQrr?rxr )rFr…rvr{ÚboxrDr|r/r/r0Ú test_nargsortžs7(
ÿzTestSorting.test_nargsortN)Ú__name__Ú
__module__Ú __qualname__ÚpytestÚmarkÚslowrLrTÚ parametrizeror"rQr}r‡r/r/r/r0r21sŽ
'
&ý&ý(ý(ýðþ
&ü&ü(ü(ü&ü&ü(ü(üÕþ5r2c@s’eZdZdd„Zejjdd„ƒZejjej ddddd    g¡d
d „ƒƒZ    ejjd d „ƒZ
ejjej ddddd    g¡ej dddg¡dd„ƒƒƒZ dS)Ú    TestMergecCsbttj dd¡tdƒdgd}ttj dd¡tdƒdgd}t||dd}t|ƒd    ks^t‚dS)
Nr3rZABCDEFZG1rZG2Úouter©ÚhowiÐ)rrr r=r"r r%rE)rFZdf1Zdf2r|r/r/r0Útest_int64_overflow_outer_mergeæs  z)TestMerge.test_int64_overflow_outer_mergecCsˆ|\}}t||dd}t|ƒt|ƒks*t‚tj|d|d dd|jdd…dd…fjdd    }tj|d|dd|jdks„t‚dS)
Nrr‘rrF)Z check_nameséþÿÿÿrr)r r%rEr?Zassert_series_equalr&r#Úname)rFr1rrÚoutr|r/r/r0Ú!test_int64_overflow_check_sum_colísz+TestMerge.test_int64_overflow_check_sum_colr’rrrÚinnerc    CsV|\}}t||dd}|j|j ¡ddt t|ƒ¡|_t     |t|||dd¡dS)Nrr‘T)Zinplace©r’Úsort)
r Ú sort_valuesrr(rr)r%r*r?ri)rFr1r’rrr–r/r/r0Útest_int64_overflow_how_mergeøs
z'TestMerge.test_int64_overflow_how_mergecCsX|\}}t||ddd}t |||j ¡¡t||ddd}t |||j ¡¡dS)NrFr™)r r?rirr()rFr1rrr–r/r/r0Ú$test_int64_overflow_sort_false_orders
z.TestMerge.test_int64_overflow_sort_false_orderršTFcCs&d\}}}ttj |||df¡ d¡tdƒd}| tj¡j    }t
|ƒsJt ‚t ||gdd}ttj |||ddf¡ d¡tdƒd}tj  t|ƒ|¡}    t |||j|    gdd}tj t|ƒ¡|d    <tj t|ƒ¡|d
<tj t|ƒ¡}    |j|     ¡}t t|ƒ¡|_tj t|ƒ¡}    |j|     ¡}t t|ƒ¡|_ttƒttƒ}
} | tdƒ¡ ¡D]\} } |
|  | d    ¡qV| tdƒ¡ ¡D]\} } | |  | d
¡q†g}|
 ¡D]B\}}|  |tjg¡}t||ƒD]\}}| |||f¡qҐq°|  ¡D]4\}}||
krü|D]}| |tj|f¡qqüd d „}t|tdƒd    d
gd}||ƒ}|d     ¡|d
 ¡|d     ¡|d
 ¡@tjt|ƒd ddœ}||}||| ¡ƒ}| ¡|  ¡AsÒ|dksÒt ‚t!||||d}|rtdƒ}t" #|| ¡||j$|dd¡t" #|||ƒ¡dS)N)rrirÚint64rrT)Z ignore_indexrXrrcSs$| |j ¡¡}t t|ƒ¡|_|S©N)r›rr(rr)r%r*)rGr/r/r0ÚalignTszCTestMerge.test_int64_overflow_one_to_many_none_match.<locals>.alignÚboolr])rrr˜rrr™rƒ)r„)%rrr r!Úastyper"Úapplyr
Znuniquer<rrEr rbr%r&r=r$r'r)r*rZ    set_indexZiterrowsrerDÚgetrwrZnotnaZonesÚallÚanyr r?rir›)rFr’ršr+r,r-rrcrr.ZldictZrdictÚidxÚrowÚvalsrJZlvalÚrvalÚlvÚrvr r–ZjmaskÚmaskÚframernZkcolsr/r/r0Ú*test_int64_overflow_one_to_many_none_match s†
þ þþÿÿ 
þÿÿ 
 
ü 
ÿz4TestMerge.test_int64_overflow_one_to_many_none_matchN) rˆr‰rŠr“r‹rŒrr—rŽrœrr¯r/r/r/r0rås
 
 
 
rzcodes_list, shaperrXérurWrV)rWrVéé'r])r²r²cCs>t||ddd}t||ƒ}t||ƒD]\}}t ||¡q$dS)NT)ršZxnull)rrrdr?rx)Z
codes_listrcZ group_indexZ codes_list2rMrNr/r/r0Ú test_deconsss
r³c @sžeZdZej ddddddgdddddggedƒejedƒe    d    ggggg¡d
d „ƒZ
ej d d dg¡ej dddddddddgddddddddgggggg¡dd„ƒƒZ ejj e ƒoºeƒdddd„ƒZej ddd„eg¡dd„ƒZdd„Zdd„Zej d dd!ed"gdddgded#gddddgddged$gg¡d%d&„ƒZej ddddgdddggddejdgdddejggg¡d'd(„ƒZej d d dg¡d)d*„ƒZd!S)+Ú TestSafeSortzarg, expr°rrXrrWZbaaacbZaaabbcr]cCs"t|ƒ}t |¡}t ||¡dSrŸ)rrr r?rx)rFÚargr{r|rIr/r/r0Útest_basic_sorts    
zTestSafeSort.test_basic_sortÚverifyTFzcodes, exp_codesrc    Csbdddddg}t dddddg¡}t||d|d\}}tj|tjd}t ||¡t ||¡dS)    Nr°rrXrrWT©Úuse_na_sentinelr·r]©rr rryr?rx)    rFr·ÚcodesZ    exp_codesr<rIr|Ú result_codesÚexpected_codesr/r/r0Ú
test_codess    ÿ
 zTestSafeSort.test_codeszRIn CI environment can crash thread with: Windows fatal exception: access violation)Úreasonc    Cs„dddddg}t dddddg¡}ddddddddg}t||d    d
\}}tjdd d dddd dgtjd }t ||¡t ||¡dS) Nr°rrXrrWéeéfécT)r¹rr]rº)rFr<rIr»r|r¼r½r/r/r0Útest_codes_out_of_bound°s  z$TestSafeSort.test_codes_out_of_boundr†cCstj|tdS)Nr])rr Úobjectrr/r/r0r`ÀrazTestSafeSort.<lambda>cCsF|ddddddgƒ}t|ƒ}tjddddddgtd}t ||¡dS)NrNrrrMr])rrr rÄr?rx)rFr†r<r|rIr/r/r0Útest_mixed_integerÀszTestSafeSort.test_mixed_integercCs†tjddddgtd}dddddddg}t||ƒ\}}tjddddgtd}tjdddddddgtjd}t ||¡t ||¡dS)    NrNrrrMr]rXr°r)rr rÄrryr?rx)rFr<r»r|r¼rIr½r/r/r0Útest_mixed_integer_with_codesÇs z*TestSafeSort.test_mixed_integer_with_codesc    CsFtjddt ¡ddgtd}d}tjt|dt|ƒW5QRXdS)NrrXrr°r]z,'[<>]' not supported between instances of .*©Úmatch)    rr rÚnowrÄr‹ÚraisesÚ    TypeErrorr)rFrjÚmsgr/r/r0Útest_unsortableÐszTestSafeSort.test_unsortablezarg, codes, err, msgNz"Only list-like objects are allowedzOnly list-like objects or Nonezvalues should be uniquec    Cs*tj||dt||dW5QRXdS)NrÇ)r<r»)r‹rÊr)rFrµr»ÚerrrÌr/r/r0Útest_exceptions×s    zTestSafeSort.test_exceptionscCs0t|dd}t|ƒ}t|dd}t ||¡dS)NÚInt64r])r rr?Úassert_extension_array_equal)rFrµr{rMr|rIr/r/r0Útest_extension_arrayãs  z!TestSafeSort.test_extension_arraycCsttdddgdd}t|ddddgd|d    \}}tdddgdd}tjddddgtjd}t ||¡t ||¡dS)
Nrr°rXrÐr]rrTr¸)r rrryr?rÑrx)rFr·rMr|r»Zexpected_valuesr½r/r/r0Útest_extension_array_codesìs  z'TestSafeSort.test_extension_array_codes)rˆr‰rŠr‹rŒrŽr"rr rÄr¶r¾ZskipifrrrÃrÅrÆrÍrËÚ
ValueErrorrÏrwrÒrÓr/r/r/r0r´sPýþ
&þþ 
þ
 
    
ýþ
.ÿ
r´cCsDtjd|ddgtd}t|ƒ}tjddd|gtd}t ||¡dS)NrNrMr])rr rÄrr?rx)Z nulls_fixturer<r|rIr/r/r0Útest_mixed_str_nullösrÕcCsltddttgdd}ddddg}t ||g¡}t|ƒ}t tddttgddddddgg¡}t ||¡dS)NrXrrÐr]r°)r
rr    Z from_arraysrr?r@)Zarr1Zarr2Zmidxr|rIr/r/r0Útest_safe_sort_multiindexýs ÿrÖ)0Ú collectionsrrÚ    itertoolsrÚnumpyrr‹Z pandas.compatrrZpandasrrr    r
r r r Zpandas._testingZ_testingr?Zpandas.core.algorithmsrZpandas.core.commonÚcoreÚcommonrCZpandas.core.sortingrrrrrZfixturer1r2rrŒrŽZtiler¢ržr)r³r´rÕrÖr/r/r/r0Ú<module>sF   $          
5"""ýú
þû÷þ
g