Ë
    ¤ehO ã                  ó¨  — U d Z ddlmZ ddlmZmZmZmZ ddlm	Z	 ddl
mZ ddlmZ ddlmZ ddlmZ dd	lZdd	lZdd
lmZ ddlmZmZmZmZmZ dd	lZddlmZm Z  ddl!m"Z" ddl#m$Z$ ddl%m&Z&m'Z'm(Z( ddl)m*Z* ddl+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1 ddl2m3Z3m4Z4m5Z5 ddl6m7Z7m8Z8 ddl9m:Z:m;Z;m<Z<m=Z= ddl>m?Z? ddl@mAZA dd	lBmCc mDZE ddlFmGZGmHZHmIZImJZJ ddlKmLZL ddlMmNZN ddlOmPZP ddlQmRZRmSZS ddlTmUZU er$ddlVmWZWmXZXmYZYmZZZm[Z[m\Z\m]Z]m^Z^m_Z_m`Z`maZambZb ddlcmdZdmeZe dZfd egd!<   d"Zhd#Zid egd$<    G d%„ d&«      ZjdNd'„ZkdNd(„Zl G d)„ d*«      Zm G d+„ d,«      Zn	 	 dO	 	 	 	 	 	 	 dPd-„Zoe		 dQ	 	 	 	 	 dRd.„«       Zp	 	 	 	 	 	 	 	 	 dS	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dTd/„Zq G d0„ d1«      Zr G d2„ d3er«      Zs G d4„ d5er«      Zt G d6„ d7er«      Zu G d8„ d9er«      Zv	 	 	 	 dUd:„ZwdVd;„ZxdWdXd<„Zy	 	 dY	 	 	 	 	 	 	 dZd=„Zz	 dY	 	 	 	 	 	 	 d[d>„Z{ G d?„ d@eu«      Z| G dA„ dBer«      Z}	 	 d\	 	 	 	 	 	 	 d]dC„Z~	 	 	 d^	 	 	 	 	 	 	 	 	 d_dD„Zd`dadE„Z€dbdF„Z�	 d`	 	 	 	 	 dcdG„Z‚dddH„Zƒ G dI„ 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   — e Zd ZdZddddddddddœ		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Zdd„Zdd	„Zdd
„Zdd„Zy)Ú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        «       | _        || _        || _        || _        || _        || _        |	| _        |
| _	        |€t        d«      }|| _        || _        t        j                  «       | _        | j!                  «        y )Núdisplay.float_format)Úseriesr   ÚbufrV   rU   rS   rR   rT   rY   rZ   r   rW   rX   r5   Úget_adjustmentÚadjÚ_chk_truncate)Úselfr]   rR   rS   rT   rU   rV   rW   rX   rY   rZ   s              úV/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/pandas/io/formats/format.pyÚ__init__zSeriesFormatter.__init__Ã   s�   € ð ˆŒÜ“:ˆŒØˆŒ	ØˆŒØˆŒØˆŒØˆŒ
Ø ˆŒØ ˆŒàÐÜ%Ð&<Ó=ˆLØ(ˆÔØˆŒ
Ü×*Ñ*Ó,ˆŒà×ÑÕó    c                óŠ  — |  | j                   }| j                  }|xr t        | j                  «      |kD  }| j                  }|rjt	        t
        |«      }|rt        ||«      }|dk(  r|}|j                  d | }n-|dz  }t        |j                  d | |j                  | d  f«      }|| _	        nd | _	        || _
        || _        y )Né   é   )rZ   rY   Úlenr]   r   ÚintÚminÚilocr2   Ú
tr_row_numÚ	tr_seriesÚis_truncated_vertically)rb   rZ   rY   ro   r]   Úrow_nums         rc   ra   z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�Ø%ˆD�Oà"ˆDŒOØˆŒØ'>ˆÕ$re   c                óN  — | j                   j                  }d}| j                   j                  }t        |t        t
        t        f«      r|j                  �|d|j                  › �z  }| j                  dur(|�&|r|dz  }t        j                  |d¬«      }|d|› �z  }| j                  du s| j                  d	k(  r.| j                  r"|r|dz  }|d
t        | j                   «      › �z  }| j                  durQ| j                  �Et        | j                   j                  dd «      }|r"|r|dz  }|dt        j                  |«      › �z  }t        | j                   j                  t"        «      r0| j                   j$                  j'                  «       }|r|dz  }||z  }t)        |«      S )NÚ zFreq: Fz, ©ú	úú
)Úescape_charszName: TÚtruncatezLength: rV   zdtype: rv   )r]   rV   rT   Ú
isinstancer0   r.   r1   ÚfreqÚfreqstrr5   Úpprint_thingrR   ro   ri   rX   Úgetattrrn   r!   Ú_valuesÚ_get_repr_footerÚstr)rb   rV   ÚfooterrT   Úseries_nameÚ
dtype_nameÚ
level_infos          rc   Ú_get_footerzSeriesFormatter._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‹{Ðre   c                ó†   — t        | j                  j                  d | j                  | j                  | j
                  ¬«      S )N)rW   rU   Úleading_space)Úformat_arrayrn   r~   rW   rU   rT   ©rb   s    rc   Ú_get_formatted_valuesz%SeriesFormatter._get_formatted_values(  s6   € ÜØ�N‰N×"Ñ"ØØ×*Ñ*Ø—;‘;ØŸ*™*ô
ð 	
re   c                ó  — | j                   }| j                  «       }t        |«      dk(  r%t        | j                  «      j
                  › d|› d�S |j                  }t        |«      }t        |t        «      rJ|j                  dd ¬«      }t        j                  «       } |j                  dg|¢­Ž j                  d«      }n|j                  d¬«      }| j!                  «       }| j"                  r•d}| j$                  }	t'        t(        |	«      }	| j*                  j                  ||	d	z
     «      }
|
d
kD  rd}nd}| j*                  j-                  |g|
d¬«      d   }|j/                  |	|z   |«       |j/                  |	d	z   d«       | j                  r# | j*                  j                  d
g|d	d  |g¢­Ž }n| j*                  j                  d
|«      }| j0                  r|r|d   dz   |z   }|r|d|z   z  }t3        dj5                  |«      «      S )Nr   z([], ú)T)Úinclude_namesÚsparsifyrh   rv   ©Úinclude_namerg   é   ú...z..rG   ©Úmoderr   )rn   r…   ri   Útyper]   Ú__name__rT   Ú
_has_namesry   r-   Ú_format_multir5   r_   ÚadjoinÚsplitÚ_format_flatrŠ   ro   rm   r   rj   r`   rH   ÚinsertrS   r€   Újoin)rb   r]   r�   rT   Úhave_headerÚ	fmt_indexr`   Ú
fmt_valuesÚn_header_rowsrp   ÚwidthÚdot_strÚresults                rc   Ú	to_stringz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 ¨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]   rC   rR   ú
bool | strrS   ÚboolrT   r§   rU   r€   rV   r§   rW   ú
str | NonerX   r§   rY   ú
int | NonerZ   r©   ÚreturnÚNone©rª   r«   ©rª   r€   ©rª   ú	list[str])	r–   Ú
__module__Ú__qualname__Ú__doc__rd   ra   r…   rŠ   r¥   © re   rc   rP   rP   ½   s«   „ ñð "ØØØØØ#'ØØ#Ø#ñàðð ð	ð
 ðð ðð ðð ðð !ðð ðð ðð ðð 
óó@?ó6(óT
ô+$re   rP   c                 ó¼   — ddl m}  t        d«      r| j                  «       \  }}nd}t        d«      t        d«      t        d«      t        d«      t        d	«      |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   )Úconsolezdisplay.expand_frame_reprNúdisplay.max_rowsúdisplay.min_rowszdisplay.max_columnsúdisplay.max_colwidthúdisplay.show_dimensions)rY   rZ   Ú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Ó:Ü%Ð&?Ó@Ø ñð re   c                 óŠ   — t        «       \  } }t        d«      }|dk(  r|n|}|dk(  r|n
t        d«      }dd||t        d«      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¶   r   r·   Tr¹   )rV   rX   rZ   rY   rR   )r   r   )r¢   ÚheightÚmax_rows_optrY   rZ   s        rc   Úget_series_repr_paramsrÅ   €  s^   € ô" &Ó'�M€Eˆ6ÜÐ0Ó1€LØ%¨Ò*‰v°€HØ%¨Ò*‰v´
Ð;MÓ0N€Hð ØØØÜÐ6Ó7ñð re   c                  ó  — e Zd ZdZerendZeeez   z  Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d%	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d&d„Zd'd„Zed(d„«       Z	ed(d„«       Z
ed(d„«       Zed(d	„«       Zed)d
„«       Zed(d„«       Zed(d„«       Zed(d„«       Zed(d„«       Zed*d„«       Zd+d„Z	 	 	 	 d,d„Zd-d„Zd.d„Zd/d„Zd0d„Zd0d„Zd1d„Zd(d„Zd(d„Zd(d„Zd*d„Zd2d„Zd2d„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__.
    rr   Nc                ó^  — || _         | j                  |«      | _        | j                  |«      | _        || _        || _        || _        | j                  |«      | _	        | j                  |«      | _        |	| _        | j                  |
«      | _        || _        || _        || _        || _        || _        || _        || _        || _        | j/                  «       | _        | j3                  «       | _        | j                   | _        | j9                  «        t;        j<                  «       | _        y ©N) ÚframeÚ_initialize_columnsÚcolumnsÚ_initialize_colspaceÚ	col_spacerS   rT   rU   Ú_initialize_formattersÚ
formattersÚ_initialize_justifyrH   rW   Ú_initialize_sparsifyrŽ   Úshow_index_namesÚdecimalÚ	bold_rowsÚescaperY   rZ   rº   r¼   Ú_calc_max_cols_fittedÚmax_cols_fittedÚ_calc_max_rows_fittedÚmax_rows_fittedÚtr_framerx   r5   r_   r`   )rb   rÊ   rÌ   rÎ   rS   rT   rU   rÐ   rH   rW   rŽ   Úindex_namesrY   rZ   rº   r¼   rÔ   rÕ   rÖ   s                      rc   rd   zDataFrameFormatter.__init__©  s  € ð* ˆŒ
Ø×/Ñ/°Ó8ˆŒØ×2Ñ2°9Ó=ˆŒØˆŒØˆŒ
ØˆŒØ×5Ñ5°jÓAˆŒØ×/Ñ/°Ó8ˆŒØ(ˆÔØ×1Ñ1°(Ó;ˆŒØ +ˆÔØˆŒØ"ˆŒØˆŒØ ˆŒØ ˆŒØ ˆŒØ.ˆÔà#×9Ñ9Ó;ˆÔØ#×9Ñ9Ó;ˆÔàŸ
™
ˆŒØ�‰ŒÜ×*Ñ*Ó,ˆ�re   c                ó˜   — | j                  «       }| j                  r-| 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_strcolszDataFrameFormatter.get_strcolsØ  s@   € ð ×1Ñ1Ó3ˆà�:Š:Ø×1Ñ1°$·-±-Ó@ˆIØ�N‰N˜1˜iÔ(àˆre   c                ó\   — | j                   du xs | j                   dk(  xr | j                  S )NTrx   )r¼   Úis_truncatedr‰   s    rc   Úshould_show_dimensionsz)DataFrameFormatter.should_show_dimensionsä  s3   € à×#Ñ# tÐ+ò 
Ø× Ñ  JÑ.ÒD°4×3DÑ3Dð	
re   c                óH   — t        | j                  xs | j                  «      S rÉ   )r§   Úis_truncated_horizontallyro   r‰   s    rc   rä   zDataFrameFormatter.is_truncatedê  s   € ä�D×2Ñ2ÒR°d×6RÑ6RÓSÐSre   c                ót   — t        | j                  xr" t        | j                  «      | j                  kD  «      S rÉ   )r§   rØ   ri   rÌ   r‰   s    rc   rç   z,DataFrameFormatter.is_truncated_horizontallyî  s,   € ä�D×(Ñ(ÒW¬c°$·,±,Ó.?À$×BVÑBVÑ.VÓXÐXre   c                ót   — t        | j                  xr" t        | j                  «      | j                  kD  «      S rÉ   )r§   rÚ   ri   rÊ   r‰   s    rc   ro   z*DataFrameFormatter.is_truncated_verticallyò  s+   € ä�D×(Ñ(ÒU¬c°$·*±*«oÀ×@TÑ@TÑ.TÓVÐVre   c                ót   — dt        | j                  «      › dt        | j                  j                  «      › d�S )Nz

[z rows x z	 columns])ri   rÊ   rÌ   r‰   s    rc   Údimensions_infoz"DataFrameFormatter.dimensions_infoö  s0   € à”s˜4Ÿ:™:“Ð' x´°D·J±J×4FÑ4FÓ0GÐ/HÈ	ÐRÐRre   c                ó@   — t        | j                  j                  «      S rÉ   )r—   rÊ   rT   r‰   s    rc   Úhas_index_namesz"DataFrameFormatter.has_index_namesú  s   € ä˜$Ÿ*™*×*Ñ*Ó+Ð+re   c                ó@   — t        | j                  j                  «      S rÉ   )r—   rÊ   rÌ   r‰   s    rc   Úhas_column_namesz#DataFrameFormatter.has_column_namesþ  s   € ä˜$Ÿ*™*×,Ñ,Ó-Ð-re   c                óZ   — t        | j                  | j                  | j                  f«      S rÉ   )Úallrí   rT   rÓ   r‰   s    rc   Úshow_row_idx_namesz%DataFrameFormatter.show_row_idx_names  s$   € ä�D×(Ñ(¨$¯*©*°d×6KÑ6KÐLÓMÐMre   c                óZ   — t        | j                  | j                  | j                  f«      S rÉ   )rñ   rï   rÓ   rS   r‰   s    rc   Úshow_col_idx_namesz%DataFrameFormatter.show_col_idx_names  s$   € ä�D×)Ñ)¨4×+@Ñ+@À$Ç+Á+ÐNÓOÐOre   c                ó‚   — t        | j                  xs t        | j                  «      t        | j                  «      «      S rÉ   )rk   rY   ri   rÊ   r‰   s    rc   Úmax_rows_displayedz%DataFrameFormatter.max_rows_displayed
  s(   € ä�4—=‘=Ò3¤C¨¯
©
£O´S¸¿¹³_ÓEÐEre   c                ó    — |€t        d«      S |S )Nzdisplay.multi_sparse©r   )rb   rŽ   s     rc   rÒ   z'DataFrameFormatter._initialize_sparsify  s   € ØÐÜÐ4Ó5Ð5Øˆre   c                óô   — |€i S t        | j                  j                  «      t        |«      k(  st        |t        «      r|S t        dt        |«      › dt        | j                  j                  «      › d�«      ‚)NzFormatters length(ú+) should match DataFrame number of columns(rŒ   )ri   rÊ   rÌ   ry   ÚdictÚ
ValueError)rb   rÐ   s     rc   rÏ   z)DataFrameFormatter._initialize_formatters  su   € ð ÐØˆIÜ�—‘×#Ñ#Ó$¬¨J«Ò7¼:ÀjÔRVÔ;WØÐäØ$¤S¨£_Ð$5ð 6/Ü/2°4·:±:×3EÑ3EÓ/FÐ.GÀqðJóð re   c                ó    — |€t        d«      S |S )Nzdisplay.colheader_justifyrø   )rb   rH   s     rc   rÑ   z&DataFrameFormatter._initialize_justify   s   € Øˆ?ÜÐ9Ó:Ð:àˆNre   c                ót   — |�!t        |«      }| j                  |   | _        |S | j                  j                  S rÉ   )r/   rÊ   rÌ   )rb   rÌ   Úcolss      rc   rË   z&DataFrameFormatter._initialize_columns&  s7   € ØÐÜ Ó(ˆDØŸ™ DÑ)ˆDŒJØˆKà—:‘:×%Ñ%Ð%re   c                ó~  — |€i }|S t        |t        t        f«      r:d|i}|j                  | j                  j
                  D �ci c]  }||“Œ c}«       |S t        |t        «      rE|j                  «       D ].  }|| j                  j
                  vsŒ|dk7  sŒ"t        d|› �«      ‚ |}|S t        | j                  j
                  «      t        |«      k7  r8t        dt        |«      › dt        | j                  j
                  «      › d�«      ‚t        t        | j                  j
                  |«      «      }|S c c}w )Nrr   z,Col_space is defined for an unknown column: zCol_space length(rú   rŒ   )ry   rj   r€   ÚupdaterÊ   rÌ   r   Úkeysrü   ri   rû   Úzip)rb   rÎ   r¤   Úcolumns       rc   rÍ   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Øˆùò Os   Á
D:c                ó’   — | j                  «       s| j                  S t        «       \  }}| j                  |«      r|S | j                  S )z%Number of columns fitting the screen.)Ú_is_in_terminalrº   r   Ú_is_screen_narrow)rb   r¢   rÀ   s      rc   r×   z(DataFrameFormatter._calc_max_cols_fittedF  sA   € à×#Ñ#Ô%Ø—=‘=Ð ä$Ó&‰ˆˆqØ×!Ñ! %Ô(ØˆLà—=‘=Ð re   c                óü   — | j                  «       rPt        «       \  }}| j                  dk(  r|| j                  «       z
  S | j	                  |«      r|}n| j                  }n| j                  }| j                  |«      S )z,Number of rows with data fitting the screen.r   )r  r   rY   Ú_get_number_of_auxiliary_rowsÚ_is_screen_shortÚ_adjust_max_rows)rb   rÀ   rÃ   rY   s       rc   rÙ   z(DataFrameFormatter._calc_max_rows_fittedQ  sr   € ð ×ÑÔ!Ü)Ó+‰IˆAˆvØ�}‰} Ò!à × BÑ BÓ DÑDÐDà×$Ñ$ VÔ,Ø!‘àŸ=™=‘à—}‘}ˆHà×$Ñ$ XÓ.Ð.re   c                ó~   — |r:t        | j                  «      |kD  r"| j                  rt        | 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
        )ri   rÊ   rZ   rk   )rb   rY   s     rc   r  z#DataFrameFormatter._adjust_max_rowsd  s2   € ñ Ü�D—J‘J“ (Ò*°·²ä˜tŸ}™}¨hÓ7�Øˆre   c                óT   — t        | j                  dk(  xs | j                  dk(  «      S )z/Check if the output is to be shown in terminal.r   )r§   rº   rY   r‰   s    rc   r  z"DataFrameFormatter._is_in_terminalr  s$   € ä�D—M‘M QÑ&Ò<¨$¯-©-¸1Ñ*<Ó=Ð=re   c                óz   — t        | j                  dk(  xr" t        | j                  j                  «      |kD  «      S ©Nr   )r§   rº   ri   rÊ   rÌ   )rb   Ú	max_widths     rc   r  z$DataFrameFormatter._is_screen_narrowv  s/   € Ü�D—M‘M QÑ&ÒN¬3¨t¯z©z×/AÑ/AÓ+BÀYÑ+NÓOÐOre   c                óf   — t        | j                  dk(  xr t        | j                  «      |kD  «      S r  )r§   rY   ri   rÊ   )rb   Ú
max_heights     rc   r
  z#DataFrameFormatter._is_screen_shorty  s(   € Ü�D—M‘M QÑ&ÒG¬3¨t¯z©z«?¸ZÑ+GÓHÐHre   c                óž   — d}d}||z   }| j                   r&|t        | j                  j                  «       «      z  }| j                  r|dz  }|S )z?Get number of rows occupied by prompt, dots and dimension info.rg   )r¼   ri   rë   Ú
splitlinesrS   )rb   Údot_rowÚ
prompt_rowÚnum_rowss       rc   r	  z0DataFrameFormatter._get_number_of_auxiliary_rows|  sR   € àˆØˆ
Ø˜ZÑ'ˆà×ÒØœ˜D×0Ñ0×;Ñ;Ó=Ó>Ñ>ˆHà�;Š;Ø˜‰MˆHàˆre   c                óv   — | j                   r| j                  «        | j                  r| j                  «        yy)zY
        Check whether the frame should be truncated. If so, slice the frame up.
        N)rç   Ú_truncate_horizontallyro   Ú_truncate_verticallyr‰   s    rc   rx   zDataFrameFormatter.truncateŠ  s3   € ð ×)Ò)Ø×'Ñ'Ô)à×'Ò'Ø×%Ñ%Õ'ð (re   c                ó  — | j                   €J ‚| j                   dz  }|dk\  r¡| j                  j                  dd…d|…f   }| j                  j                  dd…| d…f   }t        ||fd¬«      | _        t	        | j
                  t        t        f«      rlg | j
                  d| ¢| j
                  | d ¢| _        || _        yt        t        | j                  «      }| j                  j                  dd…d|…f   | _        || _        y)z´Remove columns, which are not to be displayed and adjust formatters.

        Attributes affected:
            - tr_frame
            - formatters
            - tr_col_num
        Nrh   rg   ©Úaxis)rØ   rÛ   rl   r2   ry   rÐ   ÚlistÚtupler   rj   rº   Ú
tr_col_num)rb   Úcol_numrE   rF   s       rc   r  z)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Ø!ˆ�re   c                óÊ  — | j                   €J ‚| j                   dz  }|dk\  r|t        | j                  «      }t        j                  t        j
                  |«      t        j
                  ||z
  |«      g«      }| j                  j                  |   | _        || _
        yt        t        | j                  «      }| j                  j                  d|…dd…f   | _        || _
        y)z‚Remove rows, which are not to be displayed.

        Attributes affected:
            - tr_frame
            - tr_row_num
        Nrh   rg   )rÚ   ri   rÛ   ÚnpÚhstackÚarangerl   r   rj   rY   rm   )rb   rp   Ú_lenÚ_slices       rc   r  z'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Ø!ˆ�re   c                ó  ‡ — g }t        ‰ j                  «      s“‰ j                  s‡t        ‰ j                  «      D ]m  \  }}‰ j	                  |«      }t        |‰ j                  t        ‰ j                  j                  |d«      «      ‰ j                  ¬«      }|j                  |«       Œo |S t        ‰ j                  «      r¤t        t        t           ‰ j                  «      ‰ _        t        ‰ j                  «      t        ‰ j                   «      k7  r8t#        dt        ‰ j                   «      › dt        ‰ j                  «      › d�«      ‚‰ j                  D �cg c]  }|g‘Œ }}n‰ j%                  ‰ j                  «      }‰ j&                  r|D ]  }|j                  d«       Œ t        ‰ j                  «      D ]È  \  }}||   }t)        t        ‰ j                  j                  |d«      «      gˆ fd„|D «       ¢­Ž }	‰ j	                  |«      }t        |‰ j                  |	‰ j                  ¬«      }t)        g ˆ fd	„|D «       ¢|	‘­Ž }
‰ j                  j                  ||
‰ j                  ¬
«      }|j                  ||z   «       ŒÊ |S c c}w )Nr   )ÚstringsrH   Úminimumr`   zWriting z cols but got z aliasesrr   c              3  óT   •K  — | ]  }‰j                   j                  |«      –— Œ! y ­wrÉ   ©r`   ri   ©Ú.0Úxrb   s     €rc   ú	<genexpr>z@DataFrameFormatter._get_strcols_without_index.<locals>.<genexpr>â  s   øè ø€ Ò0RÀQ°·±·±¸a·Ñ0Rùó   ƒ%()r*  r`   c              3  óT   •K  — | ]  }‰j                   j                  |«      –— Œ! y ­wrÉ   r,  r-  s     €rc   r0  z@DataFrameFormatter._get_strcols_without_index.<locals>.<genexpr>é  s   øè ø€ Ò@°˜DŸH™HŸL™L¨ŸOÑ@ùr1  r“   )r   rS   Ú	enumeraterÛ   Ú
format_colÚ_make_fixed_widthrH   rj   rÎ   Úgetr`   Úappendr   r  r€   ri   rÌ   rü   Ú_get_formatted_column_labelsrò   Úmax)rb   rà   ÚiÚcr    ÚlabelÚstr_columnsr/  ÚcheaderÚheader_colwidthÚmax_lens   `          rc   rÞ   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   Å
Jc           
     ó2  — | j                   }| j                  |«      }t        |j                  d d …|f   j                  || j
                  | j                  | j                  j                  |j                  |   «      | j                  | j                  ¬«      S )N)rW   rU   ÚspacerÔ   r‡   )rÛ   Ú_get_formatterrˆ   rl   r~   rW   rU   rÎ   r6  rÌ   rÔ   rT   )rb   r:  rÊ   Ú	formatters       rc   r4  zDataFrameFormatter.format_colï  sz   € Ø—‘ˆØ×'Ñ'¨Ó*ˆ	ÜØ�J‰J’q˜!�tÑ×$Ñ$ØØ×*Ñ*Ø—;‘;Ø—.‘.×$Ñ$ U§]¡]°1Ñ%5Ó6Ø—L‘LØŸ*™*ô
ð 	
re   c                ó   — t        | j                  t        t        f«      r+t	        |«      rt        t        |«      }| j                  |   S y t	        |«      r|| j                  vr| j                  |   }| j                  j                  |d «      S rÉ   )	ry   rÐ   r  r  r   r   rj   rÌ   r6  )rb   r:  s     rc   rC  z!DataFrameFormatter._get_formatterü  sn   € Ü�d—o‘o¬¬e }Ô5Ü˜!Œ}Üœ˜a“L�Ø—‘ qÑ)Ð)àä˜!Œ} ¨$¯,©,Ñ!6Ø—L‘L ‘O�Ø—?‘?×&Ñ& q¨$Ó/Ð/re   c           	     ó6  ‡ ‡
‡‡— ddl m} |j                  }t        |t        «      rã|j                  dd¬«      }t        t        |Ž «      }‰ j                  j                  j                  }t        d„ |j                  D «       «      Št        t        |t        t        |«      «      «      Š
ˆ
ˆˆ fd„Št        t        ˆfd„|D «       Ž «      }‰ j                   rt#        |«      r ||«      }t        |Ž D �cg c]  }t        |«      ‘Œ }}|S |j%                  d¬«      }‰ j                  j                  }t        t        |t        t        |«      «      «      Š
t'        |«      D �	�cg c]#  \  }	}‰ j)                  |	«      s
‰
|   rd	|z   n|g‘Œ% }}	}|S c c}w c c}}	w )
Nr   )Úsparsify_labelsF)rŽ   r�   c              3  ó4   K  — | ]  }|j                   –— Œ y ­wrÉ   )Úis_floating)r.  Úlevels     rc   r0  zBDataFrameFormatter._get_formatted_column_labels.<locals>.<genexpr>  s   è ø€ Ò%T¸E e×&7Õ&7Ñ%Tùs   ‚c                ó<   •— |‰j                   vr‰|    r‰sd|z   S |S )Nú )rÐ   )r/  ÚyÚneed_leadspÚrestrict_formattingrb   s     €€€rc   Úspace_formatzEDataFrameFormatter._get_formatted_column_labels.<locals>.space_format  s'   ø€ à˜TŸ_™_Ñ,Ø# AšÙ/à ™7�NØ�re   c              3  óV   •K  — | ]  }|D �cg c]  } ‰||«      ‘Œ c}–— Œ y c c}w ­wrÉ   r³   )r.  r/  rM  rP  s      €rc   r0  zBDataFrameFormatter._get_formatted_column_labels.<locals>.<genexpr>   s&   øè ø€ ÒK¸!°1Ö5¨a‘| A qÕ)Ö5ÑKùÒ5ùs   ƒ	)Œ$œ)r�   rL  )Úpandas.core.indexes.multirG  rÌ   ry   r-   r˜   r  r  rÊ   Údtypesr~   ÚanyÚlevelsrû   Úmapr   rŽ   ri   r›   r3  rC  )rb   rÊ   rG  rÌ   Úfmt_columnsrS  Ústr_columns_tupler/  r=  r:  rN  rO  rP  s   `         @@@rc   r8  z/DataFrameFormatter._get_formatted_column_labels  sx  û€ Ý=à—-‘-ˆä�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   Ã4FÅ#(Fc                ó,  — | j                   j                  «       D ��ci c]  \  }}|t        t        |«      “Œ }}}|j                  }|j
                  }| j                  d«      }t        |t        «      r)|j                  | j                  | j                  |¬«      }n|j                  | j                  |¬«      g}|D �	cg c]=  }	t        t        t        |	«      d|j!                  dd«      | j"                  ¬«      «      ‘Œ? }}	 | j"                  j$                  dg|¢­Ž j'                  d	«      }
| j(                  r'| j+                  «       D �	cg c]  }	t-        |	«      ‘Œ }}	ndg|j.                  z  }| j0                  r||
z   S |
S c c}}w c c}	w c c}	w )
NÚ	__index__)rŽ   r�   rD  )r�   rD  rE   rr   r   )rH   r*  r`   rg   rv   )rÎ   Úitemsr   rj   rT   rÌ   rC  ry   r-   r˜   rŽ   rò   r›   r  r5  r  r6  r`   r™   rš   rô   Ú_get_column_name_listr€   ÚnlevelsrS   )rb   rÊ   ÚkÚvrÎ   rT   rÌ   ÚfmtrŸ   r/  ÚadjoinedÚ
col_headers               rc   rß   z'DataFrameFormatter._get_formatted_index1  s}  € ð 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ùóI Iùò 
ùò Hs   žFÃ AFÅFc                óð   — g }| j                   j                  }t        |t        «      r$|j	                  d„ |j
                  D «       «       |S |j                  |j                  €dn|j                  «       |S )Nc              3  ó(   K  — | ]
  }|€dn|–— Œ y ­w)Nrr   r³   )r.  rV   s     rc   r0  z;DataFrameFormatter._get_column_name_list.<locals>.<genexpr>^  s   è ø€ ÒP¸$˜t˜|™°Ó5ÑPùs   ‚rr   )rÊ   rÌ   ry   r-   ÚextendÚnamesr7  rV   )rb   rf  rÌ   s      rc   r\  z(DataFrameFormatter._get_column_name_listZ  s_   € Ø "ˆØ—*‘*×$Ñ$ˆÜ�gœzÔ*Ø�L‰LÑPÀ'Ç-Á-ÔPÔPð ˆð �L‰L˜wŸ|™|Ð3™¸¿¹ÔFØˆre   )NNTTrQ   NNNNTNNNFú.FT)&rÊ   rB   rÌ   úAxes | NonerÎ   úColspaceArgType | NonerS   zbool | SequenceNotStr[str]rT   r§   rU   r€   rÐ   úFormattersType | NonerH   r¨   rW   úFloatFormatType | NonerŽ   úbool | NonerÜ   r§   rY   r©   rZ   r©   rº   r©   r¼   r¦   rÔ   r€   rÕ   r§   rÖ   r§   rª   r«   )rª   úlist[list[str]]©rª   r§   r­   )rª   rj   )rŽ   rl  rª   r§   )rÐ   rj  rª   r=   )rH   r¨   rª   r€   )rÌ   rh  rª   r,   )rÎ   ri  rª   r9   )rª   r©   )rY   r©   rª   r©   r¬   )r:  rj   rª   r¯   )r:  ú	str | intrª   úCallable | None)rÊ   rB   rª   rm  )rÊ   rB   rª   r¯   )rª   zlist[Hashable])(r–   r°   r±   r²   rD   rN   rd   râ   Úpropertyrå   rä   rç   ro   rë   rí   rï   rò   rô   rö   rÒ   rÏ   rÑ   rË   rÍ   r×   rÙ   r  r  r  r
  r	  rx   r  r  rÞ   r4  rC  r8  rß   r\  r³   re   rc   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re   rÇ   c                  óØ   — e Zd ZdZdd„Z	 	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d	d„Z	 	 	 d
	 	 	 	 	 	 	 dd„Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Zy)ÚDataFrameRendereraJ  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                ó   — || _         y rÉ   )r`  )rb   r`  s     rc   rd   zDataFrameRenderer.__init__u  s	   € Øˆ�re   Nc                óˆ   — ddl m}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.htmlrv  rw  r`  r¥   Úsave_to_buffer)rb   r^   r}  rx  Únotebookry  rz  r{  rv  rw  ÚKlassÚhtml_formatterÚstrings                rc   Úto_htmlzDataFrameRenderer.to_htmlx  sP   € ÷D	
ñ
 &.Ñ!°=ˆáØ�H‰HØØØØ%ô
ˆð  ×)Ñ)Ó+ˆÜ˜f¨#¸ÔAÐAre   c                ór   — ddl m}  || 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  )rb   r^   r}  r½   r†  Ústring_formatterrƒ  s          rc   r¥   zDataFrameRenderer.to_string«  s5   € õ( 	=á*¨4¯8©8À
ÔKÐØ!×+Ñ+Ó-ˆÜ˜f¨#¸ÔAÐAre   c                óD  — ddl m} |€d}t        «       }nd} |di d|“d|
“d|“d	|“d
|“d|“d|“d|“d|“d|“d|“d|	“d|“d|“d|“d|“d| j                  “Ž}|j	                  «        |r4t        |t        «      sJ ‚|j                  «       }|j                  «        |S y)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_optionsrD  r³   )Úpandas.io.formats.csvsrŠ  r   r`  Úsavery   ÚgetvalueÚclose)rb   r‹  r}  r�  rÌ   r‘  r”   r�  r�  r“  rŒ  r’  r”  r•  r–  rŽ  r—  rŠ  Úcreated_bufferÚcsv_formatterÚcontents                        rc   Úto_csvzDataFrameRenderer.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¨   rx  zstr | list | tuple | Noner€  r§   ry  zint | bool | Nonerz  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²   rd   r„  r¥   rŸ  r³   re   rc   rs  rs  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re   rs  c                ó¢   — t        ||¬«      5 }|j                  | «       |€|j                  «       cddd«       S 	 ddd«       y# 1 sw Y   yxY w)zQ
    Perform serialization. Write to buf or return as string if buf is None.
    )r}  N)Ú_get_bufferÚwriterš  )rƒ  r^   r}  Úfds       rc   r  r    sN   € ô 
�S 8Ô	,ð °Ø
�‰�ÔØˆ;à—;‘;“=÷	ñ ð
 ÷÷ ñ ús   Ž#A»AÁAc              #  óL  K  — | �t        | «      } n
t        «       } |€d}nt        | t        «      st	        d«      ‚t        | d«      r| –— yt        | t        «      r1t        t        | «      «       t        | d|d¬«      5 }|–— ddd«       yt        d«      ‚# 1 sw Y   yxY w­w)	z€
    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¢  rr   )r}  Únewlinez1buf is not a file name and it has no write method)	r4   r   ry   r€   rü   Úhasattrr3   ÚopenÚ	TypeError)r^   r}  Úfs      rc   r§  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                ó¬  — t        j                  | j                  d«      rt        }t	        t
        | «      } nÝt        | j                  t        «      rt        }t	        t
        | «      } n¬t        j                  | j                  d«      rt        }t	        t        | «      } nut        | j                  t        «      rt        }nTt        j                  | j                  d«      rt        }n-t        j                  | j                  d«      rt        }nt        }|€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)
ÚdigitsrU   rW   rD  rB  rH   rÔ   r‡   r�  Úfallback_formatter)r   Úis_np_dtyperX   Ú_Datetime64Formatterr   r'   ry   r"   Ú_Datetime64TZFormatterÚ_Timedelta64Formatterr)   r#   Ú_ExtensionArrayFormatterÚFloatArrayFormatterÚ_IntArrayFormatterÚ_GenericArrayFormatterr   Ú
get_result)ÚvaluesrD  rW   rU   r·  rB  rH   rÔ   r‡   r�  r¸  Ú	fmt_klassÚfmt_objs                rc   rˆ   rˆ   7  s  € ôR ‡��v—|‘| SÔ)Ü(ˆ	Ü”m VÓ,‰Ü	�F—L‘L¤/Ô	2Ü*ˆ	Ü”m VÓ,‰Ü	�‰˜Ÿ™ sÔ	+Ü)ˆ	Ü”n fÓ-‰Ü	�F—L‘L¤.Ô	1Ü,‰	Ü	�‰˜Ÿ™ tÔ	,Ü'‰	Ü	�‰˜Ÿ™ tÔ	,Ü&‰	ä*ˆ	à€}ØˆàÐÜ!Ð"8Ó9ˆà€~ÜÐ/Ó0ˆáØØØØ!ØØØØØ#ØØ-ô€Gð ×ÑÓÐre   c                  ón   — e Zd Z	 	 	 	 	 	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Zdd„Zdd„Zy)rÀ  Nc                ó¬   — || _         || _        || _        || _        || _        || _        || _        || _        |	| _        |
| _	        || _
        || _        y rÉ   )rÂ  r·  rU   rB  rD  rW   rH   rÔ   r�  Úfixed_widthr‡   r¸  )rb   rÂ  r·  rD  rU   rB  rW   rH   rÔ   r�  rÇ  r‡   r¸  s                rc   rd   z_GenericArrayFormatter.__init__�  s\   € ð ˆŒØˆŒØˆŒØˆŒ
Ø"ˆŒØ(ˆÔØˆŒØˆŒØˆŒØ&ˆÔØ*ˆÔØ"4ˆÕre   c                óN   — | j                  «       }t        || j                  «      S rÉ   )Ú_format_stringsr5  rH   )rb   r    s     rc   rÁ  z!_GenericArrayFormatter.get_result©  s!   € Ø×)Ñ)Ó+ˆ
Ü  ¨T¯\©\Ó:Ð:re   c                óê  ‡ ‡‡— ‰ j                   €t        d«      }|€t        d«      Šˆfd„}n‰ j                   }‰ j                  �‰ j                  ŠnX‰ j                  �‰ j                  Šn?‰ j                  d uxr ‰ j                  t
        k7  }t        t        j                  d|¬«      Šˆˆ fd„}‰ j                  }t        |t        j                  «      st        d«      ‚t        j                  |t         «      }|t        j"                  t%        |«      t'        t)        dt+        |j,                  «      «      «      ¬	«      z  }‰ j.                  }|€|j1                  «       }g }t3        |«      D ]€  \  }	}
||	   r‰ j                  �|r|j5                  d
 ||
«      › �«       Œ4||	   r|j5                   ||
«      «       ŒQ|du rd}nd}|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˜=¨Ð)Ð*ó*€ re   rs   )rw   Úquote_stringsc                óò  •— ‰j                   �¤t        | «      r™t        | «      rŽ| €y| t        u rt	        t        «      S t        j                  | «      r t        j                  | «      rt	        | «      S | t        u s*t        | t        j                  t        j                  f«      ry‰j                   S t        | t        «      rt	        | «      S t        | t        «      rt        | «      S t	         ‰| «      «      S )Nr«   r   )rU   r    r$   r   r€   r   r   r#  Úisinfr   ry   Ú
datetime64Útimedelta64r+   r*   Úrepr)r/  rD  rb   s    €€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œ{Ô+Ü˜A“w�ô ™9 Q›<Ó(Ð(re   z=ExtensionArray formatting should use _ExtensionArrayFormatterrg   r  rL  Fz{v}z {v})r_  )rW   r   rD  r¸  r�  r	   r   r5   r|   rÂ  ry   r#  Úndarrayr®  r   Ú	map_inferr   rñ   r%   r  Úrangeri   Úshaper‡   rT  r3  r7  Úformat)rb   rW   rÐ  rÖ  ÚvalsÚinferredÚis_float_typer‡   r    r:  r_  ÚtplrD  rÎ  s   `           @@rc   rÉ  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   )é   NrQ   rµ  NrF   rg  NTTN)rÂ  r6   r·  rj   rD  rp  rU   r€   rB  ro  rW   rk  rH   r€   rÔ   r€   r�  r©   rÇ  r§   r‡   rl  r¸  rp  rª   r«   r®   )r–   r°   r±   rd   rÁ  rÉ  r³   re   rc   rÀ  rÀ  Œ  sµ   „ ð Ø%)ØØØ/3ØØØ"Ø Ø%)Ø.2ð5àð5ð ð5ð #ð	5ð
 ð5ð ð5ð -ð5ð ð5ð ð5ð ð5ð ð5ð #ð5ð ,ð5ð 
ó5ó8;ôJre   rÀ  c                  óH   ‡ — e Zd Zdˆ fd„Z	 	 d	 	 	 	 	 dd„Zdd„Zd	d„Zˆ xZS )
r¾  c                óÂ   •— t        ‰| �  |i |¤Ž | j                  �C| j                  €6d| _        t        | j                  «      r| j                  | _        d | _        y y y y ©NF)Úsuperrd   rW   rD  rÇ  Úcallable)rb   ÚargsÚkwargsÚ	__class__s      €rc   rd   zFloatArrayFormatter.__init__û  se   ø€ Ü‰Ñ˜$Ð) &Ò)ð ×ÑÐ(¨T¯^©^Ð-Cà$ˆDÔÜ˜×)Ñ)Ô*Ø!%×!2Ñ!2�”Ø$(�Õ!ð +ð .DÐ(re   c                óŽ   ‡ ‡‡‡‡— ‰€‰ j                   Š‰rˆˆ fd„Šnˆ fd„Š‰ j                  dk7  rˆˆ fd„Šn‰Š‰€‰S ˆˆ ˆfd„}|S )z;Returns a function to be applied on each value to format itc                óL   •— ‰€J ‚t        | «      r	 ‰| ¬«      S ‰j                  S )N)Úvalue)r%   rU   )r_  rW   rb   s    €€rc   Úbase_formatterz<FloatArrayFormatter._value_formatter.<locals>.base_formatter  s5   ø€ Ø#Ð/Ð/Ð/ô ˜Q”xñ ! qÔ)ðð Ÿ™ðre   c                óH   •— t        | «      rt        | «      S ‰j                  S rÉ   )r%   r€   rU   )r_  rb   s    €rc   rì  z<FloatArrayFormatter._value_formatter.<locals>.base_formatter&  s   ø€ Ü!& q¤”s˜1“vÐ:¨t¯{©{Ð:re   rg  c                óJ   •—  ‰| «      j                  d‰j                  d«      S )Nrg  rg   )ÚreplacerÔ   )r_  rì  rb   s    €€rc   Údecimal_formatterz?FloatArrayFormatter._value_formatter.<locals>.decimal_formatter+  s!   ø€ Ù% aÓ(×0Ñ0°°d·l±lÀAÓFÐFre   c                ón   •— t        | «      rt        | «      ‰kD  r ‰| «      S  ‰d«      S ‰j                  S )Ng        )r%   ÚabsrU   )rë  rð  rb   Ú	thresholds    €€€rc   rD  z7FloatArrayFormatter._value_formatter.<locals>.formatter4  s6   ø€ Ü�UŒ|Ü�u“: 	Ò)Ù,¨UÓ3Ð3á,¨SÓ1Ð1à—{‘{Ð"re   )rW   rÔ   )rb   rW   ró  rD  rì  rð  s   ``` @@rc   Ú_value_formatterz$FloatArrayFormatter._value_formatter  sZ   ü€ ð ÐØ×,Ñ,ˆLñ ö	ô;ð �<‰<˜3ÒöGð !/ÐàÐØ$Ð$ö	#ð Ðre   c                ó`  ‡ ‡
‡‡— dd„Š	 	 	 	 	 	 dd„Š
‰ j                   �( ‰‰ j                  ‰ j                   ‰ j                  «      S ‰ j                  rt	        d«      ŠndŠˆ
ˆˆ ˆfd„}‰ j
                  €N‰ j                  r5‰ j                  du rd}nd}t        |j                  ‰ j                  ¬	«      }n‰ j
                  }nˆ fd
„} ||«      }‰ j                  s|S t        |«      dkD  r%t        d„ |D «       «      }|‰ j                  dz   kD  }nd}t        j                  ‰ j                  «      }|dkD  j                  «       }|d‰ j                   z  k  |dkD  z  j                  «       }	|	s|r>|r<‰ j                  du rd}nd}t        |j                  ‰ j                  ¬	«      } ||«      }|S )zˆ
        Returns the float values converted into strings using
        the parameters given at initialisation, as a numpy array
        c           	     ó
  — t        | «      }t        j                  t        | j	                  «       |j	                  «       «      D ��cg c]  \  }}|s ||«      n|‘Œ c}}«      j                  | j                  «      }|S c c}}w rÉ   )r$   r#  Úarrayr  ÚravelÚreshaperÚ  )rÂ  rD  rU   ÚmaskÚvalr²  Ú	formatteds          rc   Úformat_with_na_repzCFloatArrayFormatter.get_result_as_array.<locals>.format_with_na_repE  ss   € Ü˜“<ˆDÜŸ™ô #& f§l¡l£n°d·j±j³lÓ"C÷á˜˜Qñ +,‘I˜c”N°Ñ7óó÷
 ‰g�f—l‘lÓ#ð ð Ðùós   ÁA?
c                óÀ  — t        j                  | «      j                  «       }t        j                  | «      j                  «       }t	        |«      t	        |«      }}g }t        | j                  «       ||||«      D ]³  \  }}	}
}}|s|s|j                   ||«      «       Œ%|s|j                   ||	«      › d|› d�«       ŒE|sV ||
«      j                  «       }|j                  d«      r|j                  |› |› d�«       Œ…|j                  |› d|› d�«       Œ�|j                  |› d|› d�«       Œµ t        j                  |«      j                  | j                  «      S )Nú+Újú-)r#  Úrealrø  Úimagr$   r  r7  ÚstripÚ
startswithr÷  rù  rÚ  )rÂ  rD  rU   Ú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_repO  sP  € ô Ÿ'™' &›/×/Ñ/Ó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·<±<Ó@Ð@re   Nzdisplay.chop_thresholdc                ó€  •— ‰j                  | ‰	«      }‰j                  dk(  rd‰j                  z   n‰j                  }‰j                  }t	        |«      }|r ‰|||«      }n
 ‰|||«      }‰j
                  rF|rt        |‰j                  «      }nt        |‰j                  «      }t        j                  |d¬«      S |S )NrE   rL  Úobject©rX   )rô  rH   rU   rÂ  r   rÇ  Ú_trim_zeros_complexrÔ   Ú_trim_zeros_floatr#  Úasarray)
rW   rD  rU   rÂ  Ú
is_complexr¤   r  rý  rb   ró  s
         €€€€rc   Úformat_values_withzCFloatArrayFormatter.get_result_as_array.<locals>.format_values_withu  s®   ø€ Ø×-Ñ-¨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àˆMre   Tz{value: .{digits:d}f}z{value:.{digits:d}f})r·  c                ó"   •— ‰j                   | z  S rÉ   )rW   )rë  rb   s    €rc   rÏ  z9FloatArrayFormatter.get_result_as_array.<locals>.<lambda>�  s   ø€ ¨×):Ñ):¸UÑ)B€ re   r   c              3  ó2   K  — | ]  }t        |«      –— Œ y ­wrÉ   ©ri   ©r.  r/  s     rc   r0  z:FloatArrayFormatter.get_result_as_array.<locals>.<genexpr>©  s   è ø€ Ò: Aœ˜QŸÑ:ùó   ‚é   Fg    €„.Aé
   z{value: .{digits:d}e}z{value:.{digits:d}e})rÂ  r6   rD  r   rU   r€   )rD  rÂ  rU   rÇ  r   rW   r‡   r   rÛ  r·  ri   r9  r#  rò  rT  )rb   r  Úfmt_strrW   Úformatted_valuesÚmaxlenÚtoo_longÚabs_valsÚhas_large_valuesÚhas_small_valuesr  rý  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°,Ó?ÐàÐre   c                ó4   — t        | j                  «       «      S rÉ   )r  r'  r‰   s    rc   rÉ  z#FloatArrayFormatter._format_strings¿  s   € Ü�D×,Ñ,Ó.Ó/Ð/re   r¬   ©NN)rW   rk  ró  zfloat | Nonerª   r   )rª   z
np.ndarrayr®   )r–   r°   r±   rd   rô  r'  rÉ  Ú__classcell__©rè  s   @rc   r¾  r¾  ú  s>   ø„ õ
)ð 04Ø"&ð6à,ð6ð  ð6ð 
ó	6óp~ ÷@0re   r¾  c                  ó   — e Zd Zdd„Zy)r¿  c                ó˜   — | j                   du rd„ }nd„ }| j                  xs |}| j                  D �cg c]
  } ||«      ‘Œ }}|S c c}w )NFc                ó*   — | d›j                  | ¬«      S )NrÌ  ©r/  ©rÛ  r/  s    rc   rÏ  z4_IntArrayFormatter._format_strings.<locals>.<lambda>Æ  s   € ¨¨1¨§o¡o¸ oÓ&:€ re   c                ó*   — | d›j                  | ¬«      S )Nz dr/  r0  r/  s    rc   rÏ  z4_IntArrayFormatter._format_strings.<locals>.<lambda>È  s   € ¨¨2¨×&6Ñ&6¸Ð&6Ó&;€ re   )r‡   rD  rÂ  )rb   Úformatter_strrD  r/  r    s        rc   rÉ  z"_IntArrayFormatter._format_stringsÄ  sN   € Ø×Ñ Ñ&Ù:‰Má;ˆMØ—N‘NÒ3 mˆ	Ø,0¯K©KÖ8 q‘i •lÐ8ˆ
Ð8ØÐùò 9s   ´ANr®   )r–   r°   r±   rÉ  r³   re   rc   r¿  r¿  Ã  s   „ ôre   r¿  c                  óH   ‡ — e Zd ZU ded<   	 	 d	 	 	 	 	 	 	 dˆ fd„Zdd„Zˆ xZS )rº  r'   rÂ  c                óB   •— t        ‰| �  |fi |¤Ž || _        || _        y rÉ   )rä  rd   Únat_repr”  )rb   rÂ  r5  r”  rç  rè  s        €rc   rd   z_Datetime64Formatter.__init__Ñ  s&   ø€ ô 	‰Ñ˜Ñ* 6Ò*ØˆŒØ&ˆÕre   c                óè   — | j                   }| j                  �|D �cg c]  }| j                  |«      ‘Œ c}S |j                  | j                  | j                  ¬«      }|j                  «       S c c}w )z&we by definition have DO NOT have a TZ)rU   r”  )rÂ  rD  Ú_format_native_typesr5  r”  Útolist)rb   rÂ  r/  r    s       rc   rÉ  z$_Datetime64Formatter._format_stringsÜ  si   € à—‘ˆà�>‰>Ð%Ø/5Ö6¨!�D—N‘N 1Õ%Ò6Ð6à×0Ñ0Ø—<‘<¨T×-=Ñ-=ð 1ó 
ˆ
ð × Ñ Ó"Ð"ùò 7s   �A/©r   N)rÂ  r'   r5  r€   r”  r«   rª   r«   r®   ©r–   r°   r±   Ú__annotations__rd   rÉ  r*  r+  s   @rc   rº  rº  Î  sA   ø… ØÓð
 Ø ð		'àð	'ð ð	'ð ð		'ð 
õ	'÷
#re   rº  c                  ó    — e Zd ZU ded<   dd„Zy)r½  r(   rÂ  c                ó¦  — | j                   }| j                  }d }|€|j                  d¬«      }t        |t        «      r|j                  «       }nt        j                  |t        ¬«      }t        ||| j                  | j                  | j                  | j                  | j                  | j                  | j                   | j"                  |¬«      }|S )NT)Úboxedr  )	rW   rU   r·  rB  rH   rÔ   r‡   r�  r¸  )rÂ  rD  Ú
_formatterry   r&   Ú_internal_get_valuesr#  r  r  rˆ   rW   rU   r·  rB  rH   rÔ   r‡   r�  )rb   rÂ  rD  r¸  r÷  r    s         rc   rÉ  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ô
ˆ
ð Ðre   Nr®   ©r–   r°   r±   r;  rÉ  r³   re   rc   r½  r½  é  s   … ØÓôre   r½  c                óF  — t        j                  | «      } t        | «      r0t        j                  | dk\  «      rt        j                  | dk  «      st	        d«      ‚d| z  } t        | «      }| j                  |«      j                  t        «      }t        j                  || «      }t        j                  |«      r(|j                  t        «      }|D �cg c]  }|dz   ‘Œ	 c}S t        j                  | «      }t        |«      }t        j                  | t        ¬«      }| |   j                  «       j                  t        «      j                  t        «      ||<   | |    j                  |«      j                  t        «      || <   |D �cg c]  }|dz   ‘Œ	 c}S c c}w c c}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%']
    r   rg   z/percentiles should all be in the interval [0,1]éd   ú%r  )r#  r  r   rñ   rü   Úget_precisionÚroundÚastyperj   Úiscloser€   ÚuniqueÚ
empty_liker  )ÚpercentilesÚprecÚpercentiles_round_typeÚint_idxÚoutr:  Úunique_pctss          rc   Úformat_percentilesrQ  
  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Æ
Fc                óD  — | d   dkD  r| d   nd }| d   dk  rd| d   z
  nd }t        j                  | ||¬«      }t        |«      }t        j                  t        j                  t        j
                  |«      «      «      j                  t        «       }t        d|«      }|S )Nr   éÿÿÿÿrC  )Úto_beginÚto_endrg   )	r#  Úediff1drò  ÚfloorÚlog10rk   rG  rj   r9  )r÷  rT  rU  ÚdiffrL  s        rc   rE  rE  I  sˆ   € Ø  ™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Ø€Kre   c                ó,   — | t         u r|S t        | «      S rÉ   )r   r€   ©r/  r5  s     rc   Ú_format_datetime64r\  S  s   € ØŒC�xØˆô ˆq‹6€Mre   c                ód   — t        | t        «      r|S |r| j                  |«      S | j                  S rÉ   )ry   r   ÚstrftimeÚ
_date_repr)r/  r5  r”  s      rc   Ú_format_datetime64_dateonlyr`  \  s1   € ô
 �!”WÔØˆáØ�z‰z˜+Ó&Ð&ð �|‰|Ðre   c                ó    ‡‡— | rˆˆfd„S ˆfd„S )z]Return a formatter callable taking a datetime64 as input and providing
    a string as outputc                ó    •— t        | ‰‰¬«      S )N)r5  r”  )r`  )r/  r”  r5  s    €€rc   rÏ  z'get_format_datetime64.<locals>.<lambda>r  s   ø€ Ô4Ø�w¨Kô
€ re   c                ó   •— t        | ‰¬«      S )N)r5  )r\  r[  s    €rc   rÏ  z'get_format_datetime64.<locals>.<lambda>v  s   ø€ Ô+¨A°wÔ?€ re   r³   )Úis_dates_onlyr5  r”  s    ``rc   Úget_format_datetime64re  k  s   ù€ ñ ô
ð 	
ó @Ð?re   c                  ó    — e Zd ZU ded<   dd„Zy)r»  r'   rÂ  c                óî   — | j                   j                  }| j                   j                  t        «      }| j                  xs t        || j                  ¬«      }|D �cg c]
  } ||«      ‘Œ }}|S c c}w )zwe by definition have a TZ)r”  )rÂ  Ú_is_dates_onlyrG  r  rD  re  r”  )rb   ÚidorÂ  rD  r/  r    s         rc   rÉ  z&_Datetime64TZFormatter._format_strings|  sj   € à�k‰k×(Ñ(ˆØ—‘×#Ñ#¤FÓ+ˆØ—N‘Nò 
Ô&;Ø˜T×-Ñ-ô'
ˆ	ð -3Ö3 q‘i •lÐ3ˆ
Ð3àÐùò 4s   ÁA2Nr®   rA  r³   re   rc   r»  r»  y  s   … ØÓô	re   r»  c                  óB   ‡ — e Zd ZU ded<   	 d	 	 	 	 	 dˆ fd„Zdd„Zˆ xZS )r¼  r)   rÂ  c                ó4   •— t        ‰| �  |fi |¤Ž || _        y rÉ   )rä  rd   r5  )rb   rÂ  r5  rç  rè  s       €rc   rd   z_Timedelta64Formatter.__init__‹  s   ø€ ô 	‰Ñ˜Ñ* 6Ò*Øˆ�re   c                ó¬   — | j                   xs" t        | j                  | j                  d¬«      }| j                  D �cg c]
  } ||«      ‘Œ c}S c c}w )NF)r5  Úbox)rD  Úget_format_timedelta64rÂ  r5  )rb   rD  r/  s      rc   rÉ  z%_Timedelta64Formatter._format_strings•  sE   € Ø—N‘Nò 
Ô&<Ø�K‰K §¡°5ô'
ˆ	ð '+§k¡kÖ2 ‘	˜!•Ò2Ð2ùÒ2s   ¿A©r   )rÂ  r)   r5  r€   rª   r«   r®   r:  r+  s   @rc   r¼  r¼  ˆ  s4   ø… ØÓð
 ðàðð ðð
 
õ÷3re   r¼  c                ó@   ‡‡‡— | j                   }|rdŠndŠˆˆˆfd„}|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‰S t        | t        «      st        | «      } | j	                  ‰¬«      }‰rd|› d�}|S )Nr0  ú')r    r$   ry   r   Ú
_repr_base)r/  r¤   rm  rÛ  r5  s     €€€rc   r?  z*get_format_timedelta64.<locals>._formatter®  sS   ø€ Øˆ9œ 1œ¬$¨q¬'ØˆNä˜!œYÔ'Ü˜!“ˆAð —‘ V�Ó,ˆÙØ˜˜ �]ˆFØˆre   )rh  )rÂ  r5  rm  Ú	even_daysr?  rÛ  s    ``  @rc   rn  rn  œ  s*   ú€ ð ×%Ñ%€IáØ‰àˆöð Ðre   c                ó@  ‡‡‡	— t        | «      dk(  s|dk(  r| S |€t        j                  «       Šn|Št        ˆfd„| D «       «      Š	|�t        |‰	«      Š	t	        d«      Š‰�‰	‰kD  r‰Š	dˆˆˆ	fd„}| D �cg c]
  } ||«      ‘Œ } }‰j                  | ‰	|¬«      }|S c c}w )Nr   rñ   c              3  ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wrÉ   r  )r.  r/  Ú
adjustments     €rc   r0  z$_make_fixed_width.<locals>.<genexpr>Ì  s   øè ø€ Ò5¨�*—.‘. ×#Ñ5ùs   ƒr¸   c                óV   •— ‰�%‰dkD  ‰j                  | «      ‰kD  z  r| d ‰dz
   dz   } | S )Nr‘   r’   r  )r/  rx  Úconf_maxr@  s    €€€rc   Újustz_make_fixed_width.<locals>.justÕ  s=   ø€ ØÐØ˜1‘ §¡°Ó!2°WÑ!<Ò=Ø�m˜ !™Ð$ uÑ,�Øˆre   r“   )r/  r€   rª   r€   )ri   r5   r_   r9  r   rH   )
r)  rH   r*  r`   r{  r/  r¤   rx  rz  r@  s
          @@@rc   r5  r5  ¾  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   Á4Bc           	     óÐ  — g g }}| D ]^  }t        j                  d|«      }|j                  dj                  |dd «      «       |j                  dj                  |dd «      «       Œ` t	        | «      }t        ||z   |«      }t	        |«      dk(  rg S t        d„ |D «       «      dz
  }t        |d| ||d «      D �	�
cg c]  \  }	}
|	|
d   z   |
dd d	|› d�›z   d
z   ‘Œ }}	}
|S c c}
}	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+-])rr   Néüÿÿÿéþÿÿÿr   c              3  ó2   K  — | ]  }t        |«      –— Œ y ­wrÉ   r  )r.  Úparts     rc   r0  z&_trim_zeros_complex.<locals>.<genexpr>ö  s   è ø€ Ò; dœ˜DŸ	Ñ;ùr  rg   ú>r   )Úrerš   r7  r�   ri   r  r9  r  )Ústr_complexesrÔ   Ú	real_partÚ	imag_partr/  ÚtrimmedÚnÚpadded_partsÚpadded_lengthÚreal_ptÚimag_ptÚpaddeds               rc   r  r  à  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   — | j                  d«      } | j                  d«      r| dz  } | S )zX
    Trims trailing zeros after a decimal point,
    leaving just one if necessary.
    Ú0rg  )ÚrstripÚendswith)Ú	str_floats    rc   rÍ  rÍ    s2   € ð
 × Ñ  Ó%€IØ×Ñ˜#ÔØ�SÑˆ	àÐre   c                ó   ‡‡— | }t        j                  d|› d�«      Šdˆfd„Šd	ˆfd„} ||«      r%|D �cg c]  } ‰|«      r|dd n|‘Œ }} ||«      rŒ%|D �cg c]"  } ‰|«      r|j                  |«      r|dz   n|‘Œ$ }}|S c c}w c c}w )
z‰
    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   •— t        j                  ‰| «      d uS rÉ   )r‚  Úmatch)r/  Únumber_regexs    €rc   Úis_number_with_decimalz1_trim_zeros_float.<locals>.is_number_with_decimal  s   ø€ Ü�x‰x˜ aÓ(°Ð4Ð4re   c                ó‚   •— | D �cg c]  } ‰|«      sŒ|‘Œ }}t        |«      dkD  xr t        d„ |D «       «      S c c}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.
        r   c              3  ó>   K  — | ]  }|j                  d «      –— Œ y­w)rŽ  N)r�  r  s     rc   r0  z9_trim_zeros_float.<locals>.should_trim.<locals>.<genexpr>$  s   è ø€ Ò'I¸A¨¯
©
°3¯Ñ'Iùs   ‚)ri   rñ   )rÂ  r/  Únumbersr–  s      €rc   Úshould_trimz&_trim_zeros_float.<locals>.should_trim  sE   ø€ ð %ÖB˜Ñ(>¸qÕ(A’1ÐBˆÐBÜ�7‹|˜aÑÒI¤CÑ'IÀÔ'IÓ$IÐIùò Cs   †<”<NrS  rŽ  rn  )rÂ  úArrayLike | list[str]rª   r§   )r‚  Úcompiler�  )Ú
str_floatsrÔ   r†  rš  r/  r¤   r–  r•  s         @@rc   r  r    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        «      rt        j                  | j                  Ž S | j
                  d uS rÉ   )ry   r-   ÚcomÚany_not_nonerf  rV   )rT   s    rc   r—   r—   1  s0   € Ü�%œÔ$Ü×Ñ §¡Ð-Ð-à�z‰z Ð%Ð%re   c                  ó˜   — e Zd ZdZi dd“dd“dd“dd	“d
d“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“d d!“d"d#“Z	 d'	 	 	 	 	 d(d%„Zd)d&„Zy$)*ÚEngFormatterzl
    Formats float values according to engineering format.

    Based on matplotlib.ticker.EngFormatter
    ièÿÿÿrM  iëÿÿÿÚziîÿÿÿÚaiñÿÿÿr¯  iôÿÿÿÚpi÷ÿÿÿr‡  iúÿÿÿÚuéýÿÿÿr²  r   rr   r‘   r^  r  r±  é	   ÚGrµ  ÚTé   ÚPé   ÚEé   ÚZé   ÚYNc                ó    — || _         || _        y rÉ   ©ÚaccuracyÚuse_eng_prefix)rb   rµ  r¶  s      rc   rd   zEngFormatter.__init__T  s   € ð !ˆŒØ,ˆÕre   c                óî  — t        t        |«      «      }t        j                  |«      ryt        j                  |«      ryd}|dk  rd}| }|dk7  r<t        t	        t        j                  |j                  «       dz  «      dz  «      «      }nt        d«      }|j                  t        | j                  j                  «       «      «      }|j                  t        | j                  j                  «       «      «      }t	        |«      }| j                  r| j                  |   }n|dk  rd| d›�}nd	|d›�}||z  d
|z  z  }| j                  €d}nd| j                  d›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   Úinfrg   r   rS  r‘   zE-Ú02dzE+r  z{mant: g}{prefix}z{mant: .rÌ  z
f}{prefix})ÚmantÚprefix)r
   r€   Úis_nanÚis_infiniterj   ÚmathrW  rX  rk   r9  ÚENG_PREFIXESr  r¶  rµ  rÛ  )
rb   ÚnumÚdnumÚsignÚpow10Ú	int_pow10r»  rº  Ú
format_strrü  s
             rc   Ú__call__zEngFormatter.__call__Z  s_  € ô( ”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¸Ð%Ó?ˆ	àÐre   rã  )rµ  r©   r¶  r§   rª   r«   )rÀ  Úfloatrª   r€   )r–   r°   r±   r²   r¿  rd   rÆ  r³   re   rc   r¢  r¢  8  sÿ   „ ñðØˆSðàˆSðð 	ˆSðð 	ˆSð	ð
 	ˆSðð 	ˆCðð 	ˆCðð 	ˆCðð 	
ˆ2ðð 	
ˆ3ðð 	
ˆ3ðð 	
ˆ3ðð 	ˆCðð 	ˆCðð 	ˆCðð  	ˆCð!ð" 	ˆCð#€Lð* CHð-Ø"ð-Ø;?ð-à	ó-ô;re   r¢  c                ó0   — t        dt        | |«      «       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)r   r¢  r´  s     rc   Úset_eng_float_formatrÉ  ˜  s   € ôn Ð%¤|°H¸nÓ'MÕNre   c                ó  — t        | «      dk(  rg S dgt        | 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).
    r   TF)ri   r3  r7  )	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Õðð  €Mre   c                ó¢   — t        d„ |D «       «      r|D �cg c]  }t        |«      ‘Œ }}| j                  dj                  |«      «       yc c}w )z‘
    Appends lines to a buffer.

    Parameters
    ----------
    buf
        The buffer to write to
    lines
        The lines to append.
    c              3  ó<   K  — | ]  }t        |t        «      –— Œ y ­wrÉ   )ry   r€   r  s     rc   r0  z#buffer_put_lines.<locals>.<genexpr>  s   è ø€ Ò
- !Œ:�aœ×Ñ
-ùs   ‚rv   N)rT  r€   r¨  r�   )r^   Úlinesr/  s      rc   Úbuffer_put_linesrÔ  ý  sC   € ô Ñ
- uÔ
-Ô-Ø!&Ö'˜A”�Q•Ð'ˆÐ'Ø‡I�Iˆd�i‰i˜ÓÕùò (s   —A)rª   zdict[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])	NrQ   NNrF   rg  TNN)rÂ  r6   rD  rp  rW   rk  rU   r€   r·  r©   rB  zstr | int | NonerH   r€   rÔ   r€   r‡   rl  r�  r©   r¸  rp  rª   r¯   )rK  únp.ndarray | Sequence[float]rª   r¯   )r÷  rÕ  rª   rj   ro  )r/  úNaTType | Timestampr5  r€   rª   r€   r9  )r/  rÖ  r5  r€   r”  r¨   rª   r€   )rd  r§   r5  r€   r”  r¨   rª   r   )r   F)rÂ  r)   r5  zstr | floatrm  r§   rª   r   )rF   NN)
r)  r¯   rH   r€   r*  r©   r`   zprinting._TextAdjustment | Nonerª   r¯   )rg  )rƒ  r6   rÔ   r€   rª   r¯   )r‘  r€   rª   r€   )r�  r›  rÔ   r€   rª   r¯   )rT   r,   rª   r§   )r‘   F)rµ  rj   r¶  r§   rª   r«   )rr   )rU  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   Únumpyr#  Ú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Ç   rs  r  r§  rˆ   rÀ  r¾  r¿  rº  r½  rQ  rE  r\  r`  re  r»  r¼  rn  r5  r  rÍ  r  r—   r¢  rÉ  rÐ  rÔ  r³   re   rc   ú<module>rö     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 re   