hyb
2025-11-07 cadac0a99d87c53805a07f3b4ca7fd11e524fe4a
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
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
Ë
nñúhdãó¨—UdZddlmZddlmZmZmZmZddlm    Z    ddl
m Z ddl m Z ddlmZddlmZdd    lZdd    lZdd
lmZdd lmZmZmZmZmZdd    lZdd lmZm Z dd l!m"Z"ddl#m$Z$ddl%m&Z&m'Z'm(Z(ddl)m*Z*ddl+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1ddl2m3Z3m4Z4m5Z5ddl6m7Z7m8Z8ddl9m:Z:m;Z;m<Z<m=Z=ddl>m?Z?ddl@mAZAdd    lBmCcmDZEddlFmGZGmHZHmIZImJZJddlKmLZLddlMmNZNddlOmPZPddlQmRZRmSZSddlTmUZUer$ddlVmWZWmXZXmYZYmZZZm[Z[m\Z\m]Z]m^Z^m_Z_m`Z`maZambZbddlcmdZdmeZedZfd egd!<d"Zhd#Zid egd$<Gd%„d&«ZjdNd'„ZkdNd(„ZlGd)„d*«ZmGd+„d,«Zn        dO                            dPd-„Zoe        dQ                    dRd.„«Zp                                    dS                                                                                            dTd/„ZqGd0„d1«ZrGd2„d3er«ZsGd4„d5er«ZtGd6„d7er«ZuGd8„d9er«Zv                dUd:„ZwdVd;„ZxdWdXd<„Zy        dY                            dZd=„Zz    dY                            d[d>„Z{Gd?„d@eu«Z|GdA„dBer«Z}        d\                            d]dC„Z~            d^                                    d_dD„Zd`dadE„Z€dbdF„Z    d`                    dcdG„Z‚dddH„ZƒGdI„dJ«Z„dedfdK„Z…    dg                    dhdL„Z†didM„Z‡y    )jz€
Internal module for formatting output data in csv, html, xml,
and latex files. This module also applies to display formatting.
é)Ú annotations)Ú    GeneratorÚHashableÚMappingÚSequence)Úcontextmanager)Ú
QUOTE_NONE)ÚDecimal)Úpartial)ÚStringION)Úget_terminal_size)Ú TYPE_CHECKINGÚAnyÚCallableÚFinalÚcast)Ú
get_optionÚ
set_option)Úlib)ÚNA)ÚNaTÚ    TimedeltaÚ    Timestamp)ÚNaTType)Úis_complex_dtypeÚis_floatÚ
is_integerÚ is_list_likeÚis_numeric_dtypeÚ    is_scalar)ÚCategoricalDtypeÚDatetimeTZDtypeÚExtensionDtype)ÚisnaÚnotna)Ú CategoricalÚ DatetimeArrayÚExtensionArrayÚTimedeltaArray)Ú StringDtype)Ú PandasObject)ÚIndexÚ
MultiIndexÚ PeriodIndexÚ ensure_index)Ú DatetimeIndex)ÚTimedeltaIndex)Úconcat)Úcheck_parent_directoryÚstringify_path)Úprinting) Ú    ArrayLikeÚAxesÚColspaceArgTypeÚ ColspaceTypeÚCompressionOptionsÚFilePathÚFloatFormatTypeÚFormattersTypeÚ
IndexLabelÚSequenceNotStrÚStorageOptionsÚ WriteBuffer)Ú    DataFrameÚSeriesaŽ    
        Parameters
        ----------
        buf : str, Path or StringIO-like, optional, default None
            Buffer to write to. If None, the output is returned as a string.
        columns : array-like, optional, default None
            The subset of columns to write. Writes all columns by default.
        col_space : %(col_space_type)s, optional
            %(col_space)s.
        header : %(header_type)s, optional
            %(header)s.
        index : bool, optional, default True
            Whether to print index (row) labels.
        na_rep : str, optional, default 'NaN'
            String representation of ``NaN`` to use.
        formatters : list, tuple or dict of one-param. functions, optional
            Formatter functions to apply to columns' elements by position or
            name.
            The result of each function must be a unicode string.
            List/tuple must be of length equal to the number of columns.
        float_format : one-parameter function, optional, default None
            Formatter function to apply to columns' elements if they are
            floats. This function must return a unicode string and will be
            applied only to the non-``NaN`` elements, with ``NaN`` being
            handled by ``na_rep``.
        sparsify : bool, optional, default True
            Set to False for a DataFrame with a hierarchical index to print
            every multiindex key at each row.
        index_names : bool, optional, default True
            Prints the names of the indexes.
        justify : str, default None
            How to justify the column labels. If None uses the option from
            the print configuration (controlled by set_option), 'right' out
            of the box. Valid values are
 
            * left
            * right
            * center
            * justify
            * justify-all
            * start
            * end
            * inherit
            * match-parent
            * initial
            * unset.
        max_rows : int, optional
            Maximum number of rows to display in the console.
        max_cols : int, optional
            Maximum number of columns to display in the console.
        show_dimensions : bool, default False
            Display DataFrame dimensions (number of rows by number of columns).
        decimal : str, default '.'
            Character recognized as decimal separator, e.g. ',' in Europe.
    rÚcommon_docstring) ÚleftÚrightÚcenterÚjustifyz justify-allÚstartÚendÚinheritz match-parentÚinitialÚunsetz™
        Returns
        -------
        str or None
            If buf is None, returns the result as a string. Otherwise returns
            None.
    Úreturn_docstringc
óx—eZdZdZddddddddddœ                                                                                        d d„Zd d„Zdd    „Zdd
„Zdd „Zy)ÚSeriesFormatterz\
    Implement the main logic of Series.to_string, which underlies
    Series.__repr__.
    TÚNaNFN)    ÚlengthÚheaderÚindexÚna_repÚnameÚ float_formatÚdtypeÚmax_rowsÚmin_rowsc    ó—||_t«|_||_||_||_||_||_|    |_|
|_    |€ td«}||_ ||_ tj«|_|j!«y)Núdisplay.float_format)Úseriesr ÚbufrVrUrSrRrTrYrZrrWrXr5Úget_adjustmentÚadjÚ _chk_truncate) Úselfr]rRrSrTrUrVrWrXrYrZs            úKH:\Change_password\venv_build\Lib\site-packages\pandas/io/formats/format.pyÚ__init__zSeriesFormatter.__init__Ãs€ðˆŒ Ü“:ˆŒØˆŒ    ØˆŒ ؈Œ ؈Œ ؈Œ
Ø ˆŒ Ø ˆŒ à Ð Ü%Ð&<Ó=ˆLØ(ˆÔ؈Œ
Ü×*Ñ*Ó,ˆŒà ×ÑÕócóŠ—||j}|j}|xrt|j«|kD}|j}|rjt    t
|«}|r t ||«}|dk(r|}|jd|}n-|dz}t|jd||j| df«}||_    nd|_    ||_
||_ y)Néé) rZrYÚlenr]rÚintÚminÚilocr2Ú
tr_row_numÚ    tr_seriesÚis_truncated_vertically)rbrZrYror]Úrow_nums      rcrazSeriesFormatter._chk_truncateãsĀÙ à—=‘=ˆØ—=‘=ˆð#+Ò"L´°D·K±KÓ0@À8Ñ0KÐØ—‘ˆÙ "ÜœC Ó*ˆHÙô˜x¨Ó2Ø˜1Š}Ø"ØŸ™ Y hÐ/‘à" a™-Ü §¡¨X¨gÐ!6¸¿ ¹ ÀWÀHÀIÐ8NРOÓPØ%ˆDOà"ˆDŒO؈ŒØ'>ˆÕ$recóN—|jj}d}|jj}t|tt
t f«r|j|d|j›z }|jdur(|&|r|dz }tj|d¬«}|d|›z }|jdus|jd    k(r.|jr"|r|dz }|d
t|j«›z }|jdurQ|jEt|j jd d«}|r"|r|dz }|d tj|«›z }t|j jt"«r0|j j$j'«}|r|d z }||z }t)|«S)NÚzFreq: Fz, ©ú    ú ú
)Ú escape_charszName: TÚtruncatezLength: rVzdtype: rv)r]rVrTÚ
isinstancer0r.r1ÚfreqÚfreqstrr5Ú pprint_thingrRrorirXÚgetattrrnr!Ú_valuesÚ_get_repr_footerÚstr)rbrVÚfooterrTÚ series_nameÚ
dtype_nameÚ
level_infos       rcÚ _get_footerzSeriesFormatter._get_footerþs…€Ø{‰{×ÑˆØˆà— ‘ ×!Ñ!ˆä uœ}¬k¼>ÐJÔ KØ—
‘
Ð&à ˜˜uŸ}™}˜oÐ.Ñ .ˆFà 9‰9˜EÑ ! dÐ&6ÙØ˜$‘ä"×/Ñ/°ÐCUÔVˆKØ ˜˜{˜mÐ,Ñ ,ˆFà ;‰;˜$Ñ Ø K‰K˜:Ò %¨$×*FÒ*FáØ˜$‘Ø ˜¤ T§[¡[Ó!1Р2Ð3Ñ 3ˆFà :‰:˜UÑ " t§z¡zÐ'=Ü  §¡×!5Ñ!5°v¸tÓDˆJÙÙØ˜d‘NFؘG¤H×$9Ñ$9¸*Ó$EÐ#FÐGÑGô d—n‘n×*Ñ*Ô,<Ô =ØŸ™×/Ñ/×@Ñ@ÓBˆJÙØ˜$‘Ø jÑ  ˆFä6‹{Ðrecó†—t|jjd|j|j|j
¬«S)N)rWrUÚ leading_space)Ú format_arrayrnr~rWrUrT©rbs rcÚ_get_formatted_valuesz%SeriesFormatter._get_formatted_values(s6€ÜØ N‰N× "Ñ "Ø Ø×*Ñ*Ø—;‘;ØŸ*™*ô 
ð    
recó—|j}|j«}t|«dk(r%t|j«j
›d|›dS|j }t|«}t|t«rJ|jdd¬«}tj«}|jdg|¢­Žjd«}n|jd¬«}|j!«}|j"r•d}|j$}    t't(|    «}    |j*j||    d    z
«}
|
d
kDrd } nd } |j*j-| g|
d ¬«d} |j/|    |z| «|j/|    d    zd«|j r#|j*jd
g|d    d|g¢­Ž} n|j*jd
|«} |j0r |r |ddz| z} |r| d|zz } t3dj5| ««S)Nrz([], ú)T)Ú include_namesÚsparsifyrhrv©Ú include_namergéú...z..rG©Úmoderr)rnr…riÚtyper]Ú__name__rTÚ
_has_namesryr-Ú _format_multir5r_ÚadjoinÚsplitÚ _format_flatrŠrormrrjr`rHÚinsertrSr€Újoin) rbr]rrTÚ have_headerÚ    fmt_indexr`Ú
fmt_valuesÚ n_header_rowsrpÚwidthÚdot_strÚresults              rcÚ    to_stringzSeriesFormatter.to_string1s䀨—‘ˆØ×!Ñ!Ó#ˆä ˆv‹;˜!Ò Ü˜4Ÿ;™;Ó'×0Ñ0Ð1°°v°h¸aÐ@Ð @à— ‘ ˆÜ  Ó'ˆ Ü eœZÔ (Ø×+Ñ+¸$ÈÐ+ÓNˆIÜ×)Ñ)Ó+ˆCØ"˜Ÿ
™
 1Ð1 yÒ1×7Ñ7¸Ó=‰Ià×*Ñ*¸Ð*Ó=ˆIØ×/Ñ/Ó1ˆ
à × 'Ò '؈MØ—o‘oˆGÜœ3 Ó(ˆGØ—H‘H—L‘L ¨G°a©KÑ!8Ó9ˆEؐqŠyØ‘àð—h‘h×&Ñ&¨ y°%¸hÐ&ÓGÈÑJˆGØ × Ñ ˜g¨ Ñ5°wÔ ?Ø × Ñ ˜W q™[¨"Ô -à :Š:Ø$T—X‘X—_‘_ QÐE¨)°A°B¨-¸Ð)DÒE‰Fà—X‘X—_‘_ Q¨
Ó3ˆFà ;Š;™;ؘq‘\ DÑ(¨6Ñ1ˆFá Ø d˜V‘mÑ #ˆFä2—7‘7˜6“?Ó#Ð#re)r]rCrRú
bool | strrSÚboolrTr§rUr€rVr§rWú
str | NonerXr§rYú
int | NonerZr©ÚreturnÚNone©rªr«©rªr€©rªú    list[str])    r–Ú
__module__Ú __qualname__Ú__doc__rdrar…rŠr¥©rercrPrP½s«„ñð"ØØØØØ#'ØØ#Ø#ñàððð    ð
ð ð ð ððððð!ðððððððð
óó@?ó6(óT
ô+$rerPcó¼—ddlm}td«r|j«\}}nd}td«td«td«td«td    «|d
œS) aõGet the parameters used to repr(dataFrame) calls using DataFrame.to_string.
 
    Supplying these parameters to DataFrame.to_string is equivalent to calling
    ``repr(DataFrame)``. This is useful if you want to adjust the repr output.
 
    .. versionadded:: 1.4.0
 
    Example
    -------
    >>> import pandas as pd
    >>>
    >>> df = pd.DataFrame([[1, 2], [3, 4]])
    >>> repr_params = pd.io.formats.format.get_dataframe_repr_params()
    >>> repr(df) == df.to_string(**repr_params)
    True
    r)Úconsolezdisplay.expand_frame_reprNúdisplay.max_rowsúdisplay.min_rowszdisplay.max_columnsúdisplay.max_colwidthúdisplay.show_dimensions)rYrZÚmax_colsÚ max_colwidthÚshow_dimensionsÚ
line_width)Úpandas.io.formatsrµrÚget_console_size)rµr½Ú_s   rcÚget_dataframe_repr_paramsrÁ_sa€õ"*äÐ-Ô.Ø×0Ñ0Ó2‰ ˆ
‘Aàˆ
äÐ1Ó2ÜÐ1Ó2ÜÐ4Ó5Ü"Ð#9Ó:Ü%Ð&?Ó@Ø ñ  ðrecóŠ—t«\}}td«}|dk(r|n|}|dk(r|n
td«}dd||td«dœS)aéGet the parameters used to repr(Series) calls using Series.to_string.
 
    Supplying these parameters to Series.to_string is equivalent to calling
    ``repr(series)``. This is useful if you want to adjust the series repr output.
 
    .. versionadded:: 1.4.0
 
    Example
    -------
    >>> import pandas as pd
    >>>
    >>> ser = pd.Series([1, 2, 3, 4])
    >>> repr_params = pd.io.formats.format.get_series_repr_params()
    >>> repr(ser) == ser.to_string(**repr_params)
    True
    r¶rr·Tr¹)rVrXrZrYrR)r r)r¢ÚheightÚ max_rows_optrYrZs     rcÚget_series_repr_paramsrŀs^€ô"&Ó'M€Eˆ6ÜÐ0Ó1€LØ%¨Ò*‰v° €HØ%¨Ò*‰v´
Ð;MÓ0N€HðØØØÜÐ6Ó7ñ  ðrecó—eZdZdZerendZeeezz Z                                                                    d%                                                                                                                                                    d&d„Zd'd„Zed(d„«Z    ed(d„«Z
ed(d„«Z ed(d    „«Z ed)d
„«Z ed(d „«Zed(d „«Zed(d „«Zed(d„«Zed*d„«Zd+d„Z                d,d„Zd-d„Zd.d„Zd/d„Zd0d„Zd0d„Zd1d„Zd(d„Zd(d„Zd(d„Zd*d„Zd2d„Zd2d„Z d2d„Z!d'd„Z"d3d „Z#d4d!„Z$d5d"„Z%d6d#„Z&d7d$„Z'y)8ÚDataFrameFormatterz‡
    Class for processing dataframe formatting options and data.
 
    Used by DataFrame.to_string, which backs DataFrame.__repr__.
    rrNcó^—||_|j|«|_|j|«|_||_||_||_|j|«|_    |j|«|_ |    |_ |j|
«|_| |_||_||_||_| |_| |_||_||_|j/«|_|j3«|_|j|_|j9«t;j<«|_y©N) ÚframeÚ_initialize_columnsÚcolumnsÚ_initialize_colspaceÚ    col_spacerSrTrUÚ_initialize_formattersÚ
formattersÚ_initialize_justifyrHrWÚ_initialize_sparsifyrŽÚshow_index_namesÚdecimalÚ    bold_rowsÚescaperYrZrºr¼Ú_calc_max_cols_fittedÚmax_cols_fittedÚ_calc_max_rows_fittedÚmax_rows_fittedÚtr_framerxr5r_r`)rbrÊrÌrÎrSrTrUrÐrHrWrŽÚ index_namesrYrZrºr¼rÔrÕrÖs                   rcrdzDataFrameFormatter.__init__©s€ð*ˆŒ
Ø×/Ñ/°Ó8ˆŒ Ø×2Ñ2°9Ó=ˆŒØˆŒ ؈Œ
؈Œ Ø×5Ñ5°jÓAˆŒØ×/Ñ/°Ó8ˆŒ Ø(ˆÔØ×1Ñ1°(Ó;ˆŒ Ø +ˆÔ؈Œ Ø"ˆŒØˆŒ Ø ˆŒ Ø ˆŒ Ø ˆŒ Ø.ˆÔà#×9Ñ9Ó;ˆÔØ#×9Ñ9Ó;ˆÔàŸ
™
ˆŒ Ø  ‰ ŒÜ×*Ñ*Ó,ˆrecó˜—|j«}|jr-|j|j«}|j    d|«|S)zP
        Render a DataFrame to a list of columns (as lists of strings).
        r)Ú_get_strcols_without_indexrTÚ_get_formatted_indexrÛrœ)rbÚstrcolsÚ    str_indexs   rcÚ get_strcolszDataFrameFormatter.get_strcolsØs@€ð×1Ñ1Ó3ˆà :Š:Ø×1Ñ1°$·-±-Ó@ˆIØ N‰N˜1˜iÔ (àˆrecó\—|jduxs|jdk(xr |jS)NTrx)r¼Ú is_truncatedr‰s rcÚshould_show_dimensionsz)DataFrameFormatter.should_show_dimensionsäs3€à×#Ñ# tÐ+ò
Ø ×  Ñ   JÑ .Ò D°4×3DÑ3Dð    
recóH—t|jxs |j«SrÉ)r§Úis_truncated_horizontallyror‰s rcräzDataFrameFormatter.is_truncatedês€äD×2Ñ2ÒR°d×6RÑ6RÓSÐSrecót—t|jxr"t|j«|jkD«SrÉ)r§rØrirÌr‰s rcrçz,DataFrameFormatter.is_truncated_horizontallyîs,€äD×(Ñ(ÒW¬c°$·,±,Ó.?À$×BVÑBVÑ.VÓXÐXrecót—t|jxr"t|j«|jkD«SrÉ)r§rÚrirÊr‰s rcroz*DataFrameFormatter.is_truncated_verticallyòs+€äD×(Ñ(ÒU¬c°$·*±*«oÀ×@TÑ@TÑ.TÓVÐVrecót—dt|j«›dt|jj«›dS)Nz
 
[z rows x z     columns])rirÊrÌr‰s rcÚdimensions_infoz"DataFrameFormatter.dimensions_infoös0€à”s˜4Ÿ:™:“Ð' x´°D·J±J×4FÑ4FÓ0GÐ/HÈ    ÐRÐRrecó@—t|jj«SrÉ)r—rÊrTr‰s rcÚhas_index_namesz"DataFrameFormatter.has_index_namesús€ä˜$Ÿ*™*×*Ñ*Ó+Ð+recó@—t|jj«SrÉ)r—rÊrÌr‰s rcÚhas_column_namesz#DataFrameFormatter.has_column_namesþs€ä˜$Ÿ*™*×,Ñ,Ó-Ð-recóZ—t|j|j|jf«SrÉ)ÚallrírTrÓr‰s rcÚshow_row_idx_namesz%DataFrameFormatter.show_row_idx_namess$€äD×(Ñ(¨$¯*©*°d×6KÑ6KÐLÓMÐMrecóZ—t|j|j|jf«SrÉ)rñrïrÓrSr‰s rcÚshow_col_idx_namesz%DataFrameFormatter.show_col_idx_namess$€äD×)Ñ)¨4×+@Ñ+@À$Ç+Á+ÐNÓOÐOrecó‚—t|jxst|j«t|j««SrÉ)rkrYrirÊr‰s rcÚmax_rows_displayedz%DataFrameFormatter.max_rows_displayed
s(€ä4—=‘=Ò3¤C¨¯
©
£O´S¸¿¹³_ÓEÐErecó —|€ td«S|S)Nzdisplay.multi_sparse©r)rbrŽs  rcrÒz'DataFrameFormatter._initialize_sparsifys€Ø Ð ÜÐ4Ó5Ð 5؈recóô—|€iSt|jj«t|«k(st|t«r|St dt|«›dt|jj«›d«‚)NzFormatters length(ú+) should match DataFrame number of columns(rŒ)rirÊrÌryÚdictÚ
ValueError)rbrÐs  rcrÏz)DataFrameFormatter._initialize_formatterssu€ð Р؈IÜ —‘×#Ñ#Ó $¬¨J«Ò 7¼:ÀjÔRVÔ;WØÐ äØ$¤S¨£_Ð$5ð6/Ü/2°4·:±:×3EÑ3EÓ/FÐ.GÀqðJóð recó —|€ td«S|S)Nzdisplay.colheader_justifyrø)rbrHs  rcrÑz&DataFrameFormatter._initialize_justify s€Ø ˆ?ÜÐ9Ó:Ð :àˆNrecót—|!t|«}|j||_|S|jjSrÉ)r/rÊrÌ)rbrÌÚcolss   rcrËz&DataFrameFormatter._initialize_columns&s7€Ø Ð Ü Ó(ˆDØŸ™ DÑ)ˆDŒJ؈Kà—:‘:×%Ñ%Ð %recó~—|€i}|St|ttf«r:d|i}|j|jj
Dcic]}||“Œc}«|St|t «rE|j«D].}||jj
vsŒ|dk7sŒ"td|›«‚|}|St|jj
«t|«k7r8tdt|«›dt|jj
«›d«‚tt|jj
|««}|Scc}w)Nrrz,Col_space is defined for an unknown column: zCol_space length(rúrŒ) ryrjr€ÚupdaterÊrÌrÚkeysrürirûÚzip)rbrÎr¤Úcolumns    rcrÍz'DataFrameFormatter._initialize_colspace.s;€ð Р؈Fð$ˆ ô#˜    ¤C¬ :Ô .ؘ)_ˆFØ M‰M¸4¿:¹:×;MÑ;MÖN°˜6 9Ñ,ÒNÔ Oðˆ ô˜    ¤7Ô +Ø#Ÿ.™.Ó*ò Ø §¡×!3Ñ!3Ò3¸À"» Ü$ØFÀvÀhÐOóðð ð
ˆFðˆ ô 4—:‘:×%Ñ%Ó&¬#¨i«.Ò8Ü Ø'¬¨I«Ð'7ð83Ü36°t·z±z×7IÑ7IÓ3JÐ2KÈ1ðNóðôœ#˜dŸj™j×0Ñ0°)Ó<Ó=ˆF؈ ùòOsÁ
D:có’—|j«s |jSt«\}}|j|«r|S|jS)z%Number of columns fitting the screen.)Ú_is_in_terminalrºr Ú_is_screen_narrow)rbr¢rÀs   rcr×z(DataFrameFormatter._calc_max_cols_fittedFsA€à×#Ñ#Ô%Ø—=‘=Ð  ä$Ó&‰ˆˆqØ × !Ñ ! %Ô (؈Là—=‘=Ð  recóü—|j«rPt«\}}|jdk(r||j«z
S|j    |«r|}n|j}n |j}|j |«S)z,Number of rows with data fitting the screen.r)rr rYÚ_get_number_of_auxiliary_rowsÚ_is_screen_shortÚ_adjust_max_rows)rbrÀrÃrYs    rcrÙz(DataFrameFormatter._calc_max_rows_fittedQsr€ð × Ñ Ô !Ü)Ó+‰IˆAˆv؏}‰} Ò!à × BÑ BÓ DÑDÐDà×$Ñ$ VÔ,Ø!‘àŸ=™=‘à—}‘}ˆHà×$Ñ$ XÓ.Ð.recó~—|r:t|j«|kDr"|jrt|j|«}|S)zºAdjust max_rows using display logic.
 
        See description here:
        https://pandas.pydata.org/docs/dev/user_guide/options.html#frequently-used-options
 
        GH #37359
        )rirÊrZrk)rbrYs  rcr z#DataFrameFormatter._adjust_max_rowsds2€ñ ܐD—J‘J“ (Ò*°· ² ä˜tŸ}™}¨hÓ7ØˆrecóT—t|jdk(xs|jdk(«S)z/Check if the output is to be shown in terminal.r)r§rºrYr‰s rcrz"DataFrameFormatter._is_in_terminalrs$€äD—M‘M QÑ&Ò<¨$¯-©-¸1Ñ*<Ó=Ð=recóz—t|jdk(xr"t|jj«|kD«S©Nr)r§rºrirÊrÌ)rbÚ    max_widths  rcrz$DataFrameFormatter._is_screen_narrowvs/€ÜD—M‘M QÑ&ÒN¬3¨t¯z©z×/AÑ/AÓ+BÀYÑ+NÓOÐOrecóf—t|jdk(xrt|j«|kD«Sr)r§rYrirÊ)rbÚ
max_heights  rcr
z#DataFrameFormatter._is_screen_shortys(€ÜD—M‘M QÑ&ÒG¬3¨t¯z©z«?¸ZÑ+GÓHÐHrecóž—d}d}||z}|jr&|t|jj««z }|jr|dz }|S)z?Get number of rows occupied by prompt, dots and dimension info.rg)r¼rirëÚ
splitlinesrS)rbÚdot_rowÚ
prompt_rowÚnum_rowss    rcr    z0DataFrameFormatter._get_number_of_auxiliary_rows|sR€àˆØˆ
ؘZÑ'ˆà × Ò Ø œ˜D×0Ñ0×;Ñ;Ó=Ó>Ñ >ˆHà ;Š;Ø ˜‰MˆHàˆrecóv—|jr|j«|jr|j«yy)zY
        Check whether the frame should be truncated. If so, slice the frame up.
        N)rçÚ_truncate_horizontallyroÚ_truncate_verticallyr‰s rcrxzDataFrameFormatter.truncateŠs3€ð × )Ò )Ø × 'Ñ 'Ô )à × 'Ò 'Ø × %Ñ %Õ 'ð (recó—|j€J‚|jdz}|dk\r¡|jjdd…d|…f}|jjdd…| d…f}t||fd¬«|_t    |j
t tf«rlg|j
d|¢|j
| d¢|_||_ ytt|j«}|jjdd…d|…f|_||_ y)z´Remove columns, which are not to be displayed and adjust formatters.
 
        Attributes affected:
            - tr_frame
            - formatters
            - tr_col_num
        Nrhrg©Úaxis) rØrÛrlr2ryrÐÚlistÚtuplerrjrºÚ
tr_col_num)rbÚcol_numrErFs    rcrz)DataFrameFormatter._truncate_horizontally”sü€ð×#Ñ#Ð/Ð/Ð/Ø×&Ñ&¨!Ñ+ˆØ aŠ<Ø—=‘=×%Ñ%¢a¨¨'¨ kÑ2ˆDØ—M‘M×&Ñ&¢q¨7¨(©) |Ñ4ˆEÜ" D¨% =°qÔ9ˆDŒMô˜$Ÿ/™/¬D´%¨=Ô9ð#Ø—_‘_ X gÐ.ð#à—_‘_ g X YÐ/ð#”ð"ˆôœ3 § ¡ Ó.ˆGØ ŸM™M×.Ñ.ªq°(°7°(¨{Ñ;ˆDŒMØ!ˆrecóÊ—|j€J‚|jdz}|dk\r|t|j«}tjtj
|«tj
||z
|«g«}|jj ||_||_
ytt|j«}|jj d|…dd…f|_||_
y)z‚Remove rows, which are not to be displayed.
 
        Attributes affected:
            - tr_frame
            - tr_row_num
        Nrhrg) rÚrirÛÚnpÚhstackÚarangerlrrjrYrm)rbrpÚ_lenÚ_slices    rcrz'DataFrameFormatter._truncate_vertically®s¼€ð×#Ñ#Ð/Ð/Ð/Ø×&Ñ&¨!Ñ+ˆØ aŠ<ܐt—}‘}Ó%ˆDÜ—Y‘Y¤§    ¡    ¨'Ó 2´B·I±I¸dÀW¹nÈdÓ4SÐTÓUˆFØ ŸM™M×.Ñ.¨vÑ6ˆDŒMð"ˆôœ3 § ¡ Ó.ˆGØ ŸM™M×.Ñ.¨x°¨xº¨{Ñ;ˆDŒMØ!ˆrec ó‡—g}t‰j«s“‰js‡t‰j«D]m\}}‰j    |«}t |‰j t‰jj|d««‰j¬«}|j|«Œo|St‰j«r¤ttt‰j«‰_t‰j«t‰j «k7r8t#dt‰j «›dt‰j«›d«‚‰jDcgc]}|g‘Œ}}n‰j%‰j«}‰j&r|D]}|jd«Œt‰j«D]È\}}||}t)t‰jj|d««gˆfd„|D«¢­Ž}    ‰j    |«}t |‰j |    ‰j¬«}t)gˆfd    „|D«¢|    ‘­Ž}
‰jj ||
‰j ¬
«}|j||z«ŒÊ|Scc}w) Nr)ÚstringsrHÚminimumr`zWriting z cols but got z aliasesrrc3óT•K—|]}‰jj|«–—Œ!y­wrÉ©r`ri©Ú.0Úxrbs  €rcú    <genexpr>z@DataFrameFormatter._get_strcols_without_index.<locals>.<genexpr>âsøèø€Ò0RÀQ°·±·±¸a·Ñ0Rùóƒ%()r*r`c3óT•K—|]}‰jj|«–—Œ!y­wrÉr,r-s  €rcr0z@DataFrameFormatter._get_strcols_without_index.<locals>.<genexpr>ésøèø€Ò@°˜DŸH™HŸL™L¨ŸOÑ@ùr1r“)rrSÚ    enumeraterÛÚ
format_colÚ_make_fixed_widthrHrjrÎÚgetr`Úappendrrr€rirÌrüÚ_get_formatted_column_labelsròÚmax) rbràÚiÚcr ÚlabelÚ str_columnsr/ÚcheaderÚheader_colwidthÚmax_lens `          rcrÞz-DataFrameFormatter._get_strcols_without_indexÀs,ø€Ø#%ˆä˜DŸK™KÔ(°·²Ü! $§-¡-Ó0ò +‘1Ø!Ÿ_™_¨QÓ/
Ü.Ø&Ø ŸL™LÜ §¡× 2Ñ 2°1°aÓ 8Ó9ØŸ™ô    
ð —‘˜zÕ*ð +ðˆNä ˜Ÿ ™ Ô $äœt¤C™y¨$¯+©+Ó6ˆDŒKܐ4—;‘;Ó¤3 t§|¡|Ó#4Ò4Ü Øœs 4§<¡<Ó0Ð1ð2Ü" 4§;¡;Ó/Ð0°ð:óðð15· ± Ö< u˜Eš7Ð<ˆKÑ<à×;Ñ;¸D¿M¹MÓJˆKà × "Ò "Ø ò Ø—‘˜• ð ô˜dŸm™mÓ,ò     1‰DˆAˆqØ! !‘nˆGÜ!ܐD—N‘N×&Ñ& q¨!Ó,Ó-ðÛ0RÈ'Ô0RòˆO🙨Ó+ˆJÜ*ؘDŸL™L°/ÀtÇxÁxôˆJôÐRÓ@°ZÔ@ÐRÀ/ÒRˆGØ—h‘h×&Ñ& w°¸d¿l¹lÐ&ÓKˆGØ N‰N˜7 ZÑ/Õ 0ð     1ðˆùò-=sÅ
Jc
ó2—|j}|j|«}t|jdd…|fj||j
|j |jj|j|«|j|j¬«S)N)rWrUÚspacerÔr‡) rÛÚ_get_formatterrˆrlr~rWrUrÎr6rÌrÔrT)rbr:rÊÚ    formatters    rcr4zDataFrameFormatter.format_colïsz€Ø— ‘ ˆØ×'Ñ'¨Ó*ˆ    ÜØ J‰J’q˜!tÑ × $Ñ $Ø Ø×*Ñ*Ø—;‘;Ø—.‘.×$Ñ$ U§]¡]°1Ñ%5Ó6Ø—L‘LØŸ*™*ô
ð    
recó —t|jttf«r+t    |«rt t |«}|j|Syt    |«r||jvr|j|}|jj|d«SrÉ)    ryrÐrrrrrjrÌr6)rbr:s  rcrCz!DataFrameFormatter._get_formatterüsn€Ü d—o‘o¬¬e }Ô 5ܘ!Œ}Üœ˜a“LØ—‘ qÑ)Ð)àä˜!Œ} ¨$¯,©,Ñ!6Ø—L‘L ‘OØ—?‘?×&Ñ& q¨$Ó/Ð /rec    ó6‡‡
‡ ‡ —ddlm}|j}t|t«rã|j dd¬«}t t|Ž«}‰jjj}td„|jD««Š tt|tt|«««Š
ˆ
ˆ ˆfd„Š t tˆ fd„|D«Ž«}‰j rt#|«r||«}t|ŽDcgc] }t |«‘Œ}}|S|j%d¬«}‰jj}tt|tt|«««Š
t'|«D    cgc]#\}    }‰j)|    «s
‰
|rd    |zn|g‘Œ%}}    }|Scc}wcc}}    w)
Nr)Úsparsify_labelsF)rŽrc3ó4K—|]}|j–—Œy­wrÉ)Ú is_floating)r.Úlevels  rcr0zBDataFrameFormatter._get_formatted_column_labels.<locals>.<genexpr>sèø€Ò%T¸E e×&7Õ&7Ñ%Tùs‚có<•—|‰jvr ‰|r‰sd|zS|S)Nú )rÐ)r/ÚyÚ need_leadspÚrestrict_formattingrbs  €€€rcÚ space_formatzEDataFrameFormatter._get_formatted_column_labels.<locals>.space_formats'ø€à˜TŸ_™_Ñ,Ø# AšÙ/à ™7Nؐrec3óV•K—|]}|Dcgc] }‰||«‘Œ c}–—Œycc}w­wrÉr³)r.r/rMrPs   €rcr0zBDataFrameFormatter._get_formatted_column_labels.<locals>.<genexpr> s&øèø€ÒK¸!°1Ö5¨a‘| A qÕ)Ö5ÑKùÒ5ùs ƒ    )Œ$œ )rrL)Úpandas.core.indexes.multirGrÌryr-r˜rrrÊÚdtypesr~ÚanyÚlevelsrûÚmaprrŽrir›r3rC) rbrÊrGrÌÚ fmt_columnsrSÚstr_columns_tupler/r=r:rNrOrPs `         @@@rcr8z/DataFrameFormatter._get_formatted_column_labelssxû€Ý=à—-‘-ˆä gœzÔ *Ø!×/Ñ/¸ÈeÐ/ÓTˆKÜœs KÐ0Ó1ˆKØ—Z‘Z×&Ñ&×.Ñ.ˆFô#&Ñ%TÀWÇ^Á^Ô%TÓ"TÐ Üœs ;´Ô4DÀfÓ0MÓNÓOˆKö ô!%ÜÓK¸{ÔKÐLó!Ð ð}Š}¤Ð%6Ô!7Ù$3Ð4EÓ$FÐ!ä,/Ð1BÐ,CÖD qœ4 7ÐDˆKÐDðÐð"×.Ñ.¸EÐ.ÓBˆKØ—Z‘Z×&Ñ&ˆFÜœs ;´Ô4DÀfÓ0MÓNÓOˆKô& kÓ2÷áAqð!%× 3Ñ 3°AÔ 6¸;Àqº>q’ÈqÒQðˆKñð
ÐùòEùó
s Ã4FÅ#(Fc ó,—|jj«Dcic]\}}|tt|«“Œ}}}|j}|j
}|j d«}t|t«r)|j|j|j|¬«}n|j|j|¬«g}|D    cgc]=}    ttt|    «d|j!dd«|j"¬««‘Œ?}}    |j"j$dg|¢­Žj'd    «}
|j(r'|j+«D    cgc] }    t-|    «‘Œ} }    ndg|j.z} |j0r| |
zS|
Scc}}wcc}    wcc}    w)
NÚ    __index__)rŽrrD)rrDrErrr)rHr*r`rgrv)rÎÚitemsrrjrTrÌrCryr-r˜rŽròr›rr5rr6r`r™ršrôÚ_get_column_name_listr€ÚnlevelsrS) rbrÊÚkÚvrÎrTrÌÚfmtrŸr/ÚadjoinedÚ
col_headers             rcrßz'DataFrameFormatter._get_formatted_index1s}€ð26·±×1EÑ1EÓ1G×H©¨¨AQœœS !› ‘_ÐHˆ    ÑHØ— ‘ ˆØ—-‘-ˆØ×!Ñ! +Ó.ˆä eœZÔ (Ø×+Ñ+ØŸ™Ø"×5Ñ5Øð,ó‰Ið×"Ñ"°×0GÑ0GÐSVÐ"ÓWðˆIðö 
ð ô Ü!ܘ“G V°Y·]±]À2ÀqÓ5IÈtÏxÉxôõ ð
ˆ    ð
ð#4—8‘8—?‘? 1Ð1 yÒ1×7Ñ7¸Ó=ˆð × "Ò "Ø*.×*DÑ*DÓ*FÖG Qœ#˜a&ÐGˆJÑGà˜ §¡Ñ/ˆJà ;Š;Ø Ñ(Ð (àˆOùóIIùò 
ùòHsžFÃAF ÅFcóð—g}|jj}t|t«r$|j    d„|j
D««|S|j |j€dn |j«|S)Nc3ó(K—|]
}|€dn|–—Œ y­w)Nrrr³)r.rVs  rcr0z;DataFrameFormatter._get_column_name_list.<locals>.<genexpr>^sèø€ÒP¸$˜t˜|™°Ó5ÑPùs‚rr)rÊrÌryr-ÚextendÚnamesr7rV)rbrfrÌs   rcr\z(DataFrameFormatter._get_column_name_listZs_€Ø "ˆØ—*‘*×$Ñ$ˆÜ gœzÔ *Ø L‰LÑPÀ'Ç-Á-ÔPÔ Pðˆ ð L‰L˜wŸ|™|Ð3™¸¿¹Ô F؈ re)NNTTrQNNNNTNNNFú.FT)&rÊrBrÌú Axes | NonerÎúColspaceArgType | NonerSzbool | SequenceNotStr[str]rTr§rUr€rÐúFormattersType | NonerHr¨rWúFloatFormatType | NonerŽú bool | NonerÜr§rYr©rZr©rºr©r¼r¦rÔr€rÕr§rÖr§rªr«)rªúlist[list[str]]©rªr§r­)rªrj)rŽrlrªr§)rÐrjrªr=)rHr¨rªr€)rÌrhrªr,)rÎrirªr9)rªr©)rYr©rªr©r¬)r:rjrªr¯)r:ú    str | intrªúCallable | None)rÊrBrªrm)rÊrBrªr¯)rªzlist[Hashable])(r–r°r±r²rDrNrdrâÚpropertyrårärçrorërírïròrôrörÒrÏrÑrËrÍr×rÙr rrr
r    rxrrrÞr4rCr8rßr\r³rercrÇrǟss„ññ !‰g b€GØ ÐÐ"2Ñ2Ñ2€Gð
 $Ø,0Ø-1ØØØ,0Ø"Ø/3Ø $Ø Ø#Ø#Ø#Ø&+ØØØð'--àð--ðð--ð*ð    --ð
+ð --ð ð --ðð--ð*ð--ðð--ð-ð--ðð--ðð--ðð--ðð--ðð--ð $ð!--ð"ð#--ð$ð%--ð&ð'--ð(
ó)--ó^
ðò
óð
ð
òTóðTðòYóðYðòWóðWðòSóðSðò,óð,ðò.óð.ðòNóðNðòPóðPðòFóðFóð
Ø/ð à    ó óó &óó0    !ó/ó& ó>óPóIó ó(ó"ó4"ó$-ó^ 
ó
0ó'óR'ôRrerÇcóؗeZdZdZdd„Z                            d                                                            d    d„Z            d
                            d d„Z                                                                d                                                                                                                                     d d„Zy)ÚDataFrameRendereraJClass for creating dataframe output in multiple formats.
 
    Called in pandas.core.generic.NDFrame:
        - to_csv
        - to_latex
 
    Called in pandas.core.frame.DataFrame:
        - to_html
        - to_string
 
    Parameters
    ----------
    fmt : DataFrameFormatter
        Formatter with the formatting options.
    có—||_yrÉ)r`)rbr`s  rcrdzDataFrameRenderer.__init__us    €ØˆreNcóˆ—ddlm}m}    |r|    n|}
|
|j||||¬«} | j    «} t | ||¬«S)uJ
        Render a DataFrame to a html table.
 
        Parameters
        ----------
        buf : str, path object, file-like object, or None, default None
            String, path object (implementing ``os.PathLike[str]``), or file-like
            object implementing a string ``write()`` function. If None, the result is
            returned as a string.
        encoding : str, default â€œutf-8”
            Set character encoding.
        classes : str or list-like
            classes to include in the `class` attribute of the opening
            ``<table>`` tag, in addition to the default "dataframe".
        notebook : {True, False}, optional, default False
            Whether the generated HTML is for IPython Notebook.
        border : int
            A ``border=border`` attribute is included in the opening
            ``<table>`` tag. Default ``pd.options.display.html.border``.
        table_id : str, optional
            A css id is included in the opening `<table>` tag if specified.
        render_links : bool, default False
            Convert URLs to HTML links.
        r)Ú HTMLFormatterÚNotebookFormatter)ÚclassesÚborderÚtable_idÚ render_links©r^Úencoding)Úpandas.io.formats.htmlrvrwr`r¥Úsave_to_buffer) rbr^r}rxÚnotebookryrzr{rvrwÚKlassÚhtml_formatterÚstrings              rcÚto_htmlzDataFrameRenderer.to_htmlxsP€÷D    
ñ
&.Ñ!°=ˆáØ H‰HØØØØ%ô 
ˆð ×)Ñ)Ó+ˆÜ˜f¨#¸ÔAÐArecór—ddlm}||j|¬«}|j«}t    |||¬«S)u%
        Render a DataFrame to a console-friendly tabular output.
 
        Parameters
        ----------
        buf : str, path object, file-like object, or None, default None
            String, path object (implementing ``os.PathLike[str]``), or file-like
            object implementing a string ``write()`` function. If None, the result is
            returned as a string.
        encoding: str, default â€œutf-8”
            Set character encoding.
        line_width : int, optional
            Width to wrap a line in characters.
        r)ÚStringFormatter)r½r|)Úpandas.io.formats.stringr†r`r¥r)rbr^r}r½r†Ústring_formatterrƒs       rcr¥zDataFrameRenderer.to_string«s5€õ(    =á*¨4¯8©8À
ÔKÐØ!×+Ñ+Ó-ˆÜ˜f¨#¸ÔAÐArecóD—ddlm}|€ d}t«}nd}|did|“d|
“d|“d    |“d
|“d |“d |“d |“d|“d|“d| “d|    “d| “d| “d|“d|“d|j“Ž}|j    «|r4t |t«sJ‚|j «}|j«|Sy)z;
        Render dataframe as comma-separated file.
        r)Ú CSVFormatterNTFÚ path_or_bufÚlineterminatorÚsepr}ÚerrorsÚ compressionÚquotingrÿÚ index_labelr”Ú    chunksizeÚ    quotecharÚ date_formatÚ doublequoteÚ
escapecharÚstorage_optionsrDr³)Úpandas.io.formats.csvsrŠr r`ÚsaveryÚgetvalueÚclose)rbr‹r}rrÌr‘r”rrr“rŒr’r”r•r–rŽr—rŠÚcreated_bufferÚ csv_formatterÚcontents                     rcÚto_csvzDataFrameRenderer.to_csvÅs€õ,    8à Ð Ø!ˆNÜ"›*‰Kà"ˆNá$ò
Ù#ð
á)ð
ñð
ñð    
ñ
ð 
ñ $ð 
ñð
ñð
ñ$ð
ñð
ñ ð
ñ ð
ñ$ð
ñ$ð
ñ"ð
ñ ,ð!
ð"—h’hð#
ˆ ð&    ×ÑÔá ܘk¬8Ô4Ð 4Ð4Ø!×*Ñ*Ó,ˆGØ × Ñ Ô ØˆNàre)r`rÇrªr«)NNNFNNF)r^ú"FilePath | WriteBuffer[str] | Noner}r¨rxzstr | list | tuple | Noner€r§ryzint | bool | Nonerzr¨r{r§rªr¨)NNN)r^r r}r¨r½r©rªr¨)NNú,NNÚwÚinferNú"NNNTNÚstrictN)"r‹z7FilePath | WriteBuffer[bytes] | WriteBuffer[str] | Noner}r¨rr€rÌzSequence[Hashable] | Noner‘zIndexLabel | Noner”r€rr:rr©r“r€rŒr¨r’r©r”r¨r•r§r–r¨rŽr€r—zStorageOptions | Nonerªr¨)r–r°r±r²rdr„r¥rŸr³rercrsrsdsœ„ñó ð
37Ø#Ø-1ØØ$(Ø#Ø"ð1Bà /ð1Bðð1Bð+ð    1Bð
ð 1Bð "ð 1Bðð1Bðð1Bð
ó1Bðj37Ø#Ø!%ð    Bà /ðBððBðð    Bð
 
ó Bð8PTØ#ØØ-1Ø)-ØØ*1Ø"ØØ%)Ø $Ø"&Ø Ø!%ØØ15ð#9àLð9ðð9ðð    9ð
+ð 9ð 'ð 9ðð9ð(ð9ðð9ðð9ð#ð9ðð9ð ð9ðð9ðð9ð ð!9ð"/ð#9ð$
ô%9rerscó¢—t||¬«5}|j|«|€|j«cddd«S    ddd«y#1swYyxYw)zQ
    Perform serialization. Write to buf or return as string if buf is None.
    )r}N)Ú _get_bufferÚwriterš)rƒr^r}Úfds    rcrrsN€ô
S 8Ô    ,ð°Ø
‰ÔØ ˆ;à—;‘;“=÷    ñð
÷ ÷ñúsŽ#A»AÁAc#óLK—| t|«}n
t«}|€d}nt|t«s t    d«‚t |d«r|–—yt|t«r1t t|««t|d|d¬«5}|–—ddd«ytd«‚#1swYyxYw­w)    z€
    Context manager to open, yield and close buffer for filenames or Path-like
    objects, otherwise yield buf unchanged.
    Nzutf-8z1buf is not a file name and encoding is specified.r¨r¢rr)r}Únewlinez1buf is not a file name and it has no write method)    r4r ryr€rüÚhasattrr3ÚopenÚ    TypeError)r^r}Úfs   rcr§r§s¤èø€ð €Ü˜SÓ!‰ä‹jˆàÐØ‰Ü ˜œSÔ !ÜÐLÓMÐMäˆsGÔð‹    Ü    CœÔ    Üœs 3›xÔ(Ü #s X°rÔ :ð    ¸að
ŠG÷     ð    ôÐKÓLÐL÷    ð    üs‚A=B$Á?BÂB$ÂB!ÂB$c ó¬—tj|jd«rt} t    t
|«}nÝt |jt«rt} t    t
|«}n¬tj|jd«rt} t    t|«}nut |jt«rt} nTtj|jd«rt} n-tj|jd«rt} nt} |€d}|€ t!d«}|€ t!d«}| ||||||||||    |
¬« } | j#«S)    a™
    Format an array for printing.
 
    Parameters
    ----------
    values : np.ndarray or ExtensionArray
    formatter
    float_format
    na_rep
    digits
    space
    justify
    decimal
    leading_space : bool, optional, default True
        Whether the array should be formatted with a leading space.
        When an array as a column of a Series or DataFrame, we do want
        the leading space to pad between columns.
 
        When formatting an Index subclass
        (e.g. IntervalIndex._get_values_for_csv), we don't want the
        leading space since it should be left-aligned.
    fallback_formatter
 
    Returns
    -------
    List[str]
    ÚMÚmÚfcÚiué r\údisplay.precision)
ÚdigitsrUrWrDrBrHrÔr‡rÚfallback_formatter)rÚ is_np_dtyperXÚ_Datetime64Formatterrr'ryr"Ú_Datetime64TZFormatterÚ_Timedelta64Formatterr)r#Ú_ExtensionArrayFormatterÚFloatArrayFormatterÚ_IntArrayFormatterÚ_GenericArrayFormatterrÚ
get_result) ÚvaluesrDrWrUr·rBrHrÔr‡rr¸Ú    fmt_klassÚfmt_objs              rcrˆrˆ7s€ôR ‡v—|‘| SÔ)Ü(ˆ    Ü”m VÓ,‰Ü    F—L‘L¤/Ô    2Ü*ˆ    Ü”m VÓ,‰Ü     ‰˜Ÿ™ sÔ    +Ü)ˆ    Ü”n fÓ-‰Ü    F—L‘L¤.Ô    1Ü,‰    Ü     ‰˜Ÿ™ tÔ    ,Ü'‰    Ü     ‰˜Ÿ™ tÔ    ,Ü&‰    ä*ˆ    à €}؈àÐÜ!Ð"8Ó9ˆ à €~ÜÐ/Ó0ˆáØØØØ!ØØØØØ#ØØ-ô €Gð × Ñ Ó Ðrecón—eZdZ                                            d                                                                                                    dd„Zdd„Zdd„Zy)rÀNc ó¬—||_||_||_||_||_||_||_||_|    |_|
|_    | |_
| |_ yrÉ) rÂr·rUrBrDrWrHrÔrÚ fixed_widthr‡r¸) rbrÂr·rDrUrBrWrHrÔrrÇr‡r¸s              rcrdz_GenericArrayFormatter.__init__s\€ðˆŒ ؈Œ ؈Œ ؈Œ
Ø"ˆŒØ(ˆÔ؈Œ ؈Œ ؈Œ Ø&ˆÔØ*ˆÔØ"4ˆÕrecóN—|j«}t||j«SrÉ)Ú_format_stringsr5rH)rbr s  rcrÁz!_GenericArrayFormatter.get_result©s!€Ø×)Ñ)Ó+ˆ
Ü  ¨T¯\©\Ó:Ð:rec óꇇ ‡ —‰j€td«}|€td«Š ˆ fd„}n ‰j}‰j ‰jŠ nX‰j ‰jŠ n?‰jduxr‰jt
k7}t tjd|¬«Š ˆ ˆfd„}‰j}t|tj«s td«‚tj|t «}|tj"t%|«t't)dt+|j,«««¬    «z}‰j.}|€|j1«}g}t3|«D]€\}    }
||    r ‰j|r|j5d
||
«›«Œ4||    r|j5||
««ŒQ|d urd } nd } |j5| j7||
«¬««Œ‚|S)Nr\r¶có(•—t|d‰d›d›«S)Nz .Údr¯)Ú_trim_zeros_single_float)r/Ú    precisions €rcú<lambda>z8_GenericArrayFormatter._format_strings.<locals>.<lambda>²s ø€Ô)Aؘ˜I a˜=¨Ð)Ð*ó*€rers)rwÚ quote_stringscó•—‰j¤t|«r™t|«rŽ|€y|turt    t«St j |«r tj|«r t    |«S|tus*t|tjtjf«ry‰jSt|t«r t    |«St|t«r|jtur t!|«St    ‰|««S)Nr«r)rUr r$rr€rrr#ÚisinfrryÚ
datetime64Ú timedelta64r+r*Úna_valueÚrepr)r/rDrbs €€rcÚ_formatz7_GenericArrayFormatter._format_strings.<locals>._formatÄs½ø€Ø{‰{Ð&¬9°Q¬<¼DÀ¼Gؐ9Ø!Øœ"‘WÜœr›7NÜ—\‘\ !”_¬¯©°!¬ô˜q›6MØœ#‘X¤¨A´· ± ¼r¿~¹~Ð/NÔ!Oؠؗ{‘{Ð"ܘAœ|Ô,ܘ1“v ܘAœ{Ô+°·
±
¼bÑ0@ܘA“wô™9 Q›<Ó(Ð(rez=ExtensionArray formatting should use _ExtensionArrayFormatterrgrrLFz{v}z {v})r_)rWrrDr¸rr    r r5r|rÂryr#Úndarrayr®rÚ    map_inferrrñr%rÚrangeriÚshaper‡rTr3r7Úformat)rbrWrÐr×ÚvalsÚinferredÚ is_float_typer‡r r:r_ÚtplrDrÎs`           @@rcrÉz&_GenericArrayFormatter._format_strings­sÎú€Ø × Ñ Ð $Ü%Ð&<Ó=ˆLØÐ#Ü&Ð':Ó;    ó ‘ ð ×,Ñ,ˆLà >‰>Ð %ØŸ™‰IØ × $Ñ $Ð 0Ø×/Ñ/‰Ià ŸL™L°Ð4ÒS¸¿¹ÌÑ9SˆMÜÜ×%Ñ%Ø/Ø+ôˆIõ     )ð*{‰{ˆÜ˜$¤§
¡
Ô+ÜØOóð ô—=‘= ¤xÓ0ˆà äf‰f”U˜4“[¤u¬U°1´c¸$¿*¹*³oÓ-FÓ'GÔHñ Ið    ð
×*Ñ*ˆ Ø Ð  Ø)×-Ñ-Ó/ˆMàˆ
ܘd“Oò     <‰DˆAˆqØ! !Ò$¨¯©Ð(BÉ Ø×!Ñ! A¡g¨a£j \Ð"2Õ3ؘqÒ!Ø×!Ñ!¡,¨q£/Õ2à  EÑ)ð ‘CࠐCØ×!Ñ! #§*¡*©w°q«z *Ó":Õ;ð     <ðÐre) éNrQrµNrFrgNTTN)rÂr6r·rjrDrprUr€rBrorWrkrHr€rÔr€rr©rÇr§r‡rlr¸rprªr«r®)r–r°r±rdrÁrÉr³rercrÀrÀŒsµ„ðØ%)ØØØ/3ØØØ"Ø Ø%)Ø.2ð5àð5ðð5ð#ð    5ð
ð 5ð ð 5ð-ð5ðð5ðð5ðð5ðð5ð#ð5ð,ð5ð
ó5ó8;ôJrerÀcóH‡—eZdZdˆfd„ Z        d                    dd„Zdd„Zd    d„ZˆxZS)
r¾có•—t‰||i|¤Ž|jC|j€6d|_t |j«r|j|_d|_yyyy©NF)ÚsuperrdrWrDrÇÚcallable)rbÚargsÚkwargsÚ    __class__s   €rcrdzFloatArrayFormatter.__init__ûseø€Ü ‰Ñ˜$Ð) &Ò)ð × Ñ Ð (¨T¯^©^Ð-Cà$ˆDÔ Ü˜×)Ñ)Ô*Ø!%×!2Ñ!2”Ø$(Õ!ð+ð.DÐ (rec󎇇‡‡‡—‰€ ‰jЉrˆˆfd„Šnˆfd„Љjdk7rˆˆfd„Šn‰Š‰€‰Sˆˆˆfd„}|S)z;Returns a function to be applied on each value to format itcóL•—‰€J‚t|«r    ‰|¬«S‰jS)N)Úvalue)r%rU)r_rWrbs €€rcÚbase_formatterz<FloatArrayFormatter._value_formatter.<locals>.base_formatters5ø€Ø#Ð/Ð/Ð/ô ˜Q”xñ! qÔ)ððŸ™ðrecóH•—t|«r t|«S‰jSrÉ)r%r€rU)r_rbs €rcríz<FloatArrayFormatter._value_formatter.<locals>.base_formatter&sø€Ü!& q¤”s˜1“vÐ:¨t¯{©{Ð:rergcóJ•—‰|«jd‰jd«S)Nrgrg)ÚreplacerÔ)r_rírbs €€rcÚdecimal_formatterz?FloatArrayFormatter._value_formatter.<locals>.decimal_formatter+s!ø€Ù% aÓ(×0Ñ0°°d·l±lÀAÓFÐFrecón•—t|«rt|«‰kDr‰|«S‰d«S‰jS)Ng)r%ÚabsrU)rìrñrbÚ    thresholds €€€rcrDz7FloatArrayFormatter._value_formatter.<locals>.formatter4s6ø€ÜUŒ|ܐu“:     Ò)Ù,¨UÓ3Ð3á,¨SÓ1Ð1à—{‘{Ð"re)rWrÔ)rbrWrôrDrírñs``` @@rcÚ_value_formatterz$FloatArrayFormatter._value_formattersZü€ð Ð Ø×,Ñ,ˆLñ ö     ô ;ð <‰<˜3Ò ö Gð!/Ð à Ð Ø$Ð $ö    #ðÐrecó`‡‡
‡ ‡ —dd„Š                         dd„Š
‰j(‰ ‰j‰j‰j«S‰jr t    d«Š ndŠ ˆ
ˆ ˆˆ fd„}‰j
€N‰jr5‰j durd}nd}t|j‰j¬    «}n‰j
}nˆfd
„}||«}‰js|St|«d kDr%td „|D««}|‰jd zkD}nd}tj‰j«}|dkDj«}|d‰j zk|d kDzj«}    |    s|r>|r<‰j durd}nd}t|j‰j¬    «}||«}|S)zˆ
        Returns the float values converted into strings using
        the parameters given at initialisation, as a numpy array
        c    ó
—t|«}tjt|j    «|j    ««Dcgc]\}}|s||«n|‘Œc}}«j |j «}|Scc}}wrÉ)r$r#ÚarrayrÚravelÚreshaperÛ)rÂrDrUÚmaskÚvalr²Ú    formatteds       rcÚformat_with_na_repzCFloatArrayFormatter.get_result_as_array.<locals>.format_with_na_repEss€Ü˜“<ˆDÜŸ™ô#& f§l¡l£n°d·j±j³lÓ"C÷ᘘQñ+,‘I˜c”N°Ñ7óó÷
‰gf—l‘lÓ#ð ð Ð ùó sÁA?
cóÀ—tj|«j«}tj|«j«}t    |«t    |«}}g}t |j«||||«D]³\}}    }
} } | s| s|j ||««Œ%| s|j ||    «›d|›d«ŒE| sV||
«j«} | jd«r|j |›| ›d«Œ…|j |›d| ›d«Œ|j |›d|›d«Œµtj|«j|j«S)Nú+Újú-) r#ÚrealrùÚimagr$rr7ÚstripÚ
startswithrørúrÛ)rÂrDrUÚ real_valuesÚ imag_valuesÚ    real_maskÚ    imag_maskÚ formatted_lstrüÚreal_valÚimag_valÚre_isnaÚim_isnaÚimag_formatteds              rcÚformat_complex_with_na_repzKFloatArrayFormatter.get_result_as_array.<locals>.format_complex_with_na_repOsP€ôŸ'™' &›/×/Ñ/Ó1ˆKÜŸ'™' &›/×/Ñ/Ó1ˆKÜ#'¨ Ó#4´d¸;Ó6GyˆI؈MÜ=@Ø— ‘ “ØØØØó >ò @Ñ9X˜x¨°'ñ¡wØ!×(Ñ(©°3«Õ8Ù Ø!×(Ñ(©I°hÓ,?Ð+@ÀÀ&ÀÈÐ)KÕLÙ á%.¨xÓ%8×%>Ñ%>Ó%@NØ%×0Ñ0°Ô5Ø%×,Ñ,°¨x¸Ð7GÀqÐ-IÕJà%×,Ñ,°¨x°q¸Ð8HÈÐ-JÕKà!×(Ñ(¨F¨8°1°V°H¸AÐ)>Õ?ð' @ô(—8‘8˜MÓ*×2Ñ2°6·<±<Ó@Ð @reNzdisplay.chop_thresholdc󀕗‰j|‰    «}‰jdk(rd‰jzn ‰j}‰j}t    |«}|r ‰|||«}n
‰|||«}‰j
rF|rt |‰j«}nt|‰j«}tj|d¬«S|S)NrErLÚobject©rX) rõrHrUrÂrrÇÚ_trim_zeros_complexrÔÚ_trim_zeros_floatr#Úasarray)
rWrDrUrÂÚ
is_complexr¤rrþrbrôs
      €€€€rcÚformat_values_withzCFloatArrayFormatter.get_result_as_array.<locals>.format_values_withus®ø€Ø×-Ñ-¨l¸IÓFˆIð+/¯,©,¸&Ò*@S˜4Ÿ;™;Ò&ÀdÇkÁkˆFð—[‘[ˆFÜ)¨&Ó1ˆJñÙ3°F¸IÀvÓN‘á+¨F°I¸vÓFà×ÒÙÜ0°¸¿¹ÓF‘Fä.¨v°t·|±|ÓDFÜ—z‘z &°Ô9Ð9àˆMreTz{value: .{digits:d}f}z{value:.{digits:d}f})r·có"•—‰j|zSrÉ)rW)rìrbs €rcrÏz9FloatArrayFormatter.get_result_as_array.<locals>.<lambda>sø€¨×):Ñ):¸UÑ)B€rerc3ó2K—|]}t|«–—Œy­wrÉ©ri©r.r/s  rcr0z:FloatArrayFormatter.get_result_as_array.<locals>.<genexpr>©sèø€Ò: Aœ˜QŸÑ:ùó‚éFg€„.Aé
z{value: .{digits:d}e}z{value:.{digits:d}e})rÂr6rDrrUr€)rDrÂrUrÇrrWr‡r rÜr·rir9r#rórT) rbrÚfmt_strrWÚformatted_valuesÚmaxlenÚtoo_longÚabs_valsÚhas_large_valuesÚhas_small_valuesrrþrôs `         @@@rcÚget_result_as_arrayz'FloatArrayFormatter.get_result_as_array?s§û€ó     ð    AØð    AØ*2ð    AØ<?ó    Að: >‰>Ð %Ù% d§k¡k°4·>±>À4Ç;Á;ÓOÐ Oà × Ò Ü"Ð#;Ó<‰IàˆI÷    ð< × Ñ Ð $Ø×ÒØ×%Ñ%¨Ñ-Ø5‘Gà4GÜ& w§~¡~¸d¿k¹kÔJ‘ à#×0Ñ0‘ ãBˆLá-¨lÓ;Ðà×ÒØ#Ð #ô ÐÓ   1Ò $ÜÑ:Ð)9Ô:Ó:ˆFØ § ¡ ¨a¡Ñ/‰HàˆHä—6‘6˜$Ÿ+™+Ó&ˆð% s™N×/Ñ/Ó1ÐØ%¨°· ± ¨|Ñ(<Ñ<ÀÈAÁÑN×SÑSÓUÐá ¡Ñ-=Ø×!Ñ! TÑ)Ø1‘à0Ü" 7§>¡>¸$¿+¹+ÔFˆLÙ1°,Ó?Ð àÐrecó4—t|j««SrÉ)rr(r‰s rcrÉz#FloatArrayFormatter._format_strings¿s€ÜD×,Ñ,Ó.Ó/Ð/rer¬©NN)rWrkrôz float | Nonerªr)rªz
np.ndarrayr®)r–r°r±rdrõr(rÉÚ __classcell__©rés@rcr¾r¾ús>ø„õ
)ð04Ø"&ð6à,ð6ð ð6ð
ó    6óp~ ÷@0rer¾có—eZdZdd„Zy)r¿có˜—|jdurd„}nd„}|jxs|}|jDcgc]
}||«‘Œ }}|Scc}w)NFcó*—|d›j|¬«S)NrÌ©r/©rÜr0s rcrÏz4_IntArrayFormatter._format_strings.<locals>.<lambda>Æs€¨¨1¨§o¡o¸ oÓ&:€recó*—|d›j|¬«S)Nz dr0r1r0s rcrÏz4_IntArrayFormatter._format_strings.<locals>.<lambda>Ès€¨¨2¨×&6Ñ&6¸Ð&6Ó&;€re)r‡rDrÂ)rbÚ formatter_strrDr/r s     rcrÉz"_IntArrayFormatter._format_stringsÄsN€Ø × Ñ  Ñ &Ù:‰Má;ˆMØ—N‘NÒ3 mˆ    Ø,0¯K©KÖ8 q‘i •lÐ8ˆ
Ð8ØÐùò9s´ANr®)r–r°r±rÉr³rercr¿r¿Ãs„ôrer¿cóH‡—eZdZUded<        d                            dˆfd„ Zdd„ZˆxZS)rºr'rÂc óB•—t‰||fi|¤Ž||_||_yrÉ)rårdÚnat_repr”)rbrÂr6r”rèrés     €rcrdz_Datetime64Formatter.__init__Ñs&ø€ô    ‰Ñ˜Ñ* 6Ò*؈Œ Ø&ˆÕrecóè—|j}|j|Dcgc]}|j|«‘Œc}S|j|j|j¬«}|j «Scc}w)z&we by definition have DO NOT have a TZ)rUr”)rÂrDÚ_format_native_typesr6r”Útolist)rbrÂr/r s    rcrÉz$_Datetime64Formatter._format_stringsÜsi€à—‘ˆà >‰>Ð %Ø/5Ö6¨!D—N‘N 1Õ%Ò6Ð 6à×0Ñ0Ø—<‘<¨T×-=Ñ-=ð1ó
ˆ
ð× Ñ Ó"Ð"ùò 7sA/©rN)rÂr'r6r€r”r«rªr«r®©r–r°r±Ú__annotations__rdrÉr+r,s@rcrºrºÎsAø…Ø Óð
Ø ð        'àð    'ðð    'ðð        'ð
õ     '÷
#rerºcó —eZdZUded<dd„Zy)r½r(rÂc ó¦—|j}|j}d}|€|jd¬«}t|t«r|j «}nt j|t¬«}t|||j|j|j|j|j|j|j |j"|¬« }|S)NT)Úboxedr)    rWrUr·rBrHrÔr‡rr¸)rÂrDÚ
_formatterryr&Ú_internal_get_valuesr#rrrˆrWrUr·rBrHrÔr‡r)rbrÂrDr¸rør s      rcrÉz(_ExtensionArrayFormatter._format_stringsìs³€Ø—‘ˆà—N‘Nˆ    Ø!ÐØ Ð Ø!'×!2Ñ!2¸Ð!2Ó!>Ð ä fœkÔ *à×/Ñ/Ó1‰Eä—J‘J˜v¬VÔ4ˆEä!Ø Ø Ø×*Ñ*Ø—;‘;Ø—;‘;Ø—*‘*Ø—L‘LØ—L‘LØ×,Ñ,Ø—L‘LØ1ô 
ˆ
ðÐreNr®©r–r°r±r<rÉr³rercr½r½és …Ø Óôrer½cóF—tj|«}t|«r0tj|dk\«rtj|dk«s t    d«‚d|z}t |«}|j |«jt«}tj||«}tj|«r(|jt«}|Dcgc]}|dz‘Œ    c}Stj|«}t |«}tj|t¬«}||j «jt«jt«||<||j |«jt«||<|Dcgc]}|dz‘Œ    c}Scc}wcc}w)a
    Outputs rounded and formatted percentiles.
 
    Parameters
    ----------
    percentiles : list-like, containing floats from interval [0,1]
 
    Returns
    -------
    formatted : list of strings
 
    Notes
    -----
    Rounding precision is chosen so that: (1) if any two elements of
    ``percentiles`` differ, they remain different after rounding
    (2) no entry is *rounded* to 0% or 100%.
    Any non-integer is always rounded to at least 1 decimal place.
 
    Examples
    --------
    Keeps all entries different after rounding:
 
    >>> format_percentiles([0.01999, 0.02001, 0.5, 0.666666, 0.9999])
    ['1.999%', '2.001%', '50%', '66.667%', '99.99%']
 
    No element is rounded to 0% or 100% (unless already equal to it).
    Duplicates are allowed:
 
    >>> format_percentiles([0, 0.5, 0.02001, 0.5, 0.666666, 0.9999])
    ['0%', '50%', '2.0%', '50%', '66.67%', '99.99%']
    rrgz/percentiles should all be in the interval [0,1]édú%r)r#rrrñrüÚ get_precisionÚroundÚastyperjÚiscloser€ÚuniqueÚ
empty_liker)Ú percentilesÚprecÚpercentiles_round_typeÚint_idxÚoutr:Ú unique_pctss       rcÚformat_percentilesrR
sX€ôD—*‘*˜[Ó)€Kô ˜[Ô )܏v‰vk QÑ&Ô'܏v‰vk QÑ&Ô'äÐJÓKÐKà˜ Ñ#€KÜ ˜Ó %€DØ(×.Ñ.¨tÓ4×;Ñ;¼CÓ@Ðäj‰jÐ/°Ó=€Gä    ‡vvˆg„Ø$×+Ñ+¬CÓ0ˆØ!$Ö%˜AC“Ò%Ð%ä—)‘)˜KÓ(€KÜ ˜Ó %€DÜ
-‰-˜ ¬6Ô
2€CؘwÑ'×-Ñ-Ó/×6Ñ6´sÓ;×BÑBÄ3ÓG€CˆLà  Ñ)×/Ñ/°Ó5×<Ñ<¼SÓA€CˆˆMØ Ö !˜ˆA‹GÒ !Ð!ùò&ùò "s à FÆ
FcóD—|ddkDr|dnd}|ddkrd|dz
nd}tj|||¬«}t|«}tjtjtj
|«««j t« }td|«}|S)NréÿÿÿÿrD)Úto_beginÚto_endrg)    r#Úediff1dróÚfloorÚlog10rkrHrjr9)rørUrVÚdiffrMs     rcrFrFIsˆ€Ø  ™8 aš<ˆuQŠx¨T€HØ % b¡    ¨C¢ˆS5˜‘9Š_°T€FÜ :‰:e h°vÔ >€DÜ ˆt‹9€DÜ H‰H”R—X‘XœbŸf™f T›lÓ+Ó ,× 3Ñ 3´CÓ 8Ð 8€DÜ ˆq$‹<€DØ €Krecó,—|tur|St|«SrÉ)rr€©r/r6s  rcÚ_format_datetime64r]Ss€ØŒCx؈ô ˆq‹6€Mrecód—t|t«r|S|r|j|«S|jSrÉ)ryrÚstrftimeÚ
_date_repr)r/r6r”s   rcÚ_format_datetime64_dateonlyra\s1€ô
!”WÔØˆá؏z‰z˜+Ó&Ð&ð|‰|Ðrec󠇇—|rˆˆfd„Sˆfd„S)z]Return a formatter callable taking a datetime64 as input and providing
    a string as outputcó •—t|‰‰¬«S)N)r6r”)ra)r/r”r6s €€rcrÏz'get_format_datetime64.<locals>.<lambda>rsø€Ô4Ø w¨Kô
€recó•—t|‰¬«S)N)r6)r]r\s €rcrÏz'get_format_datetime64.<locals>.<lambda>vsø€Ô+¨A°wÔ?€rer³)Ú is_dates_onlyr6r”s ``rcÚget_format_datetime64rfksù€ñ ô
ð    
ó@Ð?recó —eZdZUded<dd„Zy)r»r'rÂcóî—|jj}|jjt«}|jxst ||j ¬«}|Dcgc]
}||«‘Œ }}|Scc}w)zwe by definition have a TZ)r”)rÂÚ_is_dates_onlyrHrrDrfr”)rbÚidorÂrDr/r s      rcrÉz&_Datetime64TZFormatter._format_strings|sj€àk‰k×(Ñ(ˆØ—‘×#Ñ#¤FÓ+ˆØ—N‘Nò
Ô&;Ø ˜T×-Ñ-ô'
ˆ    ð-3Ö3 q‘i •lÐ3ˆ
Ð3àÐùò4sÁA2Nr®rBr³rercr»r»ys …Ø Óô    rer»cóB‡—eZdZUded<    d                    dˆfd„ Zdd„ZˆxZS)r¼r)rÂc ó4•—t‰||fi|¤Ž||_yrÉ)rårdr6)rbrÂr6rèrés    €rcrdz_Timedelta64Formatter.__init__‹sø€ô    ‰Ñ˜Ñ* 6Ò*؈ recó¬—|jxs"t|j|jd¬«}|jDcgc]
}||«‘Œ c}Scc}w)NF)r6Úbox)rDÚget_format_timedelta64rÂr6)rbrDr/s   rcrÉz%_Timedelta64Formatter._format_strings•sE€Ø—N‘Nò
Ô&<Ø K‰K §¡°5ô'
ˆ    ð'+§k¡kÖ2 ‘    ˜!• Ò2Ð2ùÒ2s¿A©r)rÂr)r6r€rªr«r®r;r,s@rcr¼r¼ˆs4ø…Ø Óð
ðàðððð
 
õ ÷3rer¼có@‡‡‡—|j}|rdŠndŠˆˆˆfd„}|S)z
    Return a formatter function for a range of timedeltas.
    These will all have the same format argument
 
    If box, then show the return in quotes
    NÚlongc󦕗|t|«r t|«r‰St|t«s t|«}|j    ‰¬«}‰rd|›d}|S)Nr1ú')r r$ryrÚ
_repr_base)r/r¤rnrÜr6s  €€€rcr@z*get_format_timedelta64.<locals>._formatter®sSø€Ø ˆ9œ 1œ¬$¨q¬'؈Nä˜!œYÔ'ܘ!“ ˆAð—‘ VÓ,ˆÙ ؘ˜ ]ˆF؈ re)ri)rÂr6rnÚ    even_daysr@rÜs ``  @rcroroœs*ú€ð×%Ñ%€IáØ‰àˆö ð Ðrecó@‡‡‡    —t|«dk(s|dk(r|S|€tj«Šn|Štˆfd„|D««Š    | t|‰    «Š    t    d«Š‰‰    ‰kDr‰Š    dˆˆˆ    fd„ }|Dcgc]
}||«‘Œ }}‰j |‰    |¬«}|Scc}w)Nrrñc3ó@•K—|]}‰j|«–—Œy­wrÉr)r.r/Ú
adjustments  €rcr0z$_make_fixed_width.<locals>.<genexpr>Ìsøèø€Ò5¨*—.‘. ×#Ñ5ùsƒr¸cóV•—‰%‰dkD‰j|«‰kDzr |d‰dz
dz}|S)Nr‘r’r)r/ryÚconf_maxr@s €€€rcÚjustz_make_fixed_width.<locals>.justÕs=ø€Ø Рؘ1‘  §¡°Ó!2°WÑ!<Ò=ؐm˜ !™ Ð$ uÑ,Øˆrer“)r/r€rªr€)rir5r_r9rrH)
r)rHr*r`r|r/r¤ryr{r@s
       @@@rcr5r5¾s³ú€ô  ˆ7ƒ|qÒ˜G uÒ,؈à
€{Ü×,Ñ,Ó.‰
àˆ
äÓ5¨WÔ5Ó5€GàÐܐg˜wÓ'ˆäÐ0Ó1€HØÐ ¨(Ò 2؈÷ð !(Ö(˜1‰tAwÐ(€GÐ(Ø × Ñ  ¨°wÐ Ó ?€FØ €Mùò)sÁ4Bc    óЗgg}}|D]^}tjd|«}|jdj|dd««|jdj|dd««Œ`t    |«}t ||z|«}t    |«dk(rgSt d„|D««dz
}t|d|||d«D    
cgc]\}    }
|    |
dz|
ddd    |›d›zd
z‘Œ} }    }
| Scc}
}    w) z‰
    Separates the real and imaginary parts from the complex number, and
    executes the _trim_zeros_float method on each of those.
    z([j+-])rrNéüÿÿÿéþÿÿÿrc3ó2K—|]}t|«–—Œy­wrÉr)r.Úparts  rcr0z&_trim_zeros_complex.<locals>.<genexpr>ösèø€Ò; dœ˜DŸ    Ñ;ùrrgú>r)Úreršr7rrirr9r) Ú str_complexesrÔÚ    real_partÚ    imag_partr/ÚtrimmedÚnÚ padded_partsÚ padded_lengthÚreal_ptÚimag_ptÚpaddeds             rcrràs$€ð
˜rˆy€IØ ò2ˆô
—(‘(˜: qÓ)ˆØ×јŸ™ ¨¨" Ó.Ô/Ø×јŸ™ ¨¨B Ó0Õ1ð2ô     ˆMÓ€AÜ$ Y°Ñ%:¸GÓD€LÜ
ˆ<Ó˜AÒØˆ    ÜÑ;¨lÔ;Ó;¸aÑ?€Mô !$ L°°!Ð$4°lÀ1À2Ð6FÓ G÷ ñ
ˆGWð        Ø
!‰*ñ    à QRˆ[˜˜=˜/¨Ð)Ð *ñ    ,ð ó    ð€Fñð €MùósÂ<!C"cóT—|jd«}|jd«r|dz }|S)zX
    Trims trailing zeros after a decimal point,
    leaving just one if necessary.
    Ú0rg)ÚrstripÚendswith)Ú    str_floats rcrÍrÍs2€ð
× Ñ  Ó%€IØ×ј#ÔØSш    à Ðrec󠇇—|}tjd|›d«Šdˆfd„ Šd    ˆfd„ }||«r%|Dcgc]}‰|«r|ddn|‘Œ}}||«rŒ%|Dcgc]"}‰|«r|j|«r|dzn|‘Œ$}}|Scc}wcc}w)
    Trims the maximum number of trailing zeros equally from
    all numbers containing decimals, leaving just one if
    necessary.
    z^\s*[\+-]?[0-9]+\z[0-9]*$có4•—tj‰|«duSrÉ)rƒÚmatch)r/Ú number_regexs €rcÚis_number_with_decimalz1_trim_zeros_float.<locals>.is_number_with_decimalsø€Üx‰x˜  aÓ(°Ð4Ð4recó‚•—|Dcgc] }‰|«sŒ |‘Œ}}t|«dkDxrtd„|D««Scc}w)zñ
        Determine if an array of strings should be trimmed.
 
        Returns True if all numbers containing decimals (defined by the
        above regular expression) within the array end in a zero, otherwise
        returns False.
        rc3ó>K—|]}|jd«–—Œy­w)rN)r‘rs  rcr0z9_trim_zeros_float.<locals>.should_trim.<locals>.<genexpr>$sèø€Ò'I¸A¨¯
©
°3¯Ñ'Iùs‚)rirñ)rÂr/Únumbersr—s   €rcÚ should_trimz&_trim_zeros_float.<locals>.should_trimsEø€ð%ÖB˜Ñ(>¸qÕ(A’1ÐBˆÐBܐ7‹|˜aÑÒI¤CÑ'IÀÔ'IÓ$IÐIùòCs† <”<NrTrrn)rÂúArrayLike | list[str]rªr§)rƒÚcompiler‘)Ú
str_floatsrÔr‡r›r/r¤r—r–s      @@rcrr s³ù€ð€GÜ—:‘:Ð!2°7°)¸7ÐCÓD€Lõ5õ    Jñ gÔ
ØGNÖOÀ!Ñ3°AÔ61Sb‘6¸AÑ=ÐOˆÐOñ gÕ
ð öà ñ*¨!Ô,°·±¸GÔ1DˆˆCŠÈ!ÑKð€Fðð €MùòPùòs ¶BÁ'B cóv—t|t«rtj|jŽS|j
duSrÉ)ryr-ÚcomÚ any_not_nonerfrV)rTs rcr—r—1s0€Ü%œÔ$Ü×Ñ §¡Ð-Ð-àz‰z Ð%Ð%recó˜—eZdZdZidd“dd“dd“dd    “d
d “d d “dd“dd“dd“dd“dd“dd“dd“dd“dd“d d!“d"d#“Z    d'                    d(d%„Zd)d&„Zy$)*Ú EngFormatterzl
    Formats float values according to engineering format.
 
    Based on matplotlib.ticker.EngFormatter
    ièÿÿÿrMiëÿÿÿÚziîÿÿÿÚaiñÿÿÿr¯iôÿÿÿÚpi÷ÿÿÿrˆiúÿÿÿÚuéýÿÿÿr²rrrr‘r^rr±é    ÚGrµÚTéÚPéÚEéÚZéÚYNcó —||_||_yrÉ©ÚaccuracyÚuse_eng_prefix)rbr¶r·s   rcrdzEngFormatter.__init__Ts€ð!ˆŒ Ø,ˆÕrecóî—tt|««}tj|«rytj|«ryd}|dkrd}| }|dk7r<tt    t j |j«dz «dz««}n td«}|jt|jj«««}|jt|jj«««}t    |«}|jr|j|}n|dkrd| d›}nd    |d›}||zd
|zz }|j€d }nd |jd ›d}|j||¬«}    |    S)añ
        Formats a number in engineering notation, appending a letter
        representing the power of 1000 of the original number. Some examples:
        >>> format_eng = EngFormatter(accuracy=0, use_eng_prefix=True)
        >>> format_eng(0)
        ' 0'
        >>> format_eng = EngFormatter(accuracy=1, use_eng_prefix=True)
        >>> format_eng(1_000_000)
        ' 1.0M'
        >>> format_eng = EngFormatter(accuracy=2, use_eng_prefix=False)
        >>> format_eng("-1e-6")
        '-1.00E-06'
 
        @param num: the value to represent
        @type num: either a numeric value or a string that can be converted to
                   a numeric value (as per decimal.Decimal constructor)
 
        @return: engineering formatted string
        rQÚinfrgrrTr‘zE-Ú02dzE+r z{mant: g}{prefix}z{mant: .rÌz
f}{prefix})ÚmantÚprefix)r
r€Úis_nanÚ is_infiniterjÚmathrXrYrkr9Ú ENG_PREFIXESrr·r¶rÜ)
rbÚnumÚdnumÚsignÚpow10Ú    int_pow10r¼r»Ú
format_strrýs
          rcÚ__call__zEngFormatter.__call__Zs_€ô(”s˜3“xÓ ˆä >‰>˜$Ô Øä × Ñ ˜tÔ $Øàˆà !Š8؈Dؐ5ˆDà 1Š9ÜœC¤§
¡
¨4¯:©:«<¸!Ñ+;Ó <¸qÑ @ÓAÓB‰Eä˜A“JˆEà—    ‘    œ#˜d×/Ñ/×4Ñ4Ó6Ó7Ó8ˆØ—    ‘    œ#˜d×/Ñ/×4Ñ4Ó6Ó7Ó8ˆÜ˜“Jˆ    à × Ò Ø×&Ñ& yÑ1‰FØ ˜Š]ؘ9˜* SÐ)Ð*‰Fà˜) C˜Ð)ˆFàd‰{˜b %™iÑ(ˆà =‰=Ð  Ø,‰Jà$ T§]¡]°1Ð$5°]ÐCˆJà×%Ñ%¨4¸Ð%Ó?ˆ    àÐrerä)r¶r©r·r§rªr«)rÁÚfloatrªr€)r–r°r±r²rÀrdrÇr³rercr£r£8sÿ„ñðØ ˆSðà ˆSðð     ˆSðð     ˆSð    ð
     ˆSð ð      ˆCð ð     ˆCðð     ˆCðð    
ˆ2ðð    
ˆ3ðð    
ˆ3ðð    
ˆ3ðð     ˆCðð     ˆCðð     ˆCðð      ˆCð!ð"     ˆCð#€Lð*CHð-Ø"ð-Ø;?ð-à     ó-ô ;rer£có0—tdt||««y)a
    Format float representation in DataFrame with SI notation.
 
    Parameters
    ----------
    accuracy : int, default 3
        Number of decimal digits after the floating point.
    use_eng_prefix : bool, default False
        Whether to represent a value with SI prefixes.
 
    Returns
    -------
    None
 
    Examples
    --------
    >>> df = pd.DataFrame([1e-9, 1e-3, 1, 1e3, 1e6])
    >>> df
                  0
    0  1.000000e-09
    1  1.000000e-03
    2  1.000000e+00
    3  1.000000e+03
    4  1.000000e+06
 
    >>> pd.set_eng_float_format(accuracy=1)
    >>> df
             0
    0  1.0E-09
    1  1.0E-03
    2  1.0E+00
    3  1.0E+03
    4  1.0E+06
 
    >>> pd.set_eng_float_format(use_eng_prefix=True)
    >>> df
            0
    0  1.000n
    1  1.000m
    2   1.000
    3  1.000k
    4  1.000M
 
    >>> pd.set_eng_float_format(accuracy=1, use_eng_prefix=True)
    >>> df
          0
    0  1.0n
    1  1.0m
    2   1.0
    3  1.0k
    4  1.0M
 
    >>> pd.set_option("display.float_format", None)  # unset option
    r\N)rr£rµs  rcÚset_eng_float_formatrʘs€ônÐ%¤|°H¸nÓ'MÕNrecó—t|«dk(rgSdgt|d«z}g}|D]U}d}i}t|«D]\}}||r||k(rŒd||<||z
||<|}Œ!t|«|z
||<|j|«ŒW|S)a
    For each index in each level the function returns lengths of indexes.
 
    Parameters
    ----------
    levels : list of lists
        List of values on for level.
    sentinel : string, optional
        Value which states that no new index starts on there.
 
    Returns
    -------
    Returns list of maps. For each level returns map of indexes (key is index
    in row and value is length of index).
    rTF)rir3r7)    rUÚsentinelÚcontrolr¤rJÚ
last_indexÚlengthsr:Úkeys             rcÚget_level_lengthsrÑÒs³€ô$ ˆ6ƒ{aÒØˆ    àˆf”s˜6 !™9“~Ñ%€Gà €FØòˆØˆ
àˆÜ Ó&ò    ‰FˆAˆsؐqŠz˜c XšoØà"˜‘
Ø&'¨*¡n˜
Ñ#Ø‘
ð     ô" %›j¨:Ñ5ˆ
Ñà ‰ gÕðð  €Mrecó¢—td„|D««r|Dcgc] }t|«‘Œ}}|jdj|««ycc}w)z‘
    Appends lines to a buffer.
 
    Parameters
    ----------
    buf
        The buffer to write to
    lines
        The lines to append.
    c3ó<K—|]}t|t«–—Œy­wrÉ)ryr€rs  rcr0z#buffer_put_lines.<locals>.<genexpr>sèø€Ò
- !Œ:aœ× Ñ
-ùs‚rvN)rTr€r¨r)r^Úlinesr/s   rcÚbuffer_put_linesrÕýsC€ô Ñ
- uÔ
-Ô-Ø!&Ö'˜A”Q•Ð'ˆÐ'؇IIˆdi‰i˜ÓÕùò(s—A )rªzdict[str, Any]r*)rƒr€r^r r}r¨rªr¨rÉ)r^r r}r¨rªzIGenerator[WriteBuffer[str], None, None] | Generator[StringIO, None, None])    NrQNNrFrgTNN)rÂr6rDrprWrkrUr€r·r©rBzstr | int | NonerHr€rÔr€r‡rlrr©r¸rprªr¯)rLúnp.ndarray | Sequence[float]rªr¯)rørÖrªrjrp)r/úNaTType | Timestampr6r€rªr€r:)r/r×r6r€r”r¨rªr€)rer§r6r€r”r¨rªr)rF)rÂr)r6z str | floatrnr§rªr)rFNN)
r)r¯rHr€r*r©r`zprinting._TextAdjustment | Nonerªr¯)rg)r„r6rÔr€rªr¯)r’r€rªr€)ržrœrÔr€rªr¯)rTr,rªr§)r‘F)r¶rjr·r§rªr«)rr)rUrrÌzbool | object | strrªzlist[dict[int, int]])r^zWriteBuffer[str]rÔr¯rªr«)ˆr²Ú
__future__rÚcollections.abcrrrrÚ
contextlibrÚcsvr    rÔr
Ú    functoolsr Úior r¿rƒÚshutilr ÚtypingrrrrrÚnumpyr#Úpandas._config.configrrÚ pandas._libsrÚpandas._libs.missingrÚpandas._libs.tslibsrrrÚpandas._libs.tslibs.nattyperÚpandas.core.dtypes.commonrrrrrr Úpandas.core.dtypes.dtypesr!r"r#Úpandas.core.dtypes.missingr$r%Úpandas.core.arraysr&r'r(r)Úpandas.core.arrays.string_r*Úpandas.core.baser+Úpandas.core.commonÚcoreÚcommonr Úpandas.core.indexes.apir,r-r.r/Úpandas.core.indexes.datetimesr0Úpandas.core.indexes.timedeltasr1Úpandas.core.reshape.concatr2Úpandas.io.commonr3r4r¾r5Úpandas._typingr6r7r8r9r:r;r<r=r>r?r@rAÚpandasrBrCrDr<ÚVALID_JUSTIFY_PARAMETERSrNrPrÁrÅrÇrsrr§rˆrÀr¾r¿rºr½rRrFr]rarfr»r¼ror5rrÍrr—r£rÊrÑrÕr³rercú<module>r÷sîðòõ#÷óõ &ÝÝÝÝÛ Û    Ý$÷õó÷õ
Ý#÷ñõ
0÷÷÷ñ÷
÷
óõ 3Ý)ߠР÷óõ 8Ý9Ý-÷õ'á÷ ÷ ÷ ó ÷ð 6А%ó6ðp ÐðА%ó÷_$ñ_$óDóB÷>BñB÷JZñZð~/3Øð Ø ð à    +ð ðð ðó     ð àDHðMØ    +ðMØ7AðMàNòMóðMðP,0ØØØ"ØØØ!%ØØ*.ðR Ø ðR àðR ð)ðR ð ð    R ð
ð R ð ð R ððR ððR ððR ððR ð(ðR ðóR ÷jkñkô\F0Ð0ôF0ôRÐ/ôô#Ð1ô#ô6Ð5ôðB<"Ø.ð<"àó<"ó~ôðØ"ð Øð à ð ðð ð    ó     ð JNð @Øð @Ø"%ð @Ø<Fð @à ó @ô Ð1ô ô3Ð2ô3ð,!ØðØ ðà ðð
ððó    ðHØØ+/ð    Ø ðà ðððð
)ð    ð
ó ôDóB    ð7:ð!Ø%ð!Ø03ð!àó!óH&÷]ñ]ô@7Oðv24ð(Ø ð(Ø.ð(àó(ôV  re