Ë
    ª2ÚiF ã                  ó²  — U d Z ddlmZ ddlmZ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 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, ddl-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3 ddl4m5Z5m6Z6m7Z7 ddl8m9Z9m:Z: ddl;m<Z<m=Z=m>Z>m?Z? ddl@mAZA dd	lBmCc mDZE ddlFmGZGmHZHmIZImJZJ ddlKmLZL ddlMmNZN ddlOmPZPmQZQ ddlRmSZS er$ddlTmUZUmVZVmWZWmXZXmYZYmZZZm[Z[m\Z\m]Z]m^Z^m_Z_m`Z` ddlambZbmcZc dZddeed <   d!Zfd"Zgdeed#<    G d$„ d%«      ZhdNd&„ZidNd'„Zj G d(„ d)«      Zk G d*„ d+«      Zl	 	 dO	 	 	 	 	 	 	 dPd,„Zme
	 dQ	 	 	 	 	 dRd-„«       Zn	 	 	 	 	 	 	 	 	 dS	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dTd.„Zo G d/„ d0«      Zp G d1„ d2ep«      Zq G d3„ d4ep«      Zr G d5„ d6ep«      Zs G d7„ d8ep«      Zt	 	 	 	 dUd9„ZudVd:„ZvdWdXd;„Zw	 	 dY	 	 	 	 	 	 	 dZd<„Zx	 dY	 	 	 	 	 	 	 d[d=„Zy G d>„ d?es«      Zz G d@„ dAep«      Z{	 	 d\	 	 	 	 	 	 	 d]dB„Z|	 	 	 d^	 	 	 	 	 	 	 	 	 d_dC„Z}d`dadD„Z~dbdE„Z	 d`	 	 	 	 	 dcdF„Z€dddG„Z� G dH„ dI«      Z‚ e,dJ«      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)ÚCallableÚ	GeneratorÚHashableÚMappingÚSequence)Úcontextmanager)Ú
QUOTE_NONE)ÚDecimal)Úpartial)ÚStringION)Úget_terminal_size)ÚTYPE_CHECKINGÚAnyÚFinalÚcast)Ú
get_optionÚ
set_option)Úlib)ÚNA)ÚNaTÚ	TimedeltaÚ	Timestamp)ÚNaTType)Ú
set_module)Úis_complex_dtypeÚis_floatÚ
is_integerÚis_list_likeÚis_numeric_dtypeÚ	is_scalar)ÚCategoricalDtypeÚDatetimeTZDtypeÚExtensionDtype)ÚisnaÚnotna)ÚCategoricalÚDatetimeArrayÚExtensionArrayÚTimedeltaArray)ÚPandasObject)ÚIndexÚ
MultiIndexÚPeriodIndexÚensure_index)ÚDatetimeIndex)ÚTimedeltaIndex)Ú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   ÚbufrU   rT   rR   rQ   rS   rX   rY   r   rV   rW   r4   Úget_adjustmentÚadjÚ_chk_truncate)Úselfr\   rQ   rR   rS   rT   rU   rV   rW   rX   rY   s              úO/var/www/html/acx/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                  }|r�t	        t
        |«      }|rt        ||«      }|dk(  r|}|j                  d | }n`|dz  }t        |«      }t        j                  t        j                  |«      t        j                  ||z
  |«      g«      }|j                  |   }|| _        nd | _        || _        || _        y )Né   é   )rY   rX   Úlenr\   r   ÚintÚminÚilocÚnpÚhstackÚarangeÚ
tr_row_numÚ	tr_seriesÚis_truncated_vertically)ra   rY   rX   rq   r\   Úrow_numÚ_lenÚ_slices           rb   r`   zSeriesFormatter._chk_truncateã   sä   € Ùà—=‘=ˆØ—=‘=ˆð #+Ò"L´°D·K±KÓ0@À8Ñ0KÐØ—‘ˆÙ"ÜœC Ó*ˆHÙô ˜x¨Ó2�Ø˜1Š}Ø"�ØŸ™ Y hÐ/‘à" a™-�Ü˜6“{�ÜŸ™Ü—Y‘Y˜wÓ'¬¯©°4¸'±>À4Ó)HÐIó�ð  Ÿ™ VÑ,�Ø%ˆD�Oà"ˆDŒOØˆŒØ'>ˆÕ$rd   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: rU   zdtype: rz   )r\   rU   rS   Ú
isinstancer0   r.   r1   ÚfreqÚfreqstrr4   Úpprint_thingrQ   rq   rh   rW   Úgetattrrp   r"   Ú_valuesÚ_get_repr_footerÚstr)ra   rU   ÚfooterrS   Úseries_nameÚ
dtype_nameÚ
level_infos          rb   Ú_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‹{Ðrd   c                ó†   — t        | j                  j                  d | j                  | j                  | j
                  ¬«      S )N)rV   rT   Úleading_space)Úformat_arrayrp   r‚   rV   rT   rS   ©ra   s    rb   Ú_get_formatted_valuesz%SeriesFormatter._get_formatted_values,  s6   € ÜØ�N‰N×"Ñ"ØØ×*Ñ*Ø—;‘;ØŸ*™*ô
ð 	
rd   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Úsparsifyrg   rz   ©Úinclude_namerf   é   ú...z..rF   ©Úmoderv   )rp   r‰   rh   Útyper\   Ú__name__rS   Ú
_has_namesr}   r-   Ú_format_multir4   r^   ÚadjoinÚsplitÚ_format_flatrŽ   rq   ro   r   ri   r_   rG   ÚinsertrR   r„   Újoin)ra   r\   r…   rS   Úhave_headerÚ	fmt_indexr_   Ú
fmt_valuesÚn_header_rowsrr   ÚwidthÚdot_strÚresults                rb   Ú	to_stringzSeriesFormatter.to_string5  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“?Ó#Ð#rd   )r\   rB   rQ   ú
bool | strrR   ÚboolrS   r«   rT   r„   rU   r«   rV   ú
str | NonerW   r«   rX   ú
int | NonerY   r­   ÚreturnÚNone©r®   r¯   ©r®   r„   ©r®   ú	list[str])	rš   Ú
__module__Ú__qualname__Ú__doc__rc   r`   r‰   rŽ   r©   © rd   rb   rO   rO   ½   s«   „ ñð "ØØØØØ#'ØØ#Ø#ñàðð ð	ð
 ðð ðð ðð ðð !ðð ðð ðð ðð 
óó@?ó>(óT
ô+$rd   rO   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.

    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)rX   rY   Úmax_colsÚmax_colwidthÚshow_dimensionsÚ
line_width)Úpandas.io.formatsr¹   r   Úget_console_size)r¹   rÁ   Ú_s      rb   Úget_dataframe_repr_paramsrÅ   c  sa   € õ *äÐ-Ô.Ø×0Ñ0Ó2‰ˆ
‘Aàˆ
äÐ1Ó2ÜÐ1Ó2ÜÐ4Ó5Ü"Ð#9Ó:Ü%Ð&?Ó@Ø ñð rd   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.

    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½   )rU   rW   rY   rX   rQ   )r   r   )r¦   ÚheightÚmax_rows_optrX   rY   s        rb   Úget_series_repr_paramsrÉ   ‚  s^   € ô &Ó'�M€Eˆ6ÜÐ0Ó1€LØ%¨Ò*‰v°€HØ%¨Ò*‰v´
Ð;MÓ0N€Hð ØØØÜÐ6Ó7ñð rd   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d0d„Zd1d„Zd1d„Zd2d„Zd)d„Zd)d„Zd)d„Zd+d„Zd3d„Zd3d„Z d3d„Z!d(d„Z"d4d „Z#d5d!„Z$d6d"„Z%d7d#„Z&d8d$„Z'	 	 	 	 d9d%„Z(y):ÚDataFrameFormatterz‡
    Class for processing dataframe formatting options and data.

    Used by DataFrame.to_string, which backs DataFrame.__repr__.
    rv   Nc                ó|  — || _         | j                  |«      | _        | j                  |«      | _        || _        || _        || _        | j                  |«      | _	        | j                  |«      | _        | j                  |	«      | _        | j                  |
«      | _        || _        || _        || _        || _        || _        || _        || _        || _        | j1                  «       | _        | j5                  «       | _        | j                   | _        | j;                  «        t=        j>                  «       | _         y ©N)!ÚframeÚ_initialize_columnsÚcolumnsÚ_initialize_colspaceÚ	col_spacerR   rS   rT   Ú_initialize_formattersÚ
formattersÚ_initialize_justifyrG   Ú_validate_float_formatrV   Ú_initialize_sparsifyr’   Úshow_index_namesÚdecimalÚ	bold_rowsÚescaperX   rY   r¾   rÀ   Ú_calc_max_cols_fittedÚmax_cols_fittedÚ_calc_max_rows_fittedÚmax_rows_fittedÚtr_framer|   r4   r^   r_   )ra   rÎ   rÐ   rÒ   rR   rS   rT   rÔ   rG   rV   r’   Úindex_namesrX   rY   r¾   rÀ   rÙ   rÚ   rÛ   s                      rb   rc   zDataFrameFormatter.__init__©  s  € ð* ˆŒ
Ø×/Ñ/°Ó8ˆŒØ×2Ñ2°9Ó=ˆŒØˆŒØˆŒ
ØˆŒØ×5Ñ5°jÓAˆŒØ×/Ñ/°Ó8ˆŒØ ×7Ñ7¸ÓEˆÔØ×1Ñ1°(Ó;ˆŒØ +ˆÔØˆŒØ"ˆŒØˆŒØ ˆŒØ ˆŒØ ˆŒØ.ˆÔà#×9Ñ9Ó;ˆÔØ#×9Ñ9Ó;ˆÔàŸ
™
ˆŒØ�‰ŒÜ×*Ñ*Ó,ˆ�rd   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_indexrS   Ú_get_formatted_indexrà   r    )ra   ÚstrcolsÚ	str_indexs      rb   Úget_strcolszDataFrameFormatter.get_strcolsØ  s@   € ð ×1Ñ1Ó3ˆà�:Š:Ø×1Ñ1°$·-±-Ó@ˆIØ�N‰N˜1˜iÔ(àˆrd   c                ó\   — | j                   du xs | j                   dk(  xr | j                  S )NTr|   )rÀ   Úis_truncatedr�   s    rb   Úshould_show_dimensionsz)DataFrameFormatter.should_show_dimensionsä  s3   € à×#Ñ# tÐ+ò 
Ø× Ñ  JÑ.ÒD°4×3DÑ3Dð	
rd   c                óH   — t        | j                  xs | j                  «      S rÍ   )r«   Úis_truncated_horizontallyrq   r�   s    rb   ré   zDataFrameFormatter.is_truncatedê  s   € ä�D×2Ñ2ÒR°d×6RÑ6RÓSÐSrd   c                ót   — t        | j                  xr" t        | j                  «      | j                  kD  «      S rÍ   )r«   rÝ   rh   rÐ   r�   s    rb   rì   z,DataFrameFormatter.is_truncated_horizontallyî  s,   € ä�D×(Ñ(ÒW¬c°$·,±,Ó.?À$×BVÑBVÑ.VÓXÐXrd   c                ót   — t        | j                  xr" t        | j                  «      | j                  kD  «      S rÍ   )r«   rß   rh   rÎ   r�   s    rb   rq   z*DataFrameFormatter.is_truncated_verticallyò  s+   € ä�D×(Ñ(ÒU¬c°$·*±*«oÀ×@TÑ@TÑ.TÓVÐVrd   c                ót   — dt        | j                  «      › dt        | j                  j                  «      › d�S )Nz

[z rows x z	 columns])rh   rÎ   rÐ   r�   s    rb   Údimensions_infoz"DataFrameFormatter.dimensions_infoö  s0   € à”s˜4Ÿ:™:“Ð' x´°D·J±J×4FÑ4FÓ0GÐ/HÈ	ÐRÐRrd   c                ó@   — t        | j                  j                  «      S rÍ   )r›   rÎ   rS   r�   s    rb   Úhas_index_namesz"DataFrameFormatter.has_index_namesú  s   € ä˜$Ÿ*™*×*Ñ*Ó+Ð+rd   c                ó@   — t        | j                  j                  «      S rÍ   )r›   rÎ   rÐ   r�   s    rb   Úhas_column_namesz#DataFrameFormatter.has_column_namesþ  s   € ä˜$Ÿ*™*×,Ñ,Ó-Ð-rd   c                óZ   — t        | j                  | j                  | j                  f«      S rÍ   )Úallrò   rS   rØ   r�   s    rb   Úshow_row_idx_namesz%DataFrameFormatter.show_row_idx_names  s$   € ä�D×(Ñ(¨$¯*©*°d×6KÑ6KÐLÓMÐMrd   c                óZ   — t        | j                  | j                  | j                  f«      S rÍ   )rö   rô   rØ   rR   r�   s    rb   Úshow_col_idx_namesz%DataFrameFormatter.show_col_idx_names  s$   € ä�D×)Ñ)¨4×+@Ñ+@À$Ç+Á+ÐNÓOÐOrd   c                ó‚   — t        | j                  xs t        | j                  «      t        | j                  «      «      S rÍ   )rj   rX   rh   rÎ   r�   s    rb   Úmax_rows_displayedz%DataFrameFormatter.max_rows_displayed
  s(   € ä�4—=‘=Ò3¤C¨¯
©
£O´S¸¿¹³_ÓEÐErd   c                ó    — |€t        d«      S |S )Nzdisplay.multi_sparse©r   )ra   r’   s     rb   r×   z'DataFrameFormatter._initialize_sparsify  s   € ØÐÜÐ4Ó5Ð5Øˆrd   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�   )rh   rÎ   rÐ   r}   ÚdictÚ
ValueError)ra   rÔ   s     rb   rÓ   z)DataFrameFormatter._initialize_formatters  su   € ð ÐØˆIÜ�—‘×#Ñ#Ó$¬¨J«Ò7¼:ÀjÔRVÔ;WØÐäØ$¤S¨£_Ð$5ð 6/Ü/2°4·:±:×3EÑ3EÓ/FÐ.GÀqðJóð rd   c                ó    — |€t        d«      S |S )Nzdisplay.colheader_justifyrý   )ra   rG   s     rb   rÕ   z&DataFrameFormatter._initialize_justify   s   € Øˆ?ÜÐ9Ó:Ð:àˆNrd   c                ót   — |�!t        |«      }| j                  |   | _        |S | j                  j                  S rÍ   )r/   rÎ   rÐ   )ra   rÐ   Úcolss      rb   rÏ   z&DataFrameFormatter._initialize_columns&  s7   € ØÐÜ Ó(ˆDØŸ™ DÑ)ˆDŒJØˆKà—:‘:×%Ñ%Ð%rd   c                ó‚  — |€i }|S t        |t        t        f«      r?d|i}|j                  t        j                  | j                  j                  |«      «       |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                  |d¬«      «      }|S )Nrv   z,Col_space is defined for an unknown column: zCol_space length(rÿ   r�   T©Ústrict)r}   ri   r„   Úupdater   ÚfromkeysrÎ   rÐ   r   Úkeysr  rh   Úzip)ra   rÒ   r¨   Úcolumns       rb   rÑ   z'DataFrameFormatter._initialize_colspace.  s2  € ð ÐØˆFð$ ˆô# ˜	¤C¬ :Ô.Ø˜)�_ˆFØ�M‰Mœ$Ÿ-™-¨¯
©
×(:Ñ(:¸IÓFÔGð ˆô ˜	¤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°)ÀDÔIÓJˆFØˆrd   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)ra   r¦   rÄ   s      rb   rÜ   z(DataFrameFormatter._calc_max_cols_fittedF  sA   € à×#Ñ#Ô%Ø—=‘=Ð ä$Ó&‰ˆˆqØ×!Ñ! %Ô(ØˆLà—=‘=Ð rd   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   rX   Ú_get_number_of_auxiliary_rowsÚ_is_screen_shortÚ_adjust_max_rows)ra   rÄ   rÇ   rX   s       rb   rÞ   z(DataFrameFormatter._calc_max_rows_fittedQ  sr   € ð ×ÑÔ!Ü)Ó+‰IˆAˆvØ�}‰} Ò!à × BÑ BÓ DÑDÐDà×$Ñ$ VÔ,Ø!‘àŸ=™=‘à—}‘}ˆHà×$Ñ$ XÓ.Ð.rd   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
        )rh   rÎ   rY   rj   )ra   rX   s     rb   r  z#DataFrameFormatter._adjust_max_rowsd  s2   € ñ Ü�D—J‘J“ (Ò*°·²ä˜tŸ}™}¨hÓ7�Øˆrd   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¾   rX   r�   s    rb   r  z"DataFrameFormatter._is_in_terminalr  s$   € ä�D—M‘M QÑ&Ò<¨$¯-©-¸1Ñ*<Ó=Ð=rd   c                óz   — t        | j                  dk(  xr" t        | j                  j                  «      |kD  «      S ©Nr   )r«   r¾   rh   rÎ   rÐ   )ra   Ú	max_widths     rb   r  z$DataFrameFormatter._is_screen_narrowv  s/   € Ü�D—M‘M QÑ&ÒN¬3¨t¯z©z×/AÑ/AÓ+BÀYÑ+NÓOÐOrd   c                óf   — t        | j                  dk(  xr t        | j                  «      |kD  «      S r  )r«   rX   rh   rÎ   )ra   Ú
max_heights     rb   r  z#DataFrameFormatter._is_screen_shorty  s(   € Ü�D—M‘M QÑ&ÒG¬3¨t¯z©z«?¸ZÑ+GÓHÐHrd   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.rf   )rÀ   rh   rð   Ú
splitlinesrR   )ra   Údot_rowÚ
prompt_rowÚnum_rowss       rb   r  z0DataFrameFormatter._get_number_of_auxiliary_rows|  sR   € àˆØˆ
Ø˜ZÑ'ˆà×ÒØœ˜D×0Ñ0×;Ñ;Ó=Ó>Ñ>ˆHà�;Š;Ø˜‰MˆHàˆrd   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_horizontallyrq   Ú_truncate_verticallyr�   s    rb   r|   zDataFrameFormatter.truncateŠ  s3   € ð ×)Ò)Ø×'Ñ'Ô)à×'Ò'Ø×%Ñ%Õ'ð (rd   c                ór  — | j                   €J ‚| j                   dz  }|dk\  rÐt        | j                  j                  «      }t	        j
                  t	        j                  |«      t	        j                  ||z
  |«      g«      }| j                  j                  dd…|f   | _        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
        Nrg   rf   )rÝ   rh   rà   rÐ   rl   rm   rn   rk   r}   rÔ   ÚlistÚtupler   ri   r¾   Ú
tr_col_num)ra   Úcol_numrs   rt   s       rb   r!  z)DataFrameFormatter._truncate_horizontally”  s  € ð ×#Ñ#Ð/Ð/Ð/Ø×&Ñ&¨!Ñ+ˆØ�aŠ<Ü�t—}‘}×,Ñ,Ó-ˆDÜ—Y‘Y¤§	¡	¨'Ó 2´B·I±I¸dÀW¹nÈdÓ4SÐTÓUˆFØ ŸM™M×.Ñ.ªq°&¨yÑ9ˆDŒMô ˜$Ÿ/™/¬D´%¨=Ô9ð#Ø—_‘_ X gÐ.ð#à—_‘_ g X YÐ/ð#�”ð  'ˆ�ô œ3 §¡Ó.ˆGØ ŸM™M×.Ñ.ªq°(°7°(¨{Ñ;ˆDŒMØ&ˆ�rd   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
        Nrg   rf   )rß   rh   rà   rl   rm   rn   rk   r   ri   rX   ro   )ra   rr   rs   rt   s       rb   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Ø!ˆ�rd   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   )ÚstringsrG   Úminimumr_   zWriting z cols but got z aliasesrv   c              3  óT   •K  — | ]  }‰j                   j                  |«      –— Œ! y ­wrÍ   ©r_   rh   ©Ú.0Úxra   s     €rb   ú	<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     €rb   r1  z@DataFrameFormatter._get_strcols_without_index.<locals>.<genexpr>é  s   øè ø€ Ò@°˜DŸH™HŸL™L¨ŸOÑ@ùr2  r—   )r   rR   Ú	enumeraterà   Ú
format_colÚ_make_fixed_widthrG   ri   rÒ   Úgetr_   Úappendr   r$  r„   rh   rÐ   r  Ú_get_formatted_column_labelsr÷   Úmax)ra   rå   ÚiÚcr¤   ÚlabelÚstr_columnsr0  ÚcheaderÚheader_colwidthÚmax_lens   `          rb   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)rV   rT   ÚspacerÙ   r‹   )rà   Ú_get_formatterrŒ   rk   r‚   rV   rT   rÒ   r7  rÐ   rÙ   rS   )ra   r;  rÎ   Ú	formatters       rb   r5  zDataFrameFormatter.format_colï  sz   € Ø—‘ˆØ×'Ñ'¨Ó*ˆ	ÜØ�J‰J’q˜!�tÑ×$Ñ$ØØ×*Ñ*Ø—;‘;Ø—.‘.×$Ñ$ U§]¡]°1Ñ%5Ó6Ø—L‘LØŸ*™*ô
ð 	
rd   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Í   )	r}   rÔ   r$  r%  r   r   ri   rÐ   r7  )ra   r;  s     rb   rD  z!DataFrameFormatter._get_formatterü  sn   € Ü�d—o‘o¬¬e }Ô5Ü˜!Œ}Üœ˜a“L�Ø—‘ qÑ)Ð)àä˜!Œ} ¨$¯,©,Ñ!6Ø—L‘L ‘O�Ø—?‘?×&Ñ& q¨$Ó/Ð/rd   c                óø  — ddl m} |j                  }t        |t        «      rU|j                  dd¬«      }| j                  rt        |«      r ||«      }t        |ddiŽD �cg c]  }t        |«      ‘Œ }}|S |j                  d¬«      }t        t        || j                  j                  d¬«      «      D ���cg c],  \  }\  }}| j                  |«      st        |«      rd	|z   n|g‘Œ. }}}}|S c c}w c c}}}w )
Nr   )Úsparsify_labelsF)r’   r‘   r  Tr“   r  ú )Úpandas.core.indexes.multirH  rÐ   r}   r-   rœ   r’   rh   r  r$  rŸ   r4  rÎ   ÚdtypesrD  r    )	ra   rÎ   rH  rÐ   Úfmt_columnsr0  r>  r;  rW   s	            rb   r9  z/DataFrameFormatter._get_formatted_column_labels  s  € Ý=à—-‘-ˆä�gœzÔ*Ø!×/Ñ/¸ÈeÐ/ÓTˆKØ�}Š}¤ [Ô!1Ù-¨kÓ:�ä,/°Ð,JÀTÑ,JÖK qœ4 �7ÐKˆKÐKð Ðð "×.Ñ.¸EÐ.ÓBˆKô &/Ü˜ T§Z¡Z×%6Ñ%6¸uÔEó&÷	ð 	ñ "�A‘z˜˜5ð  ×.Ñ.¨qÔ1Ô6FÀuÔ6Mð ˜!’Gàòð	ˆKò 	ð Ðùò Lùô	s   Á"C0Â91C5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‘   rE  )r”   rE  rD   rv   r   )rG   r+  r_   rf   rz   )rÒ   Úitemsr   ri   rS   rÐ   rD  r}   r-   rœ   r’   r÷   rŸ   r%  r6  r$  r7  r_   r�   rž   rù   Ú_get_column_name_listr„   ÚnlevelsrR   )ra   rÎ   ÚkÚvrÒ   rS   rÐ   Úfmtr£   r0  ÚadjoinedÚ
col_headers               rb   rä   z'DataFrameFormatter._get_formatted_index!  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)Nrv   r·   )r/  rU   s     rb   r1  z;DataFrameFormatter._get_column_name_list.<locals>.<genexpr>N  s   è ø€ ÒP¸$˜t˜|™°Ó5ÑPùs   ‚rv   )rÎ   rÐ   r}   r-   ÚextendÚnamesr8  rU   )ra   rZ  rÐ   s      rb   rP  z(DataFrameFormatter._get_column_name_listJ  s_   € Ø "ˆØ—*‘*×$Ñ$ˆÜ�gœzÔ*Ø�L‰LÑPÀ'Ç-Á-ÔPÔPð ˆð �L‰L˜wŸ|™|Ð3™¸¿¹ÔFØˆrd   c                óô   — |�t        |«      r|S t        |t        «      r$d|v r|S 	 |j                  d«      }|j                  S t	        d«      ‚# t        t
        t        f$ r}t	        d|›�«      |‚d}~ww xY w)z|
        Validates and processes the float_format argument.
        Converts new-style format strings to callables.
        Nú%g      ð?z Invalid new-style format string z)float_format must be a string or callable)Úcallabler}   r„   Úformatr  ÚKeyErrorÚ
IndexError)ra   rT  rÄ   Úes       rb   rÖ   z)DataFrameFormatter._validate_float_formatS  s†   € ð ˆ;œ( 3œ-ØˆJä�cœ3ÔØ�c‰zà�
ðXØŸ
™
 3›�AØŸ:™:Ð%ô ÐDÓEÐEøô #¤H¬jÐ9ò XÜ$Ð'GÈÀwÐ%OÓPÐVWÐWûðXús   §A ÁA7Á#A2Á2A7)NNTTrP   NNNNTNNNFú.FT)&rÎ   rA   rÐ   úAxes | NonerÒ   úColspaceArgType | NonerR   zbool | SequenceNotStr[str]rS   r«   rT   r„   rÔ   úFormattersType | NonerG   r¬   rV   úFloatFormatType | Noner’   úbool | Nonerá   r«   rX   r­   rY   r­   r¾   r­   rÀ   rª   rÙ   r„   rÚ   r«   rÛ   r«   r®   r¯   )r®   úlist[list[str]]©r®   r«   r±   )r®   ri   )r’   rg  r®   r«   )rÔ   re  r®   r<   )rG   r¬   r®   r„   )rÐ   rc  r®   r,   )rÒ   rd  r®   r8   )r®   r­   )rX   r­   r®   r­   r°   )r;  ri   r®   r³   )r;  ú	str | intr®   úCallable | None)rÎ   rA   r®   rh  )rÎ   rA   r®   r³   )r®   zlist[Hashable])rT  rf  r®   rf  ))rš   r´   rµ   r¶   rC   rM   rc   rç   Úpropertyrê   ré   rì   rq   rð   rò   rô   r÷   rù   rû   r×   rÓ   rÕ   rÏ   rÑ   rÜ   rÞ   r  r  r  r  r  r|   r!  r"  rã   r5  rD  r9  rä   rP  rÖ   r·   rd   rb   rË   rË   Ÿ  sŠ  „ ññ !‰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óó2'óRðFØ)ðFà	ôFrd   rË   c                  óØ   — e Zd ZdZdd„Z	 	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d	d„Z	 	 	 d
	 	 	 	 	 	 	 dd„Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Zy)ÚDataFrameRenderera?  Class for creating dataframe output in multiple formats.

    Called in pandas.core.generic.NDFrame:
        - to_csv
        - to_latex

    Called in pandas.DataFrame:
        - to_html
        - to_string

    Parameters
    ----------
    fmt : DataFrameFormatter
        Formatter with the formatting options.
    c                ó   — || _         y rÍ   )rT  )ra   rT  s     rb   rc   zDataFrameRenderer.__init__|  s	   € Øˆ�rd   Nc                óˆ   — ddl m}m}	 |r|	n|}
 |
| j                  ||||¬«      }|j	                  «       }t        |||¬«      S )uC  
        Render a DataFrame to an 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 or bool
            When an integer value is provided, it sets the border attribute in
            the opening tag, specifying the thickness of the border.
            If ``False`` or ``0`` is passed, the border attribute will not
            be present in the ``<table>`` tag.
            The default value for this parameter is governed by
            ``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.htmlrq  rr  rT  r©   Úsave_to_buffer)ra   r]   rx  rs  Únotebookrt  ru  rv  rq  rr  ÚKlassÚhtml_formatterÚstrings                rb   Úto_htmlzDataFrameRenderer.to_html  sP   € ÷L	
ñ
 &.Ñ!°=ˆáØ�H‰HØØØØ%ô
ˆð  ×)Ñ)Ó+ˆÜ˜f¨#¸ÔAÐArd   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Á   rw  )Úpandas.io.formats.stringr�  rT  r©   rz  )ra   r]   rx  rÁ   r�  Ústring_formatterr~  s          rb   r©   zDataFrameRenderer.to_string¶  s5   € õ( 	=á*¨4¯8©8À
ÔKÐØ!×+Ñ+Ó-ˆÜ˜f¨#¸ÔAÐArd   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Úseprx  ÚerrorsÚcompressionÚquotingr  Úindex_labelr˜   Ú	chunksizeÚ	quotecharÚdate_formatÚdoublequoteÚ
escapecharÚstorage_optionsrE  r·   )Úpandas.io.formats.csvsr…  r   rT  Úsaver}   ÚgetvalueÚclose)ra   r†  rx  rˆ  rÐ   rŒ  r˜   rŠ  r‹  rŽ  r‡  r�  r�  r�  r‘  r‰  r’  r…  Úcreated_bufferÚcsv_formatterÚcontents                        rb   Úto_csvzDataFrameRenderer.to_csvÐ  s  € õ, 	8àÐØ!ˆNÜ"›*‰Kà"ˆNá$ò 
Ù#ð
á)ð
ñ ð
ñ ð	
ñ
 ð
ñ $ð
ñ ð
ñ ð
ñ $ð
ñ ð
ñ  ð
ñ  ð
ñ $ð
ñ $ð
ñ "ð
ñ  ,ð!
ð" —h’hð#
ˆð& 	×ÑÔáÜ˜k¬8Ô4Ð4Ð4Ø!×*Ñ*Ó,ˆGØ×ÑÔØˆNàrd   )rT  rË   r®   r¯   )NNNFNNF)r]   ú"FilePath | WriteBuffer[str] | Nonerx  r¬   rs  zstr | list | tuple | Noner{  r«   rt  zint | bool | Noneru  r¬   rv  r«   r®   r¬   )NNN)r]   r›  rx  r¬   rÁ   r­   r®   r¬   )NNú,NNÚwÚinferNú"NNNTNr  N)"r†  z7FilePath | WriteBuffer[bytes] | WriteBuffer[str] | Nonerx  r¬   rˆ  r„   rÐ   zSequence[Hashable] | NonerŒ  zIndexLabel | Noner˜   r„   rŠ  r9   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¶   rc   r  r©   rš  r·   rd   rb   rn  rn  k  sœ  „ ñó ð
 37Ø#Ø-1ØØ$(Ø#Ø"ð5Bà/ð5Bð ð5Bð +ð	5Bð
 ð5Bð "ð5Bð ð5Bð ð5Bð 
ó5Bðr 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rd   rn  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.
    )rx  N)Ú_get_bufferÚwriter•  )r~  r]   rx  Úfds       rb   rz  rz    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�  rv   )rx  Únewlinez1buf is not a file name and it has no write method)	r3   r   r}   r„   r  Úhasattrr2   ÚopenÚ	TypeError)r]   rx  Úfs      rb   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)
ÚdigitsrT   rV   rE  rC  rG   rÙ   r‹   r‹  Úfallback_formatter)r   Úis_np_dtyperW   Ú_Datetime64Formatterr   r(   r}   r#   Ú_Datetime64TZFormatterÚ_Timedelta64Formatterr*   r$   Ú_ExtensionArrayFormatterÚFloatArrayFormatterÚ_IntArrayFormatterÚ_GenericArrayFormatterr   Ú
get_result)ÚvaluesrE  rV   rT   r±  rC  rG   rÙ   r‹   r‹  r²  Ú	fmt_klassÚfmt_objs                rb   rŒ   rŒ   B  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ð ×ÑÓÐrd   c                  ón   — e Zd Z	 	 	 	 	 	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Zdd„Zdd„Zy)rº  Nc                ó¬   — || _         || _        || _        || _        || _        || _        || _        || _        |	| _        |
| _	        || _
        || _        y rÍ   )r¼  r±  rT   rC  rE  rV   rG   rÙ   r‹  Úfixed_widthr‹   r²  )ra   r¼  r±  rE  rT   rC  rV   rG   rÙ   r‹  rÁ  r‹   r²  s                rb   rc   z_GenericArrayFormatter.__init__˜  s\   € ð ˆŒØˆŒØˆŒØˆŒ
Ø"ˆŒØ(ˆÔØˆŒØˆŒØˆŒØ&ˆÔØ*ˆÔØ"4ˆÕrd   c                óN   — | j                  «       }t        || j                  «      S rÍ   )Ú_format_stringsr6  rG   )ra   r¤   s     rb   r»  z!_GenericArrayFormatter.get_result´  s!   € Ø×)Ñ)Ó+ˆ
Ü  ¨T¯\©\Ó:Ð:rd   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)r0  Ú	precisions    €rb   ú<lambda>z8_GenericArrayFormatter._format_strings.<locals>.<lambda>½  s    ø€ Ô)AØ˜˜I a˜=¨Ð)Ð*ó*€ rd   rw   )r{   Úquote_stringsc                óR  •— ‰j                   �ot        | «      rdt        | «      rY| €y| t        u rt	        t        «      S | t
        u s*t        | t        j                  t        j                  f«      ry‰j                   S t        | t        «      rt	        | «      S t	         ‰| «      «      S )Nr¯   r   )rT   r!   r%   r   r„   r   r}   rl   Ú
datetime64Útimedelta64r+   )r0  rE  ra   s    €€rb   Ú_formatz7_GenericArrayFormatter._format_strings.<locals>._formatÏ  s   ø€ Ø�{‰{Ð&¬9°Q¬<¼DÀ¼GØ�9Ø!Øœ"‘WÜœr›7�NØœ#‘X¤¨A´·±¼r¿~¹~Ð/NÔ!OØ Ø—{‘{Ð"Ü˜Aœ|Ô,Ü˜1“v�ô ™9 Q›<Ó(Ð(rd   z=ExtensionArray formatting should use _ExtensionArrayFormatterrf   )ÚaxisrI  Fz{v}z {v})rS  )rV   r   rE  r²  r‹  r
   r   r4   r€   r¼  r}   rl   Úndarrayr¨  r   Ú	map_inferr   rö   r&   r%  Úrangerh   Úshaper‹   Úanyr4  r8  r^  )ra   rV   rÊ  rÎ  ÚvalsÚinferredÚis_float_typer‹   r¤   r;  rS  ÚtplrE  rÈ  s   `           @@rb   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 *Ó":Õ;ð	<ð Ðrd   )é   NrP   r¯  NrE   rb  NTTN)r¼  r5   r±  ri   rE  rk  rT   r„   rC  rj  rV   rf  rG   r„   rÙ   r„   r‹  r­   rÁ  r«   r‹   rg  r²  rk  r®   r¯   r²   )rš   r´   rµ   rc   r»  rÃ  r·   rd   rb   rº  rº  —  sµ   „ ð Ø%)ØØØ/3ØØØ"Ø Ø%)Ø.2ð5àð5ð ð5ð #ð	5ð
 ð5ð ð5ð -ð5ð ð5ð ð5ð ð5ð ð5ð #ð5ð ,ð5ð 
ó5ó8;ôDrd   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)Úsuperrc   rV   rE  rÁ  r]  )ra   ÚargsÚkwargsÚ	__class__s      €rb   rc   zFloatArrayFormatter.__init__   se   ø€ Ü‰Ñ˜$Ð) &Ò)ð ×ÑÐ(¨T¯^©^Ð-Cà$ˆDÔÜ˜×)Ñ)Ô*Ø!%×!2Ñ!2�”Ø$(�Õ!ð +ð .DÐ(rd   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&   rT   )rS  rV   ra   s    €€rb   Úbase_formatterz<FloatArrayFormatter._value_formatter.<locals>.base_formatter  s5   ø€ Ø#Ð/Ð/Ð/ô ˜Q”xñ ! qÔ)ðð Ÿ™ðrd   c                óH   •— t        | «      rt        | «      S ‰j                  S rÍ   )r&   r„   rT   )rS  ra   s    €rb   rä  z<FloatArrayFormatter._value_formatter.<locals>.base_formatter+  s   ø€ Ü!& q¤”s˜1“vÐ:¨t¯{©{Ð:rd   rb  c                óJ   •—  ‰| «      j                  d‰j                  d«      S )Nrb  rf   )ÚreplacerÙ   )rS  rä  ra   s    €€rb   Údecimal_formatterz?FloatArrayFormatter._value_formatter.<locals>.decimal_formatter0  s!   ø€ Ù% aÓ(×0Ñ0°°d·l±lÀAÓFÐFrd   c                ón   •— t        | «      rt        | «      ‰kD  r ‰| «      S  ‰d«      S ‰j                  S )Ng        )r&   ÚabsrT   )rã  rè  ra   Ú	thresholds    €€€rb   rE  z7FloatArrayFormatter._value_formatter.<locals>.formatter9  s6   ø€ Ü�UŒ|Ü�u“: 	Ò)Ù,¨UÓ3Ð3á,¨SÓ1Ð1à—{‘{Ð"rd   )rV   rÙ   )ra   rV   rë  rE  rä  rè  s   ``` @@rb   Ú_value_formatterz$FloatArrayFormatter._value_formatter  sZ   ü€ ð ÐØ×,Ñ,ˆLñ ö	ô;ð �<‰<˜3ÒöGð !/ÐàÐØ$Ð$ö	#ð Ðrd   c                ót  ‡ ‡
‡‡— 	 	 	 	 	 	 	 	 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¬«      D ��cg c]  \  }}|s ||«      n|‘Œ c}}«      j                  | j                  «      }|S c c}}w )NTr  )r%   rl   Úarrayr  ÚravelÚreshaperÓ  )r¼  rE  rT   ÚmaskÚvalr¬  Ú	formatteds          rb   Úformat_with_na_repzCFloatArrayFormatter.get_result_as_array.<locals>.format_with_na_repJ  sw   € ô ˜“<ˆDÜŸ™ô #& f§l¡l£n°d·j±j³lÈ4Ô"P÷á˜˜Qñ +,‘I˜c”N°Ñ7óó÷
 ‰g�f—l‘lÓ#ð ð Ðùós   ÁB
c                óÄ  — t        j                  | «      j                  «       }t        j                  | «      j                  «       }t	        |«      t	        |«      }}g }t        | j                  «       ||||d¬«      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 )NTr  ú+Újú-)rl   Úrealrð  Úimagr%   r  r8  ÚstripÚ
startswithrï  rñ  rÓ  )r¼  rE  rT   Úreal_valuesÚimag_valuesÚ	real_maskÚ	imag_maskÚformatted_lstró  Úreal_valÚimag_valÚre_isnaÚim_isnaÚimag_formatteds                 rb   Úformat_complex_with_na_repzKFloatArrayFormatter.get_result_as_array.<locals>.format_complex_with_na_repV  sS  € ô Ÿ'™' &›/×/Ñ/Ó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·<±<Ó@Ð@rd   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 )NrD   rI  Úobject©rW   )rì  rG   rT   r¼  r   rÁ  Ú_trim_zeros_complexrÙ   Ú_trim_zeros_floatrl   Úasarray)
rV   rE  rT   r¼  Ú
is_complexr¨   r  rõ  ra   rë  s
         €€€€rb   Úformat_values_withzCFloatArrayFormatter.get_result_as_array.<locals>.format_values_with}  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àˆMrd   Tz{value: .{digits:d}f}z{value:.{digits:d}f})r±  c                ó"   •— ‰j                   | z  S rÍ   )rV   )rã  ra   s    €rb   rÉ  z9FloatArrayFormatter.get_result_as_array.<locals>.<lambda>¥  s   ø€ ¨×):Ñ):¸UÑ)B€ rd   r   c              3  ó2   K  — | ]  }t        |«      –— Œ y ­wrÍ   ©rh   ©r/  r0  s     rb   r1  z:FloatArrayFormatter.get_result_as_array.<locals>.<genexpr>±  s   è ø€ Ò: Aœ˜QŸÑ:ùó   ‚é   Fg    €„.Aé
   z{value: .{digits:d}e}z{value:.{digits:d}e})r¼  r5   rE  r   rT   r„   r®   ú
np.ndarray)rE  r¼  rT   rÁ  r   rV   r‹   r   r^  r±  rh   r:  rl   rê  rÔ  )ra   r  Úfmt_strrV   Úformatted_valuesÚmaxlenÚtoo_longÚabs_valsÚhas_large_valuesÚhas_small_valuesr  rõ  rë  s   `         @@@rb   Úget_result_as_arrayz'FloatArrayFormatter.get_result_as_arrayD  sÐ  û€ ð
	Øð
	Ø*2ð
	Ø<?ð
	àó
	ð	AØð	AØ*2ð	AØ<?ð	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°,Ó?ÐàÐrd   c                ó4   — t        | j                  «       «      S rÍ   )r$  r   r�   s    rb   rÃ  z#FloatArrayFormatter._format_stringsÇ  s   € Ü�D×,Ñ,Ó.Ó/Ð/rd   r°   ©NN)rV   rf  rë  zfloat | Noner®   r   )r®   r  r²   )rš   r´   rµ   rc   rì  r   rÃ  Ú__classcell__©rà  s   @rb   r¸  r¸  ÿ  s>   ø„ õ
)ð 04Ø"&ð6à,ð6ð  ð6ð 
ó	6ópA ÷F0rd   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Æ  ©r0  ©r^  r(  s    rb   rÉ  z4_IntArrayFormatter._format_strings.<locals>.<lambda>Î  s   € ¨¨1¨§o¡o¸ oÓ&:€ rd   c                ó*   — | d›j                  | ¬«      S )Nz dr(  r)  r(  s    rb   rÉ  z4_IntArrayFormatter._format_strings.<locals>.<lambda>Ð  s   € ¨¨2¨×&6Ñ&6¸Ð&6Ó&;€ rd   )r‹   rE  r¼  )ra   Úformatter_strrE  r0  r¤   s        rb   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·   rd   rb   r¹  r¹  Ë  s   „ ôrd   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Ý  rc   Únat_repr�  )ra   r¼  r.  r�  rß  rà  s        €rb   rc   z_Datetime64Formatter.__init__Ù  s&   ø€ ô 	‰Ñ˜Ñ* 6Ò*ØˆŒØ&ˆÕrd   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)rT   r�  )r¼  rE  Ú_format_native_typesr.  r�  Útolist)ra   r¼  r0  r¤   s       rb   rÃ  z$_Datetime64Formatter._format_stringsä  si   € à—‘ˆà�>‰>Ð%Ø/5Ö6¨!�D—N‘N 1Õ%Ò6Ð6à×0Ñ0Ø—<‘<¨T×-=Ñ-=ð 1ó 
ˆ
ð × Ñ Ó"Ð"ùò 7s   �A/©r   N)r¼  r(   r.  r„   r�  r¯   r®   r¯   r²   ©rš   r´   rµ   Ú__annotations__rc   rÃ  r#  r$  s   @rb   r´  r´  Ö  sA   ø… ØÓð
 Ø ð		'àð	'ð ð	'ð ð		'ð 
õ	'÷
#rd   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  )	rV   rT   r±  rC  rG   rÙ   r‹   r‹  r²  )r¼  rE  Ú
_formatterr}   r'   Ú_internal_get_valuesrl   r  r
  rŒ   rV   rT   r±  rC  rG   rÙ   r‹   r‹  )ra   r¼  rE  r²  rï  r¤   s         rb   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ô
ˆ
ð Ðrd   Nr²   ©rš   r´   rµ   r4  rÃ  r·   rd   rb   r·  r·  ñ  s   … ØÓôrd   r·  c                óf  — t        | «      dk(  rg S 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   rf   z/percentiles should all be in the interval [0,1]éd   r\  r  )rh   rl   r  r    rö   r  Úget_precisionÚroundÚastyperi   Úiscloser„   ÚuniqueÚ
empty_liker
  )ÚpercentilesÚprecÚpercentiles_round_typeÚint_idxÚoutr;  Úunique_pctss          rb   Úformat_percentilesrI    sj  € ôD ˆ;Ó˜1ÒØˆ	ä—*‘*˜[Ó)€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   éÿÿÿÿr<  )Úto_beginÚto_endrf   )	rl   Úediff1drê  ÚfloorÚlog10rj   r?  ri   r:  )rï  rL  rM  ÚdiffrD  s        rb   r=  r=  T  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Ø€Krd   c                ó,   — | t         u r|S t        | «      S rÍ   )r   r„   ©r0  r.  s     rb   Ú_format_datetime64rT  ^  s   € ØŒC�xØˆô ˆq‹6€Mrd   c                ód   — t        | t        «      r|S |r| j                  |«      S | j                  S rÍ   )r}   r   ÚstrftimeÚ
_date_repr)r0  r.  r�  s      rb   Ú_format_datetime64_dateonlyrX  g  s1   € ô
 �!”WÔØˆáØ�z‰z˜+Ó&Ð&ð �|‰|Ðrd   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)r.  r�  )rX  )r0  r�  r.  s    €€rb   rÉ  z'get_format_datetime64.<locals>.<lambda>}  s   ø€ Ô4Ø�w¨Kô
€ rd   c                ó   •— t        | ‰¬«      S )N)r.  )rT  rS  s    €rb   rÉ  z'get_format_datetime64.<locals>.<lambda>�  s   ø€ Ô+¨A°wÔ?€ rd   r·   )Úis_dates_onlyr.  r�  s    ``rb   Úget_format_datetime64r]  v  s   ù€ ñ ô
ð 	
ó @Ð?rd   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_onlyr?  r
  rE  r]  r�  )ra   Úidor¼  rE  r0  r¤   s         rb   rÃ  z&_Datetime64TZFormatter._format_strings‡  sj   € à�k‰k×(Ñ(ˆØ—‘×#Ñ#¤FÓ+ˆØ—N‘Nò 
Ô&;Ø˜T×-Ñ-ô'
ˆ	ð -3Ö3 q‘i •lÐ3ˆ
Ð3àÐùò 4s   ÁA2Nr²   r:  r·   rd   rb   rµ  rµ  „  s   … ØÓô	rd   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Ý  rc   r.  )ra   r¼  r.  rß  rà  s       €rb   rc   z_Timedelta64Formatter.__init__–  s   ø€ ô 	‰Ñ˜Ñ* 6Ò*Øˆ�rd   c                ó¬   — | j                   xs" t        | j                  | j                  d¬«      }| j                  D �cg c]
  } ||«      ‘Œ c}S c c}w )NF)r.  Úbox)rE  Úget_format_timedelta64r¼  r.  )ra   rE  r0  s      rb   rÃ  z%_Timedelta64Formatter._format_strings   sE   € Ø—N‘Nò 
Ô&<Ø�K‰K §¡°5ô'
ˆ	ð '+§k¡kÖ2 ‘	˜!•Ò2Ð2ùÒ2s   ¿A©r   )r¼  r*   r.  r„   r®   r¯   r²   r3  r$  s   @rb   r¶  r¶  “  s4   ø… ØÓð
 ðàðð ðð
 
õ÷3rd   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 )Nr)  ú')r!   r%   r}   r   Ú
_repr_base)r0  r¨   re  r^  r.  s     €€€rb   r8  z*get_format_timedelta64.<locals>._formatter¹  sS   ø€ Øˆ9œ 1œ¬$¨q¬'ØˆNä˜!œYÔ'Ü˜!“ˆAð —‘ V�Ó,ˆÙØ˜˜ �]ˆFØˆrd   )r`  )r¼  r.  re  Ú	even_daysr8  r^  s    ``  @rb   rf  rf  §  s*   ú€ ð ×%Ñ%€IáØ‰àˆöð Ðrd   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/  r0  Ú
adjustments     €rb   r1  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  )r0  rp  Úconf_maxrA  s    €€€rb   Újustz_make_fixed_width.<locals>.justà  s=   ø€ ØÐØ˜1‘ §¡°Ó!2°WÑ!<Ò=Ø�m˜ !™Ð$ uÑ,�Øˆrd   r—   )r0  r„   r®   r„   )rh   r4   r^   r:  r   rG   )
r*  rG   r+  r_   rs  r0  r¨   rp  rr  rA  s
          @@@rb   r6  r6  É  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	¬
«      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(?<!e)([j+-])rv   Néüÿÿÿéþÿÿÿr   c              3  ó2   K  — | ]  }t        |«      –— Œ y ­wrÍ   r  )r/  Úparts     rb   r1  z&_trim_zeros_complex.<locals>.<genexpr>  s   è ø€ Ò; dœ˜DŸ	Ñ;ùr  rf   Tr  ú>rø  )Úrerž   r8  r¡   rh   r  r:  r  )Ústr_complexesrÙ   Ú	real_partÚ	imag_partr0  ÚtrimmedÚnÚpadded_partsÚpadded_lengthÚreal_ptÚimag_ptÚpaddeds               rb   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ÈtÔ T÷ñ
 ˆ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.
    Ú0rb  )ÚrstripÚendswith)Ú	str_floats    rb   rÇ  rÇ    s2   € ð
 × Ñ  Ó%€IØ×Ñ˜#ÔØ�SÑˆ	àÐrd   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Í   )rz  Úmatch)r0  Únumber_regexs    €rb   Úis_number_with_decimalz1_trim_zeros_float.<locals>.is_number_with_decimal#  s   ø€ Ü�x‰x˜ aÓ(°Ð4Ð4rd   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     rb   r1  z9_trim_zeros_float.<locals>.should_trim.<locals>.<genexpr>/  s   è ø€ Ò'I¸A¨¯
©
°3¯Ñ'Iùs   ‚)rh   rö   )r¼  r0  ÚnumbersrŽ  s      €rb   Ú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   †<”<NrK  r†  ri  )r¼  úArrayLike | list[str]r®   r«   )rz  Úcompilerˆ  )Ú
str_floatsrÙ   r~  r’  r0  r¨   rŽ  r�  s         @@rb   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Í   )r}   r-   ÚcomÚany_not_nonerZ  rU   )rS   s    rb   r›   r›   <  s0   € Ü�%œÔ$Ü×Ñ §¡Ð-Ð-à�z‰z Ð%Ð%rd   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èÿÿÿÚyiëÿÿÿÚziîÿÿÿÚaiñÿÿÿr©  iôÿÿÿÚpi÷ÿÿÿr  iúÿÿÿÚuéýÿÿÿr¬  r   rv   r•   rR  r  r«  é	   ÚGr¯  ÚTé   ÚPé   ÚEé   ÚZé   ÚYNc                ó    — || _         || _        y rÍ   ©ÚaccuracyÚuse_eng_prefix)ra   r®  r¯  s      rb   rc   zEngFormatter.__init___  s   € ð !ˆŒØ,ˆÕrd   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
        rP   Úinfrf   r   rK  r•   zE-Ú02dzE+r  z{mant: g}{prefix}z{mant: .rÆ  z
f}{prefix})ÚmantÚprefix)r   r„   Úis_nanÚis_infiniteri   ÚmathrO  rP  rj   r:  ÚENG_PREFIXESr
  r¯  r®  r^  )
ra   ÚnumÚdnumÚsignÚpow10Ú	int_pow10r´  r³  Ú
format_strrô  s
             rb   Ú__call__zEngFormatter.__call__e  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¸Ð%Ó?ˆ	àÐrd   rÜ  )r®  r­   r¯  r«   r®   r¯   )r¹  Úfloatr®   r„   )rš   r´   rµ   r¶   r¸  rc   r¿  r·   rd   rb   rš  rš  C  sÿ   „ ñðØˆSðàˆSðð 	ˆSðð 	ˆSð	ð
 	ˆSðð 	ˆCðð 	ˆCðð 	ˆCðð 	
ˆ2ðð 	
ˆ3ðð 	
ˆ3ðð 	
ˆ3ðð 	ˆCðð 	ˆCðð 	ˆCðð  	ˆCð!ð" 	ˆCð#€Lð* CHð-Ø"ð-Ø;?ð-à	ó-ô;rd   rš  Úpandasc                ó0   — t        dt        | |«      «       y)aÔ  
    Format float representation in DataFrame with SI notation.

    Sets the floating-point display format for ``DataFrame`` objects using engineering
    notation (SI units), allowing easier readability of values across wide ranges.

    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
        This method does not return a value. it updates the global display format
        for floats in DataFrames.

    See Also
    --------
    set_option : Set the value of the specified option or options.
    reset_option : Reset one or more options to their default value.

    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     rb   Úset_eng_float_formatrÃ  £  s   € ôD Ð%¤|°H¸nÓ'MÕNrd   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)rh   r4  r8  )	ÚlevelsÚsentinelÚcontrolr¨   ÚlevelÚ
last_indexÚlengthsr;  Úkeys	            rb   Úget_level_lengthsrÌ  è  s³   € ô$ ˆ6ƒ{�aÒØˆ	àˆf”s˜6 !™9“~Ñ%€Gà€FØò ˆØˆ
àˆÜ Ó&ò 	‰FˆAˆsØ�qŠz˜c XšoØà"�˜‘
Ø&'¨*¡n�˜
Ñ#Ø‘
ð	ô " %›j¨:Ñ5ˆ�
Ñà�‰�gÕðð  €Mrd   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Í   )r}   r„   r  s     rb   r1  z#buffer_put_lines.<locals>.<genexpr>  s   è ø€ Ò
- !Œ:�aœ×Ñ
-ùs   ‚rz   N)rÔ  r„   r¢  r¡   )r]   Úlinesr0  s      rb   Úbuffer_put_linesrÐ    sC   € ô Ñ
- uÔ
-Ô-Ø!&Ö'˜A”�Q•Ð'ˆÐ'Ø‡I�Iˆd�i‰i˜ÓÕùò (s   —A)r®   zdict[str, Any]r"  )r~  r„   r]   r›  rx  r¬   r®   r¬   rÍ   )r]   r›  rx  r¬   r®   z1Generator[WriteBuffer[str]] | Generator[StringIO])	NrP   NNrE   rb  TNN)r¼  r5   rE  rk  rV   rf  rT   r„   r±  r­   rC  zstr | int | NonerG   r„   rÙ   r„   r‹   rg  r‹  r­   r²  rk  r®   r³   )rC  únp.ndarray | Sequence[float]r®   r³   )rï  rÑ  r®   ri   rg  )r0  úNaTType | Timestampr.  r„   r®   r„   r2  )r0  rÒ  r.  r„   r�  r¬   r®   r„   )r\  r«   r.  r„   r�  r¬   r®   r   )r   F)r¼  r*   r.  zstr | floatre  r«   r®   r   )rE   NN)
r*  r³   rG   r„   r+  r­   r_   zprinting._TextAdjustment | Noner®   r³   )rb  )r{  r5   rÙ   r„   r®   r³   )r‰  r„   r®   r„   )r•  r“  rÙ   r„   r®   r³   )rS   r,   r®   r«   )r•   F)r®  ri   r¯  r«   r®   r¯   )rv   )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   r   Ú
contextlibr	   Úcsvr
   rÙ   r   Ú	functoolsr   Úior   r·  rz  Úshutilr   Útypingr   r   r   r   Únumpyrl   Úpandas._config.configr   r   Úpandas._libsr   Úpandas._libs.missingr   Úpandas._libs.tslibsr   r   r   Úpandas._libs.tslibs.nattyper   Úpandas.util._decoratorsr   Ú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.baser+   Úpandas.core.commonÚcoreÚcommonr—  Úpandas.core.indexes.apir,   r-   r.   r/   Úpandas.core.indexes.datetimesr0   Úpandas.core.indexes.timedeltasr1   Úpandas.io.commonr2   r3   rÂ   r4   Úpandas._typingr5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rÁ  rA   rB   rC   r4  ÚVALID_JUSTIFY_PARAMETERSrM   rO   rÅ   rÉ   rË   rn  rz  r¡  rŒ   rº  r¸  r¹  r´  r·  rI  r=  rT  rX  r]  rµ  r¶  rf  r6  r  rÇ  r  r›   rš  rÃ  rÌ  rÐ  r·   rd   rb   ú<module>rð     s  ðòõ
 #÷õ õ &Ý Ý Ý Ý Û Û 	Ý $÷ó ó ÷õ
 Ý #÷ñ õ
 0Ý .÷÷ ÷ñ ÷
÷
ó õ *ß  Ð  ÷ó õ 8Ý 9÷õ 'á÷÷ ÷ ó ÷ð6Ð �%ó 6ðpÐ ðÐ �%ó ÷c$ñ c$óLó>÷:IFñ IF÷X^ñ ^ðF /3ØðØðà	+ðð ðð ó	ð  àDHðMØ	+ðMØ7AðMà6òMó ðMðP ,0ØØØ"ØØØ!%ØØ*.ðR ØðR àðR ð )ðR ð ð	R ð
 ðR ð ðR ð ðR ð ðR ð ðR ð ðR ð (ðR ð óR ÷jeñ eôPI0Ð0ô I0ôXÐ/ô ô#Ð1ô #ô6Ð5ô ðB?"Ø-ð?"àó?"óDôð Ø"ðØðàðð ðð 	ó	ð  JNð@Øð@Ø"%ð@Ø<Fð@àó@ôÐ1ô ô3Ð2ô 3ð, !ØðØðàðð 
ðð ó	ðH ØØ+/ð	Øðàðð ðð 
)ð	ð
 óôDóB	ð 7:ð!Ø%ð!Ø03ð!àó!óH&÷]ñ ]ñ@ ˆHÓóAOó ðAOðJ 24ð(Øð(Ø.ð(àó(ôV rd   