ó
    ¬œ‘hO ã                  óð  • % S r SSKJr  SSKJrJrJrJr  SSKJ	r	  SSK
Jr  SSKJr  SSKJr  SSKJr  SS	KrSS	KrSS
KJr  SSKJrJrJrJrJr  SS	KrSSKJrJ r   SSK!J"r"  SSK#J$r$  SSK%J&r&J'r'J(r(  SSK)J*r*  SSK+J,r,J-r-J.r.J/r/J0r0J1r1  SSK2J3r3J4r4J5r5  SSK6J7r7J8r8  SSK9J:r:J;r;J<r<J=r=  SSK>J?r?  SSK@JArA  SS	KBJCs  JDrE  SSKFJGrGJHrHJIrIJJrJ  SSKKJLrL  SSKMJNrN  SSKOJPrP  SSKQJRrRJSrS  SSKTJUrU  \(       a$  SSKVJWrWJXrXJYrYJZrZJ[r[J\r\J]r]J^r^J_r_J`r`JaraJbrb  SSKcJdrdJere  SrfS \gS!'   S"rhS#riS \gS$'    " S% S&5      rjSNS' jrkSNS( jrl " S) S*5      rm " S+ S,5      rn  SO       SPS- jjro\	 SQ     SRS. jj5       rp         SS                       STS/ jjrq " S0 S15      rr " S2 S3\r5      rs " S4 S5\r5      rt " S6 S7\r5      ru " S8 S9\r5      rv    SUS: jrwSVS; jrxSWSXS< jjry  SY       SZS= jjrz SY       S[S> jjr{ " S? S@\u5      r| " SA SB\r5      r}  S\       S]SC jjr~   S^         S_SD jjrS`SaSE jjr€SbSF jr� S`     ScSG jjr‚SdSH jrƒ " SI SJ5      r„SeSfSK jjr… Sg     ShSL jjr†SiSM jr‡g	)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            
      óŒ   • \ rS rSrSrSSSSSSSSSS.	                     SS jjrSS	 jrSS
 jrSS jrSS jr	Sr
g)ÚSeriesFormatteré½   zP
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       	        ó
  • Xl         [        5       U l        X`l        XPl        X0l        X l        X@l        X�l        X l	        Uc  [        S5      nXpl        X€l        [        R                  " 5       U l        U R!                  5         g )Núdisplay.float_format)Úseriesr   ÚbufrW   rV   rT   rS   rU   rZ   r[   r   rX   rY   r5   Úget_adjustmentÚadjÚ_chk_truncate)Úselfr^   rS   rT   rU   rV   rW   rX   rY   rZ   r[   s              Ú\C:\Users\psant\Downloads\Noiseback\school\venv\Lib\site-packages\pandas/io/formats/format.pyÚ__init__ÚSeriesFormatter.__init__Ã   sm   € ð ŒÜ“:ˆŒØŒ	ØŒØŒØŒØŒ
Ø ŒØ ŒàÑÜ%Ð&<Ó=ˆLØ(ÔØŒ
Ü×*Ò*Ó,ˆŒà×ÑÕó    c                ó¢  • U   U R                   nU R                  nU=(       a    [        U R                  5      U:„  nU R                  nU(       an  [	        [
        U5      nU(       a  [        X5      nUS:X  a  UnUR                  S U nO-US-  n[        UR                  S U UR                  U* S  45      nXPl	        OS U l	        X@l
        X0l        g )Né   é   )r[   rZ   Úlenr^   r   ÚintÚminÚilocr2   Ú
tr_row_numÚ	tr_seriesÚis_truncated_vertically)rc   r[   rZ   rq   r^   Úrow_nums         rd   rb   ÚSeriesFormatter._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�Ø%�Oà"ˆDŒOØŒØ'>Õ$rg   c                ó¨  • U R                   R                  nSnU R                   R                  n[        U[        [
        [        45      (       a  UR                  b  USUR                   3-  nU R                  SLa,  Ub)  U(       a  US-  n[        R                  " USS9nUSU 3-  nU R                  SL d!  U R                  S	:X  a8  U R                  (       a'  U(       a  US-  nUS
[        U R                   5       3-  nU R                  SLa]  U R                  bP  [        U R                   R                  SS 5      nU(       a(  U(       a  US-  nUS[        R                  " U5       3-  n[        U R                   R                  ["        5      (       a4  U R                   R$                  R'                  5       nU(       a  US-  nX&-  n[)        U5      $ )NÚ zFreq: Fz, ©Ú	ÚÚ
)Úescape_charszName: TÚtruncatezLength: rW   zdtype: ry   )r^   rW   rU   Ú
isinstancer0   r.   r1   ÚfreqÚfreqstrr5   Úpprint_thingrS   rq   rk   rY   Úgetattrrp   r!   Ú_valuesÚ_get_repr_footerÚstr)rc   rW   ÚfooterrU   Úseries_nameÚ
dtype_nameÚ
level_infos          rd   Ú_get_footerÚSeriesFormatter._get_footerþ   s‰  € Ø�{‰{×ÑˆØˆà—‘×!Ñ!ˆä�uœ}¬k¼>ÐJ×KÑ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ÞØ˜$‘�ØÑ ˆFä�6‹{Ðrg   c                ó€   • [        U R                  R                  S U R                  U R                  U R
                  S9$ )N)rX   rV   Úleading_space)Úformat_arrayrp   r�   rX   rV   rU   ©rc   s    rd   Ú_get_formatted_valuesÚ%SeriesFormatter._get_formatted_values(  s6   € ÜØ�N‰N×"Ñ"ØØ×*Ñ*Ø—;‘;ØŸ*™*ñ
ð 	
rg   c                óD  • U R                   nU R                  5       n[        U5      S:X  a%  [        U R                  5      R
                   SU S3$ UR                  n[        U5      n[        U[        5      (       aH  UR                  SS S9n[        R                  " 5       nUR                  " S/UQ76 R                  S5      nOUR                  SS9nU R!                  5       nU R"                  (       a‘  SnU R$                  n	['        [(        U	5      n	U R*                  R                  XyS	-
     5      n
U
S
:”  a  SnOSnU R*                  R-                  U/U
SS9S   nUR/                  X˜-   U5        UR/                  U	S	-   S5        U R                  (       a#  U R*                  R                  " S
/US	S  U/Q76 nOU R*                  R                  S
U5      nU R0                  (       a  U(       a  US   S-   U-   nU(       a  USU-   -  n[3        SR5                  U5      5      $ )Nr   z([], Ú)T)Úinclude_namesÚsparsifyrj   ry   ©Úinclude_nameri   é   ú...z..rG   ©Úmoderu   )rp   rˆ   rk   Útyper^   Ú__name__rU   Ú
_has_namesr|   r-   Ú_format_multir5   r`   ÚadjoinÚsplitÚ_format_flatrŽ   rq   ro   r   rl   ra   rH   ÚinsertrT   rƒ   Újoin)rc   r^   r„   rU   Úhave_headerÚ	fmt_indexra   Ú
fmt_valuesÚn_header_rowsrr   ÚwidthÚdot_strÚresults                rd   Ú	to_stringÚSeriesFormatter.to_string1  sß  € Ø—‘ˆØ×!Ñ!Ó#ˆäˆ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 °a©KÑ!8Ó9ˆEØ�q‹yØ‘à�ð —h‘h×&Ñ&¨ y°%¸hÐ&ÐGÈÑJˆGØ×Ñ˜gÑ5°wÔ?Ø×Ñ˜W q™[¨"Ô-à�:�:Ø—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“?Ó#Ð#rg   )ra   r_   rY   rX   rT   rU   rq   rS   rZ   r[   rV   rW   r^   ro   rp   )r^   rC   rS   ú
bool | strrT   ÚboolrU   r­   rV   rƒ   rW   r­   rX   ú
str | NonerY   r­   rZ   ú
int | Noner[   r¯   ÚreturnÚNone©r°   r±   ©r°   rƒ   ©r°   ú	list[str])r›   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__re   rb   rˆ   rŽ   rª   Ú__static_attributes__© rg   rd   rP   rP   ½   s«   † ñð "ØØØØØ#'ØØ#Ø#ñàðð ð	ð
 ðð ðð ðð ðð !ðð ðð ðð ðð 
õô@?ô6(ôT
÷+$rg   rP   c                 óÄ   • SSK Jn   [        S5      (       a  U R                  5       u  pOSn[        S5      [        S5      [        S5      [        S5      [        S	5      U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   )Úconsolezdisplay.expand_frame_reprNúdisplay.max_rowsúdisplay.min_rowszdisplay.max_columnsúdisplay.max_colwidthúdisplay.show_dimensions)rZ   r[   Úmax_colsÚmax_colwidthÚshow_dimensionsÚ
line_width)Úpandas.io.formatsr½   r   Úget_console_size)r½   rÅ   Ú_s      rd   Úget_dataframe_repr_paramsrÉ   _  sd   € õ" *äÐ-×.Ñ.Ø×0Ñ0Ó2‰ˆ
�Aàˆ
äÐ1Ó2ÜÐ1Ó2ÜÐ4Ó5Ü"Ð#9Ó:Ü%Ð&?Ó@Ø ñð rg   c                 óŒ   • [        5       u  p[        S5      nUS:X  a  UOUnUS:X  a  UO
[        S5      nSSUU[        S5      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¾   r   r¿   TrÁ   )rW   rY   r[   rZ   rS   )r   r   )r§   ÚheightÚmax_rows_optrZ   r[   s        rd   Úget_series_repr_paramsrÍ   €  s\   € ô" &Ó'�M€EÜÐ0Ó1€LØ%¨Ó*‰v°€HØ%¨Ó*‰v´
Ð;MÓ0N€Hð ØØØÜÐ6Ó7ñð rg   c                  ód  • \ rS rSrSr\(       a  \OSr\\\-   -  r                 S'                                     S(S jjrS)S jr\	S*S j5       r
\	S*S j5       r\	S*S	 j5       r\	S*S
 j5       r\	S+S j5       r\	S*S j5       r\	S*S j5       r\	S*S j5       r\	S*S j5       r\	S,S j5       rS-S jr    S.S jrS/S jrS0S jrS1S jrS2S jrS2S jrS3S jrS*S jrS*S jrS*S jrS,S jrS4S jr S4S jr!S4S jr"S)S  jr#S5S! jr$S6S" jr%S7S# jr&S8S$ jr'S9S% jr(S&r)g):ÚDataFrameFormatteriŸ  z{
Class for processing dataframe formatting options and data.

Used by DataFrame.to_string, which backs DataFrame.__repr__.
ru   Nc                óL  • Xl         U R                  U5      U l        U R                  U5      U l        X@l        XPl        X`l        U R                  U5      U l	        U R                  U5      U l        X�l        U R                  U
5      U l        X°l        UU l        UU l        UU l        XÀl        XÐl        Xàl        Xðl        U R/                  5       U l        U R3                  5       U l        U R                   U l        U R9                  5         [:        R<                  " 5       U l        g ©N) ÚframeÚ_initialize_columnsÚcolumnsÚ_initialize_colspaceÚ	col_spacerT   rU   rV   Ú_initialize_formattersÚ
formattersÚ_initialize_justifyrH   rX   Ú_initialize_sparsifyr“   Úshow_index_namesÚdecimalÚ	bold_rowsÚescaperZ   r[   rÂ   rÄ   Ú_calc_max_cols_fittedÚmax_cols_fittedÚ_calc_max_rows_fittedÚmax_rows_fittedÚtr_framer{   r5   r`   ra   )rc   rÒ   rÔ   rÖ   rT   rU   rV   rØ   rH   rX   r“   Úindex_namesrZ   r[   rÂ   rÄ   rÜ   rÝ   rÞ   s                      rd   re   ÚDataFrameFormatter.__init__©  sî   € ð* Œ
Ø×/Ñ/°Ó8ˆŒØ×2Ñ2°9Ó=ˆŒØŒØŒ
ØŒØ×5Ñ5°jÓAˆŒØ×/Ñ/°Ó8ˆŒØ(ÔØ×1Ñ1°(Ó;ˆŒØ +ÔØˆŒØ"ˆŒØˆŒØ ŒØ ŒØ ŒØ.Ôà#×9Ñ9Ó;ˆÔØ#×9Ñ9Ó;ˆÔàŸ
™
ˆŒØ�‰ŒÜ×*Ò*Ó,ˆ�rg   c                ó¢   • U R                  5       nU R                  (       a-  U R                  U R                  5      nUR	                  SU5        U$ )z@
Render a DataFrame to a list of columns (as lists of strings).
r   )Ú_get_strcols_without_indexrU   Ú_get_formatted_indexrã   r¡   )rc   ÚstrcolsÚ	str_indexs      rd   Úget_strcolsÚDataFrameFormatter.get_strcolsØ  s@   € ð ×1Ñ1Ó3ˆà�:�:Ø×1Ñ1°$·-±-Ó@ˆIØ�N‰N˜1˜iÔ(àˆrg   c                óp   • U R                   SL =(       d"    U R                   S:H  =(       a    U R                  $ )NTr{   )rÄ   Úis_truncatedr�   s    rd   Úshould_show_dimensionsÚ)DataFrameFormatter.should_show_dimensionsä  s3   € à×#Ñ# tÐ+÷ 
Ø× Ñ  JÑ.×D°4×3DÑ3Dð	
rg   c                óR   • [        U R                  =(       d    U R                  5      $ rÑ   )r­   Úis_truncated_horizontallyrq   r�   s    rd   rî   ÚDataFrameFormatter.is_truncatedê  s   € ä�D×2Ñ2×R°d×6RÑ6RÓSÐSrg   c                ó~   • [        U R                  =(       a"    [        U R                  5      U R                  :„  5      $ rÑ   )r­   rà   rk   rÔ   r�   s    rd   rò   Ú,DataFrameFormatter.is_truncated_horizontallyî  s,   € ä�D×(Ñ(×W¬c°$·,±,Ó.?À$×BVÑBVÑ.VÓXÐXrg   c                ó~   • [        U R                  =(       a"    [        U R                  5      U R                  :„  5      $ rÑ   )r­   râ   rk   rÒ   r�   s    rd   rq   Ú*DataFrameFormatter.is_truncated_verticallyò  s+   € ä�D×(Ñ(×U¬c°$·*±*«oÀ×@TÑ@TÑ.TÓVÐVrg   c                ót   • S[        U R                  5       S[        U R                  R                  5       S3$ )Nz

[z rows x z	 columns])rk   rÒ   rÔ   r�   s    rd   Údimensions_infoÚ"DataFrameFormatter.dimensions_infoö  s0   € à”s˜4Ÿ:™:“Ð' x´°D·J±J×4FÑ4FÓ0GÐ/HÈ	ÐRÐRrg   c                ó@   • [        U R                  R                  5      $ rÑ   )rœ   rÒ   rU   r�   s    rd   Úhas_index_namesÚ"DataFrameFormatter.has_index_namesú  s   € ä˜$Ÿ*™*×*Ñ*Ó+Ð+rg   c                ó@   • [        U R                  R                  5      $ rÑ   )rœ   rÒ   rÔ   r�   s    rd   Úhas_column_namesÚ#DataFrameFormatter.has_column_namesþ  s   € ä˜$Ÿ*™*×,Ñ,Ó-Ð-rg   c                óZ   • [        U R                  U R                  U R                  45      $ rÑ   )Úallrü   rU   rÛ   r�   s    rd   Úshow_row_idx_namesÚ%DataFrameFormatter.show_row_idx_names  s$   € ä�D×(Ñ(¨$¯*©*°d×6KÑ6KÐLÓMÐMrg   c                óZ   • [        U R                  U R                  U R                  45      $ rÑ   )r  rÿ   rÛ   rT   r�   s    rd   Úshow_col_idx_namesÚ%DataFrameFormatter.show_col_idx_names  s$   € ä�D×)Ñ)¨4×+@Ñ+@À$Ç+Á+ÐNÓOÐOrg   c                óŒ   • [        U R                  =(       d    [        U R                  5      [        U R                  5      5      $ rÑ   )rm   rZ   rk   rÒ   r�   s    rd   Úmax_rows_displayedÚ%DataFrameFormatter.max_rows_displayed
  s(   € ä�4—=‘=×3¤C¨¯
©
£O´S¸¿¹³_ÓEÐErg   c                ó"   • Uc  [        S5      $ U$ )Nzdisplay.multi_sparse©r   )rc   r“   s     rd   rÚ   Ú'DataFrameFormatter._initialize_sparsify  s   € ØÑÜÐ4Ó5Ð5Øˆrg   c                ó  • Uc  0 $ [        U R                  R                  5      [        U5      :X  d  [        U[        5      (       a  U$ [        S[        U5       S[        U R                  R                  5       S35      e)NzFormatters length(ú+) should match DataFrame number of columns(r‘   )rk   rÒ   rÔ   r|   ÚdictÚ
ValueError)rc   rØ   s     rd   r×   Ú)DataFrameFormatter._initialize_formatters  sx   € ð ÑØˆIÜ�—‘×#Ñ#Ó$¬¨J«Ó7¼:ÀjÔRV×;WÑ;WØÐäØ$¤S¨£_Ð$5ð 6/Ü/2°4·:±:×3EÑ3EÓ/FÐ.GÀqðJóð rg   c                ó"   • Uc  [        S5      $ U$ )Nzdisplay.colheader_justifyr  )rc   rH   s     rd   rÙ   Ú&DataFrameFormatter._initialize_justify   s   € Ø‰?ÜÐ9Ó:Ð:àˆNrg   c                óv   • Ub!  [        U5      nU R                  U   U l        U$ U R                  R                  $ rÑ   )r/   rÒ   rÔ   )rc   rÔ   Úcolss      rd   rÓ   Ú&DataFrameFormatter._initialize_columns&  s7   € ØÑÜ Ó(ˆDØŸ™ DÑ)ˆDŒJØˆKà—:‘:×%Ñ%Ð%rg   c                ó¤  • Uc  0 nU$ [        U[        [        45      (       a<  SU0nUR                  U R                  R
                   Vs0 s H  o3U_M     sn5        U$ [        U[        5      (       aJ  UR                  5        H2  nX0R                  R
                  ;  d  M  US:w  d  M&  [        SU 35      e   UnU$ [        U R                  R
                  5      [        U5      :w  a8  [        S[        U5       S[        U R                  R
                  5       S35      e[        [        U R                  R
                  U5      5      nU$ s  snf )Nru   z,Col_space is defined for an unknown column: zCol_space length(r  r‘   )r|   rl   rƒ   ÚupdaterÒ   rÔ   r   Úkeysr  rk   r  Úzip)rc   rÖ   r©   Úcolumns       rd   rÕ   Ú'DataFrameFormatter._initialize_colspace.  s>  € ð ÑØˆFð$ ˆô# ˜	¤C¬ :×.Ñ.Ø˜)�_ˆFØ�M‰M¸4¿:¹:×;MÒ;MÓNÒ;M° 9Ò,Ñ;MÑ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Øˆùò Os   Á
Ec                ó¤   • U R                  5       (       d  U R                  $ [        5       u  pU R                  U5      (       a  U$ U R                  $ )z%Number of columns fitting the screen.)Ú_is_in_terminalrÂ   r   Ú_is_screen_narrow)rc   r§   rÈ   s      rd   rß   Ú(DataFrameFormatter._calc_max_cols_fittedF  sE   € à×#Ñ#×%Ñ%Ø—=‘=Ð ä$Ó&‰ˆØ×!Ñ! %×(Ñ(ØˆLà—=‘=Ð rg   c                ó  • U R                  5       (       aT  [        5       u  pU R                  S:X  a  X R                  5       -
  $ U R	                  U5      (       a  UnOU R                  nOU R                  nU R                  U5      $ )z,Number of rows with data fitting the screen.r   )r  r   rZ   Ú_get_number_of_auxiliary_rowsÚ_is_screen_shortÚ_adjust_max_rows)rc   rÈ   rË   rZ   s       rd   rá   Ú(DataFrameFormatter._calc_max_rows_fittedQ  st   € ð ×Ñ×!Ñ!Ü)Ó+‰IˆAØ�}‰} Ó!à× BÑ BÓ DÑDÐDà×$Ñ$ V×,Ñ,Ø!‘àŸ=™=‘à—}‘}ˆHà×$Ñ$ XÓ.Ð.rg   c                ó”   • U(       a@  [        U R                  5      U:”  a'  U R                  (       a  [        U R                  U5      nU$ )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
)rk   rÒ   r[   rm   )rc   rZ   s     rd   r%  Ú#DataFrameFormatter._adjust_max_rowsd  s2   € ö Ü�D—J‘J“ (Ó*°··ä˜tŸ}™}¨hÓ7�Øˆrg   c                ó^   • [        U R                  S:H  =(       d    U R                  S:H  5      $ )z/Check if the output is to be shown in terminal.r   )r­   rÂ   rZ   r�   s    rd   r  Ú"DataFrameFormatter._is_in_terminalr  s$   € ä�D—M‘M QÑ&×<¨$¯-©-¸1Ñ*<Ó=Ð=rg   c                ó„   • [        U R                  S:H  =(       a"    [        U R                  R                  5      U:„  5      $ ©Nr   )r­   rÂ   rk   rÒ   rÔ   )rc   Ú	max_widths     rd   r   Ú$DataFrameFormatter._is_screen_narrowv  s/   € Ü�D—M‘M QÑ&×N¬3¨t¯z©z×/AÑ/AÓ+BÀYÑ+NÓOÐOrg   c                óp   • [        U R                  S:H  =(       a    [        U R                  5      U:„  5      $ r,  )r­   rZ   rk   rÒ   )rc   Ú
max_heights     rd   r$  Ú#DataFrameFormatter._is_screen_shorty  s(   € Ü�D—M‘M QÑ&×G¬3¨t¯z©z«?¸ZÑ+GÓHÐHrg   c                ó°   • SnSnX-   nU R                   (       a&  U[        U R                  R                  5       5      -  nU R                  (       a  US-  nU$ )z?Get number of rows occupied by prompt, dots and dimension info.ri   )rÄ   rk   rù   Ú
splitlinesrT   )rc   Údot_rowÚ
prompt_rowÚnum_rowss       rd   r#  Ú0DataFrameFormatter._get_number_of_auxiliary_rows|  sP   € àˆØˆ
ØÑ'ˆà××Øœ˜D×0Ñ0×;Ñ;Ó=Ó>Ñ>ˆHà�;�;Ø˜‰MˆHàˆrg   c                óŠ   • U R                   (       a  U R                  5         U R                  (       a  U R                  5         gg)zI
Check whether the frame should be truncated. If so, slice the frame up.
N)rò   Ú_truncate_horizontallyrq   Ú_truncate_verticallyr�   s    rd   r{   ÚDataFrameFormatter.truncateŠ  s3   € ð ×)×)Ø×'Ñ'Ô)à×'×'Ø×%Ñ%Õ'ð (rg   c                ó
  • U R                   c   eU R                   S-  nUS:¼  a›  U R                  R                  SS2SU24   nU R                  R                  SS2U* S24   n[        X#4SS9U l        [	        U R
                  [        [        45      (       a&  / U R
                  SU QU R
                  U* S QU l        O>[        [        U R                  5      nU R                  R                  SS2SU24   U l        Xl        g)zŒRemove columns, which are not to be displayed and adjust formatters.

Attributes affected:
    - tr_frame
    - formatters
    - tr_col_num
Nrj   ri   ©Úaxis)rà   rã   rn   r2   r|   rØ   ÚlistÚtupler   rl   rÂ   Ú
tr_col_num)rc   Úcol_numrE   rF   s       rd   r9  Ú)DataFrameFormatter._truncate_horizontally”  só   € ð ×#Ñ#Ñ/Ð/Ð/Ø×&Ñ&¨!Ñ+ˆØ�a‹<Ø—=‘=×%Ñ%¢a¨¨'¨ kÑ2ˆDØ—M‘M×&Ñ&¢q¨7¨(©) |Ñ4ˆEÜ" D =°qÑ9ˆDŒMô ˜$Ÿ/™/¬D´%¨=×9Ñ9ð#Ø—_‘_ X gÐ.ð#à—_‘_ g X YÐ/ð#�”øô
 œ3 §¡Ó.ˆGØ ŸM™M×.Ñ.ªq°(°7°(¨{Ñ;ˆDŒMØ!�rg   c                óÂ  • U R                   c   eU R                   S-  nUS:¼  aw  [        U R                  5      n[        R                  " [        R
                  " U5      [        R
                  " X!-
  U5      /5      nU R                  R                  U   U l        O>[        [        U R                  5      nU R                  R                  SU2SS24   U l        Xl
        g)zbRemove rows, which are not to be displayed.

Attributes affected:
    - tr_frame
    - tr_row_num
Nrj   ri   )râ   rk   rã   ÚnpÚhstackÚarangern   r   rl   rZ   ro   )rc   rr   Ú_lenÚ_slices       rd   r:  Ú'DataFrameFormatter._truncate_vertically®  s­   € ð ×#Ñ#Ñ/Ð/Ð/Ø×&Ñ&¨!Ñ+ˆØ�a‹<Ü�t—}‘}Ó%ˆDÜ—Y’Y¤§	¢	¨'Ó 2´B·I²I¸d¹nÈdÓ4SÐTÓUˆFØ ŸM™M×.Ñ.¨vÑ6ˆD�Mäœ3 §¡Ó.ˆGØ ŸM™M×.Ñ.¨x°¨xº¨{Ñ;ˆDŒMØ!�rg   c                ó8  ^ • / n[        T R                  5      (       d–  T R                  (       d…  [        T R                  5       Hj  u  p#T R	                  U5      n[        UT R                  [        T R                  R                  US5      5      T R                  S9nUR                  U5        Ml     U$ [        T R                  5      (       a§  [        [        [           T R                  5      T l        [        T R                  5      [        T R                   5      :w  a8  [#        S[        T R                   5       S[        T R                  5       S35      eT R                   Vs/ s H  oU/PM     nnOT R%                  T R                  5      nT R&                  (       a  U H  nUR                  S5        M     [        T R                  5       HÁ  u  p#Xb   n[)        [        T R                  R                  US5      5      /U 4S jU 5       Q76 n	T R	                  U5      n[        UT R                  U	T R                  S9n[)        / U 4S	 jU 5       QU	P76 n
T R                  R                  XŠT R                  S
9nUR                  X„-   5        MÃ     U$ s  snf )Nr   )ÚstringsrH   Úminimumra   zWriting z cols but got z aliasesru   c              3  óZ   >#   • U  H   nTR                   R                  U5      v •  M"     g 7frÑ   ©ra   rk   ©Ú.0Úxrc   s     €rd   Ú	<genexpr>Ú@DataFrameFormatter._get_strcols_without_index.<locals>.<genexpr>â  s   øé € Ð0RÊ'ÀQ°·±·±¸a·°Ê'ùó   ƒ(+)rM  ra   c              3  óZ   >#   • U  H   nTR                   R                  U5      v •  M"     g 7frÑ   rO  rP  s     €rd   rS  rT  é  s   øé € Ð@²Z°˜DŸH™HŸL™L¨ŸO˜O²ZùrU  r˜   )r   rT   Ú	enumeraterã   Ú
format_colÚ_make_fixed_widthrH   rl   rÖ   Úgetra   Úappendr   r?  rƒ   rk   rÔ   r  Ú_get_formatted_column_labelsr  Úmax)rc   ré   ÚiÚcr¥   ÚlabelÚstr_columnsrR  ÚcheaderÚheader_colwidthÚmax_lens   `          rd   rç   Ú-DataFrameFormatter._get_strcols_without_indexÀ  s  ø€ Ø#%ˆä˜DŸK™K×(Ñ(°··Ü! $§-¡-Ö0‘�Ø!Ÿ_™_¨QÓ/�
Ü.Ø&Ø ŸL™LÜ §¡× 2Ñ 2°1°aÓ 8Ó9ØŸ™ñ	�
ð —‘˜zÖ*ñ 1ð ˆNä˜Ÿ™×$Ñ$äœt¤C™y¨$¯+©+Ó6ˆDŒKÜ�4—;‘;Ó¤3 t§|¡|Ó#4Ó4Ü Øœs 4§<¡<Ó0Ð1ð 2Ü" 4§;¡;Ó/Ð0°ð:óð ð 15·²Ó<² u›7±ˆKÐ<ˆKà×;Ñ;¸D¿M¹MÓJˆKà×"×"Û �Ø—‘˜–ñ !ô ˜dŸm™mÖ,‰DˆAØ!‘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Ñ/Ö0ñ -ð ˆùò- =s   Å&Jc           
     ó,  • U R                   nU R                  U5      n[        UR                  S S 2U4   R                  UU R
                  U R                  U R                  R                  UR                  U   5      U R                  U R                  S9$ )N)rX   rV   ÚspacerÜ   r‹   )rã   Ú_get_formatterrŒ   rn   r�   rX   rV   rÖ   rZ  rÔ   rÜ   rU   )rc   r^  rÒ   Ú	formatters       rd   rX  ÚDataFrameFormatter.format_colï  sz   € Ø—‘ˆØ×'Ñ'¨Ó*ˆ	ÜØ�J‰J’q˜!�tÑ×$Ñ$ØØ×*Ñ*Ø—;‘;Ø—.‘.×$Ñ$ U§]¡]°1Ñ%5Ó6Ø—L‘LØŸ*™*ñ
ð 	
rg   c                ó@  • [        U R                  [        [        45      (       a0  [	        U5      (       a  [        [        U5      nU R                  U   $ g [	        U5      (       a  XR                  ;  a  U R                  U   nU R                  R                  US 5      $ rÑ   )	r|   rØ   r?  r@  r   r   rl   rÔ   rZ  )rc   r^  s     rd   rh  Ú!DataFrameFormatter._get_formatterü  ss   € Ü�d—o‘o¬¬e }×5Ñ5Ü˜!�}‰}Üœ˜a“L�Ø—‘ qÑ)Ð)àä˜!�}‰} ¯,©,Ó!6Ø—L‘L ‘O�Ø—?‘?×&Ñ& q¨$Ó/Ð/rg   c           	     ój  ^ ^
^^• SSK Jn  UR                  n[        U[        5      (       aï  UR                  SSS9n[        [        U6 5      nT R                  R                  R                  n[        S UR                   5       5      m[        [        U[        [        U5      5      5      m
U
UU 4S jm[        [        U4S jU 5       6 5      nT R                   (       a  [#        U5      (       a  U" U5      n[        U6  Vs/ s H  n[        U5      PM     nnU$ UR%                  SS9nT R                  R                  n[        [        U[        [        U5      5      5      m
['        U5       V	Vs/ s H-  u  p—T R)                  U	5      (       d  T
U   (       a  S	U-   OU/PM/     nn	nU$ s  snf s  snn	f )
Nr   )Úsparsify_labelsF)r“   r’   c              3  ó8   #   • U  H  oR                   v •  M     g 7frÑ   )Úis_floating)rQ  Úlevels     rd   rS  ÚBDataFrameFormatter._get_formatted_column_labels.<locals>.<genexpr>  s   é € Ð%TÂ^¸E×&7Ö&7Â^ùó   ‚c                óT   >• UTR                   ;  a  TU    (       a  T(       d  SU-   $ U$ )NÚ )rØ   )rR  ÚyÚneed_leadspÚrestrict_formattingrc   s     €€€rd   Úspace_formatÚEDataFrameFormatter._get_formatted_column_labels.<locals>.space_format  s'   ø€ à˜TŸ_™_Ó,Ø# AŸÞ/à ™7�NØ�rg   c              3  ó^   >#   • U  H  o Vs/ s H  nT" X5      PM     snv •  M     g s  snf 7frÑ   r»   )rQ  rR  rv  ry  s      €rd   rS  rr     s(   øé € ÐKº{¸!°1Ó5²1¨a‘| AÖ)±1Ö5º{ùÒ5ùs   ƒ	-Œ(ž-r”   ru  )Úpandas.core.indexes.multirn  rÔ   r|   r-   r�   r?  r  rÒ   Údtypesr�   ÚanyÚlevelsr  Úmapr   r“   rk   r    rW  rh  )rc   rÒ   rn  rÔ   Úfmt_columnsr}  Ústr_columns_tuplerR  ra  r^  rw  rx  ry  s   `         @@@rd   r\  Ú/DataFrameFormatter._get_formatted_column_labels  s…  û€ Ý=à—-‘-ˆä�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Ñ!7Ù$3Ð4EÓ$FÐ!ä,/Ð1BÑ,CÓDÒ,C qœ4 ž7Ñ,CˆKÐDð Ðð "×.Ñ.¸EÐ.ÐBˆKØ—Z‘Z×&Ñ&ˆFÜœs ;´Ô4DÀfÓ0MÓNÓOˆKô & kÔ2ôâ2‘D�Að !%× 3Ñ 3°A× 6Ñ 6¸;Àq¿>��q’ÈqÓQÙ2ð ñ ð
 Ðùò Eùó
s   ÄF*Å14F/c                óF  • U R                   R                  5        VVs0 s H  u  p#U[        [        U5      _M     nnnUR                  nUR
                  nU R                  S5      n[        U[        5      (       a&  UR                  U R                  U R                  US9nOUR                  U R                  US9/nU V	s/ s H;  n	[        [        [        U	5      SUR!                  SS5      U R"                  S95      PM=     nn	U R"                  R$                  " S/UQ76 R'                  S	5      n
U R(                  (       a*  U R+                  5        V	s/ s H  n	[-        U	5      PM     nn	OS/UR.                  -  nU R0                  (       a  Xº-   $ U
$ s  snnf s  sn	f s  sn	f )
NÚ	__index__)r“   r’   ri  )r•   ri  rE   ru   r   )rH   rM  ra   ri   ry   )rÖ   Úitemsr   rl   rU   rÔ   rh  r|   r-   r�   r“   r  r    r@  rY  r?  rZ  ra   rž   rŸ   r  Ú_get_column_name_listrƒ   ÚnlevelsrT   )rc   rÒ   ÚkÚvrÖ   rU   rÔ   Úfmtr¤   rR  ÚadjoinedÚ
col_headers               rd   rè   Ú'DataFrameFormatter._get_formatted_index1  s‡  € ð 26·±×1EÑ1EÔ1GÔHÒ1G©¨�QœœS !›’_Ñ1Gˆ	ÑHØ—‘ˆØ—-‘-ˆØ×!Ñ! +Ó.ˆä�eœZ×(Ñ(Ø×+Ñ+ØŸ™Ø"×5Ñ5Øð ,ð ‰Ið ×"Ñ"°×0GÑ0GÐSVÐ"ÐWðˆIñ ó
ò �ô Ü!Ü˜“G V°Y·]±]À2ÀqÓ5IÈtÏxÉxñöñ
 ð 	ð 
ð —8‘8—?’? 1Ð1 yÒ1×7Ñ7¸Ó=ˆð ×"×"Ø*.×*DÑ*DÔ*FÓGÒ*F Qœ#˜až&Ñ*FˆJÐGˆJà˜ §¡Ñ/ˆJà�;�;ØÑ(Ð(àˆOùóI Iùò 
ùò Hs   žFÃAFÅFc                óü   • / nU R                   R                  n[        U[        5      (       a$  UR	                  S UR
                   5       5        U$ UR                  UR                  c  SOUR                  5        U$ )Nc              3  ó.   #   • U  H  oc  SOUv •  M     g 7f)Nru   r»   )rQ  rW   s     rd   rS  Ú;DataFrameFormatter._get_column_name_list.<locals>.<genexpr>^  s   é € ÐPÂ-¸$™|™°Ô5Â-ùs   ‚ru   )rÒ   rÔ   r|   r-   ÚextendÚnamesr[  rW   )rc   r“  rÔ   s      rd   r‡  Ú(DataFrameFormatter._get_column_name_listZ  sb   € Ø "ˆØ—*‘*×$Ñ$ˆÜ�gœz×*Ñ*Ø�L‰LÑPÀ'Ç-Â-ÓPÔPð ˆð �L‰L˜wŸ|™|Ñ3™¸¿¹ÔFØˆrg   )ra   rÝ   rÖ   rÔ   rÜ   rÞ   rX   rØ   rÒ   rT   rU   rH   rÂ   rà   rZ   râ   r[   rV   rÄ   rÛ   r“   rA  rã   ro   )NNTTrR   NNNNTNNNFÚ.FT)&rÒ   rB   rÔ   úAxes | NonerÖ   úColspaceArgType | NonerT   zbool | SequenceNotStr[str]rU   r­   rV   rƒ   rØ   úFormattersType | NonerH   r®   rX   úFloatFormatType | Noner“   úbool | Nonerä   r­   rZ   r¯   r[   r¯   rÂ   r¯   rÄ   r¬   rÜ   rƒ   rÝ   r­   rÞ   r­   r°   r±   )r°   úlist[list[str]]©r°   r­   r³   )r°   rl   )r“   rš  r°   r­   )rØ   r˜  r°   r=   )rH   r®   r°   rƒ   )rÔ   r–  r°   r,   )rÖ   r—  r°   r9   )r°   r¯   )rZ   r¯   r°   r¯   r²   )r^  rl   r°   rµ   )r^  ú	str | intr°   úCallable | None)rÒ   rB   r°   r›  )rÒ   rB   r°   rµ   )r°   zlist[Hashable])*r›   r¶   r·   r¸   r¹   rD   rN   re   rë   Úpropertyrï   rî   rò   rq   rù   rü   rÿ   r  r  r	  rÚ   r×   rÙ   rÓ   rÕ   rß   rá   r%  r  r   r$  r#  r{   r9  r:  rç   rX  rh  r\  rè   r‡  rº   r»   rg   rd   rÏ   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'÷Rrg   rÏ   c                  óî   • \ rS rSrSrS	S jr       S
               SS jjr   S       SS jjr                S                                 SS jjrSr	g)ÚDataFrameRendererid  a  Class 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                ó   • Xl         g rÑ   ©r‹  )rc   r‹  s     rd   re   ÚDataFrameRenderer.__init__u  s   € Ø�rg   Nc                ó„   • SSK JnJn	  U(       a  U	OUn
U
" U R                  UUUUS9nUR	                  5       n[        XÁUS9$ )uš  
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.htmlr¦  r§  r‹  rª   Úsave_to_buffer)rc   r_   r­  r¨  Únotebookr©  rª  r«  r¦  r§  ÚKlassÚhtml_formatterÚstrings                rd   Úto_htmlÚDataFrameRenderer.to_htmlx  sN   € ÷D	
ö
 &.Ñ!°=ˆáØ�H‰HØØØØ%ñ
ˆð  ×)Ñ)Ó+ˆÜ˜f¸ÑAÐArg   c                ód   • SSK Jn  U" U R                  US9nUR                  5       n[	        XaUS9$ )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¯  )rc   r_   r­  rÅ   r·  Ústring_formatterr³  s          rd   rª   ÚDataFrameRenderer.to_string«  s3   € õ( 	=á*¨4¯8©8À
ÑKÐØ!×+Ñ+Ó-ˆÜ˜f¸ÑAÐArg   c                óZ  • SSK Jn  Uc  Sn[        5       nOSnU" S0 SU_SU
_SU_S	U_S
U_SU_SU_SU_SU_SU_SU_SU	_SU_SU_SU_SU_SU R                  _6nUR	                  5         U(       a9  [        U[        5      (       d   eUR                  5       nUR                  5         U$ g)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_optionsri  r»   )Úpandas.io.formats.csvsr¼  r   r‹  Úsaver|   ÚgetvalueÚclose)rc   r½  r­  r¿  rÔ   rÃ  r™   rÁ  rÂ  rÅ  r¾  rÄ  rÆ  rÇ  rÈ  rÀ  rÉ  r¼  Úcreated_bufferÚcsv_formatterÚcontents                        rd   Úto_csvÚDataFrameRenderer.to_csvÅ  s  € õ, 	8àÑØ!ˆNÜ"›*‰Kà"ˆNá$ò 
Ù#ð
á)ð
ñ ð
ñ ð	
ñ
 ð
ñ $ð
ñ ð
ñ ð
ñ $ð
ñ ð
ñ  ð
ñ  ð
ñ $ð
ñ $ð
ñ "ð
ñ  ,ð!
ð" —h’hð#
ˆð& 	×ÑÔæÜ˜k¬8×4Ñ4Ð4Ð4Ø!×*Ñ*Ó,ˆGØ×ÑÔØˆNàrg   r£  )r‹  rÏ   r°   r±   )NNNFNNF)r_   ú"FilePath | WriteBuffer[str] | Noner­  r®   r¨  zstr | list | tuple | Noner°  r­   r©  zint | bool | Nonerª  r®   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Ô   zSequence[Hashable] | NonerÃ  zIndexLabel | Noner™   rƒ   rÁ  r:   rÂ  r¯   rÅ  rƒ   r¾  r®   rÄ  r¯   rÆ  r®   rÇ  r­   rÈ  r®   rÀ  rƒ   rÉ  zStorageOptions | Noner°   r®   )
r›   r¶   r·   r¸   r¹   re   r´  rª   rÑ  rº   r»   rg   rd   r¡  r¡  d  s¡  † ñô ð
 37Ø#Ø-1ØØ$(Ø#Ø"ð1Bà/ð1Bð ð1Bð +ð	1Bð
 ð1Bð "ð1Bð ð1Bð ð1Bð 
õ1Bðj 37Ø#Ø!%ð	Bà/ðBð ðBð ð	Bð
 
õBð8 PTØ#ØØ-1Ø)-ØØ*1Ø"ØØ%)Ø $Ø"&Ø Ø!%ØØ15ð#9àLð9ð ð9ð ð	9ð
 +ð9ð 'ð9ð ð9ð (ð9ð ð9ð ð9ð #ð9ð ð9ð  ð9ð ð9ð ð9ð  ð!9ð" /ð#9ð$ 
÷%9ð 9rg   r¡  c                ó¦   • [        XS9 nUR                  U 5        Uc  UR                  5       sSSS5        $  SSS5        g! , (       d  f       g= f)zI
Perform serialization. Write to buf or return as string if buf is None.
)r­  N)Ú_get_bufferÚwriterÌ  )r³  r_   r­  Úfds       rd   r¯  r¯    sA   € ô 
�SÒ	,°Ø
�‰�ÔØ‰;à—;‘;“=÷	 
-Ñ	,ð
 ÷ 
-×	,Ö	,ús   Š$A¸AÁ
Ac              #  ór  #   • U b  [        U 5      n O
[        5       n Uc  SnO [        U [        5      (       d  [	        S5      e[        U S5      (       a  U v •  g[        U [        5      (       a.  [        [        U 5      5        [        U SUSS9 nUv •  SSS5        g[        S5      e! , (       d  f       g= f7f)	zt
Context manager to open, yield and close buffer for filenames or Path-like
objects, otherwise yield buf unchanged.
Nzutf-8z1buf is not a file name and encoding is specified.rÛ  rÕ  ru   )r­  Únewlinez1buf is not a file name and it has no write method)	r4   r   r|   rƒ   r  Úhasattrr3   ÚopenÚ	TypeError)r_   r­  Úfs      rd   rÚ  rÚ    s£   é € ð �Ü˜SÓ!‰ä‹jˆàÑØ‰Ü˜œS×!Ñ!ÜÐLÓMÐMäˆs�G×Ñð ‹	Ü	�Cœ×	Ñ	Üœs 3›xÔ(Ü�#�s X°rÒ:¸að
 ŠG÷ ;Ð:ô ÐKÓLÐL÷ ;Õ:üs   ‚BB7ÂB&ÂB7Â&
B4Â0B7c                óð  • [         R                  " U R                  S5      (       a  [        n[	        [
        U 5      n Où[        U R                  [        5      (       a  [        n[	        [
        U 5      n OÃ[         R                  " U R                  S5      (       a  [        n[	        [        U 5      n O†[        U R                  [        5      (       a  [        nO`[         R                  " U R                  S5      (       a  [        nO3[         R                  " U R                  S5      (       a  [        nO[        nUc  SnUc  [!        S5      nUc  [!        S5      nU" U UUUUUUUUU	U
S9nUR#                  5       $ )	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)
ÚdigitsrV   rX   ri  rg  rH   rÜ   r‹   rÂ  Úfallback_formatter)r   Úis_np_dtyperY   Ú_Datetime64Formatterr   r'   r|   r"   Ú_Datetime64TZFormatterÚ_Timedelta64Formatterr)   r#   Ú_ExtensionArrayFormatterÚFloatArrayFormatterÚ_IntArrayFormatterÚ_GenericArrayFormatterr   Ú
get_result)Úvaluesri  rX   rV   rê  rg  rH   rÜ   r‹   rÂ  rë  Ú	fmt_klassÚfmt_objs                rd   rŒ   rŒ   7  s)  € ôR ‡‚�v—|‘| S×)Ñ)Ü(ˆ	Ü”m VÓ,‰Ü	�F—L‘L¤/×	2Ñ	2Ü*ˆ	Ü”m VÓ,‰Ü	�Š˜Ÿ™ s×	+Ñ	+Ü)ˆ	Ü”n fÓ-‰Ü	�F—L‘L¤.×	1Ñ	1Ü,‰	Ü	�Š˜Ÿ™ t×	,Ñ	,Ü'‰	Ü	�Š˜Ÿ™ t×	,Ñ	,Ü&‰	ä*ˆ	à�}ØˆàÑÜ!Ð"8Ó9ˆà�~ÜÐ/Ó0ˆáØØØØ!ØØØØØ#ØØ-ñ€Gð ×ÑÓÐrg   c                  ó~   • \ rS rSr           S                         SS jjrS	S jrS	S jrSrg)
ró  iŒ  Nc                ó”   • Xl         X l        X@l        XPl        X0l        X`l        Xpl        X€l        X�l        X l	        X°l
        XÀl        g rÑ   )rõ  rê  rV   rg  ri  rX   rH   rÜ   rÂ  Úfixed_widthr‹   rë  )rc   rõ  rê  ri  rV   rg  rX   rH   rÜ   rÂ  rú  r‹   rë  s                rd   re   Ú_GenericArrayFormatter.__init__�  sD   € ð ŒØŒØŒØŒ
Ø"ŒØ(ÔØŒØŒØŒØ&ÔØ*ÔØ"4Õrg   c                óL   • U R                  5       n[        XR                  5      $ rÑ   )Ú_format_stringsrY  rH   )rc   r¥   s     rd   rô  Ú!_GenericArrayFormatter.get_result©  s   € Ø×)Ñ)Ó+ˆ
Ü  ¯\©\Ó:Ð:rg   c                ó"  ^ ^^• T R                   c   [        S5      nUc  [        S5      mU4S jnOT R                   nT R                  b  T R                  mO[T R                  b  T R                  mOAT R                  S L=(       a    T R                  [
        :g  n[        [        R                  SUS9mUU 4S jnT R                  n[        U[        R                  5      (       d  [        S5      e[        R                  " U[         5      nU[        R"                  " [%        U5      ['        [)        S[+        UR,                  5      5      5      S	9-  nT R.                  nUc  UR1                  5       n/ n[3        U5       HŽ  u  pšXi   (       a  T R                  b#  U(       a  UR5                  S
U" U
5       35        M>  Xi   (       a  UR5                  U" U
5      5        M`  USL a  SnOSnUR5                  UR7                  U" U
5      S95        M�     U$ )Nr]   ré  c                ó(   >• [        U STS S3 5      $ )Nz .Údrâ  )Ú_trim_zeros_single_float)rR  Ú	precisions    €rd   Ú<lambda>Ú8_GenericArrayFormatter._format_strings.<locals>.<lambda>²  s   ø€ Ô)AØ˜˜I a˜=¨Ð)Ð*ô*rg   rv   )rz   Úquote_stringsc                óD  >• TR                   bÂ  [        U 5      (       a²  [        U 5      (       a¢  U c  gU [        L a  [	        [        5      $ [
        R                  " U 5      (       a&  [        R                  " U 5      (       a  [	        U 5      $ U [        L d/  [        U [        R                  [        R                  45      (       a  gTR                   $ [        U [        5      (       a  [	        U 5      $ [        U [        5      (       a  [        U 5      $ [	        T" U 5      5      $ )Nr±   r   )rV   r    r$   r   rƒ   r   r   rE  Úisinfr   r|   Ú
datetime64Útimedelta64r+   r*   Úrepr)rR  ri  rc   s    €€rd   Ú_formatÚ7_GenericArrayFormatter._format_strings.<locals>._formatÄ  sÃ   ø€ Ø�{‰{Ñ&¬9°Q¯<©<¼DÀ¿G¹GØ‘9Ø!Øœ"’WÜœr›7�NÜ—\’\ !—_‘_¬¯ª°!¯©ô ˜q›6�MØœ#’X¤¨A´·±¼r¿~¹~Ð/N×!OÑ!OØ Ø—{‘{Ð"Ü˜Aœ|×,Ñ,Ü˜1“v�Ü˜Aœ{×+Ñ+Ü˜A“w�ô ™9 Q›<Ó(Ð(rg   z=ExtensionArray formatting should use _ExtensionArrayFormatterri   r=  ru  Fz{v}z {v})rŠ  )rX   r   ri  rë  rÂ  r	   r   r5   r   rõ  r|   rE  Úndarrayrá  r   Ú	map_inferr   r  r%   r@  Úrangerk   Úshaper‹   r~  rW  r[  Úformat)rc   rX   r  r  ÚvalsÚinferredÚis_float_typer‹   r¥   r^  rŠ  Útplri  r  s   `           @@rd   rý  Ú&_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Ø!×$¨¯©Ñ(BÎØ×!Ñ! A¡g¨a£j \Ð"2Ö3Ø×!Ø×!Ñ!¡,¨q£/Ö2à  EÒ)ð  ‘Cà �CØ×!Ñ! #§*¡*©w°q«z *Ð":Ö;ñ $ð Ðrg   )rÜ   rê  rë  rú  rX   ri  rH   r‹   rV   rÂ  rg  rõ  )é   NrR   rè  NrF   r•  NTTN)rõ  r6   rê  rl   ri  rž  rV   rƒ   rg  r�  rX   r™  rH   rƒ   rÜ   rƒ   rÂ  r¯   rú  r­   r‹   rš  rë  rž  r°   r±   r´   )r›   r¶   r·   r¸   re   rô  rý  rº   r»   rg   rd   ró  ró  Œ  sµ   † ð Ø%)ØØØ/3ØØØ"Ø Ø%)Ø.2ð5àð5ð ð5ð #ð	5ð
 ð5ð ð5ð -ð5ð ð5ð ð5ð ð5ð ð5ð #ð5ð ,ð5ð 
õ5ô8;÷Jrg   ró  c                  ó\   ^ • \ rS rSrSU 4S jjr  S     S	S jjrS
S jrSS jrSrU =r	$ )rñ  iú  c                óÒ   >• [         TU ]  " U0 UD6  U R                  bI  U R                  c;  SU l        [        U R                  5      (       a  U R                  U l        S U l        g g g g ©NF)Úsuperre   rX   ri  rú  Úcallable)rc   ÚargsÚkwargsÚ	__class__s      €rd   re   ÚFloatArrayFormatter.__init__û  sh   ø€ Ü‰Ò˜$Ð) &Ò)ð ×ÑÑ(¨T¯^©^Ñ-Cà$ˆDÔÜ˜×)Ñ)×*Ñ*Ø!%×!2Ñ!2�”Ø$(�Õ!ð +ð .DÐ(rg   c                ó¦   ^ ^^^^• Tc  T R                   mT(       a  UU 4S jmOU 4S jmT R                  S:w  a  UU 4S jmOTmTc  T$ UU U4S jnU$ )z;Returns a function to be applied on each value to format itc                óR   >• Tc   e[        U 5      (       a  T" U S9$ TR                  $ )N)Úvalue)r%   rV   )rŠ  rX   rc   s    €€rd   Úbase_formatterÚ<FloatArrayFormatter._value_formatter.<locals>.base_formatter  s7   ø€ Ø#Ñ/Ð/Ð/ô ˜Q—x‘xñ ! qÑ)ðð Ÿ™ðrg   c                óR   >• [        U 5      (       a  [        U 5      $ TR                  $ rÑ   )r%   rƒ   rV   )rŠ  rc   s    €rd   r%  r&  &  s   ø€ Ü!& q§¡”s˜1“vÐ:¨t¯{©{Ð:rg   r•  c                óJ   >• T" U 5      R                  STR                  S5      $ )Nr•  ri   )ÚreplacerÜ   )rŠ  r%  rc   s    €€rd   Údecimal_formatterÚ?FloatArrayFormatter._value_formatter.<locals>.decimal_formatter+  s!   ø€ Ù% aÓ(×0Ñ0°°d·l±lÀAÓFÐFrg   c                óz   >• [        U 5      (       a  [        U 5      T:”  a  T" U 5      $ T" S5      $ TR                  $ )Ng        )r%   ÚabsrV   )r$  r*  rc   Ú	thresholds    €€€rd   ri  Ú7FloatArrayFormatter._value_formatter.<locals>.formatter4  s8   ø€ Ü�U�|‰|Ü�u“: 	Ó)Ù,¨UÓ3Ð3á,¨SÓ1Ð1à—{‘{Ð"rg   )rX   rÜ   )rc   rX   r.  ri  r%  r*  s   ``` @@rd   Ú_value_formatterÚ$FloatArrayFormatter._value_formatter  sZ   ü€ ð ÑØ×,Ñ,ˆLö ÷	õ;ð �<‰<˜3Ó÷Gð !/ÐàÑØ$Ð$÷	#ð Ðrg   c                ó¤  ^ ^
^^• SS jm      SS jm
T R                   b(  T" T R                  T R                   T R                  5      $ T R                  (       a  [	        S5      mOSmU
UU U4S jnT R
                  cQ  T R                  (       a3  T R                  SL a  SnOSn[        UR                  T R                  S	9nOT R
                  nOU 4S
 jnU" U5      nT R                  (       d  U$ [        U5      S:”  a%  [        S U 5       5      nUT R                  S-   :„  nOSn[        R                  " T R                  5      nUS:„  R                  5       nUST R                  * -  :  US:„  -  R                  5       n	U	(       d  U(       aA  U(       a:  T R                  SL a  SnOSn[        UR                  T R                  S	9nU" U5      nU$ )zp
Returns the float values converted into strings using
the parameters given at initialisation, as a numpy array
c           	     ó  • [        U 5      n[        R                  " [        U R	                  5       UR	                  5       5       VVs/ s H  u  pEU(       d  U" U5      OUPM     snn5      R                  U R                  5      nU$ s  snnf rÑ   )r$   rE  Úarrayr  ÚravelÚreshaper  )rõ  ri  rV   ÚmaskÚvalrå  Ú	formatteds          rd   Úformat_with_na_repÚCFloatArrayFormatter.get_result_as_array.<locals>.format_with_na_repE  sv   € Ü˜“<ˆDÜŸšô #& f§l¡l£n°d·j±j³lÔ"Côâ"C™˜ö +,‘I˜c”N°Ò7Ù"Còó÷
 ‰g�f—l‘lÓ#ð ð Ðùós   ÁB
c                óþ  • [         R                  " U 5      R                  5       n[         R                  " U 5      R                  5       n[	        U5      [	        U5      pe/ n[        U R                  5       UUUU5       HÏ  u  p‰p«nU(       d   U(       d  UR                  U" U5      5        M.  U(       d  UR                  U" U	5       SU S35        MT  U(       d]  U" U
5      R                  5       nUR                  S5      (       a  UR                  U U S35        MŸ  UR                  U SU S35        M¸  UR                  U SU S35        MÑ     [         R                  " U5      R                  U R                  5      $ )NÚ+ÚjÚ-)rE  Úrealr5  Úimagr$   r  r[  ÚstripÚ
startswithr4  r6  r  )rõ  ri  rV   Úreal_valuesÚimag_valuesÚ	real_maskÚ	imag_maskÚformatted_lstr8  Úreal_valÚimag_valÚre_isnaÚim_isnaÚimag_formatteds                 rd   Úformat_complex_with_na_repÚKFloatArrayFormatter.get_result_as_array.<locals>.format_complex_with_na_repO  sF  € ô Ÿ'š' &›/×/Ñ/Ó1ˆKÜŸ'š' &›/×/Ñ/Ó1ˆKÜ#'¨Ó#4´d¸;Ó6G�yØˆMÜ=@Ø—‘“ØØØØö>Ñ9�˜x°'ö ¦wØ!×(Ñ(©°3«Ö8Þ Ø!×(Ñ(©I°hÓ,?Ð+@ÀÀ&ÀÈÐ)KÖLÞ á%.¨xÓ%8×%>Ñ%>Ó%@�NØ%×0Ñ0°×5Ñ5Ø%×,Ñ,°¨x¸Ð7GÀqÐ-IÖJà%×,Ñ,°¨x°q¸Ð8HÈÐ-JÖKà!×(Ñ(¨F¨8°1°V°H¸AÐ)>Ö?ñ'>ô( —8’8˜MÓ*×2Ñ2°6·<±<Ó@Ð@rg   Nzdisplay.chop_thresholdc                ó˜  >• TR                  U T	5      nTR                  S:X  a  STR                  -   OTR                  nTR                  n[	        U5      nU(       a
  T" X1U5      nO	T" X1U5      nTR
                  (       aI  U(       a  [        UTR                  5      nO[        UTR                  5      n[        R                  " USS9$ U$ )NrE   ru  Úobject©rY   )r0  rH   rV   rõ  r   rú  Ú_trim_zeros_complexrÜ   Ú_trim_zeros_floatrE  Úasarray)
rX   ri  rV   rõ  Ú
is_complexr©   rN  r:  rc   r.  s
         €€€€rd   Úformat_values_withÚCFloatArrayFormatter.get_result_as_array.<locals>.format_values_withu  sª   ø€ Ø×-Ñ-¨l¸IÓFˆIð +/¯,©,¸&Ó*@�S˜4Ÿ;™;Ò&ÀdÇkÁkˆFð —[‘[ˆFÜ)¨&Ó1ˆJö Ù3°FÀvÓN‘á+¨F¸vÓF�à××ÞÜ0°¸¿¹ÓF‘Fä.¨v°t·|±|ÓD�FÜ—z’z &°Ñ9Ð9àˆMrg   Tz{value: .{digits:d}f}z{value:.{digits:d}f})rê  c                ó"   >• TR                   U -  $ rÑ   )rX   )r$  rc   s    €rd   r  Ú9FloatArrayFormatter.get_result_as_array.<locals>.<lambda>�  s   ø€ ¨×):Ñ):¸UÒ)Brg   r   c              3  ó8   #   • U  H  n[        U5      v •  M     g 7frÑ   ©rk   ©rQ  rR  s     rd   rS  Ú:FloatArrayFormatter.get_result_as_array.<locals>.<genexpr>©  s   é € Ð:Ò)9 Aœ˜QŸ˜Ò)9ùrs  é   Fg    €„.Aé
   z{value: .{digits:d}e}z{value:.{digits:d}e})rõ  r6   ri  r   rV   rƒ   )ri  rõ  rV   rú  r   rX   r‹   r   r  rê  rk   r]  rE  r-  r~  )rc   rW  Úfmt_strrX   Úformatted_valuesÚmaxlenÚtoo_longÚabs_valsÚhas_large_valuesÚhas_small_valuesrN  r:  r.  s   `         @@@rd   Úget_result_as_arrayÚ'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°,Ó?ÐàÐrg   c                ó4   • [        U R                  5       5      $ rÑ   )r?  rh  r�   s    rd   rý  Ú#FloatArrayFormatter._format_strings¿  s   € Ü�D×,Ñ,Ó.Ó/Ð/rg   )rú  rX   ri  r²   ©NN)rX   r™  r.  zfloat | Noner°   r   )r°   z
np.ndarrayr´   )
r›   r¶   r·   r¸   re   r0  rh  rý  rº   Ú__classcell__©r   s   @rd   rñ  rñ  ú  sC   ø† ÷
)ð 04Ø"&ð6à,ð6ð  ð6ð 
õ	6ôp~ ÷@0ò 0rg   rñ  c                  ó   • \ rS rSrSS jrSrg)rò  iÃ  c                ó¨   • U R                   SL a  S nOS nU R                  =(       d    UnU R                   Vs/ s H
  o2" U5      PM     nnU$ s  snf )NFc                ó$   • U S R                  U S9$ )Nr  ©rR  ©r  rr  s    rd   r  Ú4_IntArrayFormatter._format_strings.<locals>.<lambda>Æ  s   € ¨¨1¨§o¡o¸ oÑ&:rg   c                ó$   • U S R                  U S9$ )Nz drr  rs  rr  s    rd   r  rt  È  s   € ¨¨2¨×&6Ñ&6¸Ð&6Ñ&;rg   )r‹   ri  rõ  )rc   Úformatter_strri  rR  r¥   s        rd   rý  Ú"_IntArrayFormatter._format_stringsÄ  sO   € Ø×Ñ Ò&Ù:‰Má;ˆMØ—N‘N×3 mˆ	Ø,0¯KªKÓ8ªK q�i –l©Kˆ
Ð8ØÐùò 9s   ºAr»   Nr´   )r›   r¶   r·   r¸   rý  rº   r»   rg   rd   rò  rò  Ã  s   † ÷rg   rò  c                  óX   ^ • \ rS rSr% S\S'     S       SU 4S jjjrS	S jrSrU =r$ )
rí  iÎ  r'   rõ  c                ó@   >• [         TU ]  " U40 UD6  X l        X0l        g rÑ   )r  re   Únat_reprÆ  )rc   rõ  rz  rÆ  r  r   s        €rd   re   Ú_Datetime64Formatter.__init__Ñ  s"   ø€ ô 	‰Ò˜Ñ* 6Ò*ØŒØ&Õrg   c                óè   • U R                   nU R                  b!  U Vs/ s H  o R                  U5      PM     sn$ UR                  U R                  U R                  S9nUR                  5       $ s  snf )z&we by definition have DO NOT have a TZ)rV   rÆ  )rõ  ri  Ú_format_native_typesrz  rÆ  Útolist)rc   rõ  rR  r¥   s       rd   rý  Ú$_Datetime64Formatter._format_stringsÜ  sk   € à—‘ˆà�>‰>Ñ%Ù/5Ó6ªv¨!—N‘N 1Ö%©vÑ6Ð6à×0Ñ0Ø—<‘<¨T×-=Ñ-=ð 1ð 
ˆ
ð × Ñ Ó"Ð"ùò 7s   žA/)rÆ  rz  ©r   N)rõ  r'   rz  rƒ   rÆ  r±   r°   r±   r´   ©	r›   r¶   r·   r¸   Ú__annotations__re   rý  rº   rm  rn  s   @rd   rí  rí  Î  sK   ø‡ ØÓð
 Ø ð		'àð	'ð ð	'ð ð		'ð 
÷	'ð 	'÷
#ò 
#rg   rí  c                  ó*   • \ rS rSr% S\S'   SS jrSrg)rð  ié  r(   rõ  c                ó¢  • U R                   nU R                  nS nUc  UR                  SS9n[        U[        5      (       a  UR                  5       nO[        R                  " U[        S9n[        UUU R                  U R                  U R                  U R                  U R                  U R                  U R                   U R"                  US9nU$ )NT)ÚboxedrR  )	rX   rV   rê  rg  rH   rÜ   r‹   rÂ  rë  )rõ  ri  Ú
_formatterr|   r&   Ú_internal_get_valuesrE  rU  rQ  rŒ   rX   rV   rê  rg  rH   rÜ   r‹   rÂ  )rc   rõ  ri  rë  r4  r¥   s         rd   rý  Ú(_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ñ
ˆ
ð Ðrg   r»   Nr´   ©r›   r¶   r·   r¸   r‚  rý  rº   r»   rg   rd   rð  rð  é  s   ‡ ØÓ÷rg   rð  c                ót  • [         R                  " U 5      n [        U 5      (       a<  [         R                  " U S:¬  5      (       a  [         R                  " U S:*  5      (       d  [	        S5      eSU -  n [        U 5      nU R                  U5      R                  [        5      n[         R                  " X 5      n[         R                  " U5      (       a*  UR                  [        5      nU Vs/ s H  oUS-   PM	     sn$ [         R                  " U 5      n[        U5      n[         R                  " U [        S9nX   R                  5       R                  [        5      R                  [        5      XC'   X)    R                  U5      R                  [        5      XC) '   U Vs/ s H  oUS-   PM	     sn$ s  snf s  snf )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%']
r   ri   z/percentiles should all be in the interval [0,1]éd   Ú%rR  )rE  rU  r   r  r  Úget_precisionÚroundÚastyperl   Úiscloserƒ   ÚuniqueÚ
empty_likerQ  )ÚpercentilesÚprecÚpercentiles_round_typeÚint_idxÚoutr^  Úunique_pctss          rd   Úformat_percentilesr™  
  s]  € ô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ØÑ'×-Ñ-Ó/×6Ñ6´sÓ;×BÑBÄ3ÓG€C�Là Ñ)×/Ñ/°Ó5×<Ñ<¼SÓA€Cˆ�MÙ Ó!šS˜�ŒG™SÑ!Ð!ùò &ùò "s   Ã,F0ÆF5c                óH  • U S   S:”  a  U S   OS nU S   S:  a  SU S   -
  OS n[         R                  " XUS9n[        U5      n[         R                  " [         R                  " [         R
                  " U5      5      5      R                  [        5      * n[        SU5      nU$ )Nr   éÿÿÿÿr‹  )Úto_beginÚto_endri   )	rE  Úediff1dr-  ÚfloorÚlog10rm   r�  rl   r]  )r4  rœ  r�  Údiffr”  s        rd   r�  r�  I  s†   € Ø  ™8 a›<ˆu�QŠx¨T€HØ % b¡	¨C£ˆS�5˜‘9Š_°T€FÜ�:Š:�e°vÑ>€DÜˆt‹9€DÜ�HŠH”R—X’XœbŸfšf T›lÓ+Ó,×3Ñ3´CÓ8Ð8€DÜˆq�$‹<€DØ€Krg   c                ó.   • U [         L a  U$ [        U 5      $ rÑ   )r   rƒ   ©rR  rz  s     rd   Ú_format_datetime64r¤  S  s   € ØŒC‚xØˆô ˆq‹6€Mrg   c                óx   • [        U [        5      (       a  U$ U(       a  U R                  U5      $ U R                  $ rÑ   )r|   r   ÚstrftimeÚ
_date_repr)rR  rz  rÆ  s      rd   Ú_format_datetime64_dateonlyr¨  \  s4   € ô
 �!”W×ÑØˆæØ�z‰z˜+Ó&Ð&ð �|‰|Ðrg   c                ó.   ^^• U (       a  UU4S j$ U4S j$ )zYReturn a formatter callable taking a datetime64 as input and providing
a string as outputc                ó   >• [        U TTS9$ )N)rz  rÆ  )r¨  )rR  rÆ  rz  s    €€rd   r  Ú'get_format_datetime64.<locals>.<lambda>r  s   ø€ Ô4Ø�w¨Kò
rg   c                ó   >• [        U TS9$ )N©rz  )r¤  r£  s    €rd   r  r«  v  s   ø€ Ô+¨A°wÒ?rg   r»   )Úis_dates_onlyrz  rÆ  s    ``rd   Úget_format_datetime64r¯  k  s   ù€ ö õ
ð 	
ô @Ð?rg   c                  ó*   • \ rS rSr% S\S'   SS jrSrg)rî  iy  r'   rõ  c                óô   • U R                   R                  nU R                   R                  [        5      nU R                  =(       d    [        XR                  S9nU Vs/ s H
  oC" U5      PM     nnU$ s  snf )zwe by definition have a TZ)rÆ  )rõ  Ú_is_dates_onlyr�  rQ  ri  r¯  rÆ  )rc   Úidorõ  ri  rR  r¥   s         rd   rý  Ú&_Datetime64TZFormatter._format_strings|  si   € à�k‰k×(Ñ(ˆØ—‘×#Ñ#¤FÓ+ˆØ—N‘N÷ 
Ô&;Ø×-Ñ-ñ'
ˆ	ñ -3Ó3ªF q�i –l©Fˆ
Ð3àÐùò 4s   Á A5r»   Nr´   r‰  r»   rg   rd   rî  rî  y  s   ‡ ØÓ÷	rg   rî  c                  óR   ^ • \ rS rSr% S\S'    S     SU 4S jjjrS	S jrSrU =r$ )
rï  iˆ  r)   rõ  c                ó4   >• [         TU ]  " U40 UD6  X l        g rÑ   )r  re   rz  )rc   rõ  rz  r  r   s       €rd   re   Ú_Timedelta64Formatter.__init__‹  s   ø€ ô 	‰Ò˜Ñ* 6Ò*Ø�rg   c                ó´   • U R                   =(       d    [        U R                  U R                  SS9nU R                   Vs/ s H
  o!" U5      PM     sn$ s  snf )NF)rz  Úbox)ri  Úget_format_timedelta64rõ  rz  )rc   ri  rR  s      rd   rý  Ú%_Timedelta64Formatter._format_strings•  sI   € Ø—N‘N÷ 
Ô&<Ø�K‰K §¡°5ñ'
ˆ	ð '+§k¢kÓ2¢k �	˜!–¡kÑ2Ð2ùÒ2s   ÁAr­  ©r   )rõ  r)   rz  rƒ   r°   r±   r´   r�  rn  s   @rd   rï  rï  ˆ  s>   ø‡ ØÓð
 ðàðð ðð
 
÷ð ÷3ò 3rg   rï  c                óL   ^^^• U R                   nU(       a  SmOSmUUU4S jnU$ )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                óÊ   >• U b   [        U 5      (       a  [        U 5      (       a  T$ [        U [        5      (       d  [        U 5      n U R	                  TS9nT(       a  SU S3nU$ )Nrs  Ú')r    r$   r|   r   Ú
_repr_base)rR  r©   r¹  r  rz  s     €€€rd   r†  Ú*get_format_timedelta64.<locals>._formatter®  sZ   ø€ Ø‰9œ 1Ÿ™¬$¨q¯'©'ØˆNä˜!œY×'Ñ'Ü˜!“ˆAð —‘ V�Ð,ˆÞØ˜˜ �]ˆFØˆrg   )r²  )rõ  rz  r¹  Ú	even_daysr†  r  s    ``  @rd   rº  rº  œ  s*   ú€ ð ×%Ñ%€IæØ‰àˆ÷ð Ðrg   c                óR  ^^^	• [        U 5      S:X  d  US:X  a  U $ Uc  [        R                  " 5       mOUm[        U4S jU  5       5      m	Ub  [        UT	5      m	[	        S5      mTb  T	T:”  a  Tm	SUUU	4S jjnU  Vs/ s H
  oT" U5      PM     n nTR                  U T	US9nU$ s  snf )Nr   r  c              3  óF   >#   • U  H  nTR                  U5      v •  M     g 7frÑ   r\  )rQ  rR  Ú
adjustments     €rd   rS  Ú$_make_fixed_width.<locals>.<genexpr>Ì  s   øé € Ð5ªW¨�*—.‘. ×#Ð#ªWùs   ƒ!rÀ   c                ób   >• Tb*  TS:„  TR                  U 5      T:„  -  (       a  U S TS-
   S-   n U $ )Nr–   r—   r\  )rR  rÆ  Úconf_maxrd  s    €€€rd   ÚjustÚ_make_fixed_width.<locals>.justÕ  s=   ø€ ØÑØ˜1‘ §¡°Ó!2°WÑ!<×=Ø�m˜ !™Ð$ uÑ,�Øˆrg   r˜   )rR  rƒ   r°   rƒ   )rk   r5   r`   r]  r   rH   )
rL  rH   rM  ra   rÊ  rR  r©   rÆ  rÉ  rd  s
          @@@rd   rY  rY  ¾  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   Á>B$c                óÔ  • / / p2U  H`  n[         R                  " SU5      nUR                  SR                  USS 5      5        UR                  SR                  USS 5      5        Mb     [	        U 5      n[        X#-   U5      n[	        U5      S:X  a  / $ [        S U 5       5      S-
  n[        USU XvS 5       V	V
s/ s H  u  pšU	U
S   -   U
SS S	U 3 -   S
-   PM     nn	n
U$ s  sn
n	f )z}
Separates the real and imaginary parts from the complex number, and
executes the _trim_zeros_float method on each of those.
z([j+-])ru   Néüÿÿÿéþÿÿÿr   c              3  ó8   #   • U  H  n[        U5      v •  M     g 7frÑ   r\  )rQ  Úparts     rd   rS  Ú&_trim_zeros_complex.<locals>.<genexpr>ö  s   é € Ð;ªl dœ˜DŸ	˜	ªlùrs  ri   Ú>r>  )ÚrerŸ   r[  r¢   rk   rT  r]  r  )Ústr_complexesrÜ   Ú	real_partÚ	imag_partrR  ÚtrimmedÚnÚpadded_partsÚpadded_lengthÚreal_ptÚimag_ptÚpaddeds               rd   rS  rS  à  s  € ð
 ˜rˆyÛˆô
 —(’(˜: qÓ)ˆØ×Ñ˜Ÿ™ ¨¨" Ó.Ô/Ø×Ñ˜Ÿ™ ¨¨B Ó0Ö1ñ ô 	ˆMÓ€AÜ$ YÑ%:¸GÓD€LÜ
ˆ<Ó˜AÓØˆ	ÜÑ;©lÓ;Ó;¸aÑ?€Mô !$ L°°!Ð$4°lÀ2Ð6FÔ Gôò
 !HÑˆGð	 	Ø
�!‰*ñ	à�Q�Rˆ[˜˜=˜/Ð)Ð*ñ	,ð ô	ñ !Hð ñ ð €Mùós   Â="C$c                ó^   • U R                  S5      n U R                  S5      (       a  U S-  n U $ )zL
Trims trailing zeros after a decimal point,
leaving just one if necessary.
Ú0r•  )ÚrstripÚendswith)Ú	str_floats    rd   r  r    s5   € ð
 × Ñ  Ó%€IØ×Ñ˜#×ÑØ�SÑˆ	àÐrg   c                ój  ^^• U n[         R                  " SU S35      mSU4S jjmS	U4S jjnU" U5      (       a3  U Vs/ s H  nT" U5      (       a  USS OUPM     nnU" U5      (       a  M3  U Vs/ s H-  nT" U5      (       a  UR                  U5      (       a  US-   OUPM/     nnU$ s  snf s  snf )
zy
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                ó6   >• [         R                  " TU 5      S L$ rÑ   )rÓ  Úmatch)rR  Únumber_regexs    €rd   Úis_number_with_decimalÚ1_trim_zeros_float.<locals>.is_number_with_decimal  s   ø€ Ü�xŠx˜ aÓ(°Ð4Ð4rg   c                óž   >• U  Vs/ s H  nT" U5      (       d  M  UPM     nn[        U5      S:„  =(       a    [        S U 5       5      $ s  snf )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.
r   c              3  óB   #   • U  H  oR                  S 5      v •  M     g7f)rß  N)rá  r]  s     rd   rS  Ú9_trim_zeros_float.<locals>.should_trim.<locals>.<genexpr>$  s   é € Ð'IÂ¸A¯
©
°3¯¨Âùó   ‚)rk   r  )rõ  rR  Únumbersrç  s      €rd   Úshould_trimÚ&_trim_zeros_float.<locals>.should_trim  sF   ø€ ñ %ÓBšf˜Ñ(>¸q×(A—1™fˆÐBÜ�7‹|˜aÑ×I¤CÑ'IÁÓ'IÓ$IÐIùò Cs
   †A
›A
Nr›  rß  rœ  )rõ  úArrayLike | list[str]r°   r­   )rÓ  Úcompilerá  )Ú
str_floatsrÜ   r×  rî  rR  r©   rç  ræ  s         @@rd   rT  rT    sÆ   ù€ ð €GÜ—:’:Ð!2°7°)¸7ÐCÓD€L÷5÷	Jñ �g×
Ñ
ÙGNÓOÂwÀ!Ñ3°A×6Ñ6�1�S�b‘6¸AÒ=ÁwˆÐOñ �g×
Ó
ñ óâˆAñ *¨!×,Ñ,°·±¸G×1DÑ1DˆˆCŠÈ!ÒKÙð ð ð €Mùò Pùòs   Á B+Á34B0c                ó‚   • [        U [        5      (       a  [        R                  " U R                  6 $ U R
                  S L$ rÑ   )r|   r-   ÚcomÚany_not_noner“  rW   )rU   s    rd   rœ   rœ   1  s3   € Ü�%œ×$Ñ$Ü×Ò §¡Ð-Ð-à�z‰z Ð%Ð%rg   c                  ó¦   • \ rS rSrSr0 SS_SS_SS_S	S
_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS _S!S"_S#S$_r S)     S*S& jjrS+S' jrS(rg%),ÚEngFormatteri8  z`
Formats float values according to engineering format.

Based on matplotlib.ticker.EngFormatter
ièÿÿÿrv  iëÿÿÿÚziîÿÿÿÚaiñÿÿÿrâ  iôÿÿÿÚpi÷ÿÿÿrØ  iúÿÿÿÚuéýÿÿÿrå  r   ru   r–   r‰  r_  rä  é	   ÚGrè  ÚTé   ÚPé   ÚEé   ÚZé   ÚYNc                ó   • Xl         X l        g rÑ   ©ÚaccuracyÚuse_eng_prefix)rc   r
  r  s      rd   re   ÚEngFormatter.__init__T  s   € ð !ŒØ,Õrg   c                ó  • [        [        U5      5      n[         R                  " U5      (       a  g[         R                  " U5      (       a  gSnUS:  a  SnU* nUS:w  a=  [        [	        [
        R                  " UR                  5       S-  5      S-  5      5      nO[        S5      nUR                  [        U R                  R                  5       5      5      nUR                  [        U R                  R                  5       5      5      n[	        U5      nU R                  (       a  U R                  U   nOUS:  a  SU* S 3nOS	US 3nX2-  S
U-  -  nU R                  c  SnOSU R                  S S3nUR                  XvS9n	U	$ )aq  
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
rR   Úinfri   r   r›  r–   zE-Ú02dzE+r`  z{mant: g}{prefix}z{mant: .r  z
f}{prefix})ÚmantÚprefix)r
   rƒ   Úis_nanÚis_infiniterl   ÚmathrŸ  r   rm   r]  ÚENG_PREFIXESr  r  r
  r  )
rc   ÚnumÚdnumÚsignÚpow10Ú	int_pow10r  r  Ú
format_strr9  s
             rd   Ú__call__ÚEngFormatter.__call__Z  sa  € ô( ”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à‰{˜b %™iÑ(ˆà�=‰=Ñ Ø,‰Jà$ T§]¡]°1Ð$5°]ÐCˆJà×%Ñ%¨4Ð%Ð?ˆ	àÐrg   r	  r  )r
  r¯   r  r­   r°   r±   )r  Úfloatr°   rƒ   )	r›   r¶   r·   r¸   r¹   r  re   r  rº   r»   rg   rd   r÷  r÷  8  sÿ   † ñðØˆSðàˆSðð 	ˆSðð 	ˆSð	ð
 	ˆSðð 	ˆCðð 	ˆCðð 	ˆCðð 	
ˆ2ðð 	
ˆ3ðð 	
ˆ3ðð 	
ˆ3ðð 	ˆCðð 	ˆCðð 	ˆCðð  	ˆCð!ð" 	ˆCð#€Lð* CHð-Ø"ð-Ø;?ð-à	õ-÷;rg   r÷  c                ó.   • [        S[        X5      5        g)aZ  
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)r   r÷  r	  s     rd   Úset_eng_float_formatr   ˜  s   € ôn Ð%¤|°HÓ'MÕNrg   c                ó  • [        U 5      S:X  a  / $ S/[        U S   5      -  n/ nU  HX  nSn0 n[        U5       H!  u  pxX'   (       a  X�:X  a  M  SX''   Xu-
  Xe'   UnM#     [        U5      U-
  Xe'   UR                  U5        MZ     U$ )am  
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).
r   TF)rk   rW  r[  )	r  ÚsentinelÚcontrolr©   rq  Ú
last_indexÚlengthsr^  Úkeys	            rd   Úget_level_lengthsr'  Ò  s›   € ô$ ˆ6ƒ{�aÓØˆ	àˆf”s˜6 !™9“~Ñ%€Gà€FÛˆØˆ
àˆÜ Ö&‰FˆAØ�z˜c›oÙà"�‘
Ø&'¡n�Ñ#Ø’
ñ 'ô " %›j¨:Ñ5ˆÑà�‰�gÖñ ð  €Mrg   c                ó²   • [        S U 5       5      (       a  U Vs/ s H  n[        U5      PM     nnU R                  SR                  U5      5        gs  snf )zq
Appends lines to a buffer.

Parameters
----------
buf
    The buffer to write to
lines
    The lines to append.
c              3  óB   #   • U  H  n[        U[        5      v •  M     g 7frÑ   )r|   rƒ   r]  s     rd   rS  Ú#buffer_put_lines.<locals>.<genexpr>  s   é € Ð
-¢u !Œ:�aœ×Ð¢uùrì  ry   N)r~  rƒ   rÛ  r¢   )r_   ÚlinesrR  s      rd   Úbuffer_put_linesr,  ý  sG   € ô Ñ
-¡uÓ
-×-Ñ-Ù!&Ó'¢˜A”�Q–¡ˆÐ'Ø‡I�Iˆd�i‰i˜ÓÕùò (s   œA)r°   zdict[str, Any]rl  )r³  rƒ   r_   rÓ  r­  r®   r°   r®   rÑ   )r_   rÓ  r­  r®   r°   zIGenerator[WriteBuffer[str], None, None] | Generator[StringIO, None, None])	NrR   NNrF   r•  TNN)rõ  r6   ri  rž  rX   r™  rV   rƒ   rê  r¯   rg  zstr | int | NonerH   rƒ   rÜ   rƒ   r‹   rš  rÂ  r¯   rë  rž  r°   rµ   )r“  únp.ndarray | Sequence[float]r°   rµ   )r4  r-  r°   rl   r¼  )rR  úNaTType | Timestamprz  rƒ   r°   rƒ   r€  )rR  r.  rz  rƒ   rÆ  r®   r°   rƒ   )r®  r­   rz  rƒ   rÆ  r®   r°   r   )r   F)rõ  r)   rz  zstr | floatr¹  r­   r°   r   )rF   NN)
rL  rµ   rH   rƒ   rM  r¯   ra   zprinting._TextAdjustment | Noner°   rµ   )r•  )rÔ  r6   rÜ   rƒ   r°   rµ   )râ  rƒ   r°   rƒ   )rò  rð  rÜ   rƒ   r°   rµ   )rU   r,   r°   r­   )r–   F)r
  rl   r  r­   r°   r±   )ru   )r  r   r"  zbool | object | strr°   zlist[dict[int, int]])r_   zWriteBuffer[str]r+  rµ   r°   r±   )ˆr¹   Ú
__future__r   Úcollections.abcr   r   r   r   Ú
contextlibr   Úcsvr	   rÜ   r
   Ú	functoolsr   Úior   r  rÓ  Úshutilr   Útypingr   r   r   r   r   ÚnumpyrE  Úpandas._config.configr   r   Úpandas._libsr   Úpandas._libs.missingr   Úpandas._libs.tslibsr   r   r   Úpandas._libs.tslibs.nattyper   Úpandas.core.dtypes.commonr   r   r   r   r   r    Ú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.commonr3   r4   rÆ   r5   Úpandas._typingr6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   ÚpandasrB   rC   rD   r‚  ÚVALID_JUSTIFY_PARAMETERSrN   rP   rÉ   rÍ   rÏ   r¡  r¯  rÚ  rŒ   ró  rñ  rò  rí  rð  r™  r�  r¤  r¨  r¯  rî  rï  rº  rY  rS  r  rT  rœ   r÷  r   r'  r,  r»   rg   rd   Ú<module>rN     sî  ðòõ #÷ó õ &Ý Ý Ý Ý Û Û 	Ý $÷õ ó ÷õ
 Ý #÷ñ õ
 0÷÷ ÷ñ ÷
÷
ó õ 3Ý )ß  Ð  ÷ó õ 8Ý 9Ý -÷õ 'æ÷÷ ÷ ó ÷ð6Ð �%ó 6ðpÐ ðÐ �%ó ÷_$ñ _$ôDôB÷>Bñ B÷JZñ 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 ÷jkñ kô\F0Ð0ô F0ôRÐ/ô ô#Ð1ô #ô6Ð5ô ðB<"Ø.ð<"àô<"ô~öð Ø"ðØðàðð ðð 	õ	ð  JNð@Øð@Ø"%ð@Ø<Fð@àõ@ôÐ1ô ô3Ð2ô 3ð, !ØðØðàðð 
ðð õ	ðH ØØ+/ð	Øðàðð ðð 
)ð	ð
 õöDôB	ð 7:ð!Ø%ð!Ø03ð!àõ!ôH&÷]ñ ]ö@7Oðv 24ð(Øð(Ø.ð(àõ(õV rg   