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
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
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
U
­ý°dƒã@sàddlmZmZddlZddlZddlmZmZm    Z    e 
d¡Z ddl m Z e  dd¡Ze jedd    Zejd
d „ƒZejd d „ƒZejdd„ƒZejdd„ƒZdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zd d!„Zd"d#„Zd$d%„Z d&d'„Z!d(d)„Z"d*d+„Z#d,d-„Z$ej% &d.d/dg¡ej% &d0d/dg¡ej% &d1dd/g¡d2d3„ƒƒƒZ'ej% &d.d/dg¡ej% &d0d/dg¡d4d5„ƒƒZ(ej% &d.d/dg¡ej% &d0d/dg¡ej% &d6d7gd8gd8g¡d9d:„ƒƒƒZ)d;d<„Z*ej% &d=d>d?d@dAg¡dBdC„ƒZ+ej% &d.dd/g¡ej% &d0dd/g¡dDdE„ƒƒZ,ej% &dFdd/g¡ej% &dGdd/g¡dHdI„ƒƒZ-dJdK„Z.dLdM„Z/dNdO„Z0dPdQ„Z1dRdS„Z2dTdU„Z3ej% &dVdWd.g¡ej% &dXdYdZd[d\d]d^d_d`dadbdcdddedfg¡dgdh„ƒƒZ4didj„Z5dkdl„Z6dmdn„Z7dodp„Z8dqdr„Z9dsdt„Z:dS)ué)ÚdedentÚindentN)Ú    DataFrameÚ
MultiIndexÚoption_contextÚjinja2)ÚStylerÚpandaszio/formats/templatesT)ÚloaderZ trim_blockscCs ttdgdggddgdgdƒS)Nçáz®Gá@ç…ëQ¸…@ÚaÚbÚA©ÚindexÚcolumns)rr©rrú^d:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\pandas/tests/io/formats/style/test_html.pyÚstylersrcCs6t ddgddgg¡}ttt d¡ dd¡||dƒS)Nr rÚcÚdéér)rÚ from_productrrÚnpÚarangeÚreshape)ÚmidxrrrÚ    styler_misrcCs
t d¡S)Nzhtml_style.tpl©ÚenvZ get_templaterrrrÚ    tpl_style!sr"cCs
t d¡S)Nzhtml_table.tplr rrrrÚ    tpl_table&sr#c    Cs8tdƒ}| ¡}W5QRXd|ks(t‚d|ks4t‚dS)Nz$pandas/io/formats/templates/html.tplz{% include html_style_tpl %}z{% include html_table_tpl %})ÚopenÚreadÚAssertionError)ÚfileÚresultrrrÚ"test_html_template_extends_options+s
 r)cCs&|jddd}tdƒ}||ks"t‚dS)NT)Zexclude_stylesÚ doctype_htmla        <!DOCTYPE html>
        <html>
        <head>
        <meta charset="utf-8">
        </head>
        <body>
        <table>
          <thead>
            <tr>
              <th >&nbsp;</th>
              <th >A</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <th >a</th>
              <td >2.610000</td>
            </tr>
            <tr>
              <th >b</th>
              <td >2.690000</td>
            </tr>
          </tbody>
        </table>
        </body>
        </html>
        )Úto_htmlrr&©rr(ÚexpectedrrrÚtest_exclude_styles4s
ÿr.cCsf| d¡ dddœg¡ dd„¡ d¡ tdgd    gd
gd ¡ d ¡ d ¡tdƒ}||     ¡ksbt
‚dS)NÚÚthzatt2:v2;©ÚselectorÚpropscSsdS)Nzatt1:v1;r)ÚxrrrÚ<lambda>Zóz%test_w3_html_format.<locals>.<lambda>z!class="my-cls1" style="attr3:v3;"zmy-cls2r rrz{:.1f}zA comprehensive testa        <style type="text/css">
        #T_ th {
          att2: v2;
        }
        #T__row0_col0, #T__row1_col0 {
          att1: v1;
        }
        </style>
        <table id="T_" class="my-cls1" style="attr3:v3;">
          <caption>A comprehensive test</caption>
          <thead>
            <tr>
              <th class="blank level0" >&nbsp;</th>
              <th id="T__level0_col0" class="col_heading level0 col0" >A</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <th id="T__level0_row0" class="row_heading level0 row0" >a</th>
              <td id="T__row0_col0" class="data row0 col0 my-cls2" >2.6</td>
            </tr>
            <tr>
              <th id="T__level0_row1" class="row_heading level0 row1" >b</th>
              <td id="T__row1_col0" class="data row1 col0" >2.7</td>
            </tr>
          </tbody>
        </table>
        ) Úset_uuidÚset_table_stylesÚapplymapZset_table_attributesZset_td_classesrÚformatÚ set_captionrr+r&)rr-rrrÚtest_w3_html_formatWs"
 
ÿþýûù    ÷ ÿr<cCs@tddggddgddggd}t|ddd    }d
| ¡ks<t‚dS) NééÚl0Úl1aÚl1b)ÚdatarÚ_F©ÚuuidÚcell_idsz7<th class="col_heading level0 col0" colspan="2">l0</th>©rrr+r&©ÚdfrrrrÚtest_colspan_w3…srJcCs@tddggddgddggd}t|ddd    }d
| ¡ks<t‚dS) Nr=r>r?r@rA)rBrrCFrDz7<th class="row_heading level0 row0" rowspan="2">l0</th>rGrHrrrÚtest_rowspan_w3ŒsrKcCs@| d¡| dddœg¡|jdd}tdƒ}||ks<t‚dS)NÚabcÚtdú color: red;r1T©r*a¡        <!DOCTYPE html>
        <html>
        <head>
        <meta charset="utf-8">
        <style type="text/css">
        #T_abc td {
          color: red;
        }
        </style>
        </head>
        <body>
        <table id="T_abc">
          <thead>
            <tr>
              <th class="blank level0" >&nbsp;</th>
              <th id="T_abc_level0_col0" class="col_heading level0 col0" >A</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <th id="T_abc_level0_row0" class="row_heading level0 row0" >a</th>
              <td id="T_abc_row0_col0" class="data row0 col0" >2.610000</td>
            </tr>
            <tr>
              <th id="T_abc_level0_row1" class="row_heading level0 row1" >b</th>
              <td id="T_abc_row1_col0" class="data row1 col0" >2.690000</td>
            </tr>
          </tbody>
        </table>
        </body>
        </html>
        )r7r8r+rr&r,rrrÚ test_styles“s
 ÿ#rPcCs@|jdd}d|kst‚d|ks$t‚d|ks0t‚d|ks<t‚dS)NFrOz<html>z<body>z<!DOCTYPE html>z<head>©r+r&©rr(rrrÚ test_doctype½s
    rSc    CsLtddƒ8|jdd}d|ks$t‚|jddd}d|ks>t‚W5QRXdS)    Nzstyler.render.encodingÚASCIITrOz<meta charset="ASCII">ÚANSI)r*Úencodingz<meta charset="ANSI">)rr+r&rRrrrÚtest_doctype_encodingÅs
   rWcCs0|jdd}d|kst‚| ¡}d|ks,t‚dS)NT)Z bold_headerszth {
  font-weight: bold;
}rQrRrrrÚtest_bold_headers_argÍs  rXcCs0|jdd}d|kst‚| ¡}d|ks,t‚dS)Nzfoo bar)Úcaptionz<caption>foo bar</caption>rQrRrrrÚtest_caption_argÔs  rZc CsZdddddh}dddd    d
d d d ddddh }t|jƒ}||ks@t‚t|jƒ}||ksVt‚dS)NZ before_styleÚstyleZ table_stylesZbefore_cellstyleZ    cellstyleZ before_tableÚtablerYÚtheadÚtbodyZ after_tableZbefore_head_rowsZhead_trZafter_head_rowsZ before_rowsÚtrZ
after_rows)ÚsetÚblocksr&)r"r#Zexpected_styleÚexpected_tableZresult1Zresult2rrrÚtest_block_namesÛs.ûô
 
rccCsŽ| d¡ d¡}| tdƒ¡t t| d¡ƒd¡}t|tƒsBt‚|j    tj    k    sRt‚|j
tj
k    sbt‚|t dddgiƒƒ}d|j dd    ksŠt‚dS)
NÚtplzmyhtml_table.tplz©            {% extends "html_table.tpl" %}
            {% block table %}
            <h1>{{custom_title}}</h1>
            {{ super() }}
            {% endblock table %}rr=r>z<h1>My Title</h1>
 
 
<tablezMy Title)Z custom_title) ÚmkdirÚjoinÚwriterrÚfrom_custom_templateÚstrÚ
issubclassr&r!Ztemplate_html_tablerr+©ZtmpdirÚpr(rrrrÚtest_from_custom_template_tableùsÿÿ
rmcCsŒ| d¡ d¡}| tdƒ¡tjt| d¡ƒdd}t|tƒsDt‚|j    tj    k    sTt‚|j
tj
k    sdt‚|t dddgiƒƒ}d|  ¡ksˆt‚dS)    Nrdzmyhtml_style.tplzº            {% extends "html_style.tpl" %}
            {% block style %}
            <link rel="stylesheet" href="mystyle.css">
            {{ super() }}
            {% endblock style %})Z
html_stylerr=r>z2<link rel="stylesheet" href="mystyle.css">
 
<style) rerfrgrrrhrirjr&r!Ztemplate_html_stylerr+rkrrrÚtest_from_custom_template_style sÿÿ
 ÿrncCs| d¡d| ¡kst‚dS)N)zfull capz    short capz<caption>full cap</caption>)r;r+r&©rrrrÚtest_caption_as_sequence#s
rprFrÚ
index_namecCsØ|r d|j_|r|jdd|r,|jddd}d}| d¡ ¡}| dd    ¡|k|ksZt‚| d
d ¡|k|ksrt‚| d d dd¡|k|oŠ|ks’t‚| dddd¡|k|oª|ks²t‚| d d dd¡|k|oÌ| ksÔt‚dS)Nz    some textr©Úaxisr=z[#T_ {0} {{
  position: sticky;
  background-color: inherit;
  left: 0px;
  z-index: {1};
}}z_#T_ {0} {{
  position: sticky;
  background-color: inherit;
  top: {1}px;
  z-index: {2};
{3}}}r/úthead tr th:nth-child(1)ú 3 !importantztbody tr th:nth-child(1)Ú1úthead tr:nth-child(1) thÚ0Ú2z  height: 25px;
úthead tr:nth-child(2) thÚ25)rÚnameÚ
set_stickyr7r+r:r&)rrrrqÚleft_cssÚtop_cssÚresrrrÚtest_sticky_basic(s0  ÿÿþÿýÿrcCsÖ|r|jdd|r |jddd}d}| d¡ ¡}| ddd    ¡|k|ksPt‚| d
dd ¡|k|ksjt‚| d d d    ¡|k|ks„t‚| dd d ¡|k|ksžt‚| ddd¡|k|ks¸t‚| ddd¡|k|ksÒt‚dS)Nrrrr=úƒ#T_ {0} {{
  position: sticky;
  background-color: inherit;
  left: {1}px;
  min-width: 75px;
  max-width: 75px;
  z-index: {2};
}}úl#T_ {0} {{
  position: sticky;
  background-color: inherit;
  top: {1}px;
  height: 25px;
  z-index: {2};
}}r/rtrxruztbody tr th.level0rvúthead tr th:nth-child(2)Z75útbody tr th.level1rwryrzr{)r}r7r+r:r&)rrrr~rr€rrrÚtest_sticky_miOs&  ÿÿþþr†Úlevelsr=ÚonecCsÊddgddg|j_|j_|r,|jd|d|r>|jd|dd}d}| d¡ ¡}d    |ks`t‚d
|kslt‚d |ksxt‚| d d d¡|k|ks’t‚| dd d¡|k|ks¬t‚| dd d¡|k|ksÆt‚dS)NZzerorˆr)rsr‡r=r‚rƒr/z#T_ thead tr th:nth-child(1)z#T_ tbody tr th.level0z#T_ thead tr:nth-child(1) thr„rxrur…rvrzry)rÚnamesrr}r7r+r&r:)rrrr‡r~rr€rrrÚtest_sticky_levelsqs$ÿÿ   þrŠc    Cs*tjtdd|jddW5QRXdS)Nz+No axis named bad for object type DataFrame)ÚmatchÚbadrr)ÚpytestZraisesÚ
ValueErrorr}rorrrÚtest_sticky_raises“srzsparse_index, sparse_columns)TT)TF)FT)FFc        Cs¨t dddg¡}t dddg¡}tddd    gd
d d gd ddgg||d}|j}| ¡}td|d|ƒ"| ¡}||k|ox|ks€t‚W5QRX|j||d}||ks¤t‚dS)N)ÚZr )rr)ÚYr)rr )rr)ÚBrr=r>érééééé    rzstyler.sparse.indexzstyler.sparse.columns)Ú sparse_indexÚsparse_columns)rÚ from_tuplesrr[r+rr&)    r™ršÚcidxZridxrIrZ default_htmlZhtml1Zhtml2rrrÚtest_sparse_options˜s&ÿrcCs¬dd„}d\|_|_|r&|j|dd|r8|j|dd| ¡}d|ksLt‚d|ksXt‚d    |k|ksht‚d
|k|ksxt‚d |k|ksˆt‚d |k|ks˜t‚d |k|ks¨t‚dS)NcSsdS)Nz
attr: val;r©Úvrrrr5±r6z/test_applymap_header_cell_ids.<locals>.<lambda>)r/Frrrrz)<td class="data row0 col0" >2.610000</td>z)<td class="data row1 col0" >2.690000</td>z?<th id="T__level0_row0" class="row_heading level0 row0" >a</th>z?<th id="T__level0_row1" class="row_heading level0 row1" >b</th>z1#T__level0_row0, #T__level0_row1 {
  attr: val;
}z?<th id="T__level0_col0" class="col_heading level0 col0" >A</th>z #T__level0_col0 {
  attr: val;
})rErFÚapplymap_indexr+r&)rrrÚfuncr(rrrÚtest_applymap_header_cell_ids­s(   þþþr¢ÚrowsÚcolscCsN|j|r dnd|rdndd}d|ks*t‚d|k|k    s:t‚d|k|k    sJt‚dS)Nr>)Zmax_rowsZ max_columnsz>5</td>z>8</td>z>2</td>rQ)rr£r¤r(rrrÚ test_maximumsÎs
 
þ r¥cCsäddddddddœ}t d    d
gd d gg¡}ttt d ¡ dd¡||dddj|d}ddg|j_    |j
|jdd…dd|j
|j dd…dd|j dd„dd|j dd„dd|  dd„¡tdƒ}| ¡}||ksàt‚dS)NZROWHEADZIDXNAMEZROWZROWTRIMZLEVELZDATAZBLANK)Z row_headingrqÚrowZrow_trimÚlevelrBZblankr rrrrrrr©Úuuid_len)Zcss_class_namesZn1Zn2r=rrcSsdS)NrNrržrrrr5ðr6z/test_replaced_css_class_names.<locals>.<lambda>cSsdS)Nz color: green;rržrrrr5ñr6cSsdS©Nz color: blue;rržrrrr5òr6a8    <style type="text/css">
    #T__ROW0_col0 {
      color: blue;
    }
    #T__LEVEL0_ROW0, #T__LEVEL1_ROW0 {
      color: red;
    }
    #T__LEVEL0_col0, #T__LEVEL1_col0 {
      color: green;
    }
    </style>
    <table id="T_">
      <thead>
        <tr>
          <th class="BLANK" >&nbsp;</th>
          <th class="IDXNAME LEVEL0" >n1</th>
          <th id="T__LEVEL0_col0" class="col_heading LEVEL0 col0" >a</th>
        </tr>
        <tr>
          <th class="BLANK" >&nbsp;</th>
          <th class="IDXNAME LEVEL1" >n2</th>
          <th id="T__LEVEL1_col0" class="col_heading LEVEL1 col0" >c</th>
        </tr>
        <tr>
          <th class="IDXNAME LEVEL0" >n1</th>
          <th class="IDXNAME LEVEL1" >n2</th>
          <th class="BLANK col0" >&nbsp;</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <th id="T__LEVEL0_ROW0" class="ROWHEAD LEVEL0 ROW0" >a</th>
          <th id="T__LEVEL1_ROW0" class="ROWHEAD LEVEL1 ROW0" >c</th>
          <td id="T__ROW0_col0" class="DATA ROW0 col0" >0</td>
        </tr>
      </tbody>
    </table>
    )rrrrrrrr8rr‰Úhiderr r9rr+r&)Úcssrrr-r(rrrÚtest_replaced_css_class_namesÛs4ö þý ÿ)r­cCs\| d¡ dd„¡j|jjdd…ddj|jjdd…dd ¡}tdƒ}||ksXt‚dS)    Nr/cSsdSrªrržrrrr5$r6zEtest_include_css_style_rules_only_for_visible_cells.<locals>.<lambda>r=rrrrzr        <style type="text/css">
        #T__row0_col0 {
          color: blue;
        }
        </style>
        )    r7r9r«rBrrr+rr&©rr(Zexpected_stylesrrrÚ3test_include_css_style_rules_only_for_visible_cells s
ÿþýÿÿ    r¯cCsX| d¡jdd„ddj|jjddj|jjdd…dd ¡}tdƒ}||ksTt‚dS)    Nr/cSsdSrªrržrrrr59r6zLtest_include_css_style_rules_only_for_visible_index_labels.<locals>.<lambda>rrrrr=z…        <style type="text/css">
        #T__level0_row0, #T__level1_row0 {
          color: blue;
        }
        </style>
        ©    r7r r«rBrrr+rr&r®rrrÚ:test_include_css_style_rules_only_for_visible_index_labels5s
ÿþýÿÿ    r±cCsX| d¡jdd„ddj|jjdd…ddj|jjdd ¡}tdƒ}||ksTt‚dS)    Nr/cSsdSrªrržrrrr5Nr6zMtest_include_css_style_rules_only_for_visible_column_labels.<locals>.<lambda>rrrr=rz…        <style type="text/css">
        #T__level0_col0, #T__level1_col0 {
          color: blue;
        }
        </style>
        r°r®rrrÚ;test_include_css_style_rules_only_for_visible_column_labelsJs
ÿþýÿÿ    r²cCsÈtjddgdgddggdddgd    }tjd
gd d gd dggdddgd    }tt d¡ dd¡||d}t|dd}|jdddjddd|jdgdd|jdgdd| ¡}t    dƒ}||ksÄt
‚dS)NZi0Új0Úi1Úi2Új2zi-0zi-1zi-2)r‰Úc0Zc1Úd1Úc2Úd2zc-0zc-1zc-2rrrrr¨r=)r§rs)r³r´r¶rr)r·r¸rºa
    <style type="text/css">
    </style>
    <table id="T_">
      <thead>
        <tr>
          <th class="blank" >&nbsp;</th>
          <th class="index_name level1" >c-1</th>
          <th id="T__level1_col0" class="col_heading level1 col0" colspan="2">c1</th>
          <th id="T__level1_col2" class="col_heading level1 col2" >d1</th>
        </tr>
        <tr>
          <th class="blank" >&nbsp;</th>
          <th class="index_name level2" >c-2</th>
          <th id="T__level2_col0" class="col_heading level2 col0" >c2</th>
          <th id="T__level2_col1" class="col_heading level2 col1" >d2</th>
          <th id="T__level2_col2" class="col_heading level2 col2" >c2</th>
        </tr>
        <tr>
          <th class="index_name level0" >i-0</th>
          <th class="index_name level2" >i-2</th>
          <th class="blank col0" >&nbsp;</th>
          <th class="blank col1" >&nbsp;</th>
          <th class="blank col2" >&nbsp;</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <th id="T__level0_row0" class="row_heading level0 row0" rowspan="2">i0</th>
          <th id="T__level2_row0" class="row_heading level2 row0" >i2</th>
          <td id="T__row0_col0" class="data row0 col0" >0</td>
          <td id="T__row0_col1" class="data row0 col1" >1</td>
          <td id="T__row0_col2" class="data row0 col2" >2</td>
        </tr>
        <tr>
          <th id="T__level2_row1" class="row_heading level2 row1" >j2</th>
          <td id="T__row1_col0" class="data row1 col0" >4</td>
          <td id="T__row1_col1" class="data row1 col1" >5</td>
          <td id="T__row1_col2" class="data row1 col2" >6</td>
        </tr>
        <tr>
          <th id="T__level0_row2" class="row_heading level0 row2" >j0</th>
          <th id="T__level2_row2" class="row_heading level2 row2" >i2</th>
          <td id="T__row2_col0" class="data row2 col0" >8</td>
          <td id="T__row2_col1" class="data row2 col1" >9</td>
          <td id="T__row2_col2" class="data row2 col2" >10</td>
        </tr>
      </tbody>
    </table>
    ) rrrrrrrr«r+rr&)rrœrIrr(r-rrrÚ.test_hiding_index_columns_multiindex_alignment_s$ÿÿ ÿ4r»c    CsÔtt d¡ dd¡ƒ}t ddddgddgg¡|_t ddddgddgg¡|_ddgd    d
g|j_|j_t    |d dd }|j
d ddgddj
d ddgddt ddddƒ|  ¡}W5QRXt dƒ}||ksÐt‚dS)Né@r—rr=r>r“r rrrF)rFr©)rr)rr=)r=rrrzstyler.render.max_rowsrzstyler.render.max_columnsaÎ     <style type="text/css">
    </style>
    <table id="T_">
      <thead>
        <tr>
          <th class="blank" >&nbsp;</th>
          <th class="index_name level0" >c</th>
          <th class="col_heading level0 col3" >1</th>
          <th class="col_heading level0 col4" colspan="2">2</th>
          <th class="col_heading level0 col6" >3</th>
        </tr>
        <tr>
          <th class="blank" >&nbsp;</th>
          <th class="index_name level1" >d</th>
          <th class="col_heading level1 col3" >1</th>
          <th class="col_heading level1 col4" >0</th>
          <th class="col_heading level1 col5" >1</th>
          <th class="col_heading level1 col6" >0</th>
          <th class="col_heading level1 col_trim" >...</th>
        </tr>
        <tr>
          <th class="index_name level0" >a</th>
          <th class="index_name level1" >b</th>
          <th class="blank col3" >&nbsp;</th>
          <th class="blank col4" >&nbsp;</th>
          <th class="blank col5" >&nbsp;</th>
          <th class="blank col6" >&nbsp;</th>
          <th class="blank col7 col_trim" >&nbsp;</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <th class="row_heading level0 row3" >1</th>
          <th class="row_heading level1 row3" >1</th>
          <td class="data row3 col3" >27</td>
          <td class="data row3 col4" >28</td>
          <td class="data row3 col5" >29</td>
          <td class="data row3 col6" >30</td>
          <td class="data row3 col_trim" >...</td>
        </tr>
        <tr>
          <th class="row_heading level0 row4" rowspan="2">2</th>
          <th class="row_heading level1 row4" >0</th>
          <td class="data row4 col3" >35</td>
          <td class="data row4 col4" >36</td>
          <td class="data row4 col5" >37</td>
          <td class="data row4 col6" >38</td>
          <td class="data row4 col_trim" >...</td>
        </tr>
        <tr>
          <th class="row_heading level1 row5" >1</th>
          <td class="data row5 col3" >43</td>
          <td class="data row5 col4" >44</td>
          <td class="data row5 col5" >45</td>
          <td class="data row5 col6" >46</td>
          <td class="data row5 col_trim" >...</td>
        </tr>
        <tr>
          <th class="row_heading level0 row6" >3</th>
          <th class="row_heading level1 row6" >0</th>
          <td class="data row6 col3" >51</td>
          <td class="data row6 col4" >52</td>
          <td class="data row6 col5" >53</td>
          <td class="data row6 col6" >54</td>
          <td class="data row6 col_trim" >...</td>
        </tr>
        <tr>
          <th class="row_heading level0 row_trim" >...</th>
          <th class="row_heading level1 row_trim" >...</th>
          <td class="data col3 row_trim" >...</td>
          <td class="data col4 row_trim" >...</td>
          <td class="data col5 row_trim" >...</td>
          <td class="data col6 row_trim" >...</td>
          <td class="data row_trim col_trim" >...</td>
        </tr>
      </tbody>
    </table>
    )rrrrrrrrr‰rr«rr+rr&)rIrr(r-rrrÚ-test_hiding_index_columns_multiindex_trimming¤s$ÿRr½ÚtyperBztext, exp, found)zno link, just textFr/)zsubdomain not www: sub.web.comFr/)z www subdomain: www.web.com otherTz www.web.com)z)scheme full structure: http://www.web.comTzhttp://www.web.com)z#scheme no top-level: http://www.webTzhttp://www.web)z no scheme, no top-level: www.webFzwww.web)z!https scheme: https://www.web.comTzhttps://www.web.com)zftp scheme: ftp://www.webTz ftp://www.web)zftps scheme: ftps://www.webTzftps://www.web)z%subdirectories: www.web.com/directoryTzwww.web.com/directory)zMultiple domains: www.1.2.3.4Tz www.1.2.3.4)zwith port: http://web.com:80Tzhttp://web.com:80)z-full net_loc scheme: http://user:pass@web.comTzhttp://user:pass@web.com)z8with valid special chars: http://web.com/,.':;~!@#$*()[]Tzhttp://web.com/,.':;~!@#$*()[]cCs~|dkr"t|gƒ}|jjdd}ntdg|gd}|jjdd}d|›d|›d}| ¡}||k|ksjt‚||k|k    szt‚dS)    NrBÚhtml©Z
hyperlinksr)rz    <a href="z" target="_blank">z</a>)rr[r:Z format_indexr+r&)r¾ÚtextÚexpÚfoundrIrÚrenderedr(rrrÚtest_rendered_linkss
rÅcCs\d}tdj|Žgƒ}|jjdd ¡}d}|D]}| |¡|ks.t‚q.| d¡|ksXt‚dS)N)zwww.a.bz
http://a.cz https://a.dz    ftp://a.eztext {} {} text {} {}r¿rÀz%<a href="{0}" target="_blank">{0}</a>rÁ)rr:r[r+r&)ÚlinksrIr(ÚhrefÚlinkrrrÚtest_multiple_rendered_links.srÉcCsj|j dg¡j}| |¡ d¡| ¡}d}td|›d|›d|›d|›d|›d    |›d
 ƒ}||ksft‚dS) NÚmeanÚXÚfoot0_ú¿    <tr>
      <th id="T_X_level0_row1" class="row_heading level0 row1" >b</th>
      <td id="T_X_row1_col0" class="data row1 col0" >2.690000</td>
    </tr>
    <tr>
      <th id="T_X_level0_ú row0" class="úrow_heading level0 ú#row0" >mean</th>
      <td id="T_X_úrow0_col0" class="údata z<row0 col0" >2.650000</td>
    </tr>
  </tbody>
</table>
    )rBÚaggr[Úconcatr7r+rr&)rÚotherr(Úfpr-rrrÚ test_concat9s(úúúúúúÿr×c    Csº|j}|}t| dg¡dd}t| dg¡dd}| | |¡¡ d¡| ¡}d}d}td|›d    |›d
|›d |›d |›d |›d|›d    |›d
|›d |›d |›d |›dƒ}||ks¶t‚dS)NrÊr“©Z    precisionrrËrÌZ foot0_foot0_rÍrÎrÏrÐrÑrÒúCrow0 col0" >2.650</td>
    </tr>
    <tr>
      <th id="T_X_level0_ú:row0 col0" >2.6500</td>
    </tr>
  </tbody>
</table>
    ©rBrrÓrÔr7r+rr&©    rrIZstyler1Zstyler2Zstyler3r(Úfp1Úfp2r-rrrÚtest_concat_recursionOsHúúúúúú
ö
ö
ö
ö
ö
öÿrßc    Csº|j}|}t| dg¡dd}t| dg¡dd}| |¡ |¡ d¡| ¡}d}d}td|›d    |›d
|›d |›d |›d |›d|›d    |›d
|›d |›d |›d |›dƒ}||ks¶t‚dS)NrÊr“rØrrËrÌÚfoot1_rÍrÎrÏrÐrÑrÒrÙrÚrÛrÜrrrÚtest_concat_chainosHúúúúúú
ö
ö
ö
ö
ö
öÿrác    CsÎtdœdd„}tdgdggddgdgd    }|jjd
d }|jjd d }|jjd d }|jjdd }| |¡ | |¡¡ d¡ ¡}tdƒ}tdƒ|dƒ|dƒ|dƒ|dƒtdƒ}|||ksÊt‚dS)N)Ú foot_prefixcSst| d¡s|dkst‚|}ttd|›d|›d|›d|›d|›d|›d    |›d
|›d|›d |›d |›d|›d ƒddS)NrCr/z*        <tr>
          <th id="T_X_level0_rÎrÏz$row0" >a</th>
          <td id="T_X_rÑrÒzRrow0 col0" >2.610000</td>
        </tr>
        <tr>
          <th id="T_X_level0_z row1" class="z$row1" >b</th>
          <td id="T_X_zrow1_col0" class="z0row1 col0" >2.690000</td>
        </tr>
        z    )Úprefix)Úendswithr&rr)rârÖrrrÚ
html_linesŽs@þþþþþþþþþþþþÿ óz(test_concat_combined.<locals>.html_linesr r r rrrÚred)ÚcolorÚgreenÚblueZyellowrËag        <style type="text/css">
        #T_X_row1_col0 {
          background-color: red;
        }
        #T_X_foot0_row1_col0 {
          background-color: green;
        }
        #T_X_foot1_row1_col0 {
          background-color: blue;
        }
        #T_X_foot1_foot0_row1_col0 {
          background-color: yellow;
        }
        </style>
        a"            <table id="T_X">
              <thead>
                <tr>
                  <th class="blank level0" >&nbsp;</th>
                  <th id="T_X_level0_col0" class="col_heading level0 col0" >A</th>
                </tr>
              </thead>
              <tbody>
            r/rÌràZ foot1_foot0_z8              </tbody>
            </table>
            )    rirr[Z highlight_maxrÔr7r+rr&)    rårIÚs1Ús2Zs3Zs4r(Z expected_cssrbrrrÚtest_concat_combineds6 ÿÿ ô óòñÿðÿrìcCsFttddddgtjdgƒ}|jjddjdd}d    }||ksBt‚dS)
Nr=r>r“)r rrú-)Zna_repÚtest)Z
table_uuida§<style type="text/css">
</style>
<table id="T_test">
  <thead>
    <tr>
      <th class="blank level0" >&nbsp;</th>
      <th id="T_test_level0_col0" class="col_heading level0 col0" >a</th>
      <th id="T_test_level0_col1" class="col_heading level0 col1" >b</th>
      <th id="T_test_level0_col2" class="col_heading level0 col2" >c</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th id="T_test_level0_row0" class="row_heading level0 row0" >0</th>
      <td id="T_test_row0_col0" class="data row0 col0" >1</td>
      <td id="T_test_row0_col1" class="data row0 col1" >[1, 2, 3]</td>
      <td id="T_test_row0_col2" class="data row0 col2" >-</td>
    </tr>
  </tbody>
</table>
)rÚdictrÚnanr[r:r+r&)ÚdatapathrIr(r-rrrÚ#test_to_html_na_rep_non_scalar_dataÕsrò);ÚtextwraprrÚnumpyrrr    rrrZ importorskiprZpandas.io.formats.stylerZ PackageLoaderr
Ú Environmentr!Zfixturerrr"r#r)r.r<rJrKrPrSrWrXrZrcrmrnrpÚmarkZ parametrizerr†rŠrrr¢r¥r­r¯r±r²r»r½rÅrÉr×rßrárìròrrrrÚ<module>s¨
 
 
 
 
    #.*$  
þ
  EE`îþ   H