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
U
®ý°d'Úã@s&ddlZddlZddlZddlZddlZddlmZmZm    Z    m
Z
m Z ddl m ZddlmZejddddgdd    d
„ƒZGd d „d ƒZej d ddidddœg¡ej dddgddgg¡dd„ƒƒZdd„Zej d dddœdddœdddœg¡dd „ƒZd!d"„Zd#d$„Zd%d&„Zd'd(„Zd)d*„ZdS)+éN)ÚIndexÚ    TimedeltaÚ
merge_asofÚread_csvÚ to_datetime)Ú
MergeErrorÚsÚmsÚusÚns)ÚparamscCs|jS)z-
    Resolution for datetimelike dtypes.
    )Úparam)Úrequest©rúad:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\pandas/tests/reshape/merge/test_merge_asof.pyÚunitsrc@s”eZdZd•dd„Zejdd„ƒZejdd„ƒZejdd    „ƒZejd
d „ƒZ    ejd d „ƒZ
ejdd„ƒZ dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd„Zdd„Zd d!„Zd"d#„Zd$d%„Zd&d'„Zd(d)„Zd*d+„Zd,d-„Zd.d/„Zd0d1„Zd2d3„Zd4d5„Zd6d7„Zd8d9„Z d:d;„Z!d<d=„Z"d>d?„Z#d@dA„Z$dBdC„Z%ej&j'dDe(dEƒe)j*dFdGgdHdIgdJdKdL„ƒZ+dMdN„Z,dOdP„Z-dQdR„Z.dSdT„Z/dUdV„Z0dWdX„Z1dYdZ„Z2d[d\„Z3d]d^„Z4d_d`„Z5dadb„Z6dcdd„Z7dedf„Z8dgdh„Z9didj„Z:dkdl„Z;dmdn„Z<dodp„Z=dqdr„Z>dsdt„Z?dudv„Z@dwdx„ZAdydz„ZBej&j'd{d|d}„d~d}„gdd€gdJej& 'dd‚dƒg¡d„d…„ƒƒZCd†d‡„ZDdˆd‰„ZEdŠd‹„ZFdŒd„ZGdŽd„ZHdd‘„ZId’d“„ZJd”S)–Ú TestAsOfMergeFcCsD|ddd|ƒ}t|ƒ}|r4|jddgddjdd    }t|jƒ|_|S)
NZreshapeÚmergeÚdataÚtimeÚtickerÚlast)ZkeepT©Údrop)rZdrop_duplicatesÚ reset_indexrr)ÚselfÚdatapathÚnameÚdedupeÚpathÚxrrrÚ    read_datasÿ zTestAsOfMerge.read_datacCs | |d¡S)Nz
trades.csv©r!©rrrrrÚtrades&szTestAsOfMerge.tradescCs|j|dddS)Nz
quotes.csvT©rr"r#rrrÚquotes*szTestAsOfMerge.quotescCs | |d¡S)Núasof.csvr"r#rrrÚasof.szTestAsOfMerge.asofcCs | |d¡S)Nz tolerance.csvr"r#rrrÚ    tolerance2szTestAsOfMerge.tolerancecCs | |d¡S)Nzallow_exact_matches.csvr"r#rrrÚallow_exact_matches6sz!TestAsOfMerge.allow_exact_matchescCs | |d¡S)Nz%allow_exact_matches_and_tolerance.csvr"r#rrrÚ!allow_exact_matches_and_tolerance:sz/TestAsOfMerge.allow_exact_matches_and_tolerancecCs‚t dddgdddgdœ¡}t ddd    d
d gddd    d
d gd œ¡}t dddgdddgdd    d gd œ¡}t||dd}t ||¡dS)údoc-string examplesééé
ÚaÚbÚc©r0Úleft_valéééé©r0Ú    right_val©r0r4r:©ÚonN©ÚpdÚ    DataFramerÚtmÚassert_frame_equal©rÚleftÚrightÚexpectedÚresultrrrÚtest_examples1>s$ÿzTestAsOfMerge.test_examples1c Cs²|dkrt d¡tjtdddddgƒ d|›d¡ddd    d    d
gd d d d dgdddddgdœddddgd}tjtddddddddgƒ d|›d¡d    dddd    d
d    dgdd dddd dd!gd"d#d$d%d"d&d'd(gd)œddd*d+gd}t||ddd,t||ddtd-ƒd.tjtdddddgƒ d|›d¡ddd    d    d
gd d d d dgdddddgtj    dtj    tj    tj    gtj    d$tj    tj    tj    gd/œddddd*d+gd}t||ddtd0ƒd1d2}t
  ||¡d3S)4r,rzNThis test is invalid for unit='s' because that would round the trades['time']]ú20160525 13:30:00.023z20160525 13:30:00.038ú20160525 13:30:00.048zM8[ú]ÚMSFTÚGOOGÚAAPL皙™™™ùI@ç\Âõ(††@çÂõ(\‡†@ç€X@éKé›éd)rrÚpriceÚquantityrrrVrW©Úcolumnsú20160525 13:30:00.030ú20160525 13:30:00.041ú20160525 13:30:00.049z20160525 13:30:00.072z20160525 13:30:00.075焆@ç\Âõ(üI@ç…ëQ¸þI@çÂõ(\X@gáz®GJ@ç=
×£p‡†@ç{®GáúI@ç=
×£pýI@çJ@çq=
×£€X@g×£p=
‡†@g¤p=
×J@)rrÚbidÚaskrfrg©r=ÚbyZ2ms©r=rir))rrrVrWrfrgÚ10msF©r=rir)r*N) ÚpytestÚskipr?r@rÚastyperrÚnpÚnanrArB)rrr$r&rFrGrrrÚtest_examples2Jsžÿûÿ
ø       ô
ñøÿ
õ ø
è
åûÿ
ø       òïúzTestAsOfMerge.test_examples2cCs†t dddgdddgdœ¡}t ddd    d
d gddd    d
d gd œ¡}t dddgdddgdd
tjgd œ¡}t||ddd}t ||¡dS)r,r-r.r/r0r1r2r3r5r6r7r8r9r;Úforward©r=Ú    directionN©r?r@rprqrrArBrCrrrÚtest_examples3£s$ÿzTestAsOfMerge.test_examples3cCs„t dddgdddgdœ¡}t ddd    d
d gddd    d
d gd œ¡}t dddgdddgdd
d gd œ¡}t||ddd}t ||¡dS)r,r-r.r/r0r1r2r3r5r6r7r8r9r;ÚnearestrtNr>rCrrrÚtest_examples4±s$ÿzTestAsOfMerge.test_examples4cCs$|}t||ddd}t ||¡dS)Nrrrh©rrArB©rr$r(r&rFrGrrrÚ
test_basic¿szTestAsOfMerge.test_basiccCsN|}|j d¡|_|j d¡|_|j d¡|_t||ddd}t ||¡dS)NÚcategoryrrrh)rrorrArBr{rrrÚtest_basic_categoricalÅs z$TestAsOfMerge.test_basic_categoricalcCsB|}| d¡}t||dddd}|j|_||j}t ||¡dS)NrTr)Ú
left_indexÚright_onri)Ú    set_indexrÚindexrYrArBr{rrrÚtest_basic_left_indexÎs
ÿ
z#TestAsOfMerge.test_basic_left_indexcCs0|}| d¡}t||dddd}t ||¡dS)NrTr)Úleft_onÚ right_indexri©rrrArBr{rrrÚtest_basic_right_indexÜs
ÿz$TestAsOfMerge.test_basic_right_indexcCs@| d¡}| d¡}| d¡}t||dddd}t ||¡dS)NrTr©rr…rir†r{rrrÚ!test_basic_left_index_right_indexås
 
 
ÿz/TestAsOfMerge.test_basic_left_index_right_indexc    CsF| ddg¡}| d¡}tjtddt||dddW5QRXdS)NrrVzleft can only have one index©ÚmatchT©rr…©rrmÚraisesrr©rr$r&rrrÚtest_multi_index_leftïs
z#TestAsOfMerge.test_multi_index_leftc    CsF| d¡}| ddg¡}tjtddt||dddW5QRXdS)Nrrfzright can only have one indexrŠTrŒrrrrrÚtest_multi_index_rightös
z$TestAsOfMerge.test_multi_index_rightc    CsH| d¡}| d¡}d}tjt|dt||ddddW5QRXdS)Nrz:Can only pass argument "left_on" OR "left_index" not both.rŠrVT)r„rr…r©rr$r&ÚmsgrrrÚtest_on_and_index_left_onýs
 
ÿz'TestAsOfMerge.test_on_and_index_left_onc    CsH| d¡}| d¡}d}tjt|dt||ddddW5QRXdS)Nrz<Can only pass argument "right_on" OR "right_index" not both.rŠrfT)r€rr…rr’rrrÚtest_on_and_index_right_ons
 
ÿz(TestAsOfMerge.test_on_and_index_right_oncCs&|}t||dddd}t ||¡dS)Nrr)r=Úleft_byÚright_byrzr{rrrÚtest_basic_left_by_right_bysÿz)TestAsOfMerge.test_basic_left_by_right_bycCsL|}||jdk}t||ddd}tj|j|jdkddgf<t ||¡dS)NrLrrrhrfrg)rrrprqÚlocrArB)rr$r(r&rFÚqrGrrrÚtest_missing_right_bys
z#TestAsOfMerge.test_missing_right_byc Cs`tjtdddddgƒdddddgdd    d    d
d    gd d d d dgdddddgdœdddddgd}tjtddddddgƒddddddgd
d    ddd    dgdd ddd d!gd d"d#d$d%d&gd'œdddd(d)gd}tjtdddddgƒdddddgdd    d    d
d    gd d d d dgdddddgtjd d dtjgtjd"d%d tjgd*œdddddd(d)gd}t||dddgd+}t ||¡dS),NrIú20160525 13:30:00.046rJú20160525 13:30:00.050rLrMrNÚARCAÚNSDQÚBATSrOrPrQrRrSrTrU©rrÚexchrVrWrrr¢rVrWrXrZr[ú20160525 13:30:00.045r\ç®Gáz„†@r^r_r]r`rbrcrdrare©rrr¢rfrgrfrg©rrr¢rVrWrfrgrh©r?r@rrprqrrArB©rr$r&rFrGrrrÚ test_multiby!sjûÿ        ó ðúÿ
ò ïûÿ        ñîzTestAsOfMerge.test_multibyc Cs`tjtdddddgƒdddddgdd    d    d
d    gd d d d dgdddddgdœdddddgd}tjtddddddgƒddddddgd
d    ddd    dgdd ddd d!gd d"d#d$d%d&gd'œdddd(d)gd}tjtdddddgƒdddddgdd    d    d
d    gd d d d dgdddddgtjd d dtjgtjd"d%d tjgd*œdddddd(d)gd}t||dddgd+}t ||¡dS),NrIrœrJrrr-r5ržrŸr rOrPrQrRrSrTrUr¡rrr¢rVrWrXrZr[r£r\r¤r^r_r]r`rbrcrdrarer¥rfrgr¦rhr§r¨rrrÚ test_multiby_heterogeneous_typesbsjûÿ        ó ðúÿ
ò ïûÿ        ñîz.TestAsOfMerge.test_multiby_heterogeneous_typesc    CsLtjtdƒddgtdƒddgtdƒddgtdƒddggddd    gd
 d¡}tjtd ƒddd gtd ƒddd gtdƒdddgtdƒdddggddd    dgd
 d¡}tjtdƒddd gtdƒddd gtdƒdddgtdƒdddggddd    dgd
 d¡}t||dddd    gd}t ||¡tjt    dd t||dddd    gdgdW5QRXdS)NZ20160602r-r0r5Z20160603r1rZk1Zk2rXZ20160502çð?ç@Z20160503g@g@ÚvalueTrˆz(left_by and right_by must be same lengthrŠ)rr…r–r—)
r?r@rrrrArBrmrŽrrCrrrÚtest_multiby_indexed£sd    üùø
ü
ùø
ü
ùø
ÿ ÿúz"TestAsOfMerge.test_multiby_indexedcCsH| |d¡}| |d¡}|j|ddd}t||ddd}t ||¡dS)    Nz    asof2.csvz trades2.csvz quotes2.csvTr%rrrh)r!rrArB)rrrFr$r&rGrrrÚ test_basic2Õs
  zTestAsOfMerge.test_basic2cCs>dd„}||ƒ}||ƒ}||ƒ}t||dd}t ||¡dS)NcSs ||jdkjdddjddS)NrLrr-)ZaxisTr)rrr©r rrrÚ<lambda>ßs
ÿþz0TestAsOfMerge.test_basic_no_by.<locals>.<lambda>rr<rz)rr$r(r&ÚfrFrGrrrÚtest_basic_no_byÝsÿzTestAsOfMerge.test_basic_no_byc    CsŠd}tjt|dt||ddddW5QRXtjtddt||ddgddW5QRXtjtddt||dd    W5QRXdS)
Nz6incompatible merge keys \[1\] .* must be the same typerŠrrfr)r„r€rizcan only asof on a key for leftrh)ri©rmrŽrrr’rrrÚtest_valid_join_keysìsz"TestAsOfMerge.test_valid_join_keyscCsLt ||g¡ ddg¡jdd}t||ddd}| |d¡}t ||¡dS)NrrTrrhr')r?ÚconcatÚ sort_valuesrrr!rArB)rrr$r&ršrGrFrrrÚtest_with_duplicatesøsÿþÿ z"TestAsOfMerge.test_with_duplicatescCszt dddgdddgdœ¡}t dddgdddgdœ¡}t||dd}t dddgdddgdddgdœ¡}t ||¡dS)    Nr-r6r5)Úkeyr4)r¹r:r¹r<)r¹r4r:r>©rÚdf1Údf2rGrFrrrÚtest_with_duplicates_no_onsÿz(TestAsOfMerge.test_with_duplicates_no_onc    Cs4d}tjt|dt||ddddW5QRXdS)Nz/allow_exact_matches must be boolean, passed foorŠrrÚfoo©r=rir*r´r’rrrÚtest_valid_allow_exact_matches sÿz,TestAsOfMerge.test_valid_allow_exact_matchesc    Cst||ddtdƒdt| ¡| ¡ddddd}tjt|dt||ddddW5QRXtjt|d t| ¡| ¡ddd    dW5QRXd
}tjt|dt||ddtdƒ dW5QRXtjt|d t| ¡| ¡ddd dW5QRXdS) NrrZ1srjr‚r-z6incompatible tolerance .*, must be compat with type .*rŠr«ztolerance must be positiveéÿÿÿÿ)rrrrmrŽrr’rrrÚtest_valid_tolerancesHûûÿûz"TestAsOfMerge.test_valid_tolerancec    Csà|jddd}|jddd}|jjr(t‚|jjr4t‚tjtddt||dddW5QRX| d¡}|jjstt‚|jjr€t‚tjtddt||dddW5QRX| d¡}|jjsÀt‚|jjsÌt‚t||ddddS)    NrF)Z    ascendingzleft keys must be sortedrŠrrhzright keys must be sorted)r·rZis_monotonic_increasingÚAssertionErrorrmrŽÚ
ValueErrorrrrrrÚtest_non_sortedAs  
 
  zTestAsOfMerge.test_non_sortedÚ tolerance_tsÚ1dayr-)Údaysrzdatetime.timedelta)ÚidscCs&t||dd|d}|}t ||¡dS)Nrrrjrz)rrÆr$r&r)rGrFrrrÚtest_toleranceXsÿzTestAsOfMerge.test_tolerancecCsˆt dddgdddgdœ¡}t ddd    d
d gddd    d
d gd œ¡}t dddgdddgdtjd gd œ¡}t||dddd}t ||¡dS)Nr-r.r/r0r1r2r3r5r6r8é r9r;rs©r=rur)rvrCrrrÚtest_tolerance_forwardds$ÿz$TestAsOfMerge.test_tolerance_forwardcCsˆt dddgdddgdœ¡}t ddd    d
d gddd    d
d gd œ¡}t dddgdddgdtjd gd œ¡}t||dddd}t ||¡dS)Nr-r.r/r0r1r2r3r5r6r8rËr9r;rxrÌrvrCrrrÚtest_tolerance_nearestqs$ÿz$TestAsOfMerge.test_tolerance_nearestc    Cs¸t tjtdƒddt d¡|dt d¡dœ¡}t tjtdƒddt d¡|dtdƒd    œ¡}t    ||d
t
d ƒd }t tjtdƒddt d¡|dt d¡td ƒdœ¡}t   ||¡dS)Nz
2016-01-02ÚDr.ÚUTC)ÚstartÚfreqÚperiodsÚtzr)ÚdateÚvalue1z
2016-01-01ZABCDE)rÕÚvalue2rÕz1 day©r=r)ZBCDEE)rÕrÖr×) r?r@Ú
date_rangerÚpytzÚtimezonerpZarangeÚlistrrrArB)rrrDrErGrFrrrÚtest_tolerance_tz~sHûøÿ ûøÿ û÷ÿ zTestAsOfMerge.test_tolerance_tzcCsˆt dddgdddgdœ¡}t dd    d
d d gdd    d
d d gd œ¡}t dddgdddgdd
tjgdœ¡}t||dddd}t ||¡dS)N皙™™™™ñ?g @gÍÌÌÌÌÌ%@r0r1r2r3r«ç@gffffff
@g@g'@r9r-r;rxçà?rÌrvrCrrrÚtest_tolerance_float©sÿ
ýÿz"TestAsOfMerge.test_tolerance_floatcCsF| d¡}| d¡}| d¡}t||dddtdƒd}t ||¡dS)NrTrrÇ)rr…rir))rrrrArB)rr$r&r)rFrGrrrÚtest_index_tolerance»s
 
 
úz"TestAsOfMerge.test_index_tolerancecCs&t||dddd}|}t ||¡dS)NrrFr¿rz)rr$r&r*rGrFrrrÚtest_allow_exact_matchesËsÿz&TestAsOfMerge.test_allow_exact_matchescCs†t dddgdddgdœ¡}t ddd    d
d gddd    d
d gd œ¡}t dddgdddgdd
d gd œ¡}t||dddd}t ||¡dS)Nr-r.r/r0r1r2r3r5r6r8rËr9r;rsF©r=rur*r>rCrrrÚ test_allow_exact_matches_forwardÒs$ÿÿz.TestAsOfMerge.test_allow_exact_matches_forwardcCs†t dddgdddgdœ¡}t ddd    d
d gddd    d
d gd œ¡}t dddgdddgdd    d gd œ¡}t||dddd}t ||¡dS)Nr-r.r/r0r1r2r3r5r6r8rËr9r;rxFrär>rCrrrÚ test_allow_exact_matches_nearestás$ÿÿz.TestAsOfMerge.test_allow_exact_matches_nearestcCs,t||ddtdƒdd}|}t ||¡dS)NrrZ100msFrl)rrrArB)rr$r&r+rGrFrrrÚ&test_allow_exact_matches_and_toleranceðsúz4TestAsOfMerge.test_allow_exact_matches_and_tolerancecCsæt tdgƒdgdœ¡}t tddgƒddgdœ¡}t||dd    }t tdgƒdgdgd
œ¡}t ||¡t||dd d }t tdgƒdgdgd
œ¡}t ||¡t||dd td ƒd}t tdgƒdgtjgd
œ¡}t ||¡dS)Nú2016-07-15 13:30:00.030Úbob©rÚusernameú2016-07-15 13:30:00.000r-r5©rÚversionrr<©rrërîF)r=r*rk©r=r*r))    r?r@rrrArBrrprqrºrrrÚ'test_allow_exact_matches_and_tolerance2þsPÿÿüÿ    ýÿ ýÿ ûýÿz5TestAsOfMerge.test_allow_exact_matches_and_tolerance2cCs„t tddgƒddgdœ¡}t tddgƒddgdœ¡}t||d    d
td ƒd }t tddgƒddgtjtjgd œ¡}t ||¡dS)NrèréZcharlierêrìr-r5rírFrkrðrï)    r?r@rrrrprqrArBrºrrrÚ'test_allow_exact_matches_and_tolerance30s<ÿüÿÿüÿ    ûÿ
ûÿ    z5TestAsOfMerge.test_allow_exact_matches_and_tolerance3cCsŠt dddgdddgdœ¡}t ddd    d
d gddd    d
d gd œ¡}t dddgdddgtjd
d gd œ¡}t||ddddd}t ||¡dS)Nr-r.r/r0r1r2r3r6ér7rËr9r;rsF©r=rur*r)rvrCrrrÚ.test_allow_exact_matches_and_tolerance_forwardUs$ÿúz<TestAsOfMerge.test_allow_exact_matches_and_tolerance_forwardcCsŠt dddgdddgdœ¡}t ddd    d
d gddd    d d gd œ¡}t dddgdddgtjd    d gdœ¡}t||ddddd}t ||¡dS)Nr-r.r/r0r1r2r3r6rór7rËr8r9r;rxFrôrvrCrrrÚ.test_allow_exact_matches_and_tolerance_nearestis$ÿúz<TestAsOfMerge.test_allow_exact_matches_and_tolerance_nearestc
CsÀt dddddgdddddgd    d
d d d gdœ¡}t dddddgdddddgdddddgdœ¡}t dddddgdddddgd    d
d d d gdtjdddgdœ¡}t||d    d
dd}t ||¡dS)Nr-r.r/é éÚXÚYÚZr0r1r2ÚdÚe©r0r1r4r7rËé©r0r1r:©r0r1r4r:rs©r=rirurvrCrrrÚtest_forward_by}s*   ýÿ   ýÿ   üÿ    zTestAsOfMerge.test_forward_byc
Cs¾t dddddgdddddgd    d
d d d gdœ¡}t dddddgdddddgdddddgdœ¡}t dddddgdddddgd    d
d d d gdddddgdœ¡}t||d    d
dd}t ||¡dS)Nr-r.r/r÷rørùrûrúr0r1r2rürýrþr7rËrÿrrrxrr>rCrrrÚtest_nearest_by›s*   ýÿ   ýÿ    üÿ    zTestAsOfMerge.test_nearest_byc Csútjtdddddgƒdddddgd    d
d d d gdœdddgd}tjtddddddddgƒddddddddgddddddddgd œddd!gd}t||ddd"}tjtdddddgƒdddddgd    d
d d d gdddddgd#œdddd!gd}t ||¡dS)$Nz20160525 13:30:00.020rZz20160525 13:30:00.040rz20160525 13:30:00.060r-r5r6rÞg333333ó?gÍÌÌÌÌÌô?gffffffö?gø?)rr¹rÖrr¹rÖrXz20160525 13:30:00.015z20160525 13:30:00.025z20160525 13:30:00.035z20160525 13:30:00.055z20160525 13:30:00.065gÍÌÌÌÌÌ@gš™™™™™@gffffff@g333333@rßgÍÌÌÌÌÌ@gš™™™™™@gffffff@)rr¹r×r×rh)rr¹rÖr×)r?r@rrrArBrºrrrÚ test_by_int¹s`ûÿ      õ òøÿ òïûÿ       ô
ñzTestAsOfMerge.test_by_intc
Csºtjdddddddgtdƒd    œd
d gd }tjd ddgdddgdœd dgd }| d ¡jdd}t||d d}tjtdƒdddddddgdddddddgdœd
d dgd }t ||¡dS)Ng
×£p=
@gHPüs×b?gáz®G!9@gÍÌÌÌÌ@u@gHáz®Ç>@gš™™™™C@gÞqŠŽäò?ÚABCDEFG)rVÚsymbolrrVrXçr«çY@ç-Cëâ6?ç{®Gáz„?皙™™™™©?)rVÚmpvr Trr<ZBGACEDF)rrVr ©r?r@rÜr·rrrArBrºrrrÚ test_on_floatös(þûþýú    zTestAsOfMerge.test_on_floatc    Csàt |¡j}tjdddddddgtdƒd    œd
d gd }||jƒ|_tjd dddgtdƒdœd dgd }||jƒ|_| d ¡jdd}t    ||d d}tjtdƒdddddddgtdƒdœd
d dgd }||jƒ|_t
  ||¡dS)Nr.r5érUéNéxéOr)r­rrr­rXréPé}Úxyzw)r­rGrGTrr<ÚBACEGDFZxxxxxyz)rr­rG) rpÚdtypeÚtyper?r@rÜr­r·rrrArB©rZany_real_numpy_dtyperr»r¼rGrFrrrÚtest_on_specialized_types, þ þ ýú z&TestAsOfMerge.test_on_specialized_typec Cs$t |¡j}tjdddddddgddd    dd    ddgtd
ƒd œd d dgd}||jƒ|_tjddddgdddd    gtdƒdœdd dgd}||jƒ|_| d¡jdd}t    ||dd d}tjtdƒddd    d    dddgdddddddgtj
dtj
tj
tj
ddgdœd d ddgd}||jƒ|_t   ||¡dS)Nr.r5rrUrrrr-r6r)r­r¹rrr¹r­rXrrrr)r­r¹rGrGTrrhrr Úy)rr¹r­rG) rprrr?r@rÜr­r·rrrqrArBrrrrÚtest_on_specialized_type_by_int3s4 ýú þ ü
ù     z-TestAsOfMerge.test_on_specialized_type_by_intc Cs4tjtdƒdddddddddg    ddddd    d
d d d g    dœdddgd}tjdddddddddg    dddddddddg    dddddddddg    dœdddgd}| d¡jdd }| d¡jdd }t||ddd!}tjtdƒdddddddddg    dddd
dd    d d d g    dddddddddg    d"œddddgd}t ||¡dS)#NZ    AAABBBCCCr-r5r6g®Gáz
@gÜׁsF
@g£¼
@g)\Âõ()@g®Gáz.)@g)@gfffff¢w@g33333£w@g¤w@)rr¢rVrr¢rVrXrr«r    ç@g@@r
r r gš™™™™™¹?gÐ?)r¢rVr r Trrh)rr¢rVr rrºrrrÚtest_on_float_by_intWsX÷ýðýú    ÷ ò
ïz"TestAsOfMerge.test_on_float_by_intc    Cspd}t dddgdddgdœ¡}t dd    d
d d gdd    d
d d gd œ¡}tjt|dt||ddW5QRXdS)Nú@Incompatible merge dtype, .*, both sides must have numeric dtyper-r.r/r0r1r2©r4r0r5r6r7r8©r:r0rŠr<©r?r@rmrŽrr©rr“rDrErrrÚ test_merge_datatype_error_raisess
$z.TestAsOfMerge.test_merge_datatype_error_raisesc
Cs|d}t dddgt dddg¡dœ¡}t dd    d
d d gt dd dd dg¡dœ¡}tjt|dt||ddW5QRXdS)NzHincompatible merge keys \[0\] .* both sides category, but not equal onesr-r.r/r0r1r2r!r5r6r7r8rùr"rŠr<)r?r@Ú CategoricalrmrŽrrr$rrrÚ,test_merge_datatype_categorical_error_raises™sÿÿ þÿz:TestAsOfMerge.test_merge_datatype_categorical_error_raisescCs`t dgdgt dg¡dœ¡}t||dddgd}t dgdgt dg¡dœ¡}t ||¡dS)Nr)r rÚzr rr(rh)r?r@r&rrArB)rÚdfrGrFrrrÚ:test_merge_groupby_multiple_column_with_categorical_column¬szHTestAsOfMerge.test_merge_groupby_multiple_column_with_categorical_columnÚfunccCs|S©Nrr°rrrr±´ózTestAsOfMerge.<lambda>cCst|ƒSr,)rr°rrrr±´r-ÚnumericÚdatetimeÚsiderDrEc    Csšd|›d}|ddtjgƒ}|dddgƒ}t |dddgd    œ¡}t |d
d d gd œ¡}tjt|d,|dkr~t||ddnt||ddW5QRXdS)Nz"Merge keys contain null values on z sider«rg$@r0r1r2r3r-r7rËr9rŠrDr<)rprqr?r@rmrŽrÄr)rr+r0r“ZnullsZ    non_nullsZdf_nullr)rrrÚtest_merge_on_nans³s z TestAsOfMerge.test_merge_on_nanscCstjtjddg|d}|jjdkr4t |jj¡j}nt     |jj¡j}||d<t 
|dddgdd    d
gd d d gdœ¡}t 
|dddgddd
gdddgdœ¡}t ||ddgdd}t 
|dddgdd    d
gd d d gdœ¡}tjtj tj tj gt d|d<t ||¡dS)Nrr-©r)ÚiÚur5ÚHELLOÚToZYourór7r0r2rý©Úby_col1Úby_col2Úon_colr­ÚWORLDZWideZWebr1rür²r8r9r:©rir=)r8r9r:Úvalue_xÚvalue_y)r?ÚarrayZNArÚkindrpZiinfoZ numpy_dtypeÚmaxZfinfor@rrqÚobjectrArB)rZany_numeric_ea_dtypeZarrZmax_valrDrErGrFrrrÚtest_by_nullableÅs: üÿüÿ    üÿzTestAsOfMerge.test_by_nullablecCs’t t dg¡ d¡dgdgdœ¡}t t dg¡ d¡dgdgdœ¡}t||dd    d
}tjtjddd dddggdd    d d gd}t ||¡dS)Nú
2018-01-01rÐr5r0)Úby_colr:Úvaluesr-r1rEr:r<©rÔZvalues_xZvalues_yrX)r?r@Ú DatetimeIndexÚ tz_localizerÚ    TimestamprArB©rrDrErGrFrrrÚtest_merge_by_col_tz_awareñs$ýÿýÿ
þz(TestAsOfMerge.test_merge_by_col_tz_awarecCs´t t dg¡ d¡dgdgdgdœ¡}t t dg¡ d¡dgdgd    gdœ¡}t||d
d gd d }tjtjddddddggd
d d dgd}tjtjgt    d|d<t
  ||¡dS)NrDrÐr5r5r0r7r;r-r1r8r9r:r<rGr=rXr2r>) r?r@rHrIrrJrpr?rqrBrArBrKrrrÚtest_by_mixed_tz_awares*üÿüÿ
þz$TestAsOfMerge.test_by_mixed_tz_awarec CsP|dkrt d¡tjttddddddgdd    d
d d dgƒƒd dgd}t |d d¡ d|›d¡|d <tjttdd ddddgdd    d
d d dgƒƒd dgd}t |d d¡ d|›d¡|d <tjttddddddgdd    d
d d dgdtj    d
d tj    tj    gƒƒd ddgd}t |d d¡ d|›d¡|d <t
||d t dƒdd}t   ||¡dS)NrzHThis test is invalid with unit='s' because that would round left['time']rr.r/røérr-r5r6rórrDrXr    zm8[rKé    r÷érEZ1msrx)r=r)ru)rmrnr?r@rÜÚzipZ to_timedeltarorprqrrrArB)rrrDrErFrGrrrÚ test_timedelta_tolerance_nearest"sBÿ$þ"$þ"ýÿø "ÿz.TestAsOfMerge.test_timedelta_tolerance_nearestcCs´t dddgdddgdœ¡}t dd    d
gdddgd œ¡}|d  |¡|d <|d  |¡|d <t dddgdddgtjd dgdœ¡}|d  |¡|d <t||d dd}t ||¡dS)Nrr/rNr-r5r6r3r.rørr9r0r«r¬r;rØ)r?r@rorprqrrArB)rZany_int_numpy_dtyperDrErFrGrrrÚtest_int_type_toleranceLsÿz%TestAsOfMerge.test_int_type_tolerancecCs tjddddd}tjdddd    gd
g|d d…d }t |d gddgdœ¡}t||ddgd}tjdddd    g|d d…d gddgdœtjdddddd}t ||¡t||ddgd}tj|d gddgtjdddd    gdœtdd dddgƒd}t ||¡dS)Nz
2019-10-01Z30minr.rÐ)rÒrÓrÔgÍÌÌÌÌÌì?gš™™™™™é?gffffffæ?g333333ã?Úxyzr-)rYr‚g®Gáz®@róg…ëQ¸…@)Ú    from_dateÚabcTrU)rDrErr€r6)rTrUrVz2019-10-01 00:30:00©r‚)rDrEr…r„)rUrVrTrr5)    r?rÙr@rrArBrprqr)rr‚rDrErGrFrrrÚtest_merge_index_column_tz\sH"ÿ
 
ýÿú
ÿýúz(TestAsOfMerge.test_merge_index_column_tzcCs¶|dkrt d¡tjddd|dtdd |¡}tjdd    |d
}tjd d it |¡d }tjddit |¡d }tjd ddœt |¡d }t||ddtddd}t     
||¡dS)Nrz?This test is invalid with unit='s' because that would round dr1z1/1/2020z    1/20/2020Z2D)rÑÚendrÒrgš™™™™™Ù?)Úsecondsz2/1/2020)rÑrYrÚval1r¾rWÚval2Úbar)r[r\Trà)rr…r)) rmrnr?rÙrZas_unitr@rHrrArB)rrZdr1Zdr2r»r¼rFrGrrrÚ%test_left_index_right_index_tolerance}s6ÿÿþÿûz3TestAsOfMerge.test_left_index_right_index_toleranceN)F)KÚ__name__Ú
__module__Ú __qualname__r!rmÚfixturer$r&r(r)r*r+rHrrrwryr|r~rƒr‡r‰rr‘r”r•r˜r›r©rªr®r¯r³rµr¸r½rÀrÂrÅÚmarkÚ parametrizerr/Ú    timedeltarÊrÍrÎrÝrárârãrårærçrñròrõrörrrrrrrr%r'r*r1rCrLrMrRrSrXr^rrrrrs¤
 
 
 
 
 
 
 
 Y        
 
        AA2 
    .ý
  +2%=$9    ÿ ,*!rÚkwargsr=r TrŒrz2019-06-01 00:09:12z2019-06-01 00:10:29r«c    CsPtjd|i|d}tjd|i|d}tjtddt||f|ŽW5QRXdS)Nr rWr rŠr#)rfrrDrErrrÚ#test_merge_asof_non_numerical_dtype™s    þrgc    Csjt dddgdddgdœ¡}t dddgdd    d
gd œ¡}tjtd d t||dddddW5QRXdS)NZ12Z13Z15r0r1r2)r0Ú    left_val1rürýr²r3r rŠrhr4)r„r€r–r—r#©rDrErrrÚ*test_merge_asof_non_numerical_dtype_object«sþúrj)r…rÚ    left_time)r„r…rE)rr€cCsžtdddgdd}tjdddgdd    dgd
œ|d }tjd dd dddgidd dddgd }t||f|Ž}tjdddgdd    dgdddgdœ|d }t ||¡dS)Nr-r.r/Útest©rr0r1r2ró)rDrkrWrEr5r6r7r8)rDrkrE)rr?r@rrArB)rfr‚rDrErGrFrrrÚtest_merge_asof_index_behavior½s
 &þrncCstjddddgitdddgdd    d
}tjd d d dgitdddgdd    d
}t||ddd}t dddgdddgd d dgdœ¡}t ||¡dS)Nr1r/rËr÷r-r5r6r0rmrWr2rNéér©r„r€©r0r1r2)r?r@rrrArB©rDrErGrFrrrÚ&test_merge_asof_numeri_column_in_indexÓs
&&$rtcCs´tjddddgitjjdddgddd    ggdd
gd d }tjd    d ddgitjjdddgddd
ggddgd d }t||ddd}t dddgdddgd ddgdœ¡}t ||¡dS)Nr1r/rËr÷r-r5r6r0r2r()ÚnamesrWrNrorpr rrqrr)r?r@Z
MultiIndexZ from_arraysrrArBrsrrrÚ+test_merge_asof_numeri_column_in_multiindexÝs "þ "þ$rvc    CsÈtjddddgitdddgdd    d
}tjd d d dgitdddgdd    d
}tjtddt||dddW5QRX| ¡ ddg¡}| ¡ dd g¡}tjtddt||dddW5QRXdS)Nr1r/rËr÷Ú1Ú2Ú3r0rmrWr2rNrorpÚmÚnÚor rŠrq)    r?r@rrmrŽrrrrrirrrÚ3test_merge_asof_numeri_column_in_index_object_dtypeís&&þþr}cCsÜt ddgt d¡t d¡gdœ¡}tjt d¡ddd    }t d
d d d gi¡}t|||dddd}t d d d gtjddg|dœ¡}t ||¡t||d|ddd}t ddgt d¡t d¡gd d gdœ¡}t ||¡dS)Nr5r7z2021/01/01 00:37z2021/01/01 01:40)r0Útsz2021/01/01 00:00r6Z1h)rÑrÓrÒr1róér8r~FZbackward)r„r€r*ru)r1r0r~)r0r~r1)    r?r@rJrÙrrprqrArB)rEZts_mergerDrGrFrrrÚtest_merge_asof_array_as_onsHþÿÿú  úýÿr€c    Cs¸tjdddggdddgd}tjdddggdddgd}tjtddt||dd    W5QRXtjtddt||ddd
W5QRXtjtddt||ddd
W5QRXdS) Nr-r5r0r4rXr:zcolumn label 'a'rŠr<rq)r?r@rmrŽrÄrrirrrÚ+test_merge_asof_raise_for_duplicate_columns+sr)r/ÚnumpyrprmrÚZpandasr?rrrrrZpandas._testingZ_testingrAZpandas.core.reshape.mergerrbrrrcrdrgrjrnrtrvr}r€rrrrrÚ<module>sX  
    ÿþ ýþ
 
)