zmc
2023-10-12 ed135d79df12a2466b52dae1a82326941211dcc9
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
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
U
­ý°dRã@sèdZddlmZmZddlZddlZddlZddlZddlZddlZddl    Z
ddl Z ddl m mZddlmZddlZddlmZmZmZmZmZmZmZddlmZddlmZm Z ddl!m"Z"ej#Gdd    „d    eƒƒZ$d
d „Z%dS) z Test cases for DataFrame.plot é)ÚdateÚdatetimeN)Ú is_list_like)Ú    DataFrameÚ
MultiIndexÚ PeriodIndexÚSeriesÚ bdate_rangeÚ
date_rangeÚplotting)Ú TestPlotBaseÚ_check_plot_works©Ú pprint_thingc @speZdZejjddejjdd„ƒƒZdd„Zejjdd„ƒZ    d    d
„Z
d d „Z d d„Z dd„Z ej dddg¡dd„ƒZej ddddg¡dd„ƒZdd„Zdd„Zd d!„Zd"d#„Zd$d%„Zd&d'„Zej d(d)d*g¡d+d,„ƒZd-d.„Zd/d0„Zejjd1d2d3ej d4d5d1g¡d6d7„ƒƒZd8d9„Zd:d;„Zd<d=„Zd>d?„Zd@dA„ZdBdC„Z dDdE„Z!dFdG„Z"dHdI„Z#dJdK„Z$ej dLd5d1g¡ej dMdNdOdPgdOdPdNgf¡dQdR„ƒƒZ%ej dSdTdUdVg¡dWdX„ƒZ&dYdZ„Z'd[d\„Z(d]d^„Z)d_d`„Z*ejjdadb„ƒZ+dcdd„Z,dedf„Z-dgdh„Z.e/j0didj„ƒZ1e/j0dkdl„ƒZ2dmdn„Z3ej dodpe4j5dqdrdpe4j5dsdrg¡dtdu„ƒZ6ddwdx„Z7dydz„Z8d{d|„Z9d}d~„Z:dd€„Z;ej dd‚dƒd„d…g¡d†d‡„ƒZ<dˆd‰„Z=e/j0dŠd‹„ƒZ>dŒd„Z?dŽd„Z@dd‘„ZAej d’d“d”gd•d–fd•gd“d”gd—d˜gfg¡d™dš„ƒZBd›dœ„ZCej ddžd•gd“fg¡dŸd „ƒZDej d¡d•d“gd—gd¢gfd•d“d”gd—d˜gd¢d£gfd¤d¥d¦gd§d¨gd©dªgfg¡d«d¬„ƒZEej d­d¤d¥d•d“gfd¥d¤d¤d¥gfg¡d®d¯„ƒZFd°d±„ZGd²d³„ZHej d´idµfd¶d·id·fd¸d¹id¹fg¡dºd»„ƒZId¼d½„ZJd¾d¿„ZKejjdÀdÁ„ƒZLejjej d(d)dÂdÃg¡dÄdńƒƒZMejjdÆeNdǍdÈdɄƒZOdÊd˄ZPejjdÌd̈́ƒZQej d(d)dÂdÃg¡dÎdτƒZRdÐdфZSdÒdӄZTdÔdՄZUdÖdׄZVdØdلZWdÚdۄZXe/j0dÜd݄ƒZYdÞd߄ZZdàdá„Z[dâdã„Z\ej däd)dÃdÂg¡dåd愃Z]dçdè„Z^dédê„Z_ej d(d)d*g¡dëd섃Z`dídî„Zadïdð„Zbdñdò„Zce/j0ej d(dó¡dôdõ„ƒƒZddöd÷„Zedødù„Zfdúdû„Zgej düdýdþdÿdg¡dd„ƒZhdd„Zidd„Zjej d(d¡dd    „ƒZkej d
d d d ddvdd¥d¦gfg¡ej d(d)d*dÂg¡dd„ƒƒZlej dddddg¡ej d(ddg¡dd„ƒƒZmej dd¡dd„ƒZndvS( ÚTestDataFramePlotszApi changed in 3.6.0)Úreasonc
    Cs|t ¡}t|jddt|jddd}|j|dddt|jdddd    }|j|dd
dt|jdddd }|j|d d |j|dddtddgddgdœƒ}d}tjt    |d|jj
ddW5QRXtt j   dd¡ttjdd…ƒd}t|jdd}|j|d d t|jdddgdt|jdddgdt|jdddt|jdddd|jddd}|j|dd d|dd…D]P}| |j¡|j| ¡dd!|j|jdd"dd!|j|j ¡gdd!q~|dfD]@}| |j¡| | ¡¡| |j ¡g¡|j|d d qÚt|jdd#ttjdd…tdƒƒ}tt j   dd¡t |¡d}t|jdd}|j|d d tjd$d%d&d'd(d)d*d+gd,d-gd.}tjd/d0gd1d2gd.}tt j  d dd3¡||d4}t|jd5d#td6t j   d¡iƒ}t|jjdd7}|j|dd8dt|jjdd9d:}|j|dd8d|j ¡\}}|jjd|d;}t|ƒdks`t‚|j}    |    |d ksxt‚dS)<NF)ZgridT©Ú default_axesÚsubplotsé©ré©Úaxes_numÚlayout)éÿÿÿÿé)rrr©rr)rrÚ    use_indexr©Úxrotrré©ÚxÚyz''Line2D' object has no property 'blarg'©Úmatch)Zblargé
©Úindex)ré)Úyticks)Úxticks)iœÿÿÿéd)ÚylimZxlimZblah)rrÚtitle)rr/©r!r©Zvisible©Úminor)r/)õαr)r4r)õβr)r5r!)õγr)r6r*)õδé)r7éZi0Úi1)Únames)ÚbaruΔ)r<uΕZc0Zc1)ér©Úcolumnsr)uΣr#©r©rr)rr)rr©rÚax) ÚtmÚmakeTimeDataFramer ÚplotÚ_check_axes_shapeÚ_check_ticks_propsrÚpytestÚraisesÚAttributeErrorÚlineÚnpÚrandomÚrandÚlistÚstringÚ ascii_lettersÚ_check_visibleÚxaxisÚget_xticklabelsÚ    get_labelÚzipÚrangerÚ from_tuplesÚrandintr<ÚpltrÚlenÚAssertionErrorÚaxes)
ÚselfÚdfr^ÚmsgrCZtuplesr)r?ÚfigÚresult©rdú]d:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\pandas/tests/plotting/frame/test_frame.pyÚ    test_plot)s–üü$  ø
õ ÿzTestDataFramePlots.test_plotc
Csdddddg}tddddd    gddddd    gtjd
d    tjddgtd tj|d d  d¡tj|d dd d¡dœƒ}t|j    dddt|ddgj    dddt|ddgj    dddt|ddgj    dddt|ddgj    dddt|ddgj    dddt|ddgj    ddddS)NZ2008Z2009Z2011Z2012rrr!rr*r9©Údtypez%Y)ÚformatÚi8T)riÚutc)ÚAÚBÚCÚDÚErlrmr"rnrorp)
rrMÚarrayÚnanÚobjectÚpdÚ to_datetimeÚviewr rF)r_Údatesr`rdrdreÚtest_nullable_int_plot‘s   ûÿ
z)TestDataFramePlots.test_nullable_int_plotcCs¸tjddddgdd}t|ƒ}t|jjƒt|jjƒt|jjƒt|jjƒt    ||dœƒ}t|jjƒt|jjƒt|jjƒt|jjdd    t|jj
d
ddt|jj d
dddS) Nrrr!rZUInt32rgr"r$©r$r#) rtrqrr rFrLr<ÚhistÚpierÚscatterÚhexbin)r_ZarrÚsr`rdrdreÚtest_integer_array_plot¦s       z*TestDataFramePlots.test_integer_array_plotcCs:tdddgdddgdœƒ}| ¡}t| ¡ƒdks6t‚dS)Nr#r$Úzrrr!©rlrm)rrFr\Ú    get_linesr]©r_r`rCrdrdreÚtest_nonnumeric_exclude¹sz*TestDataFramePlots.test_nonnumeric_excludecCs@ttj dd¡dddgd}|jddd}| |j ¡d¡dS)Nr'r!ÚaÚbÚc©r?r")rrMrNÚrandnrFÚ_check_text_labelsrTrVrƒrdrdreÚtest_implicit_label¾sz&TestDataFramePlots.test_implicit_labelcCsDttj dd¡ddgd}d|j_|jddd|jjdks@t‚dS)Nrr…r†rˆÚNAMEZLABEL)r$Úlabel)rrMrNr‰r)ÚnamerFr]©r_r`rdrdreÚtest_donot_overwrite_index_nameÃsz2TestDataFramePlots.test_donot_overwrite_index_namecCsjt ¡}| |jddd| d¡d ¡¡| |jdd| d¡ ¡¡| |jdd|j ¡¡| |jddd| d¡j ¡¡| |jdd| d¡ ¡¡| |jdd|j ¡¡t dt|j    ƒd¡|_    | |jddd| d¡d ¡¡| |jdd| d¡ ¡¡| |jdd|d ¡¡|jddd    d
d }| 
|j d    ¡|j |dd d ddS)Nrrr"rlrm©r#ryrZTest)ér=)r#r$r/ÚfigsizerA)g0@g @)rrr“) rDrEZ _check_datarFÚ    set_indexrmrMÚaranger\r?rŠr/rGrƒrdrdreÚ test_plot_xyÊs$"$zTestDataFramePlots.test_plot_xyzinput_log, expected_log)TÚlog)ÚsymZsymlogcCs°tdt d¡it d¡d}|j|d}|j||d| ¡|ksFt‚|j|d}|j||d| ¡|kspt‚|j|d}|j|||d    | ¡|ksœt‚| ¡|ks¬t‚dS)
Nr…r-r(©Úlogy©Úyaxis)Úlogx©rT©Úloglog)rTrœ)rrMr•rFÚ_check_ax_scalesZ
get_yscaler]Z
get_xscale)r_Z    input_logZ expected_logr`rCrdrdreÚtest_logscalesâs   z!TestDataFramePlots.test_logscalesÚ input_paramrršr c    CsNtdt d¡it d¡d}d}tjt|d|jf|diŽW5QRXdS)Nr…r-r(z9Boolean, None and 'sym' are valid options, 'sm' is given.r%Úsm)rrMr•rIrJÚ
ValueErrorrF)r_r£r`rardrdreÚtest_invalid_logscaleõsz(TestDataFramePlots.test_invalid_logscalec    CsŽt ¡}|jdd}| ¡}t|d ¡tƒr2t‚|j|ddt     ¡dt
j d<| ¡}| ¡}t|d ¡tƒrxt‚|j|ddt     ¡dt
j d<| ¡}| ¡}t|d ¡tƒr¾t‚tt|d ¡ƒtƒsØt‚t     ¡t
j   dd¡<| ¡}| ¡}t|d ¡tƒrt‚|j|ddW5QRXt     ¡| ¡}| ¡}t|d ¡tƒr`t‚tt|d ¡ƒtƒs|t‚|j|dddS)    NT)Úx_compatrérz xaxis.compatFr§) rDrErFr‚Ú
isinstanceÚ    get_xdatarr]rHÚcloser Z plot_paramsZuse)r_r`rCÚlinesrdrdreÚ test_xcompatþs: 
 
zTestDataFramePlots.test_xcompatcCsTttj dd¡ttdddƒtdddƒƒddgd}| ¡|jjd    d
t     
¡dS) NéréÐrér…r†©r)r?rry) rrMrNrOr    rrFr[ZaxhlinerDr«rrdrdreÚtest_period_compat#s ýz%TestDataFramePlots.test_period_compatcCsøtdt d¡it ddd¡tjd}| ¡}| ¡d}| ¡}t|dd…df|dd…dftjdd}tj    ||j
d    d
t  ¡t j t ddd¡tjd |_| ¡}| ¡d}| ¡}t|dd…df|dd…dftjdd}t     ||j
¡dS) Nr$r-écr)r)rhrr)rhrŽF)Zcheck_index_typerg)rrMr•Úint64rFr‚Z
get_xydatarrDZassert_series_equalr$r«rtÚIndexÚfloat64r))r_r`rCr¬ÚrsrdrdreÚtest_unsorted_index0s" ÿ * *z&TestDataFramePlots.test_unsorted_indexc    Cs†tdddddgiddddgd}| ¡}| ¡\}}| ¡}|t |d ¡d¡ksZt‚|t |d ¡d¡ksxt‚tdddtj    ddd    d
giddddtj    ddgd}| ¡}| ¡\}}| ¡}|t |d ¡d¡ksât‚|t |d ¡d¡kst‚tddddgd d d dgdœƒ}|jddd}| ¡\}}| ¡}|t |d ¡d¡ksbt‚|t |d ¡d¡ks‚t‚dS)Nr$ççð?ç@ç@r(rg@g@g@gÀV@g€V@g@W@gW@)r$r€r€r")
rrFÚget_xlimr‚rMZnanminÚget_datar]Znanmaxrr)r_r`rCÚxminÚxmaxr¬rdrdreÚtest_unsorted_index_limsBs*  þ    z+TestDataFramePlots.test_unsorted_index_limsc    Csˆttj dd¡ttjdd…ƒddddgd }d}tjt    |d    |j
j d
d W5QRXtjt    |d    |j
j d
d W5QRXdS) Nr8rr#r$r€Úfourr±z+Log-y scales are not supported in area plotr%Tr™rŸ) rrMrNrOrPrQrRrIrJr¥rFÚarea©r_r`rardrdreÚtest_negative_log[s 
ýz$TestDataFramePlots.test_negative_logcCsZt t|d ¡dƒ¡}t||ƒD]0\}}|| ¡d7}| ¡d}t ||¡q$dS)Nrr)rMÚzerosr\r¾rWrDÚassert_numpy_array_equal)r_Z normal_linesZ stacked_linesÚbaseÚnlÚslÚsyrdrdreÚ_compare_stacked_y_coodgs
 z*TestDataFramePlots._compare_stacked_y_coodÚkindrLrÃc     Cs¦tj d¡}t| dd¡ddddgd}| }t| d¡| d¡| d¡ | d¡ d    œƒ}t| dd¡ttjdd…ƒddddgd
}t    |j
|d d }t    |j
|d d }|  |j |j ¡t    |j
|d d }t    |j
|d d }|  |j |j ¡t    |j
|d d }t    |j
|d d }|  |j dd…|j dd…¡|  |j dd…|j dd…¡t    |j
d dd}    t jt|    d|j
d dW5QRX| |jd¡}
t    |
j
|d d ddS)Né*r8rÚwr#r$r€rˆ)rÏr#r$r€r±F)rÍÚstackedTr©rÐz„When stacked is True, each column must be either all positive or all negative. Column 'w' contains both positive and negative valuesr%r)rÍrrÐ)rMrNÚ RandomStaterrOr‰rPrQrRr rFrÌr¬rIrJr¥r”r)) r_rÍZ    np_randomr`Úneg_dfZsep_dfZmixed_dfÚax1Úax2raÚdf2rdrdreÚtest_line_area_stackedns@ 
 
üÿ    
 
ý  ÿz)TestDataFramePlots.test_line_area_stackedc
Csôddtjdg}dtjddg}t||dœƒ}t||dœtjddd}||fD] }t|jƒ}|jd ¡}|jd ¡}tj    dddgtj
d    }    t  t  |j d¡|    ¡tj    dddgtj
d    }    t  t  |j d¡|    ¡t  |jt     d
d
d d
g¡¡t  |jt     d
d d
d
g¡¡tj    ddddgtj
d    }
tj    ddddgtj
d    } t|jd d }t  |jd ¡|
¡t  |jd ¡|
| ¡t|jjƒ}t  |jd ¡|
¡t  |jd ¡|
| ¡t|jjd
d }t  |jd ¡|
¡t  |jd ¡| ¡qLdS) Nrrr!©r…r†r)Úkr(rrgFTrÑ)rMrrrrDZ makeDateIndexr rFr¬Ú    get_ydatarqr¶rÇÚdeleteÚdataÚmaskrÃ) r_Zvalues1Zvalues2r`ÚtdfÚdrCZmasked1Zmasked2ÚexpZ    expected1Z    expected2rdrdreÚtest_line_area_nan_dfžs>
ÿÿ z(TestDataFramePlots.test_line_area_nan_dfcCs`ttj dd¡dddgd}| ¡}| ¡\}}| ¡}||d ¡ddksTt‚||d ¡ddkspt‚|jd    d
}| ¡\}}| ¡}||d ¡ddks¬t‚||d ¡ddksÈt‚|jd    d    d }|j    |dd d |D]p}t
|dƒsüt‚t
|dƒr t‚| ¡\}}| ¡}||d ¡ddks>t‚||d ¡ddksêt‚qêdS)Nr8r!r#r$r€rˆrrT)Ú secondary_y)rârr0rZleft_axÚright_ax) rrMrNrOrFr½r‚r¾r]rGÚhasattr)r_r`rCr¿rÀr¬r^rdrdreÚ test_line_limÅs(    z TestDataFramePlots.test_line_limFzX2020-12-01 this has been failing periodically on the ymin==0 assertion for a week or so.)ÚstrictrrÐTc
CsÄttj dd¡ddddgd}| }t|jj|d}| ¡\}}| ¡\}}|     ¡}    ||    d     
¡d    d    kspt ‚||    d     
¡d    d
ksŒt ‚|d    ks˜t ‚t|jj|d}| ¡\}}|d    ksÀt ‚dS) Nr8rr#r$r€rÂrˆrÑrr) rrMrNrOr rFrÃr½Úget_ylimr‚r¾r])
r_rÐr`rÓrCr¿rÀZyminZymaxr¬rdrdreÚ test_area_limÝs    z TestDataFramePlots.test_area_limcCs€ttj dd¡ddgd}|jjdddd\}\}}|j|d    d
|j|d    d
| |¡ ||¡sft    ‚| |¡ ||¡s|t    ‚dS) Nrrr#r$rˆrT)ÚshareyrÃ)rCrÍ)
rrMrNrOr[rrFZ
get_y_axisZjoinedr])r_r`rbrÔrÕrdrdreÚtest_area_sharey_dont_overwriteôs z2TestDataFramePlots.test_area_sharey_dont_overwritecCs²ttj dd¡ƒ}|jjdd}|jD]}| ¡dks&t‚q&|jjddd}|jD]}| ¡dksRt‚qR|jjddd}|j    |ddd|D] }|jD]}| ¡dks–t‚q–qŒdS)    Nr*r)Ú    linewidthT)rÐrë)rër)r*rr)
rrMrNr‰rFr<ÚpatchesZ get_linewidthr]rG)r_r`rCÚrr^rdrdreÚtest_bar_linewidthÿs
 
 
z%TestDataFramePlots.test_bar_linewidthcCsLttj dd¡ƒ}d}|jj|d}|jD]}| ¡|t|j    ƒks*t
‚q*|jjd|d}|jD]}| ¡|ks`t
‚q`|jj |d}|jD]}|  ¡|t|j    ƒksŠt
‚qŠ|jj d|d}|jD]}|  ¡|ksÀt
‚qÀ|jj|dd}|D] }|jD]}| ¡|ksôt
‚qôqê|jj |dd}|D]&}|jD]}|  ¡|ks*t
‚q*q dS)Nr*gÍÌÌÌÌÌì?)ÚwidthT)rÐrï)rïr) rrMrNr‰rFr<rìÚ    get_widthr\r?r]ÚbarhÚ
get_height)r_r`rïrCrír^rdrdreÚtest_bar_barwidths,
 
 
 
 
 
z$TestDataFramePlots.test_bar_barwidthc    Cs¬ttj dd¡ƒ}|jjddd}dd„|jDƒ}|dgdksDt‚|jjdd    d
d d d gd}dd„|jdd…Dƒ}|d    d
d d d gksŒt‚|jjdt     dddddg¡d}dd„|jDƒ}|dgdksÎt‚|jjddddddgd}dd„|jdd…Dƒ}|dddddgkst‚|jjdd    d}|D]*}dd„|jDƒ}|d    gdks,t‚q,|jjdt     dddddg¡d}|D]*}dd„|jDƒ}|dgdks|t‚q|dS)Nr*Fr)rÐÚbottomcSsg|] }| ¡‘qSrd©Zget_y©Ú.0ÚprdrdreÚ
<listcomp>;sz;TestDataFramePlots.test_bar_bottom_left.<locals>.<listcomp>éTréþÿÿÿéýÿÿÿéüÿÿÿéûÿÿÿcSsg|] }| ¡‘qSrdrõrördrdrerù?s)rÐÚleftcSsg|] }| ¡‘qSrd©Úget_xrördrdrerùCsrr!rcSsg|] }| ¡‘qSrdrrördrdrerùGs)rrôcSsg|] }| ¡‘qSrdrõrördrdrerùLs)rrÿcSsg|] }| ¡‘qSrdrrördrdrerùQs)
rrMrNrOrFr<rìr]rñrq)r_r`rCrcr^rdrdreÚtest_bar_bottom_left8s*  z'TestDataFramePlots.test_bar_bottom_leftc    CsÀtdtjdgdddgdddgdœƒ}|j ¡}dddddddddg    }d    d
„|jDƒ}||ks`t‚|jjd d }d d
„|jDƒ}||ksŠt‚dd
„|jDƒ}dddddddddg    }||ks¼t‚dS)Nr'ér*rrr!©rlrmrnrcSsg|] }| ¡‘qSrd©ròrördrdrerùXsz3TestDataFramePlots.test_bar_nan.<locals>.<listcomp>TrÑcSsg|] }| ¡‘qSrdrrördrdrerù\scSsg|] }| ¡‘qSrdrõrördrdrerù_sr¹g$@g4@g.@gD@)rrMrrrFr<rìr])r_r`rCÚexpectedrcrdrdreÚ test_bar_nanTs$
  zTestDataFramePlots.test_bar_nanc CsDttj dd¡t tdƒ¡t tdƒ¡d}ttj dd¡t tdƒ¡t tdƒ¡d}||fD]Þ}|j     ¡}|j
  ¡}t   |t dddd    d
dg¡¡| ¡d ks¦t‚|jd ¡d ks¼t‚|jd  ¡dksÒt‚|jj    dd}t   |t dddd    d
dg¡¡| ¡d kst‚|jd ¡d ks(t‚|jd  ¡dks`t‚q`dS)Nr8r*ZABCDEFZabcder±rrrr!r)gà¿g@gпrgš™™™™™@TrÑg@)rrMrNr‰rtrµrPZCategoricalIndexrFr<rTÚ get_ticklocsrDrÇrqr½r]rìr)r_Zdf1rÖr`rCZticksrdrdreÚtest_bar_categoricalcs,   ý   ý 
 
z'TestDataFramePlots.test_bar_categoricalc    CsÜttj dd¡ttjdd…ƒddddgd}t|jj    dddt|jj    d    d
dt
  d ¡}t j t|d |jj    dd W5QRXt
  d¡}t j t|d |jj    ddW5QRX|jddddd}|j|d    dddS)Nr8rr#r$r€rÂr±r"rrz5scatter() missing 1 required positional argument: 'y'r%r‘z5scatter() missing 1 required positional argument: 'x'ryr|T)r#r$rÍrrAr)rrMrNr‰rPrQrRr rFr|ÚreÚescaperIrJÚ    TypeErrorrG)r_r`rar^rdrdreÚtest_plot_scatter€s 
ý
 
z$TestDataFramePlots.test_plot_scatterc    Cs\ttj d¡dgd}tddddj|d<d}tjt|d    |j    d
ddd W5QRXdS) Nr'r…rˆz
2014-01-01Úh)ÚstartÚfreqÚperiodsZdtimez9must be a string or a (real )?number, not 'datetime.time'r%r|)rÍr#r$)
rrMrNr‰r
ÚtimerIrJr rFrÄrdrdreÚ&test_raise_error_on_datetime_time_data•s
z9TestDataFramePlots.test_raise_error_on_datetime_time_datacCs`ttdddƒddd}tj ddt|ƒ¡}t||dœƒ}t|jj    dd    d
t|jj    ddd
dS) Niãré ÚW)rrrr)rwÚvalsrwrr")
r
rrMrNÚnormalr\rr rFr|)r_rwrr`rdrdreÚtest_scatterplot_datetime_datažs
z1TestDataFramePlots.test_scatterplot_datetime_datacCs€tdddgdddgdœƒ}t|jjdd    d
t|jjd d d
tdddgdd    d gdœƒ}t|jjdd    d
t|jjd d d
dS)Nrlrmrnrr!rrØr…r†r"rrr‡)rr rFr|rrdrdreÚtest_scatterplot_object_data§s z/TestDataFramePlots.test_scatterplot_object_dataÚorderedÚ
categoriesÚsetosaÚ
versicolorÚ    virginicac Csìtddgddgddgddgddggd    d
gd }tjd d d d dg||d|d<|jjdddd}|j\}|j}t dddg¡}|     ¡}t
  ||¡t ddddg¡}    |j }
t
  |
|    ¡|} dd„|j  ¡Dƒ} tdd„t| | ƒDƒƒsèt‚dS)Ngffffff@g @gš™™™™™@r¼g@gš™™™™™    @gš™™™™™@gš™™™™™@Úlengthrïrˆrrr)rrZspeciesrr©r#r$r‡çà?gø?g@r¹rºr»cSsg|] }| ¡‘qSrd©Úget_text)r÷ÚirdrdrerùÏszLTestDataFramePlots.test_scatterplot_color_by_categorical.<locals>.<listcomp>css|]\}}||kVqdS©Nrd)r÷r$ÚjrdrdreÚ    <genexpr>ÐszKTestDataFramePlots.test_scatterplot_color_by_categorical.<locals>.<genexpr>)rrtÚ CategoricalrFr|Ú collectionsÚcolorbarrMrqZ    get_ticksrDrÇZ _boundariesrCZget_ymajorticklabelsÚallrWr]) r_rrr`rCZcolorbar_collectionr*Zexpected_ticksZ result_ticksZexpected_boundariesZresult_boundariesZexpected_yticklabelsZresult_yticklabelsrdrdreÚ%test_scatterplot_color_by_categorical³s* þ ý
  z8TestDataFramePlots.test_scatterplot_color_by_categoricalzx, yr")r$r#)r$r$cCs:tddddgt ddddg¡dœƒ}t|jj||ddS)    Nrrr!rr…r†r‡r")rrtr(r rFr|©r_r#r$r`rdrdreÚ'test_plot_scatter_with_categorical_dataÒs$z:TestDataFramePlots.test_plot_scatter_with_categorical_datac    Csªttjjddddttjdd…ƒdddd    gd
}|jjdddd |jjdd d d g}|D]4}|j    dj
j dkstt ‚|j    dj j ¡dksZt ‚qZd}|jjddd|d}|j    dj
j |ks¾t ‚|jjddddd}|j    dj dksæt ‚|jjdd dd }|j    dj dkst ‚|j|j    dgdtd d gddgdœƒ}ddddg}ddddg}t ||g¡}|jjdd|d }t |j    d ¡|¡t ddg¡}|jjdd|dddS)Nrr-)r8r)ÚlowÚhighÚsizer8r#r$r€rÂr±r rrZGreysÚ    cubehelix)r#r$r‡ÚcolormapF)r#r$r‡r*Úredrí©Z
facecolorsr!rrrºr¹rlrmZspring)r#r$r‡Úcmap)rrMrNrZrPrQrRrFr|r)r6rŽr]r*rCÚ
get_ylabelÚ _check_colorsrqrDrÇZ get_facecolor)    r_r`r^rCÚcmZred_rgbaZ
green_rgbaZ
rgba_arrayZ float_arrayrdrdreÚtest_plot_scatter_with_cÙs2
ý$  z+TestDataFramePlots.test_plot_scatter_with_ccCsRttj d¡ddddgd}|jjdddd}tj|dj|jd     ¡d    dS)
N©r'r!r-r…r†r‡rˆ)r#r$r~r)Úright)
rrMrNrFr|rDrÇÚvaluesr)Z    get_sizesrƒrdrdreÚtest_plot_scatter_with_s
sz+TestDataFramePlots.test_plot_scatter_with_scCs\ddl}ttj d¡ddddgd}|j ¡}|jjddd|d}|jdj    |ksXt
‚dS)    Nrr;r-r…r†r‡rˆ)r#r$r‡Únorm) Ú
matplotlibrrMrNÚcolorsZLogNormrFr|r)r?r])r_Úmplr`r?rCrdrdreÚtest_plot_scatter_with_norms
 
z.TestDataFramePlots.test_plot_scatter_with_normcCsˆddl}ttj d¡ddddgd}|jjdddd}|jdj}|j     ¡|j 
¡f}|j j |Ž}|jD]}||ƒ||ƒksjt ‚qjdS)    Nrr;r-r…r†r‡rˆr )r@rrMrNrFr|r)r?r‡ÚminÚmaxrAZ    Normalizer])r_rBr`rCZ    plot_normZ color_min_maxZ default_normÚvaluerdrdreÚtest_plot_scatter_without_norms  
z1TestDataFramePlots.test_plot_scatter_without_normcCs4ttj dd¡ttjdd…ƒddddgd}t|jj    ƒt|jj    dd    t|jj    d
d
d t|jj    d
d ttj d d¡ttjdd …ƒt
dƒd}t|jj    ƒtddgddgdœƒ}t|jj    ƒ}|j |dd|jj    dd d}|j |dd d dt|jj ƒ}|j |dd|jj ddd}|j |dddddS)Nr8rÚoneÚtwoÚthreerÂr±F©ÚlegendTrrÑr'érrrØéZré#)ÚrotÚfontsize©r Ú
xlabelsizeÚ
ylabelsize)Úyroté7é )rUrTrS) rrMrNr‰rPrQrRr rFr<rXrHrñrƒrdrdreÚ test_plot_bar&s0 
ý  ý   z TestDataFramePlots.test_plot_barc    Cs.|}|d}| ¡j}dd„|Dƒ}t|jjƒ}| | ¡|¡t |j     
¡t   dt |ƒd¡¡t |jƒdt |ƒks|t‚t ¡|jjdd}|j|ddd    t ¡t|jjƒ}t  dd
dg¡}|jj|d }| ¡j}d d„|Dƒ}| | ¡|¡t |j     
¡|¡t |jƒdt |ƒks*t‚dS) NÚheightcSsg|] }t|ƒ‘qSrdr©r÷r‡rdrdrerùKsz3TestDataFramePlots.test_boxplot.<locals>.<listcomp>rr9é(©rPr©r rUr8)Ú    positionscSsg|] }t|ƒ‘qSrdrrZrdrdrerù^s)Ú_get_numeric_datar?r rFÚboxrŠrUrDrÇrTrrMr•r\r¬r]r«rHrq)    r_Úhist_dfr`ÚseriesÚ numeric_colsÚlabelsrCr^r^rdrdreÚ test_boxplotGs.
 ÿ 
zTestDataFramePlots.test_boxplotc    Cs8|}| ¡j}dd„|Dƒ}|jjdddd}|j|dddd| | ¡|¡t|jƒd    t|ƒksjt    ‚t
|jjd
d
dd
d }|j |d d d|j |ddt ||ƒD],\}}| | ¡|g¡t|jƒd    ks¨t    ‚q¨t d ddg¡}|jj|dd}| | ¡|¡t |j ¡|¡t|jƒd    t|ƒks4t    ‚dS)NcSsg|] }t|ƒ‘qSrdrrZrdrdrerùfsz<TestDataFramePlots.test_boxplot_vertical.<locals>.<listcomp>é2r=F)rPrQÚvertr©r rUrTr9T)rrrgrr!)rr!rr—ržr)r^rg)r_r?rFr`rHrŠÚget_yticklabelsr\r¬r]r rGr¡rWrMrqrDrÇrœr)    r_rar`rcrdrCr^rr^rdrdreÚtest_boxplot_verticalcs0
ûz(TestDataFramePlots.test_boxplot_verticalc    CsÂttj dd¡ttjdd…ƒddddgd}d}tjt    |d    |j
j d
d W5QRX|j
j d d }|  |d ¡|j
j d d }|  |d ¡|j
  ¡}|  |d ¡|j
j dd }|  |d¡dS)Nr8rrHrIrJrÂr±z2return_type must be {None, 'axes', 'dict', 'both'}r%Z
not_a_type)Ú return_typeÚdictr^Zboth) rrMrNr‰rPrQrRrIrJr¥rFr`Z_check_box_return_type)r_r`rarcrdrdreÚtest_boxplot_return_types  
ý  
 z+TestDataFramePlots.test_boxplot_return_typecCs²ttj dd¡ƒ}t|jdd}dd„|jDƒ}|j||d|j|dd    |jdd
d d }|j|d
d d d t|jdddd}|j    |ddd|jdddd}|j
|dddS)Nr-rÚkde©rÍcSsg|] }t|ƒ‘qSrdrrZrdrdrerù›sz2TestDataFramePlots.test_kde_df.<locals>.<listcomp>©rdrrrr*)rÍrPrQrRT)rrÍrrr)rÍršrr—r›) rrMrNr‰r rFr?Ú_check_legend_labelsrHrGr¡)r_r`rCrr^rdrdreÚ test_kde_df—s üzTestDataFramePlots.test_kde_dfcCs0ttjjddƒ}tj|jd<t|jdddS)N)r-r©r1©rrrnro)rrMrNÚuniformrrÚlocr rFrrdrdreÚtest_kde_missing_vals­s z(TestDataFramePlots.test_kde_missing_valscsVddlm‰ttj dd¡ƒ}|d}t|jjƒ}dd„|j    Dƒ}|j
||dt|jjdddd    }|j |dd
d |j |d d |jjdd}|j |dddt ¡|jjdddd}‡fdd„| ¡Dƒ}t |d ¡d¡t ¡|jjddd}‡fdd„| ¡Dƒ}t |d ¡d¡t ¡|jjdddd}|j |dddddS)Nr©Ú    Rectangler-rcSsg|] }t|ƒ‘qSrdrrZrdrdrerùºsz3TestDataFramePlots.test_hist_df.<locals>.<listcomp>rpT)rrršrrr—r›r[r\r])Ú
cumulativeÚbinsÚdensitycsg|]}t|ˆƒr|‘qSrd©r©©r÷r#rxrdrerùÌs
rrº)rzr{csg|]}t|ˆƒr|‘qSrdr}r~rxrdrerùÑs
rûgY@rfr=Ú
horizontal)rPrQÚ orientationrh)Zmatplotlib.patchesryrrMrNr‰r rFrzr?rqrGr¡rHrDr«Z get_childrenÚassert_almost_equalrò)r_r`rbrCrr^ZrectsrdrxreÚ test_hist_df³s6  üzTestDataFramePlots.test_hist_dfÚweights皙™™™™¹?©r-)Úshape)r-rcCsztj d¡tttddgtj dd¡ƒƒƒ}t|jd|d}t|jdd}d    d
„|j    Dƒ}d d
„|j    Dƒ}t
  ||¡dS) Nrrlrmrr-rz)rÍrƒrocSsg|] }| ¡‘qSrdr©r÷Úpatchrdrdrerùåsz8TestDataFramePlots.test_hist_weights.<locals>.<listcomp>cSsg|]}d| ¡‘qS)r„rr‡rdrdrerùés) rMrNÚseedrrlrWr‰r rFrìrDr)r_rƒr`rÔrÕZpatch_height_with_weightsZexpected_patch_heightrdrdreÚtest_hist_weightsÚs  z$TestDataFramePlots.test_hist_weightsNc
Cs´t dd„|Dƒ¡}t dd„|Dƒ¡}t dd„|Dƒ¡}t dd„|Dƒ¡}    |dk    rhtj||dd|dk    r€tj||dd|dk    r˜tj||dd|dk    r°tj|    |dddS)NcSsg|] }| ¡‘qSrdrõrördrdrerùõsz7TestDataFramePlots._check_box_coord.<locals>.<listcomp>cSsg|] }| ¡‘qSrdrrördrdrerùöscSsg|] }| ¡‘qSrdrrördrdrerù÷scSsg|] }| ¡‘qSrd)rðrördrdrerùøsF)Z check_dtype)rMrqrDrÇ)
r_rìÚ
expected_yÚ
expected_hÚ
expected_xÚ
expected_wZresult_yZ result_heightZresult_xZ result_widthrdrdreÚ_check_box_coordísz#TestDataFramePlots._check_box_coordcCs®tt t dddddg¡t dddd    d
g¡¡t t dddddg¡t dddddg¡¡t t dddddg¡t d
d    dddg¡¡d œd d dgd}tt t tjdddddg¡t ddddd    d
g¡¡t t dtjddddg¡t ddddddg¡¡t t dddtjddg¡t d
d    ddddg¡¡d œd d dgd}||fD]h}|jjdd}|j|jdd…t dddddg¡t dddd    d
g¡d|j|jdd…t dddddg¡t dddddg¡d|j|jdd…t dddddg¡t d
d    dddg¡d|jjddd}|j|jdd…t dddddg¡t dddd    d
g¡d|j|jdd…t dddd    d
g¡t dddddg¡d|j|jdd…t dddddg¡t d
d    dddg¡d|jjdddd}|j|djt dddddg¡t dddd    d
g¡d|j|djt dddddg¡t dddddg¡d|j|djt dddddg¡t d
d    dddg¡d|jjddd}|j|jdd…t dddddg¡t dddd    d
g¡d|j|jdd…t dddddg¡t dddddg¡d|j|jdd…t dddddg¡t d
d    dddg¡d|jjdddd}|j|jdd…t dddddg¡t dddd    d
g¡d|j|jdd…t dddd    d
g¡t dddddg¡d|j|jdd…t dddddg¡t d
d    dddg¡d|jjddddd}|j|djt dddddg¡t dddd    d
g¡d|j|djt dddddg¡t dddddg¡d|j|djt dddddg¡t d
d    dddg¡dq>dS) Nrrr!rr*r'é    r=r9r8rrlrmrnrˆ)r{r)r‹rŒT)r{rÐéér’rMé)r{rÐrr)r{r€)rrŽ)r{rÐr€)r{rÐrr€)    rrMÚrepeatrqrrrFrzrrì)r_Z    normal_dfZnan_dfr`rCr^rdrdreÚtest_hist_df_coordsú***ýú    ÿÿÿù ô ý ý ý ý ý ýýýý ý ý ý ý ý ýÿýýýz%TestDataFramePlots.test_hist_df_coordcCs(ttj dd¡ƒ ¡}t|jdddS)Nr-rTrK)rrMrNr‰Úcumsumr rFrrdrdreÚtest_plot_int_columns‡sz(TestDataFramePlots.test_plot_int_columnscCs¨ddlm}| ¡}ttj dd¡ƒ}ddddœdddœdddgddgfD]X}| ¡| d    ¡|j    |d
}t
|  ¡dt |ƒ…ƒD]\}}|  ¡||ks„t‚q„qJdS) Nrr-r!ú^ú+Úo)rrr©rréo)Ústyle)Úmatplotlib.pyplotÚpyplotÚgcfrrMrNr‰ZclfÚ add_subplotrFÚ    enumerater‚r\Z
get_markerr])r_r[rbr`ÚmarkersrCÚidxrLrdrdreÚtest_style_by_column‹s 
ü
  z'TestDataFramePlots.test_style_by_columncCsPtddgƒ}| ¡}| ¡dks$t‚|jdd}| ¡ ¡d ¡dksLt‚dS)NrrTrKrÚ)rrFÚ
get_legendr]Ú    get_textsr#)r_r~rCrdrdreÚtest_line_label_nones
  z'TestDataFramePlots.test_line_label_nonezprops, expected)ZboxpropsZboxes)Z whiskerpropsZwhiskers)ZcappropsZcaps)Z medianpropsZmedianscCsPtdd„dDƒƒ}|ddii}|jjfddi|—Ž}||d ¡dksLt‚dS)    NcSsi|]}|tj d¡“qSr…)rMrN)r÷rÙrdrdreÚ
<dictcomp>°szHTestDataFramePlots.test_specified_props_kwd_plot_box.<locals>.<dictcomp>ÚABCÚcolorZC1rkrlr)rrFr`Z    get_colorr])r_Úpropsrr`ZkwdrcrdrdreÚ!test_specified_props_kwd_plot_box¥s  z4TestDataFramePlots.test_specified_props_kwd_plot_boxcCsŽtt dddg¡tdddƒtdddƒtdddƒgd    gd
}| ¡}|jd  ¡}|d |dksdt‚|jd  ¡}t     
|t dddg¡¡dS) Nr¼r»rºéÜr'rrr=Útestr±r) rrMrqrrFr¬rªr]rÚrDrÇ)r_r`rCr,ZydatardrdreÚtest_unordered_ts¶s ýz$TestDataFramePlots.test_unordered_tscCsjtddddgiƒ}tjjD]}|j|dt|j|ƒƒqdD]&}|jdd|dt|j|ƒddƒq>dS)Nr#rrr!ro)r|r})rr Ú PlotAccessorÚ _common_kindsrFÚgetattr)r_r`rÍrdrdreÚtest_kind_both_waysÂs  z&TestDataFramePlots.test_kind_both_waysc
CsHttdƒƒ}tjjD].}d}tjt|d|j|dW5QRXqdS)NZabcdúno numeric data to plotr%ro)    rrPr r²r³rIrJr rF©r_r`rÍrardrdreÚtest_all_invalid_plot_dataÌs
  z-TestDataFramePlots.test_all_invalid_plot_datac
CsÎttj d¡ dd¡td}d|tj |jd¡dk<tj    j
D].}d}t j t |d    |j|d
W5QRXq>ttj d¡ dd¡td}d|tj |jd¡dk<t j t dd    |jd d
W5QRXdS) NrÎr'rrgr…rr!r¶r%rorÃ)rrMrNrÒr‰rsrOr†r r²r³rIrJr rFr·rdrdreÚ test_partially_invalid_plot_dataÓs z3TestDataFramePlots.test_partially_invalid_plot_datac    Cs@ttj dd¡ƒ}d}tjt|d|jddW5QRXdS)Nr'rz*invalid_plot_kind is not a valid plot kindr%Zinvalid_plot_kindro)rrMrNr‰rIrJr¥rFrÄrdrdreÚtest_invalid_kindász$TestDataFramePlots.test_invalid_kindzx,y,lblrmrnrlr…r†r‡c    CsJtddgddgddgdœƒ}tjtdd    |j|||d
W5QRXdS) Nrrr!rr*r8rúx must be a label or positionr%©r#r$r©rrIrJr¥rF)r_r#r$Úlblr`rdrdreÚtest_invalid_xy_argsçs    z'TestDataFramePlots.test_invalid_xy_argsc    CsRtddgddgddgdœƒ}d}tjt|d    |jd
d d gd dW5QRXdS)Nrrr!rr*r8rz.label should be list-like and same length as yr%rlrmrnZ    bad_labelr¼r½rÄrdrdreÚtest_bad_labelôsz!TestDataFramePlots.test_bad_labelzx,yrc    CsLtdddgdddggtdƒd}tjtd    d
|j||d W5QRXdS) Nrr!r*rrr8ZAABrˆr»r%r")rrPrIrJr¥rFr-rdrdreÚtest_invalid_xy_args_dup_colsús z0TestDataFramePlots.test_invalid_xy_args_dup_colszx,y,lbl,colorsr4ÚbluerrrZbokehZcythonÚgreenZyellowcCsltddgddgddgdœƒ}t|jd||d    |j||||d
}t|jƒt|ƒksVt‚|j| ¡|d dS) Nrrr!rr*r8rrlr¼)r#r$rr¬©Z
linecolors)rr rFr\r¬r]r8r‚)r_r#r$r¾rAr`rCrdrdreÚtest_y_listlikes
 
z"TestDataFramePlots.test_y_listlikez x,y,colnamescCs0tddgddgdœƒ}||_t|j||ddS)Nrrr!rrr")rr?r rF)r_r#r$Zcolnamesr`rdrdreÚtest_xy_args_integersz'TestDataFramePlots.test_xy_args_integercCsšttjjddtjjddt d¡tjjdddœƒ}|jjdddd}t|jƒdks\t    ‚|jjddd    d
}t|d j
j ƒd ks†t    ‚|j |dd ddS)Nrrsrrlrmr')r#r$ZgridsizerT)r#r$rrrrAr) rrMrNrur•rFr}r\r)r]Úfigurer^rG)r_r`rCr^rdrdreÚtest_hexbin_basics  ýÿz$TestDataFramePlots.test_hexbin_basiccCsˆttjjddtjjddt d¡tjjdddœƒ}|jjdddd}t|jƒdks\t    ‚|jjdddtj
d    }t|jƒdks„t    ‚dS)
Nrrsrrlrmrn)r#r$rnr)r#r$rnZreduce_C_function) rrMrNrur•rFr}r\r)r]ZstdrƒrdrdreÚtest_hexbin_with_c.s  ýÿz%TestDataFramePlots.test_hexbin_with_czkwargs, expectedZBuGnr3r2r6ZYlGncCsjttjjddtjjddt d¡tjjdddœƒ}|jjfdddœ|—Ž}|jdjj    |ksft
‚dS)Nrrsrrlrmr"r) rrMrNrur•rFr}r)r6rŽr])r_Úkwargsrr`rCrdrdreÚtest_hexbin_cmap=s      ýÿz#TestDataFramePlots.test_hexbin_cmapc    Cspttj dd¡dddgdddd    d
gd }d }tjt|d |j ¡W5QRXt    |jjdd}| 
|j |j ¡t    |jjdd}| 
|j |j ¡t    |jjddd}t |ƒt |jƒks¸t‚|D]}| 
|j |j ¡q¼t||jƒD]\}}| ¡|ksÞt‚qÞdddddg}dddddg}t    |jjdd||d}t |ƒt |jƒksBt‚|D]$}| 
|j |¡|j|j|dqFdS)Nr*r!ÚXÚYÚZr…r†r‡rßÚer>z/pie requires either y column or 'subplots=True'r%ryrTrrlrmrnrorpríÚgÚm)rrrdrAr5)rrMrNrOrIrJr¥rFr{r rŠÚtextsr)r\r?r]rWr7r8rì)r_r`rarCr^ÚylabelrdZ
color_argsrdrdreÚ test_pie_dfPsF  ýýûzTestDataFramePlots.test_pie_dfc     Csddl}ttj dd¡ƒ}tdƒD]}tj|j||f<q"|jj    dd\}}i}|j
dkr`ddi}t   d¡ |j jfd|ddœ|—ŽW5QRXdd    d
d g}t|ƒD]r\}}t|ƒ}    d |    |<d d„|jDƒ}
|
|    ksØt‚dd„| ¡ ¡Dƒ} |d|…||dd…} | | ks¤t‚q¤dS)Nrr)Zncolsz3.3Ú    normalizeT)rrCrLÚ0Ú1Ú2Ú3r¦cSsg|] }| ¡‘qSrdr"r~rdrdrerùŽsz6TestDataFramePlots.test_pie_df_nan.<locals>.<listcomp>cSsg|] }| ¡‘qSrdr"r~rdrdrerù”sr)r@rrMrNrOrXrrZilocr[rÚ __version__rDÚassert_produces_warningrFr{r¢rPrÒr]r§r¨) r_rBr`r$rbr^rÊZ base_expectedrCrrcZ result_labelsÚexpected_labelsrdrdreÚtest_pie_df_nanzs& 
 $  z"TestDataFramePlots.test_pie_df_nanc    Csöt d¡t ddd¡dœ}t|ƒ}t d¡dt d¡ddœ}t|ƒ}t|j|dd}|j|dd    d
t|j|ddd }|j|dd    d
t|j|dd }|j|dd    d
t|d j||ddd}|j|d    d    d
t|djt d¡dd}|j|dd d
t|jt d¡dd}|j|dd    d
dD]`}| ¡}t d¡d||<t|j|d}|j|dd    d
t|jdd|d}|j|dd d
q*t     t
¡|jtj   d¡dW5QRXtdgddgddœƒ}t     t ¡|j|dW5QRXdS)Nrrrr"皙™™™™É?皙™™™™Ù?T)Úyerrršr©Úxerrrà)ràrrš)ràr rr<)ràrârÍr—r$©rà)rr)ràu誤差r#)r$r#ràrWZzzz)rMr•rÚonesr rFÚ_check_has_errorbarsÚcopyrDZexternal_error_raisedr¥rNr‰r )r_rßr`Úd_errÚdf_errrCràZs_dfrdrdreÚtest_errorbar_plot˜sDÿ  z%TestDataFramePlots.test_errorbar_plotr<rñcCs$t d¡t ddd¡dœ}t|ƒ}t d¡dt d¡ddœ}t|ƒ}t|j|d|d}|j|dd    d
t|j||d}|j|dd    d
t|j|||d }|j|d    d    d
t|j|d|d|d }|j|d    d    d
t|jdd|d }|j|d    d    d
t|jd ||d |d}|j|ddd
dS)Nrrrr"rÞrßr#©ràrÍrrá)ràrârÍ)râràrÍT)rràrârrÍr)rMr•rrär rFrå)r_rÍrßr`rçrèrCr^rdrdreÚ"test_errorbar_plot_different_kindsÇs.úz5TestDataFramePlots.test_errorbar_plot_different_kindszIterator is consumed)rrJc    Csdt ¡Rt d¡t ddd¡dœ}t|ƒ}t|jt dt    |ƒ¡d}|j
|dddW5QRXdS)    Nrrrr"r„rãrrá) ÚwarningsÚcatch_warningsrMr•rr rFÚ    itertoolsr”r\rå)r_rßr`rCrdrdreÚtest_errorbar_plot_iteratorès
 
z.TestDataFramePlots.test_errorbar_plot_iteratorcCsrtt tj dd¡¡ƒ}tt tj dd¡¡ƒ}t|j|d}|j|dddt|jddd}|j|ddddS)Nr'rrãrrár)r$rà)rrMÚabsrNr‰r rFrå)r_r`rèrCrdrdreÚ'test_errorbar_with_integer_column_namesòs z:TestDataFramePlots.test_errorbar_with_integer_column_namesc
Cs.tt tj dd¡¡ƒ}tt tj dd¡¡ddgd}ddg}|D]$}t|j||d}|j|ddd    qDtd
dd d }|j    |d d|j    |d dt|j|dd}|j|ddd    t 
d¡t 
ddd¡dœ}t|ƒ}t  d¡dt  d¡ddœ}t|ƒ}||fD]$}    t|j|    d}|j|ddd    qdS)Nr'r!rrrˆrLr<rêráú1/1/2000ÚM)rrT)Zinplacerrr"rÞrß)r#r€rãr) rrMrðrNr‰r rFrår
r”r•rä)
r_r`rèÚkindsrÍrCÚixrßrçÚerrrdrdreÚ"test_errorbar_with_partial_columnsûs$  z5TestDataFramePlots.test_errorbar_with_partial_columnsc    Cs.t d¡t ddd¡dœ}t d¡dt d¡ddœ}tddd    d
}t||d }t||d }t|j||d }|j|dd dt|j||d }|j|dd dt|jd|d|d}|j|dddt|jdd|d}|j|dddt|j||d }|j|dd dt|jd||dd}|j|ddddS)Nrrrr"rÞrßròz1/1/2001ró)rr(rêrrár$r#)r$ràrÍrT)rrÍràr)rMr•rär
rr rFrå)    r_rÍrßrçrõrÞZtdf_errrCr^rdrdreÚtest_errorbar_timeseriess.  ûz+TestDataFramePlots.test_errorbar_timeseriesc    CsÐtj d¡tj ddd¡}tt d¡ dd¡ƒj}|j||dd}|j    d 
¡dj dd…df}|ddd…dft  ddg¡}t  ||¡t d    ¡}tjt|d
|j|jd W5QRXt  ¡dS) Nrr!rr*rM)ràrârrzCAsymmetrical error bars should be provided with the shape (3, 2, 5)r%rã)rMrNr‰rOrr•ZreshapeÚTrFr)Ú    get_pathsZverticesrqrDrr
r rIrJr¥r«)r_rör`rCZyerr_0_0Z expected_0_0rardrdreÚtest_errorbar_asymmetrical4s    ÿz-TestDataFramePlots.test_errorbar_asymmetricalc    Cs”ttj dd¡ttjdd…ƒd}t|jddt|j|dt     
d¡@| ¡}t |j ƒdksft ‚t ||j¡t |j ƒdks†t ‚W5QRXdS)Nr'r!r(T)Útablerr)rrMrNrOrPrQrRr rFrDrÛr\Ztablesr]r rürùrƒrdrdreÚ
test_tableIs$ zTestDataFramePlots.test_tablecs”tt tj dd¡¡tdƒddgd}tt tj dd¡¡dtdƒddgd}t|jjddd‰ˆj    ˆdddt|jjdd|d    ‰ˆj    ˆd
ddt|jjdd|d ‰ˆj    ˆdd
dt|jjdd||d ‰ˆj    ˆd
d
dd‡‡fdd„    }tt tj dd¡¡dddddgd}|jjdddddd‰ˆj    ˆd
d
d|ˆj
dd d|ˆj
ddd|jjddddd‰ˆj    ˆdd
d|ˆj
ddddS)Nr*rr#r$r±r"rrá)r#r$râr)r#r$rà)r#r$râràÚhas_xerrcsxg}‡fdd„ˆjDƒd}|D]"}t|ƒr8| |¡q | |¡q ‡fdd„|Dƒ}ˆj|t |gt|ƒ¡ddS)Ncsg|]}t|ˆdƒr|j‘qS)F)r´r¬rZ©Úhas_errrdrerùis z[TestDataFramePlots.test_errorbar_scatter.<locals>._check_errorbar_color.<locals>.<listcomp>rcsg|]}|ˆjkr|‘qSrd)r)r~©rCrdrerùos
rÄ)Ú
containersrÚextendÚappendr8rMrqr\)rrrr¬ZerrsÚelZ    err_lines©rCr_rÿreÚ_check_errorbar_colorgs  ÿzGTestDataFramePlots.test_errorbar_scatter.<locals>._check_errorbar_colorr'r…r†r‡rßrÏrˆr4)r#r$râràr‡rÿZhas_yerrrÃ)r#r$ràr¬)rþ) rrMrðrNr‰rXr rFr|rår)r_r`rèrrdrreÚtest_errorbar_scatterUs<ÿÿ ÿz(TestDataFramePlots.test_errorbar_scatterc    CsHtdddgddœƒ}tjttfdd|jdd    d
d d W5QRXdS) Nrrr!rrØz'unknown' is not ar%r…r†Úunknownr|)r#r$r3rÍ)rrIrJr¥ÚKeyErrorrFrrdrdreÚtest_scatter_unknown_colormapsz0TestDataFramePlots.test_scatter_unknown_colormapc
s„ddlm}| d¡tƒ\}}tddddddgddddddgddddddgddddddgd    œƒ}‡fd
d „}|D]}|jd d d|ddqr| | ¡¡||ƒt ¡tƒ\}}t     t
¡|jd|dd}W5QRX||ƒt ¡tƒ\}}|D]}|jd d d|dqø| | ¡¡|D]T}t |j ƒdks:t ‚ˆj| ¡ddˆj| ¡ddˆj|jddddq"t ¡dS)Nrr+rrr!rr*r8©r…r†r‡rßcs®|D](}t|jƒdkst‚ˆj| ¡ddq|d|dfD],}ˆj| ¡ddˆj|jddddq>|d|dfD],}ˆj| ¡ddˆj|jddddq|dS)    NrTr1rrFr2r!)r\r¬r]rSrirU©r^rC©r_rdreÚ_check™sz5TestDataFramePlots.test_sharex_and_ax.<locals>._checkr…r†r/T)r#r$r/rCÚsharex)rrCr©r#r$r/rCr1r2)ržrŸr«Ú_generate_4_axes_via_gridspecrrFÚ tight_layoutr rDrÛÚ UserWarningr\r¬r]rSrirU©r_r[Úgsr^r`rrCrdrreÚtest_sharex_and_ax‡s> 
 
üÿ     
 
z%TestDataFramePlots.test_sharex_and_axc
s€ddlm}tƒ\}}tddddddgddddddgddddddgddddddgdœƒ}‡fd    d
„}|D]}|jd d d |ddqh| | ¡¡||ƒt ¡tƒ\}}t     t
¡|jd|dd}W5QRX| | ¡¡||ƒt ¡tƒ\}}|D]}|jd d d |dqü| | ¡¡|D]T}t |j ƒdks>t ‚ˆj| ¡ddˆj| ¡ddˆj|jddddq&dS)Nrrrr!rr*r8r cs˜|D]>}t|jƒdkst‚ˆj| ¡ddˆj|jddddq|d|dfD]}ˆj| ¡ddqT|d|dfD]}ˆj| ¡ddq|dS)    NrTr1r2rrr!F)r\r¬r]rSrUrir rrdrerÎsz5TestDataFramePlots.test_sharey_and_ax.<locals>._checkr…r†r/T)r#r$r/rCré)rrCrérr1r2)ržrŸrrrFrr rDr«rÛrr\r¬r]rSrirUrrdrreÚtest_sharey_and_ax½s< 
üÿ    
 
 
z%TestDataFramePlots.test_sharey_and_axc
Csäi}tjjD]}i}|dkr`ttjjddtjjddt d¡tjjdddœƒ}dddœ}n|dkrvt     ¡ 
¡}nt     ¡}t   |j fd    |i|—Ž¡||<q t ¡t ¡d
}| ¡D]$}tjt|d  |jW5QRXqºd S) z3Check that every plot type gets properly collected.)r}r|r{rrsrrlrmr"rÃrÍz)weakly-referenced object no longer existsr%N)r r²Z
_all_kindsrrMrNrur•rDrErðÚweakrefÚproxyrFr«ÚgcZcollectr=rIrJÚReferenceErrorr¬)r_ÚresultsrÍÚargsr`raZ result_valuerdrdreÚtest_memory_leakòs*   ýÿ   z#TestDataFramePlots.test_memory_leakc
    sBddlm‰ddlm‰ttj d¡tdddd}t    tj dd¡|j
t dƒd    }‡‡fd
d „}‡‡fd d „}|ƒ|ƒfD]”\}}|j |d}t |jƒdks t‚|j |d}t |jƒdks¾t‚||fD]>}|j| ¡dd|j| ¡dd|j|jddddqÆt ¡qz|ƒ|ƒfD]’\}}|j d||gd}t |jƒdksJt‚t |jƒdks^t‚|D]@}|j| ¡dd|j| ¡dd|j|jddddqbt ¡q|ƒ\}}t t¡|j d||gddd}W5QRXt |djƒdksþt‚t |djƒdkst‚||fD]}|j| ¡ddq|j|d ¡dd|j|djdddd|j|d ¡dd|j|djddddt ¡|ƒ\}}t t¡|j d||gddd}W5QRXt |djƒdksît‚t |djƒdkst‚|j|d ¡dd|j|d ¡dd||fD].}|j| ¡dd|j|jddddq:t ¡‡‡fdd„}    |    ƒ}t    tj dd¡|j
t dƒd    }|j d|d}|D]T}t |jƒdksÎt‚|j| ¡dd|j| ¡dd|j|jddddq¶t ¡|    ƒ}t t¡|j d|ddd}W5QRX|D]}t |jƒdksFt‚qF|d|dfD]}|j| ¡ddqr|d|dfD]}|j| ¡ddqœ|d|dfD].}|j| ¡dd|j|jddddqÆ|d|dfD].}|j| ¡dd|j|jddddqt ¡dS)Nr)Úgridspecr'rò)rr(rÚABr±csLˆ dd¡}ˆ ¡}| |dd…dd…f¡}| |ddd…f¡}||fS)Nr!rr©ÚGridSpecrÇr¡©rrbrÔrÕ©r r[rdreÚ_get_vertical_grids
 zHTestDataFramePlots.test_df_gridspec_patterns.<locals>._get_vertical_gridcsLˆ dd¡}ˆ ¡}| |dd…dd…f¡}| |dd…df¡}||fS)Nrr!rr"r$r%rdreÚ_get_horizontal_grid%s
 zJTestDataFramePlots.test_df_gridspec_patterns.<locals>._get_horizontal_gridrrTr1r2rB)rrCrréFcstˆ dd¡}ˆ ¡}| |dd…dd…f¡}| |dd…df¡}| |ddd…f¡}| |d¡}||||fS)Nr!rrr")rrbrÔrÕZax3Zax4r%rdreÚ_get_boxed_gridbs zETestDataFramePlots.test_df_gridspec_patterns.<locals>._get_boxed_gridrÚABCDr!)r@r ržrŸrrMrNr‰r
rr)rPrFr\r¬r]rSrirUrDr«rÛr)
r_Útsr`r&r'rÔrÕrCr^r(rdr%reÚtest_df_gridspec_patternss”     
 
   
        z,TestDataFramePlots.test_df_gridspec_patternscCs4|jtdddgdddgdœƒtjjdddœd    dS)
Nrrr!rrØr…r†r")Úkws)Z_check_grid_settingsrr r²Z_dataframe_kindsrrdrdreÚtest_df_grid_settingsˆs
ýz(TestDataFramePlots.test_df_grid_settingsc    Cs@|j ¡\}}| ddddg¡ttj d¡ƒj|dttj     d¡tj     d¡dœƒ}|j 
¡}| d¡}|jd|dd    dd
d |j ¡\}}d d l m }||ƒ}|j dddd}ttj d¡ƒj|dttj d¡ƒj|d|j ¡\}}d dlm}||dddd}ttj d¡ƒj|dttj d¡ƒj|ddS)NrÞr'rr=rØ)rrrrr|r…r†Zhsv)rÍrCr#r$r‡r6r)Úmake_axes_locatabler<z5%gš™™™™™©?)r1Úpad)Ú
inset_axesz30%rºr!)rïrYrv)r[rZadd_axesrrMrNrOrFrr‰rÇZmpl_toolkits.axes_grid1r.Z append_axesZ%mpl_toolkits.axes_grid1.inset_locatorr0)    r_rbrCr`r.ÚdividerZcaxr0ZiaxrdrdreÚtest_plain_axess$
 
  z"TestDataFramePlots.test_plain_axesÚmethodcCspttj dd¡tdƒdjdd„djdd„d    }d
}d d g}||d dœ}t|j|ƒf|Ž}|j|j    |ddS)NrMrr!rˆcSs
|j ¡Sr%)rmr–©r`rdrdreÚ<lambda>³ózBTestDataFramePlots.test_secondary_axis_font_size.<locals>.<lambda>©rncSs
|jdS)Ngš™™™™™ñ?r7r4rdrdrer5´r6)rorrnroT)rârQZ
mark_right)r^rT)
rrMrNr‰rPZassignr´rFrHrã)r_r3r`rQrËrÊrCrdrdreÚtest_secondary_axis_font_size®sÿþÿ z0TestDataFramePlots.test_secondary_axis_font_sizecCs”tdddgdddgdddgd    œƒ}|jjd
d }| d d¡d d„| ¡Dƒ}tt|| ¡ƒƒ}|ddkspt‚|ddks€t‚|ddkst‚dS)Nr!rrrÎéZMondayZTuesdayZ    Wednesday)ZsalesZvisitsÚdayr:r‘rcSsg|] }| ¡‘qSrdr"©r÷ÚtrdrdrerùÊszATestDataFramePlots.test_x_string_values_ticks.<locals>.<listcomp>r¹rºr»)    rrFrÃÚset_xlimrUrlrWÚ
get_xticksr])r_r`rCÚ xticklabelsÚlabels_positionrdrdreÚtest_x_string_values_ticks¾sýÿ z-TestDataFramePlots.test_x_string_values_tickscCs®t ddgddgg¡}ttj dd¡ddg|d}| ¡}| d    d¡d
d „| ¡Dƒ}t    t
||  ¡ƒƒ}|d d kszt ‚|ddksŠt ‚|ddksšt ‚|ddksªt ‚dS)Nr¯iÝrrrrlrmr>rcSsg|] }| ¡‘qSrdr"r;rdrdrerùØszETestDataFramePlots.test_x_multiindex_values_ticks.<locals>.<listcomp>z    (2012, 1)r¹z    (2012, 2)rºz    (2013, 1)r»z    (2013, 2)r¼) rZ from_productrrMrNr‰rFr=rUrlrWr>r])r_r)r`rCr?r@rdrdreÚtest_x_multiindex_values_ticksÑs z1TestDataFramePlots.test_x_multiindex_values_tickscCsLtddgddgd}|j|d}| ¡}|ddks8t‚|ddksHt‚dS)Nrrrr(ror)rrFr½r])r_rÍr`rCÚxlimsrdrdreÚtest_xlim_plot_lineàs
 z&TestDataFramePlots.test_xlim_plot_linecCsÈ|j ¡\}}ddddg}tddddgdd    dd
gddd d gd dddgdœ|d}|dddgjj|dd|dgj|dd| ¡}|ddks–t‚|d dks¦t‚dd„| ¡Dƒ}||ksÄt‚dS)NZk1Zk2Zk3Zk4ièr¯iÜi„ixi¸ i@i°rr!r)Ús1Ús2Ús3râr(rErFrGF)rCrÐrâT)rCrârcSsg|] }| ¡‘qSrdr"r;rdrdrerùszWTestDataFramePlots.test_xlim_plot_line_correctly_in_mixed_plot_type.<locals>.<listcomp>)r[rrrFr<r½r]rU)r_rbrCZindexesr`rCr?rdrdreÚ0test_xlim_plot_line_correctly_in_mixed_plot_typeês" 
 
 
 
üù    zCTestDataFramePlots.test_xlim_plot_line_correctly_in_mixed_plot_typecCsltdgtd}|jst‚| ¡}t| ¡ƒdks4t‚| ¡d}t| ¡ƒdksTt‚t| ¡ƒdksht‚dS)NZfoo)r?rhrr)    rÚintÚemptyr]rFr\r‚rªrÚ)r_r`rCrLrdrdreÚtest_plot_no_rowss
 z$TestDataFramePlots.test_plot_no_rowsc    Cs4tdddgƒ}tjtdd| ¡W5QRXdS)Nr…r†r‡r¶r%)rrIrJr rFrrdrdreÚtest_plot_no_numeric_datasz,TestDataFramePlots.test_plot_no_numeric_data)rLr<rñrzrnr|rÃr{cCsÀt d¡t d¡dt d¡dt d¡t d¡dœ}t|ƒ}|jddg|d}t|ƒdks`t‚dd    gd
d gd gf}t||ƒD]<\}}|d krœ|j||d|dkr~t|jƒt|ƒks~t‚q~dS)Nr'r)r…r†r‡rßrÏ)r†rÏ)r‡rß©rrÍr!r†rÏr‡rßr…r{rprL)    rMr•rrFr\r]rWrqr¬)r_rÍrßr`r^rÜrCrdrdrdreÚtest_group_subplots  ûz%TestDataFramePlots.test_group_subplotc    Cs<ttdƒƒ}d}tjt|d|jdgdW5QRXdS)Nrz!An iterable subplots for a Seriesr%©r…r@)rrXrIrJÚNotImplementedErrorrF)r_ZserrardrdreÚ(test_group_subplot_series_notimplemented+s z;TestDataFramePlots.test_group_subplot_series_notimplementedc    CsLtt d¡t ddg¡d}d}tjt|d|jdgdW5QRXdS)Nrr›)rrrˆz6An iterable subplots for a DataFrame with a MultiIndexr%r@)    rrMÚeyerrYrIrJrPrFrÄrdrdreÚ,test_group_subplot_multiindex_notimplemented1sz?TestDataFramePlots.test_group_subplot_multiindex_notimplementedc    CsFtt d¡ddgd}d}tjt|d|jdgdW5QRXdS)Nrr…rˆz4An iterable subplots for a DataFrame with non-uniquer%rOr@)rrMrRrIrJrPrFrÄrdrdreÚ0test_group_subplot_nonunique_cols_notimplemented7szCTestDataFramePlots.test_group_subplot_nonunique_cols_notimplementedzsubplots, expected_msg)é{z(subplots should be a bool or an iterable)r…ú!each entry should be a list/tuple))rrV)rOrVc    CsHt d¡t d¡dœ}t|ƒ}tjt|d|j|dW5QRXdS)Nr'rØr%r@©rMr•rrIrJr¥rF)r_rZ expected_msgrßr`rdrdreÚtest_group_subplot_bad_input=s z/TestDataFramePlots.test_group_subplot_bad_inputc    CsJt d¡t d¡dœ}t|ƒ}tjtdd|jdgdW5QRXdS)Nr'rØz Column label\(s\) \['bad_name'\]r%)r…Zbad_namer@rW©r_rßr`rdrdreÚ&test_group_subplot_invalid_column_namePsz9TestDataFramePlots.test_group_subplot_invalid_column_namec    CsTt d¡t d¡t d¡dœ}t|ƒ}tjtdd|jddgdW5QRXdS)Nr')r…r†r‡zshould be in only one subplotr%rØ)r…r‡r@rWrYrdrdreÚ$test_group_subplot_duplicated_columnWsz7TestDataFramePlots.test_group_subplot_duplicated_column)r`r|r}c    CsLt d¡t d¡dœ}t|ƒ}tjtdd|jdg|dW5QRXdS)Nr'rØz1When subplots is an iterable, kind must be one ofr%rMrW)r_rÍrßr`rdrdreÚtest_group_subplot_invalid_kind^sÿz2TestDataFramePlots.test_group_subplot_invalid_kindz index_name, old_label, new_label)Nr¦Únew)Úoldr^r])Nr¦r¦)Nr¦rr¦cCsŒtddgddggddgd}||j_|j|d}| ¡|ks@t‚| ¡dksPt‚|j|||d    }| ¡t|ƒkstt‚| ¡t|ƒksˆt‚dS)
Nrrr*úType AúType Brˆror¦)rÍrÓÚxlabel)rr)rŽrFÚ
get_xlabelr]r7Ústr)r_rÍZ
index_nameZ    old_labelZ    new_labelr`rCrdrdreÚ(test_xlabel_ylabel_dataframe_single_plotgs z;TestDataFramePlots.test_xlabel_ylabel_dataframe_single_plotzxlabel, ylabel)NN)úX LabelN)NúY Label)rerfr|r}cCstd}d}tddgddgg||gd}|j|||||d}| ¡|dkrJ|n|ksTt‚| ¡|dkrf|n|kspt‚dS)Nr_r`rrr*rˆ)rÍr#r$rarÓ)rrFrbr]r7)r_rÍrarÓZxcolZycolr`rCrdrdreÚ'test_xlabel_ylabel_dataframe_plane_plotƒs z:TestDataFramePlots.test_xlabel_ylabel_dataframe_plane_plotrâ)FTcCsjtdgƒj|dddgd}|jjD]B}|j ¡r"| ¡dks@t‚| ¡dksPt‚|     ¡ddks"t‚q"dS)NrrÍ)rr-r³)rârÓr.r+)
rrFrÇr^rœZ get_visibler7r]rçZ
get_yticks)r_râZax_dfrCrdrdreÚtest_secondary_y˜s
ÿ 
z#TestDataFramePlots.test_secondary_y)NNNN)oÚ__name__Ú
__module__Ú __qualname__rIÚmarkZxfailZslowrfrxrr„r‹rr–Z parametrizer¢r¦r­r²r¸rÁrÅrÌr×rárårèrêrîrórrr    r rrrr,r.r:r>rCrGrXrerjrmÚtdZskip_if_no_scipyrrrwr‚rMrärŠrr•r—r¥r©r®r±rµr¸r¹rºr¿rÀrÁrÅrÆrÈrÉrËrÔrÝrérër¥rïrñr÷rørûrýrr rrrr+r-r2r8rArBrDrHrKrLrNrQrSrTrXrZr[r\rdrgrhrdrdrdrer's˜  f
ÿ
 
%  
/'þ  %         þ 
1     
 
 
'ÿ
ú
üþ    
 
     þþ
 
ýþ
    $
 
 
ýþ
*
. 
        
 
! ,65
"s
 
    
ÿ üþ    
 ûþ
üþ     rcCsrddl}ddl}ddlm}|j dd¡}| |d¡}| |d¡}| |d¡}| |d¡}|||||gfS)Nrrrt)rrr›rA)r@Zmatplotlib.gridspecržrŸr r#Zsubplot)rBr@r[rZax_tlZax_llZax_trZax_lrrdrdrer¤s r)&Ú__doc__rrrrîr
rQrìrÚnumpyrMrIZpandas.util._test_decoratorsÚutilZ_test_decoratorsrmZpandas.core.dtypes.apirZpandasrtrrrrr    r
r Zpandas._testingZ_testingrDZpandas.tests.plotting.commonr r Zpandas.io.formats.printingrZskip_if_no_mplrrrdrdrdreÚ<module>sH $