§
    tŠtjF ã                  ój  — 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%¦  «        Zhd“d(„Zid“d)„Zj G d*„ d+¦  «        Zk G d,„ d-¦  «        Zl	 	 d”d•d4„Zme
	 d–d—d6„¦   «         Zn	 	 	 	 	 	 	 	 	 d˜d™dM„Zo G dN„ dO¦  «        Zp G dP„ dQep¦  «        Zq G dR„ dSep¦  «        Zr G dT„ dUep¦  «        Zs G dV„ dWep¦  «        ZtdšdZ„Zud›d]„Zvdœd�db„Zw	 	 dždŸdd„Zx	 džd dh„Zy G di„ djes¦  «        Zz G dk„ dlep¦  «        Z{	 	 d¡d¢dq„Z|	 	 	 d£d¤dv„Z}d¥d¦dx„Z~d§dz„Z	 d¥d¨d}„Z€d©d€„Z� G d�„ d‚¦  «        Z‚ e,dƒ¦  «        dªd«dˆ„¦   «         Zƒ	 d¬d­d�„Z„d®d’„Z…d	S )¯z€
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            
      óP   — 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dS )#Ú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_rowsÚseriesrB   rQ   ú
bool | strrR   ÚboolrS   rT   ÚstrrU   rV   ú
str | NonerW   rX   ú
int | NonerY   ÚreturnÚNonec       	        ó2  — || _         t          ¦   «         | _        || _        || _        || _        || _        || _        |	| _        |
| _	        |€t          d¦  «        }|| _        || _        t          j        ¦   «         | _        |                      ¦   «          d S )Núdisplay.float_format)rZ   r   ÚbufrU   rT   rR   rQ   rS   rX   rY   r   rV   rW   r4   Úget_adjustmentÚadjÚ_chk_truncate)ÚselfrZ   rQ   rR   rS   rT   rU   rV   rW   rX   rY   s              úV/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/pandas/io/formats/format.pyÚ__init__zSeriesFormatter.__init__Ã   s’   € ð ˆŒÝ‘:”:ˆŒØˆŒ	ØˆŒØˆŒØˆŒØˆŒ
Ø ˆŒØ ˆŒàÐÝ%Ð&<Ñ=Ô=ˆLØ(ˆÔØˆŒ
ÝÔ*Ñ,Ô,ˆŒà×ÒÑÔÐÐÐó    c                óâ  — |  | j         }| j        }|ot          | j        ¦  «        |k    }| 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 | _        || _        || _        d S )Né   é   )rY   rX   ÚlenrZ   r   ÚintÚminÚilocÚnpÚhstackÚarangeÚ
tr_row_numÚ	tr_seriesÚis_truncated_vertically)rh   rY   rX   rx   rZ   Úrow_numÚ_lenÚ_slices           ri   rg   zSeriesFormatter._chk_truncateã   s  € ØÐ#à”=ˆØ”=ˆð #+Ð"Lµ°D´KÑ0@Ô0@À8Ò0KÐØ”ˆØ"ð 	#Ý�C Ñ*Ô*ˆHØð 3õ ˜x¨Ñ2Ô2�Ø˜1Š}ˆ}Ø"�Øœ Y h YÔ/��à" a™-�Ý˜6‘{”{�ÝœÝ”Y˜wÑ'Ô'­¬°4¸'±>À4Ñ)HÔ)HÐIñô �ð  œ VÔ,�Ø%ˆDŒOˆOà"ˆDŒOØˆŒØ'>ˆÔ$Ð$Ð$rk   c                óÆ  — | 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rE| j        �>t          | j        j        dd ¦  «        }|r!|r|dz  }|dt          j
        |¦  «        › �z  }t          | j        j        t"          ¦  «        r*| j        j                             ¦   «         }|r|dz  }||z  }t)          |¦  «        S )NÚ zFreq: Fz, ©ú	úú
)Úescape_charszName: TÚtruncatezLength: rU   zdtype: r�   )rZ   rU   rS   Ú
isinstancer0   r.   r1   ÚfreqÚfreqstrr4   Úpprint_thingrQ   rx   ro   rW   Úgetattrrw   r"   Ú_valuesÚ_get_repr_footerr]   )rh   rU   ÚfooterrS   Úseries_nameÚ
dtype_nameÚ
level_infos          ri   Ú_get_footerzSeriesFormatter._get_footer  s¦  € ØŒ{ÔˆØˆà”Ô!ˆå�u�}­k½>ÐJÑKÔKð	/à”
Ð&àÐ.˜uœ}Ð.Ð.Ñ.ˆFàŒ9˜EÐ!Ð! dÐ&6Øð Ø˜$‘�å"Ô/°ÐCUÐVÑVÔVˆKØÐ,˜{Ð,Ð,Ñ,ˆFàŒ;˜$ÐÐØŒK˜:Ò%Ð%¨$Ô*FÐ%àð Ø˜$‘�ØÐ3¥ T¤[Ñ!1Ô!1Ð3Ð3Ñ3ˆFàŒ:˜UÐ"Ð" t¤zÐ'=Ý  ¤Ô!5°v¸tÑDÔDˆJØð HØð #Ø˜d‘N�FØÐG¥HÔ$9¸*Ñ$EÔ$EÐGÐGÑG�õ �d”nÔ*Õ,<Ñ=Ô=ð 	!ØœÔ/×@Ò@ÑBÔBˆJØð Ø˜$‘�Ø�jÑ ˆFå�6‰{Œ{Ðrk   ú	list[str]c                ó\   — t          | j        j        d | j        | j        | j        ¬¦  «        S )N)rV   rT   Úleading_space)Úformat_arrayrw   r‰   rV   rT   rS   ©rh   s    ri   Ú_get_formatted_valuesz%SeriesFormatter._get_formatted_values,  s4   € ÝØŒNÔ"ØØÔ*Ø”;Øœ*ð
ñ 
ô 
ð 	
rk   c                ó6  — | j         }|                      ¦   «         }t          |¦  «        dk    rt          | j        ¦  «        j        › d|› d�S |j        }t          |¦  «        }t          |t          ¦  «        rL| 
                    dd ¬¦  «        }t          j        ¦   «         } |j        dg|¢R Ž                      d¦  «        }n|                     d¬¦  «        }|                      ¦   «         }| j        r¢d}| j        }	t'          t(          |	¦  «        }	| j                             ||	d	z
           ¦  «        }
|
d
k    rd}nd}| j                             |g|
d¬¦  «        d         }|                     |	|z   |¦  «         |                     |	d	z   d¦  «         | j        r | j        j        d
g|d	d …         |g¢R Ž }n| j                             d
|¦  «        }| j        r|r|d         dz   |z   }|r|d|z   z  }t3          d                     |¦  «        ¦  «        S )Nr   z([], ú)T)Úinclude_namesÚsparsifyrn   r�   ©Úinclude_namerm   é   ú...z..rF   ©Úmoder}   )rw   r�   ro   ÚtyperZ   Ú__name__rS   Ú
_has_namesr„   r-   Ú_format_multir4   re   ÚadjoinÚsplitÚ_format_flatr•   rx   rv   r   rp   rf   rG   ÚinsertrR   r]   Újoin)rh   rZ   r‹   rS   Úhave_headerÚ	fmt_indexrf   Ú
fmt_valuesÚn_header_rowsry   ÚwidthÚdot_strÚresults                ri   Ú	to_stringzSeriesFormatter.to_string5  s7  € Ø”ˆØ×!Ò!Ñ#Ô#ˆåˆv‰;Œ;˜!ÒÐÝ˜4œ;Ñ'Ô'Ô0Ð@Ð@°vÐ@Ð@Ð@Ð@à”ˆÝ  Ñ'Ô'ˆÝ�e�ZÑ(Ô(ð 	>Ø×+Ò+¸$ÈÐ+ÑNÔNˆIÝÔ)Ñ+Ô+ˆCØ"˜œ
 1Ð1 yÐ1Ð1Ð1×7Ò7¸Ñ=Ô=ˆIˆIà×*Ò*¸Ð*Ñ=Ô=ˆIØ×/Ò/Ñ1Ô1ˆ
àÔ'ð 	.ØˆMØ”oˆGÝ�3 Ñ(Ô(ˆGØ”H—L’L ¨G°a©KÔ!8Ñ9Ô9ˆEØ�qŠyˆyØ��à�ð ”h×&Ò&¨ y°%¸hÐ&ÑGÔGÈÔJˆGØ×Ò˜g¨Ñ5°wÑ?Ô?Ð?Ø×Ò˜W q™[¨"Ñ-Ô-Ð-àŒ:ð 	4Ø$�T”X”_ QÐE¨)°A°B°B¬-¸Ð)DÐEÐEÐEˆFˆFà”X—_’_ Q¨
Ñ3Ô3ˆFàŒ;ð 	2˜;ð 	2Ø˜q”\ DÑ(¨6Ñ1ˆFàð 	$Ø�d˜V‘mÑ#ˆFå�2—7’7˜6‘?”?Ñ#Ô#Ð#rk   )rZ   rB   rQ   r[   rR   r\   rS   r\   rT   r]   rU   r\   rV   r^   rW   r\   rX   r_   rY   r_   r`   ra   ©r`   ra   ©r`   r]   ©r`   r�   )	r¡   Ú
__module__Ú__qualname__Ú__doc__rj   rg   r�   r•   r°   © rk   ri   rO   rO   ½   s«   € € € € € ðð ð "ØØØØØ#'ØØ#Ø#ðð ð ð ð ð ð@?ð ?ð ?ð ?ð>(ð (ð (ð (ðT
ð 
ð 
ð 
ð+$ð +$ð +$ð +$ð +$ð +$rk   rO   r`   údict[str, Any]c                 óô   — ddl m}  t          d¦  «        r|                      ¦   «         \  }}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      ri   Úget_dataframe_repr_paramsrÆ   c  s‘   € ð *Ð)Ð)Ð)Ð)Ð)åÐ-Ñ.Ô.ð Ø×0Ò0Ñ2Ô2‰ˆ
�A�Aàˆ
åÐ1Ñ2Ô2ÝÐ1Ñ2Ô2ÝÐ4Ñ5Ô5Ý"Ð#9Ñ:Ô:Ý%Ð&?Ñ@Ô@Ø ðð ð rk   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        ri   Úget_series_repr_paramsrÊ   ‚  sy   € õ &Ñ'Ô'�M€Eˆ6ÝÐ0Ñ1Ô1€LØ%¨Ò*Ð*ˆvˆv°€HØ%¨Ò*Ð*ˆvˆvµ
Ð;MÑ0NÔ0N€Hð ØØØÝÐ6Ñ7Ô7ðð ð rk   c                  ó  — e Zd ZdZerendZeeez   z  Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dUdVd(„ZdWd*„ZedXd+„¦   «         Z	edXd,„¦   «         Z
edXd-„¦   «         ZedXd.„¦   «         ZedYd/„¦   «         ZedXd0„¦   «         ZedXd1„¦   «         ZedXd2„¦   «         ZedXd3„¦   «         ZedZd5„¦   «         Zd[d6„Zd\d8„Zd]d9„Zd^d;„Zd_d=„Zd`d>„Zd`d?„Zdad@„ZdXdA„ZdXdB„ZdXdC„ZdZdD„ZdbdE„ZdbdF„Z dbdG„Z!dWdH„Z"dcdK„Z#dddN„Z$dedO„Z%dfdP„Z&dgdR„Z'dhdT„Z(dS )iÚDataFrameFormatterz‡
    Class for processing dataframe formatting options and data.

    Used by DataFrame.to_string, which backs DataFrame.__repr__.
    r}   NTrP   Fú.ÚframerA   ÚcolumnsúAxes | NoneÚ	col_spaceúColspaceArgType | NonerR   úbool | SequenceNotStr[str]rS   r\   rT   r]   Ú
formattersúFormattersType | NonerG   r^   rV   úFloatFormatType | Noner™   úbool | NoneÚindex_namesrX   r_   rY   r¿   rÁ   r[   ÚdecimalÚ	bold_rowsÚescaper`   ra   c                óº  — || _         |                      |¦  «        | _        |                      |¦  «        | _        || _        || _        || _        |                      |¦  «        | _	        |  
                    |¦  «        | _        |                      |	¦  «        | _        |                      |
¦  «        | _        || _        || _        || _        || _        || _        || _        || _        || _        |                      ¦   «         | _        |                      ¦   «         | _        | j         | _        |                      ¦   «          t=          j        ¦   «         | _         d S ©N)!rÎ   Ú_initialize_columnsrÏ   Ú_initialize_colspacerÑ   rR   rS   rT   Ú_initialize_formattersrÔ   Ú_initialize_justifyrG   Ú_validate_float_formatrV   Ú_initialize_sparsifyr™   Úshow_index_namesrÙ   rÚ   rÛ   rX   rY   r¿   rÁ   Ú_calc_max_cols_fittedÚmax_cols_fittedÚ_calc_max_rows_fittedÚmax_rows_fittedÚtr_framerƒ   r4   re   rf   )rh   rÎ   rÏ   rÑ   rR   rS   rT   rÔ   rG   rV   r™   rØ   rX   rY   r¿   rÁ   rÙ   rÚ   rÛ   s                      ri   rj   zDataFrameFormatter.__init__©  s+  € ð* ˆŒ
Ø×/Ò/°Ñ8Ô8ˆŒØ×2Ò2°9Ñ=Ô=ˆŒØˆŒØˆŒ
ØˆŒØ×5Ò5°jÑAÔAˆŒØ×/Ò/°Ñ8Ô8ˆŒØ ×7Ò7¸ÑEÔEˆÔØ×1Ò1°(Ñ;Ô;ˆŒØ +ˆÔØˆŒØ"ˆŒØˆŒØ ˆŒØ ˆŒØ ˆŒØ.ˆÔà#×9Ò9Ñ;Ô;ˆÔØ#×9Ò9Ñ;Ô;ˆÔàœ
ˆŒØ�Š‰ŒˆÝÔ*Ñ,Ô,ˆŒˆˆrk   úlist[list[str]]c                óœ   — |                       ¦   «         }| j        r0|                      | 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§   )rh   ÚstrcolsÚ	str_indexs      ri   Úget_strcolszDataFrameFormatter.get_strcolsØ  sM   € ð ×1Ò1Ñ3Ô3ˆàŒ:ð 	)Ø×1Ò1°$´-Ñ@Ô@ˆIØ�NŠN˜1˜iÑ(Ô(Ð(àˆrk   c                ó8   — | j         du p| j         dk    o| j        S )NTrƒ   )rÁ   Úis_truncatedr”   s    ri   Úshould_show_dimensionsz)DataFrameFormatter.should_show_dimensionsä  s*   € àÔ# tÐ+ð 
ØÔ  JÒ.ÐD°4Ô3Dð	
rk   c                ó8   — t          | j        p| j        ¦  «        S rÝ   )r\   Úis_truncated_horizontallyrx   r”   s    ri   rò   zDataFrameFormatter.is_truncatedê  s   € å�DÔ2ÐR°dÔ6RÑSÔSÐSrk   c                ód   — t          | j        ot          | j        ¦  «        | j        k    ¦  «        S rÝ   )r\   ræ   ro   rÏ   r”   s    ri   rõ   z,DataFrameFormatter.is_truncated_horizontallyî  s*   € å�DÔ(ÐW­c°$´,Ñ.?Ô.?À$ÔBVÒ.VÑXÔXÐXrk   c                ód   — t          | j        ot          | j        ¦  «        | j        k    ¦  «        S rÝ   )r\   rè   ro   rÎ   r”   s    ri   rx   z*DataFrameFormatter.is_truncated_verticallyò  s(   € å�DÔ(ÐU­c°$´*©o¬oÀÔ@TÒ.TÑVÔVÐVrk   c                óf   — dt          | j        ¦  «        › dt          | j        j        ¦  «        › d�S )Nz

[z rows x z	 columns])ro   rÎ   rÏ   r”   s    ri   Údimensions_infoz"DataFrameFormatter.dimensions_infoö  s0   € àR•s˜4œ:‘”ÐRÐRµ°D´JÔ4FÑ0GÔ0GÐRÐRÐRÐRrk   c                ó4   — t          | j        j        ¦  «        S rÝ   )r¢   rÎ   rS   r”   s    ri   Úhas_index_namesz"DataFrameFormatter.has_index_namesú  s   € å˜$œ*Ô*Ñ+Ô+Ð+rk   c                ó4   — t          | j        j        ¦  «        S rÝ   )r¢   rÎ   rÏ   r”   s    ri   Úhas_column_namesz#DataFrameFormatter.has_column_namesþ  s   € å˜$œ*Ô,Ñ-Ô-Ð-rk   c                óD   — t          | j        | j        | j        f¦  «        S rÝ   )Úallrû   rS   rä   r”   s    ri   Úshow_row_idx_namesz%DataFrameFormatter.show_row_idx_names  s   € å�DÔ(¨$¬*°dÔ6KÐLÑMÔMÐMrk   c                óD   — t          | j        | j        | j        f¦  «        S rÝ   )rÿ   rý   rä   rR   r”   s    ri   Úshow_col_idx_namesz%DataFrameFormatter.show_col_idx_names  s   € å�DÔ)¨4Ô+@À$Ä+ÐNÑOÔOÐOrk   rp   c                óx   — t          | j        pt          | j        ¦  «        t          | j        ¦  «        ¦  «        S rÝ   )rq   rX   ro   rÎ   r”   s    ri   Úmax_rows_displayedz%DataFrameFormatter.max_rows_displayed
  s)   € å�4”=Ð3¥C¨¬
¡O¤OµS¸¼±_´_ÑEÔEÐErk   c                ó(   — |€t          d¦  «        S |S )Nzdisplay.multi_sparse©r   )rh   r™   s     ri   rã   z'DataFrameFormatter._initialize_sparsify  s   € ØÐÝÐ4Ñ5Ô5Ð5Øˆrk   r<   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—   )ro   rÎ   rÏ   r„   ÚdictÚ
ValueError)rh   rÔ   s     ri   rà   z)DataFrameFormatter._initialize_formatters  s‘   € ð ÐØˆIÝ�”Ô#Ñ$Ô$­¨J©¬Ò7Ð7½:ÀjÕRVÑ;WÔ;WÐ7ØÐåðJ¥S¨¡_¤_ð Jð JÝ/2°4´:Ô3EÑ/FÔ/FðJð Jð Jñô ð rk   c                ó(   — |€t          d¦  «        S |S )Nzdisplay.colheader_justifyr  )rh   rG   s     ri   rá   z&DataFrameFormatter._initialize_justify   s   € Øˆ?ÝÐ9Ñ:Ô:Ð:àˆNrk   r,   c                ód   — |�#t          |¦  «        }| j        |         | _        |S | j        j        S rÝ   )r/   rÎ   rÏ   )rh   rÏ   Úcolss      ri   rÞ   z&DataFrameFormatter._initialize_columns&  s3   € ØÐÝ Ñ(Ô(ˆDØœ DÔ)ˆDŒJØˆKà”:Ô%Ð%rk   r8   c                óˆ  — |€i }�n;t          |t          t          f¦  «        r=d|i}|                     t                               | j        j        |¦  «        ¦  «         nât          |t          ¦  «        r@| 	                    ¦   «         D ](}|| j        j        vr|dk    rt          d|› �¦  «        ‚Œ)|}n�t          | j        j        ¦  «        t          |¦  «        k    r:t          dt          |¦  «        › dt          | j        j        ¦  «        › d�¦  «        ‚t	          t          | j        j        |d¬¦  «        ¦  «        }|S )Nr}   z,Col_space is defined for an unknown column: zCol_space length(r  r—   T©Ústrict)r„   rp   r]   Úupdater	  ÚfromkeysrÎ   rÏ   r   Úkeysr
  ro   Úzip)rh   rÑ   r¯   Úcolumns       ri   rß   z'DataFrameFormatter._initialize_colspace.  sX  € ð ÐØˆF‰FÝ˜	¥C­ :Ñ.Ô.ð 	KØ˜)�_ˆFØ�MŠM�$Ÿ-š-¨¬
Ô(:¸IÑFÔFÑGÔGÐGÐGÝ˜	¥7Ñ+Ô+ð 	KØ#Ÿ.š.Ñ*Ô*ð ð �Ø ¤Ô!3Ð3Ð3¸À"º¸Ý$ØOÀvÐOÐOñô ð øð ˆFˆFå�4”:Ô%Ñ&Ô&­#¨i©.¬.Ò8Ð8Ý ðN­¨I©¬ð Nð NÝ36°t´zÔ7IÑ3JÔ3JðNð Nð Nñô ð õ �#˜dœjÔ0°)ÀDÐIÑIÔIÑJÔJˆFØˆrk   c                ó–   — |                       ¦   «         s| j        S t          ¦   «         \  }}|                      |¦  «        r|S | j        S )z%Number of columns fitting the screen.)Ú_is_in_terminalr¿   r   Ú_is_screen_narrow)rh   r­   rÅ   s      ri   rå   z(DataFrameFormatter._calc_max_cols_fittedF  sP   € à×#Ò#Ñ%Ô%ð 	!Ø”=Ð å$Ñ&Ô&‰ˆˆqØ×!Ò! %Ñ(Ô(ð 	!ØˆLà”=Ð rk   c                ó  — |                       ¦   «         rSt          ¦   «         \  }}| j        dk    r||                      ¦   «         z
  S |                      |¦  «        r|}n| j        }n| 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)rh   rÅ   rÈ   rX   s       ri   rç   z(DataFrameFormatter._calc_max_rows_fittedQ  sŒ   € ð ×ÒÑ!Ô!ð 	%Ý)Ñ+Ô+‰IˆAˆvØŒ} Ò!Ð!à × BÒ BÑ DÔ DÑDÐDà×$Ò$ VÑ,Ô,ð )Ø!��àœ=��à”}ˆHà×$Ò$ XÑ.Ô.Ð.rk   c                ór   — |r4t          | j        ¦  «        |k    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
        )ro   rÎ   rY   rq   )rh   rX   s     ri   r  z#DataFrameFormatter._adjust_max_rowsd  s<   € ð ð 	8Ý�D”J‘” (Ò*Ð*°´Ð*å˜tœ}¨hÑ7Ô7�Øˆrk   c                óH   — t          | j        dk    p
| j        dk    ¦  «        S )z/Check if the output is to be shown in terminal.r   )r\   r¿   rX   r”   s    ri   r  z"DataFrameFormatter._is_in_terminalr  s#   € å�D”M QÒ&Ð<¨$¬-¸1Ò*<Ñ=Ô=Ð=rk   c                ól   — t          | j        dk    ot          | j        j        ¦  «        |k    ¦  «        S ©Nr   )r\   r¿   ro   rÎ   rÏ   )rh   Ú	max_widths     ri   r  z$DataFrameFormatter._is_screen_narrowv  s.   € Ý�D”M QÒ&ÐN­3¨t¬zÔ/AÑ+BÔ+BÀYÒ+NÑOÔOÐOrk   c                ób   — t          | j        dk    ot          | j        ¦  «        |k    ¦  «        S r   )r\   rX   ro   rÎ   )rh   Ú
max_heights     ri   r  z#DataFrameFormatter._is_screen_shorty  s)   € Ý�D”M QÒ&ÐG­3¨t¬z©?¬?¸ZÒ+GÑHÔHÐHrk   c                ó�   — d}d}||z   }| j         r)|t          | j                             ¦   «         ¦  «        z  }| j        r|dz  }|S )z?Get number of rows occupied by prompt, dots and dimension info.rm   )rÁ   ro   rù   Ú
splitlinesrR   )rh   Údot_rowÚ
prompt_rowÚnum_rowss       ri   r  z0DataFrameFormatter._get_number_of_auxiliary_rows|  sZ   € àˆØˆ
Ø˜ZÑ'ˆàÔð 	?Ø�˜DÔ0×;Ò;Ñ=Ô=Ñ>Ô>Ñ>ˆHàŒ;ð 	Ø˜‰MˆHàˆrk   c                óv   — | j         r|                      ¦   «          | j        r|                      ¦   «          dS dS )zY
        Check whether the frame should be truncated. If so, slice the frame up.
        N)rõ   Ú_truncate_horizontallyrx   Ú_truncate_verticallyr”   s    ri   rƒ   zDataFrameFormatter.truncateŠ  sN   € ð Ô)ð 	*Ø×'Ò'Ñ)Ô)Ð)àÔ'ð 	(Ø×%Ò%Ñ'Ô'Ð'Ð'Ð'ð	(ð 	(rk   c                ó(  — | 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¦  «        r&g | j	        d|…         ¢| j	        | d…         ¢| _	        n7t          t          | j        ¦  «        }| j        j        dd…d|…f         | _        || _        dS )z´Remove columns, which are not to be displayed and adjust formatters.

        Attributes affected:
            - tr_frame
            - formatters
            - tr_col_num
        Nrn   rm   )ræ   ro   ré   rÏ   rs   rt   ru   rr   r„   rÔ   ÚlistÚtupler   rp   r¿   Ú
tr_col_num)rh   Úcol_numrz   r{   s       ri   r*  z)DataFrameFormatter._truncate_horizontally”  s	  € ð Ô#Ð/Ð/Ð/ØÔ&¨!Ñ+ˆØ�aŠ<ˆ<Ý�t”}Ô,Ñ-Ô-ˆDÝ”Y¥¤	¨'Ñ 2Ô 2µB´I¸dÀW¹nÈdÑ4SÔ4SÐTÑUÔUˆFØ œMÔ.¨q¨q¨q°&¨yÔ9ˆDŒMõ ˜$œ/­Dµ%¨=Ñ9Ô9ð ð#Ø”_ X g XÔ.ð#à”_ g X Y YÔ/ð#�”øõ
 �3 ¤Ñ.Ô.ˆGØ œMÔ.¨q¨q¨q°(°7°(¨{Ô;ˆDŒMØ&ˆŒˆˆrk   c                óˆ  — | j         €J ‚| j         dz  }|dk    rjt          | j        ¦  «        }t          j        t          j        |¦  «        t          j        ||z
  |¦  «        g¦  «        }| j        j        |         | _        n7t          t          | j	        ¦  «        }| j        j        d|…dd…f         | _        || _
        dS )z‚Remove rows, which are not to be displayed.

        Attributes affected:
            - tr_frame
            - tr_row_num
        Nrn   rm   )rè   ro   ré   rs   rt   ru   rr   r   rp   rX   rv   )rh   ry   rz   r{   s       ri   r+  z'DataFrameFormatter._truncate_vertically®  s²   € ð Ô#Ð/Ð/Ð/ØÔ&¨!Ñ+ˆØ�aŠ<ˆ<Ý�t”}Ñ%Ô%ˆDÝ”Y¥¤	¨'Ñ 2Ô 2µB´I¸dÀW¹nÈdÑ4SÔ4SÐTÑUÔUˆFØ œMÔ.¨vÔ6ˆDŒMˆMå�3 ¤Ñ.Ô.ˆGØ œMÔ.¨x°¨x¸¸¸¨{Ô;ˆDŒMØ!ˆŒˆˆrk   c                ó   ‡ — g }t          ‰ j        ¦  «        s�‰ j        s‰t          ‰ j        ¦  «        D ]r\  }}‰                      |¦  «        }t          |‰ j        t          ‰ j         	                    |d¦  «        ¦  «        ‰ j
        ¬¦  «        }|                     |¦  «         Œs|S t          ‰ j        ¦  «        r t          t          t                   ‰ j        ¦  «        ‰ _        t          ‰ j        ¦  «        t          ‰ j        ¦  «        k    r:t#          dt          ‰ j        ¦  «        › dt          ‰ j        ¦  «        › d�¦  «        ‚d„ ‰ j        D ¦   «         }n‰                      ‰ j        ¦  «        }‰ j        r|D ]}|                     d¦  «         Œt          ‰ j        ¦  «        D ]Ò\  }}||         }t)          t          ‰ j         	                    |d¦  «        ¦  «        gˆ fd„|D ¦   «         ¢R Ž }‰                      |¦  «        }t          |‰ j        |‰ j
        ¬	¦  «        }t)          g ˆ fd
„|D ¦   «         ¢|‘R Ž }	‰ j
                             ||	‰ j        ¬¦  «        }|                     ||z   ¦  «         ŒÓ|S )Nr   )ÚstringsrG   Úminimumrf   zWriting z cols but got z aliasesc                ó   — g | ]}|g‘ŒS r·   r·   )Ú.0Úlabels     ri   ú
<listcomp>zADataFrameFormatter._get_strcols_without_index.<locals>.<listcomp>×  s   € Ð<Ð<Ð< u˜E˜7Ð<Ð<Ð<rk   r}   c              3  óL   •K  — | ]}‰j                              |¦  «        V — Œd S rÝ   ©rf   ro   ©r6  Úxrh   s     €ri   ú	<genexpr>z@DataFrameFormatter._get_strcols_without_index.<locals>.<genexpr>â  s/   øè è € Ð0RÐ0RÀQ°´·²¸a±´Ð0RÐ0RÐ0RÐ0RÐ0RÐ0Rrk   )r4  rf   c              3  óL   •K  — | ]}‰j                              |¦  «        V — Œd S rÝ   r:  r;  s     €ri   r=  z@DataFrameFormatter._get_strcols_without_index.<locals>.<genexpr>é  s/   øè è € Ð@Ð@°˜DœHŸLšL¨™OœOÐ@Ð@Ð@Ð@Ð@Ð@rk   rž   )r   rR   Ú	enumerateré   Ú
format_colÚ_make_fixed_widthrG   rp   rÑ   Úgetrf   Úappendr   r-  r]   ro   rÏ   r
  Ú_get_formatted_column_labelsr   Úmax)
rh   rî   ÚiÚcr«   Ústr_columnsr<  ÚcheaderÚheader_colwidthÚmax_lens
   `         ri   rì   z-DataFrameFormatter._get_strcols_without_indexÀ  s©  ø€ Ø#%ˆå˜DœKÑ(Ô(ð 
	°´ð 
	Ý! $¤-Ñ0Ô0ð +ð +‘��1Ø!Ÿ_š_¨QÑ/Ô/�
Ý.Ø&Ø œLÝ ¤× 2Ò 2°1°aÑ 8Ô 8Ñ9Ô9Øœð	ñ ô �
ð —’˜zÑ*Ô*Ð*Ð*ØˆNå˜œÑ$Ô$ð 
	Kå�t¥Cœy¨$¬+Ñ6Ô6ˆDŒKÝ�4”;ÑÔ¥3 t¤|Ñ#4Ô#4Ò4Ð4Ý ð:�s 4¤<Ñ0Ô0ð :ð :Ý" 4¤;Ñ/Ô/ð:ð :ð :ñô ð ð =Ð<°´Ð<Ñ<Ô<ˆKˆKà×;Ò;¸D¼MÑJÔJˆKàÔ"ð 	Ø ð ð �Ø—’˜‘”��å˜dœmÑ,Ô,ð 	1ð 	1‰DˆAˆqØ! !”nˆGÝ!Ý�D”N×&Ò& q¨!Ñ,Ô,Ñ-Ô-ðØ0RÐ0RÐ0RÐ0RÈ'Ð0RÑ0RÔ0Rðð ð ˆOð Ÿš¨Ñ+Ô+ˆJÝ*Ø˜DœL°/ÀtÄxðñ ô ˆJõ ÐRÐ@Ð@Ð@Ð@°ZÐ@Ñ@Ô@ÐRÀ/ÐRÐRÐRˆGØ”h×&Ò& w°¸d¼lÐ&ÑKÔKˆGØ�NŠN˜7 ZÑ/Ñ0Ô0Ð0Ð0àˆrk   rF  r�   c           
     óü   — | j         }|                      |¦  «        }t          |j        d d …|f         j        || j        | j        | j                             |j	        |         ¦  «        | j
        | j        ¬¦  «        S )N)rV   rT   ÚspacerÙ   r’   )ré   Ú_get_formatterr“   rr   r‰   rV   rT   rÑ   rB  rÏ   rÙ   rS   )rh   rF  rÎ   Ú	formatters       ri   r@  zDataFrameFormatter.format_colï  sz   € Ø”ˆØ×'Ò'¨Ñ*Ô*ˆ	ÝØŒJ�q�q�q˜!�tÔÔ$ØØÔ*Ø”;Ø”.×$Ò$ U¤]°1Ô%5Ñ6Ô6Ø”LØœ*ð
ñ 
ô 
ð 	
rk   ú	str | intúCallable | Nonec                ó*  — t          | j        t          t          f¦  «        r3t	          |¦  «        r"t          t          |¦  «        }| j        |         S d S t	          |¦  «        r|| j        vr| j        |         }| j                             |d ¦  «        S rÝ   )	r„   rÔ   r-  r.  r   r   rp   rÏ   rB  )rh   rF  s     ri   rN  z!DataFrameFormatter._get_formatterü  s„   € Ý�d”o­­e }Ñ5Ô5ð 		0Ý˜!‰}Œ}ð Ý�˜a‘L”L�Ø” qÔ)Ð)à�tå˜!‰}Œ}ð $ ¨$¬,Ð!6Ð!6Ø”L ”O�Ø”?×&Ò& q¨$Ñ/Ô/Ð/rk   c                ó€  ‡ — ddl m} |j        }t          |t          ¦  «        rO|                     dd¬¦  «        }‰ j        rt          |¦  «        r ||¦  «        }d„ t          |ddiŽD ¦   «         }nK| 	                    d¬¦  «        }ˆ fd	„t          t          |‰ j        j        d¬
¦  «        ¦  «        D ¦   «         }|S )Nr   )Úsparsify_labelsF)r™   r˜   c                ó,   — g | ]}t          |¦  «        ‘ŒS r·   )r-  ©r6  r<  s     ri   r8  zCDataFrameFormatter._get_formatted_column_labels.<locals>.<listcomp>  s   € ÐKÐKÐK q�4 ™7œ7ÐKÐKÐKrk   r  Trš   c                ót   •— g | ]4\  }\  }}‰                      |¦  «        st          |¦  «        rd |z   n|g‘Œ5S )ú )rN  r    )r6  rF  r<  rW   rh   s       €ri   r8  zCDataFrameFormatter._get_formatted_column_labels.<locals>.<listcomp>  sf   ø€ ð 	ð 	ð 	ñ "�A‘z˜˜5ð  ×.Ò.¨qÑ1Ô1ðÝ6FÀuÑ6MÔ6Mð�C˜!‘G�Gàðð	ð 	ð 	rk   r  )Úpandas.core.indexes.multirT  rÏ   r„   r-   r£   r™   ro   r  r¦   r?  rÎ   Údtypes)rh   rÎ   rT  rÏ   Úfmt_columnsrH  s   `     ri   rD  z/DataFrameFormatter._get_formatted_column_labels  sù   ø€ Ø=Ð=Ð=Ð=Ð=Ð=à”-ˆå�g�zÑ*Ô*ð 	Ø!×/Ò/¸ÈeÐ/ÑTÔTˆKØŒ}ð ;¥ [Ñ!1Ô!1ð ;Ø-˜o¨kÑ:Ô:�àKÐK­C°Ð,JÀTÐ,JÐ,JÐKÑKÔKˆKˆKà!×.Ò.¸EÐ.ÑBÔBˆKð	ð 	ð 	ð 	õ &/Ý˜ T¤ZÔ%6¸uÐEÑEÔEñ&ô &ð	ñ 	ô 	ˆKð Ðrk   c                ó$  ‡ ‡— d„ ‰ j                              ¦   «         D ¦   «         Š|j        }|j        }‰                      d¦  «        }t          |t          ¦  «        r#|                     ‰ j        ‰ j	        |¬¦  «        }n| 
                    ‰ j	        |¬¦  «        g}ˆˆ fd„|D ¦   «         } ‰ j        j        dg|¢R Ž                      d¦  «        }‰ j        rd„ ‰                      ¦   «         D ¦   «         }nd	g|j        z  }‰ j        r||z   S |S )
Nc                ó@   — i | ]\  }}|t          t          |¦  «        “ŒS r·   )r   rp   )r6  ÚkÚvs      ri   ú
<dictcomp>z;DataFrameFormatter._get_formatted_index.<locals>.<dictcomp>$  s&   € ÐHÐHÐH©¨¨A�Q��S !™œÐHÐHÐHrk   Ú	__index__)r™   r˜   rO  )r›   rO  c                óœ   •— g | ]H}t          t          t          |¦  «        d ‰                     dd¦  «        ‰j        ¬¦  «        ¦  «        ‘ŒIS )rD   r}   r   )rG   r4  rf   )r.  rA  r-  rB  rf   )r6  r<  rÑ   rh   s     €€ri   r8  z;DataFrameFormatter._get_formatted_index.<locals>.<listcomp>4  sf   ø€ ð 
ð 
ð 
ð õ Ý!Ý˜‘G”G V°Y·]²]À2ÀqÑ5IÔ5IÈtÌxðñ ô ñô ð
ð 
ð 
rk   rm   r�   c                ó,   — g | ]}t          |¦  «        ‘ŒS r·   ©r]   rV  s     ri   r8  z;DataFrameFormatter._get_formatted_index.<locals>.<listcomp>A  s   € ÐGÐGÐG Q�#˜a™&œ&ÐGÐGÐGrk   r}   )rÑ   ÚitemsrS   rÏ   rN  r„   r-   r£   r™   r   r¦   rf   r¤   r¥   r  Ú_get_column_name_listÚnlevelsrR   )	rh   rÎ   rS   rÏ   Úfmtrª   ÚadjoinedÚ
col_headerrÑ   s	   `       @ri   rí   z'DataFrameFormatter._get_formatted_index!  sX  øø€ ð IÐH°´×1EÒ1EÑ1GÔ1GÐHÑHÔHˆ	Ø”ˆØ”-ˆØ×!Ò! +Ñ.Ô.ˆå�e�ZÑ(Ô(ð 		Ø×+Ò+ØœØ"Ô5Øð ,ñ ô ˆIˆIð ×"Ò"°Ô0GÐSVÐ"ÑWÔWðˆIð
ð 
ð 
ð 
ð 
ð ð
ñ 
ô 
ˆ	ð #�4”8”? 1Ð1 yÐ1Ð1Ð1×7Ò7¸Ñ=Ô=ˆð Ô"ð 	0ØGÐG¨$×*DÒ*DÑ*FÔ*FÐGÑGÔGˆJˆJà˜ ¤Ñ/ˆJàŒ;ð 	Ø Ñ(Ð(àˆOrk   úlist[Hashable]c                óÜ   — g }| j         j        }t          |t          ¦  «        r%|                     d„ |j        D ¦   «         ¦  «         n#|                     |j        €dn|j        ¦  «         |S )Nc              3  ó"   K  — | ]
}|€dn|V — Œd S )Nr}   r·   )r6  rU   s     ri   r=  z;DataFrameFormatter._get_column_name_list.<locals>.<genexpr>N  s*   è è € ÐPÐP¸$˜t˜|˜˜°ÐPÐPÐPÐPÐPÐPrk   r}   )rÎ   rÏ   r„   r-   ÚextendÚnamesrC  rU   )rh   ro  rÏ   s      ri   rf  z(DataFrameFormatter._get_column_name_listJ  sn   € Ø "ˆØ”*Ô$ˆÝ�g�zÑ*Ô*ð 	GØ�LŠLÐPÐPÀ'Ä-ÐPÑPÔPÑPÔPÐPÐPà�LŠL˜wœ|Ð3˜˜¸¼ÑFÔFÐFØˆrk   rh  c                ó  — |�t          |¦  «        r|S t          |t          ¦  «        rUd|v r|S 	 |                     d¦  «        }|j        S # t          t
          t          f$ r}t	          d|›�¦  «        |‚d}~ww xY wt	          d¦  «        ‚)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)rh   rh  rÅ   Úes       ri   râ   z)DataFrameFormatter._validate_float_formatS  s«   € ð ˆ;�( 3™-œ-ˆ;ØˆJå�c�3ÑÔð 		XØ�cˆzˆzà�
ðXØŸ
š
 3™œ�AØœ:Ð%øÝ"¥H­jÐ9ð Xð Xð XÝ$Ð%OÈÐ%OÐ%OÑPÔPÐVWÐWøøøøðXøøøõ ÐDÑEÔEÐEs   °A ÁA;Á#A6Á6A;)NNTTrP   NNNNTNNNFrÍ   FT)&rÎ   rA   rÏ   rÐ   rÑ   rÒ   rR   rÓ   rS   r\   rT   r]   rÔ   rÕ   rG   r^   rV   rÖ   r™   r×   rØ   r\   rX   r_   rY   r_   r¿   r_   rÁ   r[   rÙ   r]   rÚ   r\   rÛ   r\   r`   ra   )r`   rê   ©r`   r\   r²   )r`   rp   )r™   r×   r`   r\   )rÔ   rÕ   r`   r<   )rG   r^   r`   r]   )rÏ   rÐ   r`   r,   )rÑ   rÒ   r`   r8   )r`   r_   )rX   r_   r`   r_   r±   )rF  rp   r`   r�   )rF  rP  r`   rQ  )rÎ   rA   r`   rê   )rÎ   rA   r`   r�   )r`   rk  )rh  rÖ   r`   rÖ   ))r¡   r´   rµ   r¶   rC   rM   rj   rð   Úpropertyró   rò   rõ   rx   rù   rû   rý   r   r  r  rã   rà   rá   rÞ   rß   rå   rç   r  r  r  r  r  rƒ   r*  r+  rì   r@  rN  rD  rí   rf  râ   r·   rk   ri   rÌ   rÌ   Ÿ  sÆ  € € € € € ðð ð !Ð(ˆgˆg b€GØÐÐ"2Ñ2Ñ2€Gð
  $Ø,0Ø-1ØØØ,0Ø"Ø/3Ø $Ø Ø#Ø#Ø#Ø&+ØØØð'--ð --ð --ð --ð --ð^
ð 
ð 
ð 
ð ð
ð 
ð 
ñ „Xð
ð
 ðTð Tð Tñ „XðTð ðYð Yð Yñ „XðYð ðWð Wð Wñ „XðWð ðSð Sð Sñ „XðSð ð,ð ,ð ,ñ „Xð,ð ð.ð .ð .ñ „Xð.ð ðNð Nð Nñ „XðNð ðPð Pð Pñ „XðPð ðFð Fð Fñ „XðFðð ð ð ð
ð ð ð ðð ð ð ð&ð &ð &ð &ðð ð ð ð0	!ð 	!ð 	!ð 	!ð/ð /ð /ð /ð&ð ð ð ð>ð >ð >ð >ðPð Pð Pð PðIð Ið Ið Iðð ð ð ð(ð (ð (ð (ð'ð 'ð 'ð 'ð4"ð "ð "ð "ð$-ð -ð -ð -ð^
ð 
ð 
ð 
ð
0ð 
0ð 
0ð 
0ðð ð ð ð2'ð 'ð 'ð 'ðRð ð ð ðFð Fð Fð Fð Fð Frk   rÌ   c                  ól   — e Zd ZdZd5d„Z	 	 	 	 	 	 	 d6d7d„Z	 	 	 d8d9d„Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d:d;d4„ZdS )<Ú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.
    rh  rÌ   r`   ra   c                ó   — || _         d S rÝ   )rh  )rh   rh  s     ri   rj   zDataFrameRenderer.__init__|  s   € ØˆŒˆˆrk   NFrd   ú"FilePath | WriteBuffer[str] | NoneÚencodingr^   Úclassesústr | list | tuple | NoneÚnotebookr\   Úborderúint | bool | NoneÚtable_idÚrender_linksc                ó”   — ddl m}m}	 |r|	n|}
 |
| 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)r~  r�  rƒ  r„  ©rd   r}  )Úpandas.io.formats.htmlr†  r‡  rh  r°   Úsave_to_buffer)rh   rd   r}  r~  r€  r�  rƒ  r„  r†  r‡  ÚKlassÚhtml_formatterÚstrings                ri   Úto_htmlzDataFrameRenderer.to_html  sŒ   € ðL	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð
 &.Ð@Ð!Ð!°=ˆà˜ØŒHØØØØ%ð
ñ 
ô 
ˆð  ×)Ò)Ñ+Ô+ˆÝ˜f¨#¸ÐAÑAÔAÐArk   rÂ   r_   c                ó~   — ddl m}  || 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�  rh  r°   rŠ  )rh   rd   r}  rÂ   r�  Ústring_formatterr�  s          ri   r°   zDataFrameRenderer.to_string¶  sS   € ð( 	=Ð<Ð<Ð<Ð<Ð<à*˜?¨4¬8À
ÐKÑKÔKÐØ!×+Ò+Ñ-Ô-ˆÝ˜f¨#¸ÐAÑAÔAÐArk   ú,ÚwÚinferú"Tr  Úpath_or_bufú7FilePath | WriteBuffer[bytes] | WriteBuffer[str] | NoneÚsepr]   rÏ   úSequence[Hashable] | NoneÚindex_labelúIndexLabel | NonerŸ   Úcompressionr9   ÚquotingÚ	quotecharÚlineterminatorÚ	chunksizeÚdate_formatÚdoublequoteÚ
escapecharÚerrorsÚstorage_optionsúStorageOptions | Nonec                óf  — 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        “Ž}|                     ¦   «          |rAt          |t          ¦  «        sJ ‚|                     ¦   «         }|                     ¦   «          |S dS )z;
        Render dataframe as comma-separated file.
        r   )ÚCSVFormatterNTFr—  r   r™  r}  r¥  r�  rž  r  r›  rŸ   r¡  rŸ  r¢  r£  r¤  r¦  rO  r·   )Úpandas.io.formats.csvsr©  r   rh  Úsaver„   ÚgetvalueÚclose)rh   r—  r}  r™  rÏ   r›  rŸ   r�  rž  rŸ  r   r¡  r¢  r£  r¤  r¥  r¦  r©  Úcreated_bufferÚcsv_formatterÚcontents                        ri   Úto_csvzDataFrameRenderer.to_csvÐ  sp  € ð, 	8Ð7Ð7Ð7Ð7Ð7àÐØ!ˆNÝ"™*œ*ˆKˆKà"ˆNà$˜ð 
ð 
ð 
Ø#˜ð
à)˜>ð
ð �ð
ð �Xð	
ð
 �6ð
ð $˜ð
ð �Gð
ð �ð
ð $˜ð
ð �ð
ð  �ið
ð  �ið
ð $˜ð
ð $˜ð
ð "�zð
ð  ,˜Oð!
ð" ”h�hð#
ˆð& 	×ÒÑÔÐàð 	Ý˜k­8Ñ4Ô4Ð4Ð4Ð4Ø!×*Ò*Ñ,Ô,ˆGØ×ÒÑÔÐØˆNàˆtrk   )rh  rÌ   r`   ra   )NNNFNNF)rd   r|  r}  r^   r~  r  r€  r\   r�  r‚  rƒ  r^   r„  r\   r`   r^   )NNN)rd   r|  r}  r^   rÂ   r_   r`   r^   )NNr“  NNr”  r•  Nr–  NNNTNr  N)"r—  r˜  r}  r^   r™  r]   rÏ   rš  r›  rœ  rŸ   r]   r�  r9   rž  r_   rŸ  r]   r   r^   r¡  r_   r¢  r^   r£  r\   r¤  r^   r¥  r]   r¦  r§  r`   r^   )r¡   r´   rµ   r¶   rj   rŽ  r°   r±  r·   rk   ri   rz  rz  k  sÞ   € € € € € ðð ð ð ð ð ð
 37Ø#Ø-1ØØ$(Ø#Ø"ð5Bð 5Bð 5Bð 5Bð 5Bðr 37Ø#Ø!%ð	Bð Bð Bð Bð Bð8 PTØ#ØØ-1Ø)-ØØ*1Ø"ØØ%)Ø $Ø"&Ø Ø!%ØØ15ð#9ð 9ð 9ð 9ð 9ð 9ð 9rk   rz  r�  r]   rd   r|  r}  r^   c                óÊ   — t          ||¬¦  «        5 }|                     | ¦  «         |€ |                     ¦   «         cddd¦  «         S 	 ddd¦  «         dS # 1 swxY w Y   dS )zQ
    Perform serialization. Write to buf or return as string if buf is None.
    )r}  N)Ú_get_bufferÚwriter¬  )r�  rd   r}  Úfds       ri   rŠ  rŠ    sÇ   € õ 
�S 8Ð	,Ñ	,Ô	,ð °Ø
�Š�ÑÔÐØˆ;à—;’;‘=”=ð	ð ð ð ñ ô ð ð ð
 ðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   ’+AÁ
AÁAÁAú1Generator[WriteBuffer[str]] | Generator[StringIO]c              #  ó¨  K  — | �t          | ¦  «        } nt          ¦   «         } |€d}n$t          | t          ¦  «        st	          d¦  «        ‚t          | d¦  «        r| V — dS t          | t          ¦  «        rNt          t          | ¦  «        ¦  «         t          | d|d¬¦  «        5 }|V — ddd¦  «         dS # 1 swxY w Y   dS t          d¦  «        ‚)	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”  r}   )r}  Únewlinez1buf is not a file name and it has no write method)	r3   r   r„   r]   r
  Úhasattrr2   ÚopenÚ	TypeError)rd   r}  Úfs      ri   r³  r³    s1  è è € ð €Ý˜SÑ!Ô!ˆˆå‰jŒjˆàÐØˆˆÝ˜�SÑ!Ô!ð NÝÐLÑMÔMÐMåˆs�GÑÔð Mð ˆ	ˆ	ˆ	ˆ	ˆ	Ý	�C�Ñ	Ô	ð 	MÝ�s 3™xœxÑ(Ô(Ð(Ý�#�s X°rÐ:Ñ:Ô:ð 	¸að
 ˆGˆGˆGð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	õ ÐKÑLÔLÐLs   Â&B8Â8B<Â?B<rP   rE   rÍ   TÚvaluesr5   rO  rQ  rV   rÖ   rT   Údigitsr_   rM  ústr | int | NonerG   rÙ   r’   r×   rž  Úfallback_formatterr�   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          | ¦  «        } nmt          | j        t          ¦  «        rt          }nKt          j        | j        d¦  «        rt          }n)t          j        | j        d¦  «        rt          }nt          }|€d}|€t!          d¦  «        }|€t!          d¦  «        } || |||||||||	|
¬	¦  «        }|                     ¦   «         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ÚiuNé   rc   údisplay.precision)
r¾  rT   rV   rO  rM  rG   rÙ   r’   rž  rÀ  )r   Úis_np_dtyperW   Ú_Datetime64Formatterr   r(   r„   r#   Ú_Datetime64TZFormatterÚ_Timedelta64Formatterr*   r$   Ú_ExtensionArrayFormatterÚFloatArrayFormatterÚ_IntArrayFormatterÚ_GenericArrayFormatterr   Ú
get_result)r½  rO  rV   rT   r¾  rM  rG   rÙ   r’   rž  rÀ  Ú	fmt_klassÚfmt_objs                ri   r“   r“   B  s]  € õR „�v”| SÑ)Ô)ð +Ý(ˆ	Ý•m VÑ,Ô,ˆˆÝ	�F”L¥/Ñ	2Ô	2ð +Ý*ˆ	Ý•m VÑ,Ô,ˆˆÝ	Œ˜œ sÑ	+Ô	+ð 
+Ý)ˆ	Ý•n fÑ-Ô-ˆˆÝ	�F”L¥.Ñ	1Ô	1ð +Ý,ˆ	ˆ	Ý	Œ˜œ tÑ	,Ô	,ð +Ý'ˆ	ˆ	Ý	Œ˜œ tÑ	,Ô	,ð +Ý&ˆ	ˆ	å*ˆ	à€}ØˆàÐÝ!Ð"8Ñ9Ô9ˆà€~ÝÐ/Ñ0Ô0ˆàˆiØØØØ!ØØØØØ#ØØ-ðñ ô €Gð ×ÒÑÔÐrk   c                  ó>   — e Zd Z	 	 	 	 	 	 	 	 	 	 	 d#d$d„Zd%d!„Zd%d"„ZdS )&rÏ  é   NrP   rÆ  rE   rÍ   Tr½  r5   r¾  rp   rO  rQ  rT   r]   rM  rP  rV   rÖ   rG   rÙ   rž  r_   Úfixed_widthr\   r’   r×   rÀ  r`   ra   c                ó®   — || _         || _        || _        || _        || _        || _        || _        || _        |	| _        |
| _	        || _
        || _        d S rÝ   )r½  r¾  rT   rM  rO  rV   rG   rÙ   rž  rÕ  r’   rÀ  )rh   r½  r¾  rO  rT   rM  rV   rG   rÙ   rž  rÕ  r’   rÀ  s                ri   rj   z_GenericArrayFormatter.__init__˜  sb   € ð ˆŒØˆŒØˆŒØˆŒ
Ø"ˆŒØ(ˆÔØˆŒØˆŒØˆŒØ&ˆÔØ*ˆÔØ"4ˆÔÐÐrk   r�   c                óT   — |                       ¦   «         }t          || j        ¦  «        S rÝ   )Ú_format_stringsrA  rG   )rh   r«   s     ri   rÐ  z!_GenericArrayFormatter.get_result´  s%   € Ø×)Ò)Ñ+Ô+ˆ
Ý  ¨T¬\Ñ:Ô:Ð:rk   c                óò  ‡ ‡‡— ‰ j         €&t          d¦  «        }|€t          d¦  «        Šˆfd„}n‰ j         }‰ j        �‰ j        ŠnD‰ j        �‰ j        Šn5‰ j        d uo‰ j        t
          k    }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        }|€|                     ¦   «         }g }t3          |¦  «        D ]š\  }	}
||	         r‰ j        �$|r"|                     d
 ||
¦  «        › �¦  «         Œ8||	         r|                      ||
¦  «        ¦  «         Œ_|du rd}nd}|                     |                      ||
¦  «        ¬¦  «        ¦  «         Œ›|S )Nrc   rÇ  c                ó0   •— t          | d‰d›d�›¦  «        S )Nz .Údr¼  )Ú_trim_zeros_single_float)r<  Ú	precisions    €ri   ú<lambda>z8_GenericArrayFormatter._format_strings.<locals>.<lambda>½  s)   ø€ Õ)AØÐ+˜IÐ+Ð+Ð+Ð+Ð+ñ*ô *€ rk   r~   )r‚   Úquote_stringsc                óx  •— ‰j         �wt          | ¦  «        rht          | ¦  «        rY| €dS | t          u rt	          t          ¦  «        S | t
          u s&t          | t          j        t          j	        f¦  «        rdS ‰j         S t          | t          ¦  «        rt	          | ¦  «        S t	           ‰| ¦  «        ¦  «        S )Nra   r   )rT   r!   r%   r   r]   r   r„   rs   Ú
datetime64Útimedelta64r+   )r<  rO  rh   s    €€ri   Ú_formatz7_GenericArrayFormatter._format_strings.<locals>._formatÏ  s¡   ø€ ØŒ{Ð&­9°Q©<¬<Ð&½DÀ¹G¼GÐ&Ø�9Ø!˜6Ø�"�W�WÝ�r™7œ7�NØ�#�X�X¥¨Aµ´½r¼~Ð/NÑ!OÔ!O�XØ ˜5Ø”{Ð"Ý˜A�|Ñ,Ô,ð )Ý˜1‘v”v�õ ˜9˜9 Q™<œ<Ñ(Ô(Ð(rk   z=ExtensionArray formatting should use _ExtensionArrayFormatterrm   )ÚaxisrX  Fz{v}z {v})r_  )rV   r   rO  rÀ  rž  r
   r   r4   r‡   r½  r„   rs   Úndarrayr»  r   Ú	map_inferr   rÿ   r&   r.  Úrangero   Úshaper’   Úanyr?  rC  rs  )rh   rV   rß  rã  ÚvalsÚinferredÚis_float_typer’   r«   rF  r_  ÚtplrO  rÝ  s   `           @@ri   rØ  z&_GenericArrayFormatter._format_strings¸  sH  øøø€ ØÔÐ$Ý%Ð&<Ñ=Ô=ˆLØÐ#Ý&Ð':Ñ;Ô;�	ð ð  ð  ð  �øð  Ô,ˆLàŒ>Ð%ØœˆIˆIØÔ$Ð0ØÔ/ˆIˆIà œL°Ð4ÐS¸¼ÍÒ9SˆMÝÝÔ%Ø/Ø+ðñ ô ˆIð	)ð 	)ð 	)ð 	)ð 	)ð 	)ð Œ{ˆÝ˜$¥¤
Ñ+Ô+ð 	ÝØOñô ð õ ”= ¥xÑ0Ô0ˆàåŒf•U˜4‘[”[¥u­U°1µc¸$¼*±o´oÑ-FÔ-FÑ'GÔ'GÐHÑHÔHñIð 	ð
 Ô*ˆØÐ Ø)×-Ò-Ñ/Ô/ˆMàˆ
Ý˜d‘O”Oð 	<ð 	<‰DˆAˆqØ! !Ô$ð <¨¬Ð(BÈÐ(BØ×!Ò!Ð"2 g g¨a¡j¤jÐ"2Ð"2Ñ3Ô3Ð3Ð3Ø˜qÔ!ð 	<Ø×!Ò! , ,¨q¡/¤/Ñ2Ô2Ð2Ð2à  EÐ)Ð)ð  �C�Cà �CØ×!Ò! #§*¢*¨w¨w°q©z¬z *Ñ":Ô":Ñ;Ô;Ð;Ð;àÐrk   )rÔ  NrP   rÆ  NrE   rÍ   NTTN)r½  r5   r¾  rp   rO  rQ  rT   r]   rM  rP  rV   rÖ   rG   r]   rÙ   r]   rž  r_   rÕ  r\   r’   r×   rÀ  rQ  r`   ra   r³   )r¡   r´   rµ   rj   rÐ  rØ  r·   rk   ri   rÏ  rÏ  —  s~   € € € € € ð Ø%)ØØØ/3ØØØ"Ø Ø%)Ø.2ð5ð 5ð 5ð 5ð 5ð8;ð ;ð ;ð ;ðDð Dð Dð Dð Dð Drk   rÏ  c                  ó>   ‡ — e Zd Zdˆ fd„Z	 	 ddd
„Zdd„Zdd„Zˆ xZS )rÍ  r`   ra   c                ó¾   •—  t          ¦   «         j        |i |¤Ž | j        �7| j        €2d| _        t          | j        ¦  «        r| j        | _        d | _        d S d S d S d S ©NF)Úsuperrj   rV   rO  rÕ  rr  )rh   ÚargsÚkwargsÚ	__class__s      €ri   rj   zFloatArrayFormatter.__init__   s|   ø€ Ø�‰ŒÔ˜$Ð) &Ð)Ð)Ð)ð ÔÐ(¨T¬^Ð-Cà$ˆDÔÝ˜Ô)Ñ*Ô*ð )Ø!%Ô!2�”Ø$(�Ô!Ð!Ð!ð )Ð(Ð-CÐ-Cð)ð )rk   NrV   rÖ   Ú	thresholdúfloat | Noner   c                ó|   ‡ ‡‡‡‡— ‰€‰ j         Š‰rˆˆ fd„Šnˆ fd„Š‰ j        dk    rˆˆ fd„Šn‰Š‰€‰S ˆˆ ˆfd„}|S )z;Returns a function to be applied on each value to format itNc                óP   •— ‰€J ‚t          | ¦  «        r ‰| ¬¦  «        n‰j        S )N)Úvalue)r&   rT   )r_  rV   rh   s    €€ri   Úbase_formatterz<FloatArrayFormatter._value_formatter.<locals>.base_formatter  s;   ø€ Ø#Ð/Ð/Ð/õ ˜Q‘x”xð%�L�L qÐ)Ñ)Ô)Ð)àœðrk   c                óN   •— t          | ¦  «        rt          | ¦  «        n‰j        S rÝ   )r&   r]   rT   )r_  rh   s    €ri   rú  z<FloatArrayFormatter._value_formatter.<locals>.base_formatter+  s    ø€ Ý!& q¡¤Ð:•s˜1‘v”v�v¨t¬{Ð:rk   rÍ   c                óN   •—  ‰| ¦  «                              d‰j        d¦  «        S )NrÍ   rm   )ÚreplacerÙ   )r_  rú  rh   s    €€ri   Údecimal_formatterz?FloatArrayFormatter._value_formatter.<locals>.decimal_formatter0  s'   ø€ Ø%�~ aÑ(Ô(×0Ò0°°d´lÀAÑFÔFÐFrk   c                ó‚   •— t          | ¦  «        r)t          | ¦  «        ‰k    r ‰| ¦  «        S  ‰d¦  «        S ‰j        S )Ng        )r&   ÚabsrT   )rù  rþ  rh   rõ  s    €€€ri   rO  z7FloatArrayFormatter._value_formatter.<locals>.formatter9  sL   ø€ Ý�U‰|Œ|ð #Ý�u‘:”: 	Ò)Ð)Ø,Ð,¨UÑ3Ô3Ð3à,Ð,¨SÑ1Ô1Ð1à”{Ð"rk   )rV   rÙ   )rh   rV   rõ  rO  rú  rþ  s   ``` @@ri   Ú_value_formatterz$FloatArrayFormatter._value_formatter  sÕ   øøøøø€ ð ÐØÔ,ˆLð ð 	;ð	ð 	ð 	ð 	ð 	ð 	ð 	ð;ð ;ð ;ð ;ð ;ð Œ<˜3ÒÐðGð Gð Gð Gð Gð Gð Gð !/ÐàÐØ$Ð$ð	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð Ðrk   ú
np.ndarrayc                óø  ‡ ‡
‡‡— dd	„Šdd
„Š
‰ j         � ‰‰ j        ‰ j         ‰ j        ¦  «        S ‰ j        rt	          d¦  «        ŠndŠˆ
ˆˆ ˆfd„}‰ j        €9‰ j        r*‰ j        du rd}nd}t          |j        ‰ j	        ¬¦  «        }n‰ j        }nˆ fd„} ||¦  «        }‰ j        s|S t          |¦  «        dk    r(t          d„ |D ¦   «         ¦  «        }|‰ j	        dz   k    }nd}t          j        ‰ j        ¦  «        }|dk                         ¦   «         }|d‰ j	         z  k     |dk    z                       ¦   «         }	|	s|r6|r4‰ 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
        r½  r5   rO  r   rT   r]   r`   r  c                ó  ‡‡— t          | ¦  «        }t          j        ˆˆfd„t          |                      ¦   «         |                     ¦   «         d¬¦  «        D ¦   «         ¦  «                             | j        ¦  «        }|S )Nc                ó4   •— g | ]\  }}|s ‰|¦  «        n‰‘ŒS r·   r·   )r6  ÚvalrÃ  rO  rT   s      €€ri   r8  zWFloatArrayFormatter.get_result_as_array.<locals>.format_with_na_rep.<locals>.<listcomp>O  s>   ø€ ð ð ð á˜˜Qð +,Ð7�I�I˜c‘N”N�N°ðð ð rk   Tr  )r%   rs   Úarrayr  ÚravelÚreshaperè  )r½  rO  rT   ÚmaskÚ	formatteds    ``  ri   Úformat_with_na_repzCFloatArrayFormatter.get_result_as_array.<locals>.format_with_na_repJ  sˆ   øø€ õ ˜‘<”<ˆDÝœðð ð ð ð å"% f§l¢l¡n¤n°d·j²j±l´lÈ4Ð"PÑ"PÔ"Pðñ ô ñô ÷
 Šg�f”lÑ#Ô#ð ð Ðrk   c                ó2  — t          j        | ¦  «                             ¦   «         }t          j        | ¦  «                             ¦   «         }t	          |¦  «        t	          |¦  «        }}g }t          |                      ¦   «         ||||d¬¦  «        D ]Ø\  }}	}
}}|s!|s|                      ||¦  «        ¦  «         Œ+|s%|                      ||	¦  «        › d|› d�¦  «         ŒR|si ||
¦  «                             ¦   «         }|                     d¦  «        r|                     |› |› d�¦  «         Œ¡|                     |› d|› d�¦  «         Œ½|                     |› d|› d�¦  «         ŒÙt          j	        |¦  «         
                    | j        ¦  «        S )NTr  ú+Újú-)rs   Úrealr  Úimagr%   r  rC  ÚstripÚ
startswithr  r	  rè  )r½  rO  rT   Úreal_valuesÚimag_valuesÚ	real_maskÚ	imag_maskÚformatted_lstr  Úreal_valÚimag_valÚre_isnaÚim_isnaÚimag_formatteds                 ri   Úformat_complex_with_na_repzKFloatArrayFormatter.get_result_as_array.<locals>.format_complex_with_na_repV  sÖ  € õ œ' &™/œ/×/Ò/Ñ1Ô1ˆKÝœ' &™/œ/×/Ò/Ñ1Ô1ˆKÝ#'¨Ñ#4Ô#4µd¸;Ñ6GÔ6G�yˆIØˆMÝ=@Ø—’‘”ØØØØØð>ñ >ô >ð @ð @Ñ9��X˜x¨°'ð ð @ wð @Ø!×(Ò(¨¨°3©¬Ñ8Ô8Ð8Ð8Ø ð 
@Ø!×(Ò(¨I¨I°hÑ,?Ô,?Ð)KÐ)KÀ&Ð)KÐ)KÐ)KÑLÔLÐLÐLØ ð @à%. Y¨xÑ%8Ô%8×%>Ò%>Ñ%@Ô%@�NØ%×0Ò0°Ñ5Ô5ð LØ%×,Ò,°Ð-I¸Ð-IÐ-IÐ-IÑJÔJÐJÐJà%×,Ò,°Ð-JÐ-J¸Ð-JÐ-JÐ-JÑKÔKÐKÐKà!×(Ò(¨FÐ)>Ð)>°VÐ)>Ð)>Ð)>Ñ?Ô?Ð?Ð?Ý”8˜MÑ*Ô*×2Ò2°6´<Ñ@Ô@Ð@rk   Nzdisplay.chop_thresholdc                óf  •— ‰                      | ‰	¦  «        }‰j        dk    r
d‰j        z   n‰j        }‰j        }t	          |¦  «        }|r ‰|||¦  «        }n ‰|||¦  «        }‰j        rC|rt          |‰j        ¦  «        }nt          |‰j        ¦  «        }t          j
        |d¬¦  «        S |S )NrD   rX  Úobject©rW   )r  rG   rT   r½  r   rÕ  Ú_trim_zeros_complexrÙ   Ú_trim_zeros_floatrs   Úasarray)
rV   rO  rT   r½  Ú
is_complexr¯   r  r  rh   rõ  s
         €€€€ri   Úformat_values_withzCFloatArrayFormatter.get_result_as_array.<locals>.format_values_with}  sÖ   ø€ Ø×-Ò-¨l¸IÑFÔFˆIð +/¬,¸&Ò*@Ð*@�S˜4œ;Ñ&Ð&ÀdÄkˆFð ”[ˆFÝ)¨&Ñ1Ô1ˆJð ð GØ3Ð3°F¸IÀvÑNÔN��à+Ð+¨F°I¸vÑFÔF�àÔð :Øð EÝ0°¸¼ÑFÔF�F�Få.¨v°t´|ÑDÔD�FÝ”z &°Ð9Ñ9Ô9Ð9àˆMrk   Tz{value: .{digits:d}f}z{value:.{digits:d}f})r¾  c                ó   •— ‰j         | z  S rÝ   )rV   )rù  rh   s    €ri   rÞ  z9FloatArrayFormatter.get_result_as_array.<locals>.<lambda>¥  s   ø€ ¨Ô):¸UÑ)B€ rk   r   c              3  ó4   K  — | ]}t          |¦  «        V — Œd S rÝ   ©ro   rV  s     ri   r=  z:FloatArrayFormatter.get_result_as_array.<locals>.<genexpr>±  s(   è è € Ð:Ð: A�˜Q™œÐ:Ð:Ð:Ð:Ð:Ð:rk   é   Fg    €„.Aé
   z{value: .{digits:d}e}z{value:.{digits:d}e})r½  r5   rO  r   rT   r]   r`   r  )rO  r½  rT   rÕ  r   rV   r’   r   rs  r¾  ro   rE  rs   r   ré  )rh   r'  Úfmt_strrV   Úformatted_valuesÚmaxlenÚtoo_longÚabs_valsÚhas_large_valuesÚhas_small_valuesr  r  rõ  s   `         @@@ri   Úget_result_as_arrayz'FloatArrayFormatter.get_result_as_arrayD  s  øøøø€ ð
	ð 
	ð 
	ð 
	ð	Að 	Að 	Að 	Að< Œ>Ð%Ø%Ð% d¤k°4´>À4Ä;ÑOÔOÐOàÔð 	Ý"Ð#;Ñ<Ô<ˆIˆIàˆIð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð< ÔÐ$ØÔð 1ØÔ%¨Ð-Ð-Ø5�G�Gà4�GÝ& w¤~¸d¼kÐJÑJÔJ��à#Ô0��àBÐBÐBÐBˆLà-Ð-¨lÑ;Ô;ÐàÔð 	$Ø#Ð#õ ÐÑ Ô  1Ò$Ð$ÝÐ:Ð:Ð)9Ð:Ñ:Ô:Ñ:Ô:ˆFØ ¤¨a¡Ò/ˆHˆHàˆHå”6˜$œ+Ñ&Ô&ˆð % sšN×/Ò/Ñ1Ô1ÐØ%¨°´¨|Ñ(<Ò<ÀÈAÂÑN×SÒSÑUÔUÐàð 	@ ð 	@Ð-=ð 	@ØÔ! TÐ)Ð)Ø1��à0�Ý" 7¤>¸$¼+ÐFÑFÔFˆLØ1Ð1°,Ñ?Ô?ÐàÐrk   r�   c                óD   — t          |                      ¦   «         ¦  «        S rÝ   )r-  r4  r”   s    ri   rØ  z#FloatArrayFormatter._format_stringsÇ  s   € Ý�D×,Ò,Ñ.Ô.Ñ/Ô/Ð/rk   r±   ©NN)rV   rÖ   rõ  rö  r`   r   )r`   r  r³   )r¡   r´   rµ   rj   r  r4  rØ  Ú__classcell__©rô  s   @ri   rÍ  rÍ  ÿ  sŒ   ø€ € € € € ð
)ð 
)ð 
)ð 
)ð 
)ð 
)ð 04Ø"&ð6ð 6ð 6ð 6ð 6ðpA ð A ð A ð A ðF0ð 0ð 0ð 0ð 0ð 0ð 0ð 0rk   rÍ  c                  ó   — e Zd Zdd„ZdS )rÎ  r`   r�   c                ó`   ‡— | j         du rd„ }nd„ }| j        p|Šˆfd„| j        D ¦   «         }|S )NFc                ó2   — | d›                      | ¬¦  «        S )NrÛ  ©r<  ©rs  r<  s    ri   rÞ  z4_IntArrayFormatter._format_strings.<locals>.<lambda>Î  s   € ¨ h h§o¢o¸ oÑ&:Ô&:€ rk   c                ó2   — | d›                      | ¬¦  «        S )Nz dr<  r=  r<  s    ri   rÞ  z4_IntArrayFormatter._format_strings.<locals>.<lambda>Ð  s   € ¨ i i×&6Ò&6¸Ð&6Ñ&;Ô&;€ rk   c                ó&   •— g | ]} ‰|¦  «        ‘ŒS r·   r·   ©r6  r<  rO  s     €ri   r8  z6_IntArrayFormatter._format_strings.<locals>.<listcomp>Ò  s!   ø€ Ð8Ð8Ð8 q�i�i ‘l”lÐ8Ð8Ð8rk   )r’   rO  r½  )rh   Úformatter_strr«   rO  s      @ri   rØ  z"_IntArrayFormatter._format_stringsÌ  sP   ø€ ØÔ Ð&Ð&Ø:Ð:ˆMˆMà;Ð;ˆMØ”NÐ3 mˆ	Ø8Ð8Ð8Ð8¨D¬KÐ8Ñ8Ô8ˆ
ØÐrk   Nr³   )r¡   r´   rµ   rØ  r·   rk   ri   rÎ  rÎ  Ë  s(   € € € € € ðð ð ð ð ð rk   rÎ  c                  ó:   ‡ — e Zd ZU ded<   	 	 ddˆ fd
„Zdd„Zˆ xZS )rÉ  r(   r½  r   NÚnat_repr]   r¢  ra   r`   c                óX   •—  t          ¦   «         j        |fi |¤Ž || _        || _        d S rÝ   )rñ  rj   rC  r¢  )rh   r½  rC  r¢  ró  rô  s        €ri   rj   z_Datetime64Formatter.__init__Ù  s9   ø€ ð 	�‰ŒÔ˜Ð*Ð* 6Ð*Ð*Ð*ØˆŒØ&ˆÔÐÐrk   r�   c                ó¦   ‡ — ‰ j         }‰ j        �ˆ fd„|D ¦   «         S |                     ‰ j        ‰ j        ¬¦  «        }|                     ¦   «         S )z&we by definition have DO NOT have a TZNc                ó:   •— g | ]}‰                      |¦  «        ‘ŒS r·   )rO  r;  s     €ri   r8  z8_Datetime64Formatter._format_strings.<locals>.<listcomp>é  s%   ø€ Ð6Ð6Ð6¨!�D—N’N 1Ñ%Ô%Ð6Ð6Ð6rk   )rT   r¢  )r½  rO  Ú_format_native_typesrC  r¢  Útolist)rh   r½  r«   s   `  ri   rØ  z$_Datetime64Formatter._format_stringsä  sd   ø€ à”ˆàŒ>Ð%Ø6Ð6Ð6Ð6¨vÐ6Ñ6Ô6Ð6à×0Ò0Ø”<¨TÔ-=ð 1ñ 
ô 
ˆ
ð × Ò Ñ"Ô"Ð"rk   ©r   N)r½  r(   rC  r]   r¢  ra   r`   ra   r³   ©r¡   r´   rµ   Ú__annotations__rj   rØ  r7  r8  s   @ri   rÉ  rÉ  Ö  sl   ø€ € € € € € ØÐÐÑð
 Ø ð		'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð
#ð 
#ð 
#ð 
#ð 
#ð 
#ð 
#ð 
#rk   rÉ  c                  ó"   — e Zd ZU ded<   dd„ZdS )rÌ  r)   r½  r`   r�   c                ód  — | j         }| j        }d }|€|                     d¬¦  «        }t          |t          ¦  «        r|                     ¦   «         }nt          j        |t          ¬¦  «        }t          ||| j
        | j        | j        | j        | j        | j        | j        | j        |¬¦  «        }|S )NT)Úboxedr"  )	rV   rT   r¾  rM  rG   rÙ   r’   rž  rÀ  )r½  rO  Ú
_formatterr„   r'   Ú_internal_get_valuesrs   r%  r!  r“   rV   rT   r¾  rM  rG   rÙ   r’   rž  )rh   r½  rO  rÀ  r  r«   s         ri   rØ  z(_ExtensionArrayFormatter._format_stringsô  s»   € Ø”ˆà”Nˆ	Ø!ÐØÐØ!'×!2Ò!2¸Ð!2Ñ!>Ô!>Ðå�f�kÑ*Ô*ð 	5à×/Ò/Ñ1Ô1ˆEˆEå”J˜v­VÐ4Ñ4Ô4ˆEå!ØØØÔ*Ø”;Ø”;Ø”*Ø”LØ”LØÔ,Ø”LØ1ð
ñ 
ô 
ˆ
ð Ðrk   Nr³   ©r¡   r´   rµ   rK  rØ  r·   rk   ri   rÌ  rÌ  ñ  s6   € € € € € € ØÐÐÑðð ð ð ð ð rk   rÌ  Úpercentilesúnp.ndarray | Sequence[float]c                ó®  — t          | ¦  «        dk    rg S t          j        | ¦  «        } t          | ¦  «        r0t          j        | dk    ¦  «        rt          j        | dk    ¦  «        st          d¦  «        ‚d| z  } t          | ¦  «        }|                      |¦  «                             t          ¦  «        }t          j
        || ¦  «        }t          j        |¦  «        r&|                     t          ¦  «        }d„ |D ¦   «         S t          j        | ¦  «        }t          |¦  «        }t          j        | t          ¬¦  «        }| |                              ¦   «                              t          ¦  «                             t          ¦  «        ||<   | |                               |¦  «                             t          ¦  «        || <   d„ |D ¦   «         S )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   rm   z/percentiles should all be in the interval [0,1]éd   c                ó   — g | ]}|d z   ‘ŒS ©rq  r·   ©r6  rF  s     ri   r8  z&format_percentiles.<locals>.<listcomp>I  s   € Ð%Ð%Ð%˜A��C‘Ð%Ð%Ð%rk   r"  c                ó   — g | ]}|d z   ‘ŒS rW  r·   rX  s     ri   r8  z&format_percentiles.<locals>.<listcomp>Q  s   € Ð!Ð!Ð!˜ˆA�‰GÐ!Ð!Ð!rk   )ro   rs   r%  r    rÿ   r
  Úget_precisionÚroundÚastyperp   Úiscloser]   ÚuniqueÚ
empty_liker!  )rR  ÚprecÚpercentiles_round_typeÚint_idxÚoutÚunique_pctss         ri   Úformat_percentilesre    s¬  € õD ˆ;ÑÔ˜1ÒÐØˆ	å”*˜[Ñ)Ô)€Kõ ˜[Ñ)Ô)ðLåŒv�k QÒ&Ñ'Ô'ðLõ Œv�k QÒ&Ñ'Ô'ðLõ
 ÐJÑKÔKÐKà˜Ñ#€KÝ˜Ñ%Ô%€DØ(×.Ò.¨tÑ4Ô4×;Ò;½CÑ@Ô@ÐåŒjÐ/°Ñ=Ô=€Gå	„vˆg�„ð &Ø$×+Ò+­CÑ0Ô0ˆØ%Ð% Ð%Ñ%Ô%Ð%å”)˜KÑ(Ô(€KÝ˜Ñ%Ô%€DÝ
Œ-˜­6Ð
2Ñ
2Ô
2€CØ˜wÔ'×-Ò-Ñ/Ô/×6Ò6µsÑ;Ô;×BÒBÅ3ÑGÔG€Cˆ�Là  Ô)×/Ò/°Ñ5Ô5×<Ò<½SÑAÔA€Cˆˆ�MØ!Ð!˜SÐ!Ñ!Ô!Ð!rk   r  rp   c                ór  — | d         dk    r| d         nd }| d         dk     rd| d         z
  nd }t          j        | ||¬¦  «        }t          |¦  «        }t          j        t          j        t          j        |¦  «        ¦  «        ¦  «                             t          ¦  «         }t          d|¦  «        }|S )Nr   éÿÿÿÿrU  )Úto_beginÚto_endrm   )	rs   Úediff1dr   ÚfloorÚlog10rq   r\  rp   rE  )r  rh  ri  Údiffr`  s        ri   rZ  rZ  T  s�   € Ø  œ8 aš<˜<ˆu�QŒxˆx¨T€HØ % b¤	¨C¢ ˆS�5˜”9‰_ˆ_°T€FÝŒ:�e h°vÐ>Ñ>Ô>€DÝˆt‰9Œ9€DÝŒH•R”X�bœf T™lœlÑ+Ô+Ñ,Ô,×3Ò3µCÑ8Ô8Ð8€DÝˆq�$‰<Œ<€DØ€Krk   r   r<  úNaTType | TimestamprC  c                ó6   — | t           u r|S t          | ¦  «        S rÝ   )r   r]   ©r<  rC  s     ri   Ú_format_datetime64rq  ^  s   € Ø�C€x€xØˆõ ˆq‰6Œ6€Mrk   r¢  c                ól   — t          | t          ¦  «        r|S |r|                      |¦  «        S | j        S rÝ   )r„   r   ÚstrftimeÚ
_date_repr)r<  rC  r¢  s      ri   Ú_format_datetime64_dateonlyru  g  s?   € õ
 �!•WÑÔð Øˆàð Ø�zŠz˜+Ñ&Ô&Ð&ð Œ|Ðrk   Úis_dates_onlyr\   r   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)rC  r¢  )ru  )r<  r¢  rC  s    €€ri   rÞ  z'get_format_datetime64.<locals>.<lambda>}  s   ø€ Õ4Ø�w¨Kð
ñ 
ô 
€ rk   c                ó&   •— t          | ‰¬¦  «        S )N)rC  )rq  rp  s    €ri   rÞ  z'get_format_datetime64.<locals>.<lambda>�  s   ø€ Õ+¨A°wÐ?Ñ?Ô?€ rk   r·   )rv  rC  r¢  s    ``ri   Úget_format_datetime64rz  v  s?   øø€ ð ð @ð
ð 
ð 
ð 
ð 
ð 	
ð @Ð?Ð?Ð?Ð?rk   c                  ó"   — e Zd ZU ded<   dd„ZdS )rÊ  r(   r½  r`   r�   c                ó´   ‡— | j         j        }| j                              t          ¦  «        }| j        pt          || j        ¬¦  «        Šˆfd„|D ¦   «         }|S )zwe by definition have a TZ)r¢  c                ó&   •— g | ]} ‰|¦  «        ‘ŒS r·   r·   r@  s     €ri   r8  z:_Datetime64TZFormatter._format_strings.<locals>.<listcomp>Ž  s!   ø€ Ð3Ð3Ð3 q�i�i ‘l”lÐ3Ð3Ð3rk   )r½  Ú_is_dates_onlyr\  r!  rO  rz  r¢  )rh   Úidor½  r«   rO  s       @ri   rØ  z&_Datetime64TZFormatter._format_strings‡  si   ø€ àŒkÔ(ˆØ”×#Ò#¥FÑ+Ô+ˆØ”Nð 
Õ&;Ø˜TÔ-ð'
ñ '
ô '
ˆ	ð 4Ð3Ð3Ð3¨FÐ3Ñ3Ô3ˆ
àÐrk   Nr³   rQ  r·   rk   ri   rÊ  rÊ  „  s6   € € € € € € ØÐÐÑð	ð 	ð 	ð 	ð 	ð 	rk   rÊ  c                  ó8   ‡ — e Zd ZU ded<   	 ddˆ fd„Zdd
„Zˆ xZS )rË  r*   r½  r   rC  r]   r`   ra   c                óJ   •—  t          ¦   «         j        |fi |¤Ž || _        d S rÝ   )rñ  rj   rC  )rh   r½  rC  ró  rô  s       €ri   rj   z_Timedelta64Formatter.__init__–  s/   ø€ ð 	�‰ŒÔ˜Ð*Ð* 6Ð*Ð*Ð*ØˆŒˆˆrk   r�   c                óp   ‡— | j         pt          | j        | j        d¬¦  «        Šˆfd„| j        D ¦   «         S )NF)rC  Úboxc                ó&   •— g | ]} ‰|¦  «        ‘ŒS r·   r·   r@  s     €ri   r8  z9_Timedelta64Formatter._format_strings.<locals>.<listcomp>¤  s!   ø€ Ð2Ð2Ð2 �	�	˜!‘”Ð2Ð2Ð2rk   )rO  Úget_format_timedelta64r½  rC  )rh   rO  s    @ri   rØ  z%_Timedelta64Formatter._format_strings   sJ   ø€ Ø”Nð 
Õ&<ØŒK ¤°5ð'
ñ '
ô '
ˆ	ð 3Ð2Ð2Ð2 d¤kÐ2Ñ2Ô2Ð2rk   ©r   )r½  r*   rC  r]   r`   ra   r³   rJ  r8  s   @ri   rË  rË  “  si   ø€ € € € € € ØÐÐÑð
 ðð ð ð ð ð ð ð3ð 3ð 3ð 3ð 3ð 3ð 3ð 3rk   rË  Fr*   ústr | floatrƒ  c                ó6   ‡‡‡— | 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          | ¦  «        } |                      ‰¬¦  «        }‰rd|› d�}|S )Nr=  ú')r!   r%   r„   r   Ú
_repr_base)r<  r¯   rƒ  rs  rC  s     €€€ri   rO  z*get_format_timedelta64.<locals>._formatter¹  sm   ø€ Øˆ9� 1™œˆ9­$¨q©'¬'ˆ9ØˆNå˜!�YÑ'Ô'ð 	Ý˜!‘”ˆAð —’ V�Ñ,Ô,ˆØð 	#Ø"˜�]�]�]ˆFØˆrk   )r~  )r½  rC  rƒ  Ú	even_daysrO  rs  s    ``  @ri   r…  r…  §  sN   øøø€ ð Ô%€Iàð Øˆˆàˆðð ð ð ð ð ð ð Ðrk   r3  r4  rf   úprinting._TextAdjustment | Nonec                ó\  ‡‡‡‡— t          | ¦  «        dk    s|dk    r| S |€t          j        ¦   «         Šn|Št          ˆfd„| D ¦   «         ¦  «        Š|�t          |‰¦  «        Št	          d¦  «        Š‰�‰‰k    r‰Šdˆˆˆfd„Šˆfd	„| D ¦   «         } ‰                     | ‰|¬
¦  «        }|S )Nr   rÿ   c              3  óB   •K  — | ]}‰                      |¦  «        V — Œd S rÝ   r*  )r6  r<  Ú
adjustments     €ri   r=  z$_make_fixed_width.<locals>.<genexpr>×  s/   øè è € Ð5Ð5¨�*—.’. Ñ#Ô#Ð5Ð5Ð5Ð5Ð5Ð5rk   r½   r<  r]   r`   c                ól   •— ‰�0‰dk    ‰                      | ¦  «        ‰k    z  r| d ‰dz
  …         dz   } | S )Nrœ   r�   r*  )r<  r‘  Úconf_maxrK  s    €€€ri   Újustz_make_fixed_width.<locals>.justà  sG   ø€ ØÐØ˜1’ §¢°Ñ!2Ô!2°WÒ!<Ñ=ð -Ø�m˜ !™�mÔ$ uÑ,�Øˆrk   c                ó&   •— g | ]} ‰|¦  «        ‘ŒS r·   r·   )r6  r<  r”  s     €ri   r8  z%_make_fixed_width.<locals>.<listcomp>æ  s!   ø€ Ð(Ð(Ð(˜1ˆtˆt�A‰wŒwÐ(Ð(Ð(rk   rž   )r<  r]   r`   r]   )ro   r4   re   rE  r   rG   )	r3  rG   r4  rf   r¯   r‘  r“  r”  rK  s	        @@@@ri   rA  rA  É  sþ   øøøø€ õ ˆ7�|„|�qÒÐ˜G uÒ,Ð,Øˆà
€{ÝÔ,Ñ.Ô.ˆ
ˆ
àˆ
åÐ5Ð5Ð5Ð5¨WÐ5Ñ5Ô5Ñ5Ô5€GàÐÝ�g˜wÑ'Ô'ˆåÐ0Ñ1Ô1€HØÐ ¨(Ò 2Ð 2Øˆðð ð ð ð ð ð ð ð )Ð(Ð(Ð( Ð(Ñ(Ô(€GØ×Ò ¨°wÐÑ?Ô?€FØ€Mrk   Ústr_complexesc                ó  ‡	— g g }}| D ]w}t          j        d|¦  «        }|                     d                     |dd…         ¦  «        ¦  «         |                     d                     |dd…         ¦  «        ¦  «         Œxt	          | ¦  «        }t          ||z   |¦  «        }t	          |¦  «        dk    rg S t          d„ |D ¦   «         ¦  «        dz
  Š	ˆ	fd	„t          |d|…         ||d…         d
¬¦  «        D ¦   «         }|S )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+-])r}   Néüÿÿÿéþÿÿÿr   c              3  ó4   K  — | ]}t          |¦  «        V — Œd S rÝ   r*  )r6  Úparts     ri   r=  z&_trim_zeros_complex.<locals>.<genexpr>  s(   è è € Ð;Ð; d�˜D™	œ	Ð;Ð;Ð;Ð;Ð;Ð;rk   rm   c                óR   •— g | ]#\  }}||d          z   |dd…         d‰› �›z   dz   ‘Œ$S )r   rm   Nú>r  r·   )r6  Úreal_ptÚimag_ptÚpadded_lengths      €ri   r8  z'_trim_zeros_complex.<locals>.<listcomp>  sc   ø€ ð ð ð ñ
 ˆG�Wð	 	Ø
�!Œ*ñ	à�Q�R�RŒ[Ð
+˜=Ð
+Ð
+Ð
+ñ	,ð ñ	ðð ð rk   Tr  )Úrer¥   rC  r¨   ro   r$  rE  r  )
r–  rÙ   Ú	real_partÚ	imag_partr<  ÚtrimmedÚnÚpadded_partsÚpaddedr   s
            @ri   r#  r#  ë  s2  ø€ ð
 ˜rˆy€IØð 2ð 2ˆõ
 ”(Ð+¨QÑ/Ô/ˆØ×Ò˜Ÿš ¨¨"¨¤Ñ.Ô.Ñ/Ô/Ð/Ø×Ò˜Ÿš ¨¨B¨¤Ñ0Ô0Ñ1Ô1Ð1Ð1õ
 	ˆMÑÔ€AÝ$ Y°Ñ%:¸GÑDÔD€LÝ
ˆ<ÑÔ˜AÒÐØˆ	ÝÐ;Ð;¨lÐ;Ñ;Ô;Ñ;Ô;¸aÑ?€Mðð ð ð õ
 !$ L°°!°Ô$4°lÀ1À2À2Ô6FÈtÐ TÑ TÔ Tðñ ô €Fð €Mrk   Ú	str_floatc                ód   — |                       d¦  «        } |                      d¦  «        r| dz  } | S )zX
    Trims trailing zeros after a decimal point,
    leaving just one if necessary.
    Ú0rÍ   )ÚrstripÚendswith)r¨  s    ri   rÜ  rÜ    s=   € ð
 × Ò  Ñ%Ô%€IØ×Ò˜#ÑÔð Ø�SÑˆ	àÐrk   Ú
str_floatsúArrayLike | list[str]c                ó¾   ‡‡‡— | }t          j        d‰› d�¦  «        Šdˆfd„Šdˆfd„} ||¦  «        rˆfd	„|D ¦   «         } ||¦  «        °ˆˆfd
„|D ¦   «         }|S )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]*$r`   r\   c                ó2   •— t          j        ‰| ¦  «        d uS rÝ   )r¡  Úmatch)r<  Únumber_regexs    €ri   Úis_number_with_decimalz1_trim_zeros_float.<locals>.is_number_with_decimal#  s   ø€ ÝŒx˜ aÑ(Ô(°Ð4Ð4rk   r½  r®  c                óx   •— ˆfd„| D ¦   «         }t          |¦  «        dk    ot          d„ |D ¦   «         ¦  «        S )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.
        c                ó*   •— g | ]} ‰|¦  «        ¯|‘ŒS r·   r·   ©r6  r<  r³  s     €ri   r8  z:_trim_zeros_float.<locals>.should_trim.<locals>.<listcomp>.  s*   ø€ ÐBÐBÐB˜Ð(>Ð(>¸qÑ(AÔ(AÐB�1ÐBÐBÐBrk   r   c              3  ó@   K  — | ]}|                      d ¦  «        V — ŒdS )rª  N©r¬  rV  s     ri   r=  z9_trim_zeros_float.<locals>.should_trim.<locals>.<genexpr>/  s,   è è € Ð'IÐ'I¸A¨¯
ª
°3©¬Ð'IÐ'IÐ'IÐ'IÐ'IÐ'Irk   )ro   rÿ   )r½  Únumbersr³  s     €ri   Úshould_trimz&_trim_zeros_float.<locals>.should_trim&  sL   ø€ ð CÐBÐBÐB˜fÐBÑBÔBˆÝ�7‰|Œ|˜aÒÐI¥CÐ'IÐ'IÀÐ'IÑ'IÔ'IÑ$IÔ$IÐIrk   c                ó>   •— g | ]} ‰|¦  «        r
|d d…         n|‘ŒS )Nrg  r·   r¶  s     €ri   r8  z%_trim_zeros_float.<locals>.<listcomp>2  s6   ø€ ÐOÐOÐOÀ!Ð3Ð3°AÑ6Ô6Ð=�1�S�b�S”6�6¸AÐOÐOÐOrk   c                ó^   •— g | ])} ‰|¦  «        r|                      ‰¦  «        r|d z   n|‘Œ*S )rª  r¸  )r6  r<  rÙ   r³  s     €€ri   r8  z%_trim_zeros_float.<locals>.<listcomp>5  sR   ø€ ð ð ð àð *Ð)¨!Ñ,Ô,ÐK°·²¸GÑ1DÔ1DÐKˆˆC‰ˆÈ!ðð ð rk   rw  )r½  r®  r`   r\   )r¡  Úcompile)r­  rÙ   r¤  rº  r¯   r³  r²  s    `   @@ri   r$  r$    sà   øøø€ ð €GÝ”:ÐC°7ÐCÐCÐCÑDÔD€Lð5ð 5ð 5ð 5ð 5ð 5ð	Jð 	Jð 	Jð 	Jð 	Jð 	Jð ˆ+�gÑ
Ô
ð PØOÐOÐOÐOÀwÐOÑOÔOˆð ˆ+�gÑ
Ô
ð Pðð ð ð ð àðñ ô €Fð €Mrk   rS   r,   c                ód   — t          | t          ¦  «        rt          j        | j        Ž S | j        d uS rÝ   )r„   r-   ÚcomÚany_not_nonero  rU   )rS   s    ri   r¢   r¢   <  s1   € Ý�%�Ñ$Ô$ð &ÝÔ ¤Ð-Ð-àŒz Ð%Ð%rk   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	 d1d2d,„Zd3d0„Zd$S )4Ú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   r}   rœ   r^  r+  rÂ  é	   ÚGrÆ  ÚTé   ÚPé   ÚEé   ÚZé   ÚYNFÚaccuracyr_   Úuse_eng_prefixr\   r`   ra   c                ó"   — || _         || _        d S rÝ   ©rÔ  rÕ  )rh   rÔ  rÕ  s      ri   rj   zEngFormatter.__init___  s   € ð !ˆŒØ,ˆÔÐÐrk   ÚnumÚfloatr]   c                ó,  — t          t          |¦  «        ¦  «        }t          j        |¦  «        rdS t          j        |¦  «        rdS d}|dk     rd}| }|dk    rGt          t	          t          j        |                     ¦   «         dz  ¦  «        dz  ¦  «        ¦  «        }nt          d¦  «        }|                     t          | j
                             ¦   «         ¦  «        ¦  «        }| 	                    t          | 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�}|                     ||¬¦  «        }	|	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   Úinfrm   r   rg  rœ   zE-Ú02dzE+r,  Nz{mant: g}{prefix}z{mant: .rÛ  z
f}{prefix})ÚmantÚprefix)r   r]   Úis_nanÚis_infiniterp   Úmathrk  rl  rq   rE  ÚENG_PREFIXESr  rÕ  rÔ  rs  )
rh   rØ  ÚdnumÚsignÚpow10Ú	int_pow10rÞ  rÝ  Ú
format_strr  s
             ri   Ú__call__zEngFormatter.__call__e  s�  € õ( •s˜3‘x”xÑ Ô ˆåŒ>˜$ÑÔð 	Ø�5åÔ˜tÑ$Ô$ð 	Ø�5àˆà�!Š8ˆ8ØˆDØ�5ˆDà�1Š9ˆ9Ý�C¥¤
¨4¯:ª:©<¬<¸!Ñ+;Ñ <Ô <¸qÑ @ÑAÔAÑBÔBˆEˆEå˜A‘J”JˆEà—	’	�#˜dÔ/×4Ò4Ñ6Ô6Ñ7Ô7Ñ8Ô8ˆØ—	’	�#˜dÔ/×4Ò4Ñ6Ô6Ñ7Ô7Ñ8Ô8ˆÝ˜‘J”Jˆ	àÔð 	*ØÔ& yÔ1ˆFˆFØ˜Š]ˆ]Ø*˜9˜*Ð*Ð*Ð*ˆFˆFà)˜)Ð)Ð)Ð)ˆFà�d‰{˜b %™iÑ(ˆàŒ=Ð Ø,ˆJˆJàC T¤]ÐCÐCÐCÐCˆJà×%Ò%¨4¸Ð%Ñ?Ô?ˆ	àÐrk   rð  )rÔ  r_   rÕ  r\   r`   ra   )rØ  rÙ  r`   r]   )r¡   r´   rµ   r¶   râ  rj   rè  r·   rk   ri   rÂ  rÂ  C  s!  € € € € € ðð ðØˆSðàˆSðð 	ˆSðð 	ˆSð	ð
 	ˆSðð 	ˆCðð 	ˆCðð 	ˆCðð 	
ˆ2ðð 	
ˆ3ðð 	
ˆ3ðð 	
ˆ3ðð 	ˆCðð 	ˆCðð 	ˆCðð  	ˆCð!ð" 	ˆCð#€Lð* CHð-ð -ð -ð -ð -ð;ð ;ð ;ð ;ð ;ð ;rk   rÂ  Úpandasrœ   rÔ  rÕ  ra   c                óB   — t          dt          | |¦  «        ¦  «         dS )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
    rc   N)r   rÂ  r×  s     ri   Úset_eng_float_formatrë  £  s&   € õD Ð%¥|°H¸nÑ'MÔ'MÑNÔNÐNÐNÐNrk   r}   Úlevelsr   Úsentinelúbool | object | strúlist[dict[int, int]]c                ó2  — t          | ¦  «        dk    rg S dgt          | d         ¦  «        z  }g }| D ]c}d}i }t          |¦  «        D ]#\  }}||         r||k    rŒd||<   ||z
  ||<   |}Œ$t          |¦  «        |z
  ||<   |                     |¦  «         Œd|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)ro   r?  rC  )	rì  rí  Úcontrolr¯   ÚlevelÚ
last_indexÚlengthsrF  Úkeys	            ri   Úget_level_lengthsrö  è  sÍ   € õ$ ˆ6�{„{�aÒÐØˆ	àˆf•s˜6 !œ9‘~”~Ñ%€Gà€FØð ð ˆØˆ
àˆÝ Ñ&Ô&ð 	ð 	‰FˆAˆsØ�qŒzð ˜c Xšo˜oØà"�˜‘
Ø&'¨*¡n�˜
Ñ#Ø�
�
å! %™jœj¨:Ñ5ˆ�
Ñà�Š�gÑÔÐÐà€Mrk   úWriteBuffer[str]Úlinesc                ó    — t          d„ |D ¦   «         ¦  «        rd„ |D ¦   «         }|                      d                     |¦  «        ¦  «         dS )z‘
    Appends lines to a buffer.

    Parameters
    ----------
    buf
        The buffer to write to
    lines
        The lines to append.
    c              3  ó@   K  — | ]}t          |t          ¦  «        V — Œd S rÝ   )r„   r]   rV  s     ri   r=  z#buffer_put_lines.<locals>.<genexpr>  s,   è è € Ð
-Ð
- !�:�a�ÑÔÐ
-Ð
-Ð
-Ð
-Ð
-Ð
-rk   c                ó,   — g | ]}t          |¦  «        ‘ŒS r·   rd  rV  s     ri   r8  z$buffer_put_lines.<locals>.<listcomp>  s   € Ð'Ð'Ð'˜A•�Q‘”Ð'Ð'Ð'rk   r�   N)ré  r´  r¨   )rd   rø  s     ri   Úbuffer_put_linesrü    sZ   € õ Ð
-Ð
- uÐ
-Ñ
-Ô
-Ñ-Ô-ð (Ø'Ð' Ð'Ñ'Ô'ˆØ‡I‚Iˆd�iŠi˜ÑÔÑÔÐÐÐrk   )r`   r¸   r6  )r�  r]   rd   r|  r}  r^   r`   r^   rÝ   )rd   r|  r}  r^   r`   r¶  )	NrP   NNrE   rÍ   TNN)r½  r5   rO  rQ  rV   rÖ   rT   r]   r¾  r_   rM  r¿  rG   r]   rÙ   r]   r’   r×   rž  r_   rÀ  rQ  r`   r�   )rR  rS  r`   r�   )r  rS  r`   rp   r†  )r<  rn  rC  r]   r`   r]   rI  )r<  rn  rC  r]   r¢  r^   r`   r]   )rv  r\   rC  r]   r¢  r^   r`   r   )r   F)r½  r*   rC  r‡  rƒ  r\   r`   r   )rE   NN)
r3  r�   rG   r]   r4  r_   rf   rŽ  r`   r�   )rÍ   )r–  r5   rÙ   r]   r`   r�   )r¨  r]   r`   r]   )r­  r®  rÙ   r]   r`   r�   )rS   r,   r`   r\   )rœ   F)rÔ  rp   rÕ  r\   r`   ra   )r}   )rì  r   rí  rî  r`   rï  )rd   r÷  rø  r�   r`   ra   )†r¶   Ú
__future__r   Úcollections.abcr   r   r   r   r   Ú
contextlibr	   Úcsvr
   rÙ   r   Ú	functoolsr   Úior   rá  r¡  Úshutilr   Útypingr   r   r   r   Únumpyrs   Ú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   rK  ÚVALID_JUSTIFY_PARAMETERSrM   rO   rÆ   rÊ   rÌ   rz  rŠ  r³  r“   rÏ  rÍ  rÎ  rÉ  rÌ  re  rZ  rq  ru  rz  rÊ  rË  r…  rA  r#  rÜ  r$  r¢   rÂ  rë  rö  rü  r·   rk   ri   ú<module>r     sò  ððð ð ð
 #Ð "Ð "Ð "Ð "Ð "ðð ð ð ð ð ð ð ð ð ð ð ð ð ð &Ð %Ð %Ð %Ð %Ð %Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø €€€Ø 	€	€	€	Ø $Ð $Ð $Ð $Ð $Ð $ðð ð ð ð ð ð ð ð ð ð ð ð Ð Ð Ð ðð ð ð ð ð ð ð ð
 Ð Ð Ð Ð Ð Ø #Ð #Ð #Ð #Ð #Ð #ðð ð ð ð ð ð ð ð ð ð
 0Ð /Ð /Ð /Ð /Ð /Ø .Ð .Ð .Ð .Ð .Ð .ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð
ð ð ð ð ð ð ð ð
ð ð ð ð ð ð ð ð ð ð ð ð *Ð )Ð )Ð )Ð )Ð )Ø  Ð  Ð  Ð  Ð  Ð  Ð  Ð  Ð  ðð ð ð ð ð ð ð ð ð ð ð ð 8Ð 7Ð 7Ð 7Ð 7Ð 7Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9ðð ð ð ð ð ð ð ð 'Ð &Ð &Ð &Ð &Ð &àð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð6Ð ð 6ð 6ð 6ñ 6ðpÐ ðÐ ð ð ð ñ ðc$ð c$ð c$ð c$ð c$ñ c$ô c$ð c$ðLð ð ð ð>ð ð ð ð:IFð IFð IFð IFð IFñ IFô IFð IFðX^ð ^ð ^ð ^ð ^ñ ^ô ^ð ^ðF /3Øðð ð ð ð ð  àDHðMð Mð Mð Mñ „ðMðP ,0ØØØ"ØØØ!%ØØ*.ðR ð R ð R ð R ð R ðjeð eð eð eð eñ eô eð eðPI0ð I0ð I0ð I0ð I0Ð0ñ I0ô I0ð I0ðXð ð ð ð Ð/ñ ô ð ð#ð #ð #ð #ð #Ð1ñ #ô #ð #ð6ð ð ð ð Ð5ñ ô ð ðB?"ð ?"ð ?"ð ?"ðDð ð ð ðð ð ð ð ð Ø"ðð ð ð ð ð  JNð@ð @ð @ð @ð @ðð ð ð ð Ð1ñ ô ð ð3ð 3ð 3ð 3ð 3Ð2ñ 3ô 3ð 3ð, !Øðð ð ð ð ðH ØØ+/ð	ð ð ð ð ðDð ð ð ð ðB	ð 	ð 	ð 	ð 7:ð!ð !ð !ð !ð !ðH&ð &ð &ð &ð]ð ]ð ]ð ]ð ]ñ ]ô ]ð ]ð@ €ˆHÑÔðAOð AOð AOð AOñ ÔðAOðJ 24ð(ð (ð (ð (ð (ðV ð  ð  ð  ð  ð  rk   