§
    tŠtjàj  ã                  óÀ  — d dl mZ d dlmZmZ d dl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 e	rd d	lmZmZmZmZ d d
lmZmZ d dlmZmZmZ  ed¦  «        Z ed¦  «        Z ed¦  «        Z ed¦  «        Z dde eeeddœZ!dCd„Z"dDd„Z#	 dEdFd"„Z$ G d#„ d$e¦  «        Z% G d%„ d&e%¦  «        Z& G d'„ d(e%¦  «        Z' G d)„ d*¦  «        Z( G d+„ d,e(¦  «        Z) G d-„ d.e(¦  «        Z* G d/„ d0e¦  «        Z+ G d1„ d2e+¦  «        Z, G d3„ d4e,¦  «        Z- G d5„ d6e+¦  «        Z. G d7„ d8e,e.¦  «        Z/ G d9„ d:e+¦  «        Z0 G d;„ d<e0¦  «        Z1 G d=„ d>e0e.¦  «        Z2dGdB„Z3dS )Hé    )Úannotations)ÚABCÚabstractmethodN)Údedent)ÚTYPE_CHECKING©Ú
get_option)Úformat)Úpprint_thing)ÚIterableÚIteratorÚMappingÚSequence)ÚDtypeÚWriteBuffer)Ú	DataFrameÚIndexÚSeriesaR      show_counts : bool, optional
        Whether to show the non-null counts. By default, this is shown
        only if the DataFrame is smaller than
        ``pandas.options.display.max_info_rows`` and
        ``pandas.options.display.max_info_columns``. A value of True always
        shows the counts, and False never shows the counts.a¾      >>> int_values = [1, 2, 3, 4, 5]
    >>> text_values = ['alpha', 'beta', 'gamma', 'delta', 'epsilon']
    >>> s = pd.Series(text_values, index=int_values)
    >>> s.info()
    <class 'pandas.Series'>
    Index: 5 entries, 1 to 5
    Series name: None
    Non-Null Count  Dtype
    --------------  -----
    5 non-null      object
    dtypes: object(1)
    memory usage: 80.0+ bytes

    Prints a summary excluding information about its values:

    >>> s.info(verbose=False)
    <class 'pandas.Series'>
    Index: 5 entries, 1 to 5
    dtypes: object(1)
    memory usage: 80.0+ bytes

    Pipe output of Series.info to buffer instead of sys.stdout, get
    buffer content and writes to a text file:

    >>> import io
    >>> buffer = io.StringIO()
    >>> s.info(buf=buffer)
    >>> s = buffer.getvalue()
    >>> with open("df_info.txt", "w",
    ...           encoding="utf-8") as f:  # doctest: +SKIP
    ...     f.write(s)
    260

    The `memory_usage` parameter allows deep introspection mode, specially
    useful for big Series and fine-tune memory optimization:

    >>> random_strings_array = np.random.choice(['a', 'b', 'c'], 10 ** 6)
    >>> s = pd.Series(np.random.choice(['a', 'b', 'c'], 10 ** 6))
    >>> s.info()
    <class 'pandas.Series'>
    RangeIndex: 1000000 entries, 0 to 999999
    Series name: None
    Non-Null Count    Dtype
    --------------    -----
    1000000 non-null  object
    dtypes: object(1)
    memory usage: 7.6+ MB

    >>> s.info(memory_usage='deep')
    <class 'pandas.Series'>
    RangeIndex: 1000000 entries, 0 to 999999
    Series name: None
    Non-Null Count    Dtype
    --------------    -----
    1000000 non-null  object
    dtypes: object(1)
    memory usage: 55.3 MBzp    Series.describe: Generate descriptive statistics of Series.
    Series.memory_usage: Memory usage of Series.z_    max_cols : int, optional
        Unused, exists only for compatibility with DataFrame.info.r   Ú z
.. versionadded:: 1.4.0
)ÚklassÚtype_subÚmax_cols_subÚshow_counts_subÚexamples_subÚsee_also_subÚversion_added_subÚsústr | DtypeÚspaceÚintÚreturnÚstrc                óV   — t          | ¦  «        d|…                              |¦  «        S )a»  
    Make string of specified length, padding to the right if necessary.

    Parameters
    ----------
    s : Union[str, Dtype]
        String to be formatted.
    space : int
        Length to force string to be of.

    Returns
    -------
    str
        String coerced to given length.

    Examples
    --------
    >>> pd.io.formats.info._put_str("panda", 6)
    'panda '
    >>> pd.io.formats.info._put_str("panda", 4)
    'pand'
    N)r"   Úljust)r   r   s     úT/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/pandas/io/formats/info.pyÚ_put_strr&   ‚   s&   € õ. ˆq‰6Œ6�&�5�&Œ>×Ò Ñ&Ô&Ð&ó    ÚnumÚfloatÚsize_qualifierc                óJ   — dD ]}| dk     r| d›|› d|› �c S | dz  } Œ| d›|› d�S )a{  
    Return size in human readable format.

    Parameters
    ----------
    num : int
        Size in bytes.
    size_qualifier : str
        Either empty, or '+' (if lower bound).

    Returns
    -------
    str
        Size in human readable format.

    Examples
    --------
    >>> _sizeof_fmt(23028, "")
    '22.5 KB'

    >>> _sizeof_fmt(23028, "+")
    '22.5+ KB'
    )ÚbytesÚKBÚMBÚGBÚTBg      �@z3.1fú z PB© )r(   r*   Úxs      r%   Ú_sizeof_fmtr4   œ   s`   € ð0 /ð ð ˆØ�Š<ˆ<ØÐ4Ð4 Ð4Ð4°Ð4Ð4Ð4Ð4Ð4Øˆv‰ˆˆØÐ+Ð+˜Ð+Ð+Ð+Ð+r'   Úmemory_usageúbool | str | Noneú
bool | strc                ó(   — | €t          d¦  «        } | S )z5Get memory usage based on inputs and display options.Nzdisplay.memory_usager   )r5   s    r%   Ú_initialize_memory_usager9   »   s   € ð ÐÝ!Ð"8Ñ9Ô9ˆØÐr'   c                  ó  — e Zd ZU dZded<   ded<   eedd„¦   «         ¦   «         Zeedd
„¦   «         ¦   «         Zeedd„¦   «         ¦   «         Z	eedd„¦   «         ¦   «         Z
ed d„¦   «         Zed d„¦   «         Zed!d„¦   «         ZdS )"Ú	_BaseInfoaj  
    Base class for DataFrameInfo and SeriesInfo.

    Parameters
    ----------
    data : DataFrame or Series
        Either dataframe or series.
    memory_usage : bool or str, optional
        If "deep", introspect the data deeply by interrogating object dtypes
        for system-level memory consumption, and include it in the returned
        values.
    úDataFrame | SeriesÚdatar7   r5   r!   úIterable[Dtype]c                ó   — dS )z¡
        Dtypes.

        Returns
        -------
        dtypes : sequence
            Dtype of each of the DataFrame's columns (or one series column).
        Nr2   ©Úselfs    r%   Údtypesz_BaseInfo.dtypesÕ   ó   € € € r'   úMapping[str, int]c                ó   — dS )ú!Mapping dtype - number of counts.Nr2   r@   s    r%   Údtype_countsz_BaseInfo.dtype_countsá   rC   r'   úlist[int] | Seriesc                ó   — dS )úBSequence of non-null counts for all columns or column (if series).Nr2   r@   s    r%   Únon_null_countsz_BaseInfo.non_null_countsæ   rC   r'   r    c                ó   — dS )zœ
        Memory usage in bytes.

        Returns
        -------
        memory_usage_bytes : int
            Object's total memory usage in bytes.
        Nr2   r@   s    r%   Úmemory_usage_bytesz_BaseInfo.memory_usage_bytesë   rC   r'   r"   c                ó<   — t          | j        | j        ¦  «        › d�S )z0Memory usage in a form of human readable string.ú
)r4   rM   r*   r@   s    r%   Úmemory_usage_stringz_BaseInfo.memory_usage_string÷   s#   € õ ˜dÔ5°tÔ7JÑKÔKÐOÐOÐOÐOr'   c                óf   — d}| j         r'| j         dk    rd| j        v s| j        j        j        rd}|S )Nr   ÚdeepÚobjectú+)r5   rG   r=   ÚindexÚ_is_memory_usage_qualified)rA   r*   s     r%   r*   z_BaseInfo.size_qualifierü   sL   € àˆØÔð 		)ØÔ  FÒ*Ð*ð
  Ô 1Ð1Ð1Ø”y”ÔAð 2ð &)�NØÐr'   ÚbufúWriteBuffer[str] | NoneÚmax_colsú
int | NoneÚverboseúbool | NoneÚshow_countsÚNonec               ó   — d S ©Nr2   )rA   rW   rY   r[   r]   s        r%   Úrenderz_BaseInfo.render  s	   € ð 	ˆr'   N©r!   r>   ©r!   rD   ©r!   rH   ©r!   r    ©r!   r"   ©
rW   rX   rY   rZ   r[   r\   r]   r\   r!   r^   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__Úpropertyr   rB   rG   rK   rM   rP   r*   ra   r2   r'   r%   r;   r;   Ä   sH  € € € € € € ðð ð ÐÐÑØÐÐÑàØðð ð ñ „^ñ „Xðð Øð0ð 0ð 0ñ „^ñ „Xð0ð ØðQð Qð Qñ „^ñ „XðQð Øðð ð ñ „^ñ „Xðð ðPð Pð Pñ „XðPð ðð ð ñ „Xðð ðð ð ñ „^ðð ð r'   r;   c                  ó¶   — e Zd ZdZ	 ddd	„Zedd„¦   «         Zed d„¦   «         Zed!d„¦   «         Zed"d„¦   «         Z	ed#d„¦   «         Z
ed"d„¦   «         Zd$d„ZdS )%ÚDataFrameInfoz0
    Class storing dataframe-specific info.
    Nr=   r   r5   r6   r!   r^   c                ó<   — || _         t          |¦  «        | _        d S r`   ©r=   r9   r5   ©rA   r=   r5   s      r%   Ú__init__zDataFrameInfo.__init__  s!   € ð
  $ˆŒ	Ý4°\ÑBÔBˆÔÐÐr'   rD   c                ó*   — t          | j        ¦  «        S r`   )Ú_get_dataframe_dtype_countsr=   r@   s    r%   rG   zDataFrameInfo.dtype_counts$  s   € å*¨4¬9Ñ5Ô5Ð5r'   r>   c                ó   — | j         j        S )z
        Dtypes.

        Returns
        -------
        dtypes
            Dtype of each of the DataFrame's columns.
        ©r=   rB   r@   s    r%   rB   zDataFrameInfo.dtypes(  s   € ð ŒyÔÐr'   r   c                ó   — | j         j        S )zz
        Column names.

        Returns
        -------
        ids : Index
            DataFrame's column names.
        )r=   Úcolumnsr@   s    r%   ÚidszDataFrameInfo.ids4  s   € ð ŒyÔ Ð r'   r    c                ó*   — t          | j        ¦  «        S ©z#Number of columns to be summarized.)Úlenrz   r@   s    r%   Ú	col_countzDataFrameInfo.col_count@  s   € õ �4”8‰}Œ}Ðr'   r   c                ó4   — | j                              ¦   «         S )rJ   ©r=   Úcountr@   s    r%   rK   zDataFrameInfo.non_null_countsE  s   € ð Œy�ŠÑ Ô Ð r'   c                ót   — | j         dk    }| j                              d|¬¦  «                             ¦   «         S )NrR   T©rU   rR   )r5   r=   Úsum©rA   rR   s     r%   rM   z DataFrameInfo.memory_usage_bytesJ  s6   € àÔ  FÒ*ˆØŒy×%Ò%¨D°tÐ%Ñ<Ô<×@Ò@ÑBÔBÐBr'   rW   rX   rY   rZ   r[   r\   r]   c               óV   — t          | |||¬¦  «        }|                     |¦  «         d S )N)ÚinforY   r[   r]   )Ú_DataFrameInfoPrinterÚ	to_buffer©rA   rW   rY   r[   r]   Úprinters         r%   ra   zDataFrameInfo.renderO  s@   € õ (ØØØØ#ð	
ñ 
ô 
ˆð 	×Ò˜#ÑÔÐÐÐr'   r`   )r=   r   r5   r6   r!   r^   rc   rb   ©r!   r   re   ©r!   r   rg   )rh   ri   rj   rk   rs   rm   rG   rB   rz   r~   rK   rM   ra   r2   r'   r%   ro   ro     s  € € € € € ðð ð +/ðCð Cð Cð Cð Cð ð6ð 6ð 6ñ „Xð6ð ð	 ð 	 ð 	 ñ „Xð	 ð ð	!ð 	!ð 	!ñ „Xð	!ð ðð ð ñ „Xðð ð!ð !ð !ñ „Xð!ð ðCð Cð Cñ „XðCðð ð ð ð ð r'   ro   c                  ó’   — e Zd ZdZ	 ddd	„Zddddd
œdd„Zedd„¦   «         Zedd„¦   «         Zed d„¦   «         Z	ed!d„¦   «         Z
dS )"Ú
SeriesInfoz-
    Class storing series-specific info.
    Nr=   r   r5   r6   r!   r^   c                ó<   — || _         t          |¦  «        | _        d S r`   rq   rr   s      r%   rs   zSeriesInfo.__init__e  s!   € ð
 !ˆŒ	Ý4°\ÑBÔBˆÔÐÐr'   )rW   rY   r[   r]   rW   rX   rY   rZ   r[   r\   r]   c               óv   — |�t          d¦  «        ‚t          | ||¬¦  «        }|                     |¦  «         d S )NzIArgument `max_cols` can only be passed in DataFrame.info, not Series.info)r‡   r[   r]   )Ú
ValueErrorÚ_SeriesInfoPrinterr‰   rŠ   s         r%   ra   zSeriesInfo.renderm  s\   € ð ÐÝð5ñô ð õ %ØØØ#ð
ñ 
ô 
ˆð
 	×Ò˜#ÑÔÐÐÐr'   ú	list[int]c                ó6   — | j                              ¦   «         gS r`   r€   r@   s    r%   rK   zSeriesInfo.non_null_counts�  s   € à”	—’Ñ!Ô!Ð"Ð"r'   r>   c                ó   — | j         j        gS r`   rw   r@   s    r%   rB   zSeriesInfo.dtypes…  s   € à”	Ô Ð!Ð!r'   rD   c                óH   — ddl m} t           || j        ¦  «        ¦  «        S )Nr   )r   )Úpandas.core.framer   ru   r=   )rA   r   s     r%   rG   zSeriesInfo.dtype_counts‰  s.   € à/Ð/Ð/Ð/Ð/Ð/å*¨9¨9°T´YÑ+?Ô+?Ñ@Ô@Ð@r'   r    c                óP   — | j         dk    }| j                              d|¬¦  «        S )z“Memory usage in bytes.

        Returns
        -------
        memory_usage_bytes : int
            Object's total memory usage in bytes.
        rR   Trƒ   )r5   r=   r…   s     r%   rM   zSeriesInfo.memory_usage_bytes�  s,   € ð Ô  FÒ*ˆØŒy×%Ò%¨D°tÐ%Ñ<Ô<Ð<r'   r`   )r=   r   r5   r6   r!   r^   rg   )r!   r”   rb   rc   re   )rh   ri   rj   rk   rs   ra   rm   rK   rB   rG   rM   r2   r'   r%   r�   r�   `  sñ   € € € € € ðð ð +/ðCð Cð Cð Cð Cð (,Ø#Ø#Ø#'ðð ð ð ð ð ð( ð#ð #ð #ñ „Xð#ð ð"ð "ð "ñ „Xð"ð ðAð Að Añ „XðAð
 ð	=ð 	=ð 	=ñ „Xð	=ð 	=ð 	=r'   r�   c                  ó4   — e Zd ZdZd
dd„Zedd	„¦   «         ZdS )Ú_InfoPrinterAbstractz6
    Class for printing dataframe or series info.
    NrW   rX   r!   r^   c                óœ   — |                       ¦   «         }|                     ¦   «         }|€t          j        }t	          j        ||¦  «         dS )z Save dataframe info into buffer.N)Ú_create_table_builderÚ	get_linesÚsysÚstdoutÚfmtÚbuffer_put_lines)rA   rW   Útable_builderÚliness       r%   r‰   z_InfoPrinterAbstract.to_buffer¡  sI   € à×2Ò2Ñ4Ô4ˆØ×'Ò'Ñ)Ô)ˆØˆ;Ý”*ˆCÝÔ˜S %Ñ(Ô(Ð(Ð(Ð(r'   Ú_TableBuilderAbstractc                ó   — dS )z!Create instance of table builder.Nr2   r@   s    r%   r�   z*_InfoPrinterAbstract._create_table_builder©  rC   r'   r`   )rW   rX   r!   r^   )r!   r¥   )rh   ri   rj   rk   r‰   r   r�   r2   r'   r%   r›   r›   œ  sW   € € € € € ðð ð)ð )ð )ð )ð )ð ð0ð 0ð 0ñ „^ð0ð 0ð 0r'   r›   c                  óš   — e Zd ZdZ	 	 	 ddd„Zedd„¦   «         Zedd„¦   «         Zedd„¦   «         Zedd„¦   «         Z	dd„Z
dd„Zdd„ZdS )rˆ   a{  
    Class for printing dataframe info.

    Parameters
    ----------
    info : DataFrameInfo
        Instance of DataFrameInfo.
    max_cols : int, optional
        When to switch from the verbose to the truncated output.
    verbose : bool, optional
        Whether to print the full summary.
    show_counts : bool, optional
        Whether to show the non-null counts.
    Nr‡   ro   rY   rZ   r[   r\   r]   r!   r^   c                ó¢   — || _         |j        | _        || _        |                      |¦  «        | _        |                      |¦  «        | _        d S r`   )r‡   r=   r[   Ú_initialize_max_colsrY   Ú_initialize_show_countsr]   )rA   r‡   rY   r[   r]   s        r%   rs   z_DataFrameInfoPrinter.__init__¾  sL   € ð ˆŒ	Ø”IˆŒ	ØˆŒØ×1Ò1°(Ñ;Ô;ˆŒØ×7Ò7¸ÑDÔDˆÔÐÐr'   r    c                ó    — t          d¦  «        S )z"Maximum info rows to be displayed.zdisplay.max_info_rowsr   r@   s    r%   Úmax_rowsz_DataFrameInfoPrinter.max_rowsË  s   € õ Ð1Ñ2Ô2Ð2r'   Úboolc                ó<   — t          | j        | j        k    ¦  «        S )zDCheck if number of columns to be summarized does not exceed maximum.)r­   r~   rY   r@   s    r%   Úexceeds_info_colsz'_DataFrameInfoPrinter.exceeds_info_colsÐ  s   € õ �D”N T¤]Ò2Ñ3Ô3Ð3r'   c                óV   — t          t          | j        ¦  «        | j        k    ¦  «        S )zACheck if number of rows to be summarized does not exceed maximum.)r­   r}   r=   r¬   r@   s    r%   Úexceeds_info_rowsz'_DataFrameInfoPrinter.exceeds_info_rowsÕ  s!   € õ •C˜œ	‘N”N T¤]Ò2Ñ3Ô3Ð3r'   c                ó   — | j         j        S r|   ©r‡   r~   r@   s    r%   r~   z_DataFrameInfoPrinter.col_countÚ  ó   € ð ŒyÔ"Ð"r'   c                ó(   — |€t          d¦  «        S |S )Nzdisplay.max_info_columnsr   )rA   rY   s     r%   r©   z*_DataFrameInfoPrinter._initialize_max_colsß  s   € ØÐÝÐ8Ñ9Ô9Ð9Øˆr'   c                óD   — |€t          | j         o| j         ¦  «        S |S r`   )r­   r¯   r±   ©rA   r]   s     r%   rª   z-_DataFrameInfoPrinter._initialize_show_countsä  s-   € ØÐÝ˜DÔ2Ð2ÐQ¸4Ô;QÐ7QÑRÔRÐRàÐr'   Ú_DataFrameTableBuilderc                óð   — | j         rt          | j        | j        ¬¦  «        S | j         du rt	          | j        ¬¦  «        S | j        rt	          | j        ¬¦  «        S t          | j        | j        ¬¦  «        S )z[
        Create instance of table builder based on verbosity and display settings.
        ©r‡   Úwith_countsF©r‡   )r[   Ú_DataFrameTableBuilderVerboser‡   r]   Ú _DataFrameTableBuilderNonVerboser¯   r@   s    r%   r�   z+_DataFrameInfoPrinter._create_table_builderê  s’   € ð Œ<ð 	Ý0Ø”YØ Ô,ðñ ô ð ð Œ\˜UÐ"Ð"Ý3¸¼ÐCÑCÔCÐCØÔ#ð 	Ý3¸¼ÐCÑCÔCÐCå0Ø”YØ Ô,ðñ ô ð r'   )NNN)
r‡   ro   rY   rZ   r[   r\   r]   r\   r!   r^   re   ©r!   r­   )rY   rZ   r!   r    ©r]   r\   r!   r­   )r!   r¸   )rh   ri   rj   rk   rs   rm   r¬   r¯   r±   r~   r©   rª   r�   r2   r'   r%   rˆ   rˆ   ®  s  € € € € € ðð ð$  $Ø#Ø#'ðEð Eð Eð Eð Eð ð3ð 3ð 3ñ „Xð3ð ð4ð 4ð 4ñ „Xð4ð ð4ð 4ð 4ñ „Xð4ð ð#ð #ð #ñ „Xð#ðð ð ð ð
ð ð ð ðð ð ð ð ð r'   rˆ   c                  ó0   — e Zd ZdZ	 	 ddd
„Zdd„Zdd„ZdS )r“   a  Class for printing series info.

    Parameters
    ----------
    info : SeriesInfo
        Instance of SeriesInfo.
    verbose : bool, optional
        Whether to print the full summary.
    show_counts : bool, optional
        Whether to show the non-null counts.
    Nr‡   r�   r[   r\   r]   r!   r^   c                ón   — || _         |j        | _        || _        |                      |¦  «        | _        d S r`   )r‡   r=   r[   rª   r]   )rA   r‡   r[   r]   s       r%   rs   z_SeriesInfoPrinter.__init__  s7   € ð ˆŒ	Ø”IˆŒ	ØˆŒØ×7Ò7¸ÑDÔDˆÔÐÐr'   Ú_SeriesTableBuilderc                ó~   — | j         s| j         €t          | j        | j        ¬¦  «        S t	          | j        ¬¦  «        S )zF
        Create instance of table builder based on verbosity.
        Nrº   r¼   )r[   Ú_SeriesTableBuilderVerboser‡   r]   Ú_SeriesTableBuilderNonVerboser@   s    r%   r�   z(_SeriesInfoPrinter._create_table_builder  sM   € ð Œ<ð 	A˜4œ<Ð/Ý-Ø”YØ Ô,ðñ ô ð õ
 1°d´iÐ@Ñ@Ô@Ð@r'   r­   c                ó   — |€dS |S )NTr2   r·   s     r%   rª   z*_SeriesInfoPrinter._initialize_show_counts"  s   € ØÐØ�4àÐr'   )NN)r‡   r�   r[   r\   r]   r\   r!   r^   )r!   rÃ   rÀ   )rh   ri   rj   rk   rs   r�   rª   r2   r'   r%   r“   r“   þ  sp   € € € € € ð
ð 
ð  $Ø#'ð		Eð 	Eð 	Eð 	Eð 	Eð
Að 
Að 
Að 
Aðð ð ð ð ð r'   r“   c                  óè   — e Zd ZU dZded<   ded<   edd„¦   «         Zedd	„¦   «         Zedd„¦   «         Z	edd„¦   «         Z
edd„¦   «         Zedd„¦   «         Zedd„¦   «         Zd d„Zd d„Zd d„ZdS )!r¥   z*
    Abstract builder for info table.
    ú	list[str]Ú_linesr;   r‡   r!   c                ó   — dS )z-Product in a form of list of lines (strings).Nr2   r@   s    r%   rž   z_TableBuilderAbstract.get_lines1  rC   r'   r<   c                ó   — | j         j        S r`   ©r‡   r=   r@   s    r%   r=   z_TableBuilderAbstract.data5  s   € àŒyŒ~Ðr'   r>   c                ó   — | j         j        S )z*Dtypes of each of the DataFrame's columns.)r‡   rB   r@   s    r%   rB   z_TableBuilderAbstract.dtypes9  s   € ð ŒyÔÐr'   rD   c                ó   — | j         j        S )rF   )r‡   rG   r@   s    r%   rG   z"_TableBuilderAbstract.dtype_counts>  s   € ð ŒyÔ%Ð%r'   r­   c                ó4   — t          | j        j        ¦  «        S )z Whether to display memory usage.)r­   r‡   r5   r@   s    r%   Údisplay_memory_usagez*_TableBuilderAbstract.display_memory_usageC  s   € õ �D”IÔ*Ñ+Ô+Ð+r'   r"   c                ó   — | j         j        S )z/Memory usage string with proper size qualifier.)r‡   rP   r@   s    r%   rP   z)_TableBuilderAbstract.memory_usage_stringH  s   € ð ŒyÔ,Ð,r'   rH   c                ó   — | j         j        S r`   )r‡   rK   r@   s    r%   rK   z%_TableBuilderAbstract.non_null_countsM  s   € àŒyÔ(Ð(r'   r^   c                óx   — | j                              t          t          | j        ¦  «        ¦  «        ¦  «         dS )z>Add line with string representation of dataframe to the table.N)rÊ   Úappendr"   Útyper=   r@   s    r%   Úadd_object_type_linez*_TableBuilderAbstract.add_object_type_lineQ  s.   € àŒ×Ò�3�t D¤I™œÑ/Ô/Ñ0Ô0Ð0Ð0Ð0r'   c                ór   — | j                              | j        j                             ¦   «         ¦  «         dS )z,Add line with range of indices to the table.N)rÊ   rÕ   r=   rU   Ú_summaryr@   s    r%   Úadd_index_range_linez*_TableBuilderAbstract.add_index_range_lineU  s.   € àŒ×Ò˜4œ9œ?×3Ò3Ñ5Ô5Ñ6Ô6Ð6Ð6Ð6r'   c                óÆ   — d„ t          | j                             ¦   «         ¦  «        D ¦   «         }| j                             dd                     |¦  «        › �¦  «         dS )z2Add summary line with dtypes present in dataframe.c                ó&   — g | ]\  }}|› d |d›d�‘ŒS )ú(Údú)r2   )Ú.0ÚkeyÚvals      r%   ú
<listcomp>z9_TableBuilderAbstract.add_dtypes_line.<locals>.<listcomp>[  s=   € ð 
ð 
ð 
Ù"* # sˆsÐÐ�SÐÐÐÐð
ð 
ð 
r'   zdtypes: z, N)ÚsortedrG   ÚitemsrÊ   rÕ   Újoin)rA   Úcollected_dtypess     r%   Úadd_dtypes_linez%_TableBuilderAbstract.add_dtypes_lineY  sl   € ð
ð 
Ý.4°TÔ5F×5LÒ5LÑ5NÔ5NÑ.OÔ.Oð
ñ 
ô 
Ðð 	Œ×ÒÐC d§i¢iÐ0@Ñ&AÔ&AÐCÐCÑDÔDÐDÐDÐDr'   N©r!   rÉ   )r!   r<   rb   rc   r¿   rf   rd   ©r!   r^   )rh   ri   rj   rk   rl   r   rž   rm   r=   rB   rG   rÑ   rP   rK   r×   rÚ   rè   r2   r'   r%   r¥   r¥   )  sW  € € € € € € ðð ð ÐÐÑØ€O€O�Oàð<ð <ð <ñ „^ð<ð ðð ð ñ „Xðð ð ð  ð  ñ „Xð ð ð&ð &ð &ñ „Xð&ð ð,ð ,ð ,ñ „Xð,ð ð-ð -ð -ñ „Xð-ð ð)ð )ð )ñ „Xð)ð1ð 1ð 1ð 1ð7ð 7ð 7ð 7ðEð Eð Eð Eð Eð Er'   r¥   c                  ó’   — e Zd ZdZdd„Zdd„Zdd	„Zedd
„¦   «         Ze	dd„¦   «         Z
e	dd„¦   «         Ze	dd„¦   «         Zdd„ZdS )r¸   z�
    Abstract builder for dataframe info table.

    Parameters
    ----------
    info : DataFrameInfo.
        Instance of DataFrameInfo.
    r‡   ro   r!   r^   c               ó   — || _         d S r`   r¼   ©rA   r‡   s     r%   rs   z_DataFrameTableBuilder.__init__k  s   € Ø#'ˆŒ	ˆ	ˆ	r'   rÉ   c                ó†   — g | _         | j        dk    r|                      ¦   «          n|                      ¦   «          | j         S )Nr   )rÊ   r~   Ú_fill_empty_infoÚ_fill_non_empty_infor@   s    r%   rž   z _DataFrameTableBuilder.get_linesn  sE   € ØˆŒØŒ>˜QÒÐØ×!Ò!Ñ#Ô#Ð#Ð#à×%Ò%Ñ'Ô'Ð'ØŒ{Ðr'   c                óÀ   — |                       ¦   «          |                      ¦   «          | j                             dt	          | j        ¦  «        j        › d�¦  «         dS )z;Add lines to the info table, pertaining to empty dataframe.zEmpty rO   N)r×   rÚ   rÊ   rÕ   rÖ   r=   rh   r@   s    r%   rï   z'_DataFrameTableBuilder._fill_empty_infov  sY   € à×!Ò!Ñ#Ô#Ð#Ø×!Ò!Ñ#Ô#Ð#ØŒ×ÒÐ@¥D¨¬¡O¤OÔ$<Ð@Ð@Ð@ÑAÔAÐAÐAÐAr'   c                ó   — dS ©z?Add lines to the info table, pertaining to non-empty dataframe.Nr2   r@   s    r%   rð   z+_DataFrameTableBuilder._fill_non_empty_info|  rC   r'   r   c                ó   — | j         j        S )z
DataFrame.rÍ   r@   s    r%   r=   z_DataFrameTableBuilder.data€  ó   € ð ŒyŒ~Ðr'   r   c                ó   — | j         j        S )zDataframe columns.)r‡   rz   r@   s    r%   rz   z_DataFrameTableBuilder.ids…  s   € ð ŒyŒ}Ðr'   r    c                ó   — | j         j        S )z-Number of dataframe columns to be summarized.r³   r@   s    r%   r~   z _DataFrameTableBuilder.col_countŠ  r´   r'   c                óJ   — | j                              d| j        › �¦  «         dS ©z!Add line containing memory usage.zmemory usage: N©rÊ   rÕ   rP   r@   s    r%   Úadd_memory_usage_linez,_DataFrameTableBuilder.add_memory_usage_line�  ó*   € àŒ×ÒÐF¨DÔ,DÐFÐFÑGÔGÐGÐGÐGr'   N)r‡   ro   r!   r^   ré   rê   )r!   r   rŒ   re   )rh   ri   rj   rk   rs   rž   rï   r   rð   rm   r=   rz   r~   rû   r2   r'   r%   r¸   r¸   a  sü   € € € € € ðð ð(ð (ð (ð (ðð ð ð ðBð Bð Bð Bð ðNð Nð Nñ „^ðNð ðð ð ñ „Xðð ðð ð ñ „Xðð ð#ð #ð #ñ „Xð#ðHð Hð Hð Hð Hð Hr'   r¸   c                  ó"   — e Zd ZdZdd„Zdd„ZdS )r¾   z>
    Dataframe info table builder for non-verbose output.
    r!   r^   c                óà   — |                       ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          | j        r|                      ¦   «          dS dS ró   )r×   rÚ   Úadd_columns_summary_linerè   rÑ   rû   r@   s    r%   rð   z5_DataFrameTableBuilderNonVerbose._fill_non_empty_info™  sw   € à×!Ò!Ñ#Ô#Ð#Ø×!Ò!Ñ#Ô#Ð#Ø×%Ò%Ñ'Ô'Ð'Ø×ÒÑÔÐØÔ$ð 	)Ø×&Ò&Ñ(Ô(Ð(Ð(Ð(ð	)ð 	)r'   c                ól   — | j                              | j                             d¬¦  «        ¦  «         d S )NÚColumns©Úname)rÊ   rÕ   rz   rÙ   r@   s    r%   rÿ   z9_DataFrameTableBuilderNonVerbose.add_columns_summary_line¢  s1   € ØŒ×Ò˜4œ8×,Ò,°)Ð,Ñ<Ô<Ñ=Ô=Ð=Ð=Ð=r'   Nrê   )rh   ri   rj   rk   rð   rÿ   r2   r'   r%   r¾   r¾   ”  sF   € € € € € ðð ð)ð )ð )ð )ð>ð >ð >ð >ð >ð >r'   r¾   c                  óð   — e Zd ZU dZdZded<   ded<   ded<   d	ed
<   eedd„¦   «         ¦   «         Zedd„¦   «         Z	dd„Z
dd„Zdd„Zedd„¦   «         Zedd„¦   «         Zd d„Zd d„Zd d„Zd!d„Zd!d„ZdS )"Ú_TableBuilderVerboseMixinz(
    Mixin for verbose info output.
    z  r"   ÚSPACINGzSequence[Sequence[str]]ÚstrrowsúSequence[int]Úgross_column_widthsr­   r»   r!   úSequence[str]c                ó   — dS )ú.Headers names of the columns in verbose table.Nr2   r@   s    r%   Úheadersz!_TableBuilderVerboseMixin.headers°  rC   r'   c                ó$   — d„ | j         D ¦   «         S )z'Widths of header columns (only titles).c                ó,   — g | ]}t          |¦  «        ‘ŒS r2   ©r}   ©rà   Úcols     r%   rã   zB_TableBuilderVerboseMixin.header_column_widths.<locals>.<listcomp>¸  s   € Ð1Ð1Ð1˜S•�C‘”Ð1Ð1Ð1r'   )r  r@   s    r%   Úheader_column_widthsz._TableBuilderVerboseMixin.header_column_widthsµ  s   € ð 2Ð1 D¤LÐ1Ñ1Ô1Ð1r'   c                ól   — |                       ¦   «         }d„ t          | j        |d¬¦  «        D ¦   «         S )zAGet widths of columns containing both headers and actual content.c                ó    — g | ]}t          |Ž ‘ŒS r2   ©Úmax)rà   Úwidthss     r%   rã   zF_TableBuilderVerboseMixin._get_gross_column_widths.<locals>.<listcomp>½  s,   € ð 
ð 
ð 
àõ �ˆLð
ð 
ð 
r'   F©Ústrict)Ú_get_body_column_widthsÚzipr  )rA   Úbody_column_widthss     r%   Ú_get_gross_column_widthsz2_TableBuilderVerboseMixin._get_gross_column_widthsº  sO   € à!×9Ò9Ñ;Ô;Ðð
ð 
åØÔ)Ð+=Àeðñ ô ð
ñ 
ô 
ð 	
r'   c                óV   — t          t          | j        ddiŽ¦  «        }d„ |D ¦   «         S )z$Get widths of table content columns.r  Tc                ó@   — g | ]}t          d „ |D ¦   «         ¦  «        ‘ŒS )c              3  ó4   K  — | ]}t          |¦  «        V — Œd S r`   r  )rà   r3   s     r%   ú	<genexpr>zO_TableBuilderVerboseMixin._get_body_column_widths.<locals>.<listcomp>.<genexpr>Ç  s(   è è € Ð(Ð(˜q•C˜‘F”FÐ(Ð(Ð(Ð(Ð(Ð(r'   r  r  s     r%   rã   zE_TableBuilderVerboseMixin._get_body_column_widths.<locals>.<listcomp>Ç  s/   € Ð<Ð<Ð<¨S•Ð(Ð( CÐ(Ñ(Ô(Ñ(Ô(Ð<Ð<Ð<r'   )Úlistr  r  )rA   Ústrcolss     r%   r  z1_TableBuilderVerboseMixin._get_body_column_widthsÄ  s2   € å+/µ°T´\Ð0OÈ$Ð0OÐ0OÑ+PÔ+PˆØ<Ð<°GÐ<Ñ<Ô<Ð<r'   úIterator[Sequence[str]]c                ó`   — | j         r|                      ¦   «         S |                      ¦   «         S )z„
        Generator function yielding rows content.

        Each element represents a row comprising a sequence of strings.
        )r»   Ú_gen_rows_with_countsÚ_gen_rows_without_countsr@   s    r%   Ú	_gen_rowsz#_TableBuilderVerboseMixin._gen_rowsÉ  s3   € ð Ôð 	3Ø×-Ò-Ñ/Ô/Ð/à×0Ò0Ñ2Ô2Ð2r'   c                ó   — dS )ú=Iterator with string representation of body data with counts.Nr2   r@   s    r%   r'  z/_TableBuilderVerboseMixin._gen_rows_with_countsÔ  rC   r'   c                ó   — dS )ú@Iterator with string representation of body data without counts.Nr2   r@   s    r%   r(  z2_TableBuilderVerboseMixin._gen_rows_without_countsØ  rC   r'   r^   c                ó¶   — | j                              d„ t          | j        | j        d¬¦  «        D ¦   «         ¦  «        }| j                             |¦  «         d S )Nc                ó4   — g | ]\  }}t          ||¦  «        ‘ŒS r2   ©r&   )rà   ÚheaderÚ	col_widths      r%   rã   z=_TableBuilderVerboseMixin.add_header_line.<locals>.<listcomp>Þ  s6   € ð ð ð á%�F˜Iõ ˜ Ñ+Ô+ðð ð r'   Tr  )r  ræ   r  r  r	  rÊ   rÕ   )rA   Úheader_lines     r%   Úadd_header_linez)_TableBuilderVerboseMixin.add_header_lineÜ  sn   € Ø”l×'Ò'ðð å),Ø”L $Ô":À4ð*ñ *ô *ðñ ô ñ
ô 
ˆð 	Œ×Ò˜;Ñ'Ô'Ð'Ð'Ð'r'   c                ó¶   — | j                              d„ t          | j        | j        d¬¦  «        D ¦   «         ¦  «        }| j                             |¦  «         d S )Nc                ó:   — g | ]\  }}t          d |z  |¦  «        ‘ŒS )ú-r0  )rà   Úheader_colwidthÚgross_colwidths      r%   rã   z@_TableBuilderVerboseMixin.add_separator_line.<locals>.<listcomp>é  s;   € ð ð ð á3�O ^õ ˜˜Ñ.°Ñ?Ô?ðð ð r'   Tr  )r  ræ   r  r  r	  rÊ   rÕ   )rA   Úseparator_lines     r%   Úadd_separator_linez,_TableBuilderVerboseMixin.add_separator_lineç  sp   € Øœ×*Ò*ðð å7:ØÔ-¨tÔ/GÐPTð8ñ 8ô 8ðñ ô ñ
ô 
ˆð 	Œ×Ò˜>Ñ*Ô*Ð*Ð*Ð*r'   c           	     óÀ   — | j         D ]U}| j                             d„ t          || j        d¬¦  «        D ¦   «         ¦  «        }| j                             |¦  «         ŒVd S )Nc                ó4   — g | ]\  }}t          ||¦  «        ‘ŒS r2   r0  )rà   r  r9  s      r%   rã   z<_TableBuilderVerboseMixin.add_body_lines.<locals>.<listcomp>õ  s6   € ð ð ð á+˜˜^õ ˜S .Ñ1Ô1ðð ð r'   Tr  )r  r  ræ   r  r	  rÊ   rÕ   )rA   ÚrowÚ	body_lines      r%   Úadd_body_linesz(_TableBuilderVerboseMixin.add_body_linesò  s„   € Ø”<ð 		*ð 		*ˆCØœ×)Ò)ðð å/2Ø˜TÔ5¸dð0ñ 0ô 0ðñ ô ñô ˆIð ŒK×Ò˜yÑ)Ô)Ð)Ð)ð		*ð 		*r'   úIterator[str]c              #  ó,   K  — | j         D ]	}|› d�V — Œ
dS )z7Iterator with string representation of non-null counts.z	 non-nullN)rK   )rA   r�   s     r%   Ú_gen_non_null_countsz._TableBuilderVerboseMixin._gen_non_null_countsþ  s:   è è € àÔ)ð 	&ð 	&ˆEØÐ%Ð%Ð%Ð%Ð%Ð%Ð%ð	&ð 	&r'   c              #  ó@   K  — | j         D ]}t          |¦  «        V — ŒdS )z5Iterator with string representation of column dtypes.N)rB   r   )rA   Údtypes     r%   Ú_gen_dtypesz%_TableBuilderVerboseMixin._gen_dtypes  s8   è è € à”[ð 	&ð 	&ˆEÝ˜uÑ%Ô%Ð%Ð%Ð%Ð%ð	&ð 	&r'   N©r!   r
  )r!   r  ©r!   r%  rê   ©r!   rA  )rh   ri   rj   rk   r  rl   rm   r   r  r  r  r  r)  r'  r(  r4  r;  r@  rC  rF  r2   r'   r%   r  r  ¦  s‡  € € € € € € ðð ð €GÐÐÐÑØ$Ð$Ð$Ñ$Ø&Ð&Ð&Ñ&ØÐÐÑàØð=ð =ð =ñ „^ñ „Xð=ð ð2ð 2ð 2ñ „Xð2ð
ð 
ð 
ð 
ð=ð =ð =ð =ð
	3ð 	3ð 	3ð 	3ð ðLð Lð Lñ „^ðLð ðOð Oð Oñ „^ðOð	(ð 	(ð 	(ð 	(ð	+ð 	+ð 	+ð 	+ð
*ð 
*ð 
*ð 
*ð&ð &ð &ð &ð
&ð &ð &ð &ð &ð &r'   r  c                  ób   — e Zd ZdZdd„Zdd	„Zedd„¦   «         Zdd„Zdd„Z	dd„Z
dd„Zdd„ZdS )r½   z:
    Dataframe info table builder for verbose output.
    r‡   ro   r»   r­   r!   r^   c               ó    — || _         || _        t          |                      ¦   «         ¦  «        | _        |                      ¦   «         | _        d S r`   ©r‡   r»   r#  r)  r  r  r	  ©rA   r‡   r»   s      r%   rs   z&_DataFrameTableBuilderVerbose.__init__  óF   € ð ˆŒ	Ø&ˆÔÝ04°T·^²^Ñ5EÔ5EÑ0FÔ0FˆŒØ26×2OÒ2OÑ2QÔ2QˆÔ Ð Ð r'   c                óX  — |                       ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          | j        r|                      ¦   «          dS dS ró   )	r×   rÚ   rÿ   r4  r;  r@  rè   rÑ   rû   r@   s    r%   rð   z2_DataFrameTableBuilderVerbose._fill_non_empty_info  s­   € à×!Ò!Ñ#Ô#Ð#Ø×!Ò!Ñ#Ô#Ð#Ø×%Ò%Ñ'Ô'Ð'Ø×ÒÑÔÐØ×ÒÑ!Ô!Ð!Ø×ÒÑÔÐØ×ÒÑÔÐØÔ$ð 	)Ø×&Ò&Ñ(Ô(Ð(Ð(Ð(ð	)ð 	)r'   r
  c                ó    — | j         rg d¢S g d¢S )r  )ú # ÚColumnúNon-Null Countr   )rQ  rR  r   ©r»   r@   s    r%   r  z%_DataFrameTableBuilderVerbose.headers%  s(   € ð Ôð 	@Ø?Ð?Ð?Ð?Ø)Ð)Ð)Ð)r'   c                óL   — | j                              d| j        › d�¦  «         d S )NzData columns (total z
 columns):)rÊ   rÕ   r~   r@   s    r%   rÿ   z6_DataFrameTableBuilderVerbose.add_columns_summary_line,  s,   € ØŒ×ÒÐL°$´.ÐLÐLÐLÑMÔMÐMÐMÐMr'   r%  c              #  ó¨   K  — t          |                      ¦   «         |                      ¦   «         |                      ¦   «         d¬¦  «        E d{V —† dS )r-  Tr  N)r  Ú_gen_line_numbersÚ_gen_columnsrF  r@   s    r%   r(  z6_DataFrameTableBuilderVerbose._gen_rows_without_counts/  su   è è € åØ×"Ò"Ñ$Ô$Ø×ÒÑÔØ×ÒÑÔØð	
ñ 
ô 
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
r'   c              #  óÎ   K  — t          |                      ¦   «         |                      ¦   «         |                      ¦   «         |                      ¦   «         d¬¦  «        E d{V —† dS ©r+  Tr  N)r  rW  rX  rC  rF  r@   s    r%   r'  z3_DataFrameTableBuilderVerbose._gen_rows_with_counts8  s„   è è € åØ×"Ò"Ñ$Ô$Ø×ÒÑÔØ×%Ò%Ñ'Ô'Ø×ÒÑÔØð
ñ 
ô 
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
r'   rA  c              #  óL   K  — t          | j        ¦  «        D ]\  }}d|› �V — ŒdS )z6Iterator with string representation of column numbers.r1   N)Ú	enumeraterz   )rA   ÚiÚ_s      r%   rW  z/_DataFrameTableBuilderVerbose._gen_line_numbersB  s>   è è € å˜dœhÑ'Ô'ð 	ð 	‰DˆAˆqØ�a�'�'ˆMˆMˆMˆMð	ð 	r'   c              #  ó@   K  — | j         D ]}t          |¦  «        V — ŒdS )z4Iterator with string representation of column names.N)rz   r   )rA   r  s     r%   rX  z*_DataFrameTableBuilderVerbose._gen_columnsG  s8   è è € à”8ð 	$ð 	$ˆCÝ˜sÑ#Ô#Ð#Ð#Ð#Ð#ð	$ð 	$r'   N)r‡   ro   r»   r­   r!   r^   rê   rG  rH  rI  )rh   ri   rj   rk   rs   rð   rm   r  rÿ   r(  r'  rW  rX  r2   r'   r%   r½   r½   	  sÒ   € € € € € ðð ð	Rð 	Rð 	Rð 	Rð
)ð 
)ð 
)ð 
)ð ð*ð *ð *ñ „Xð*ðNð Nð Nð Nð
ð 
ð 
ð 
ð
ð 
ð 
ð 
ðð ð ð ð
$ð $ð $ð $ð $ð $r'   r½   c                  óZ   — e Zd ZdZdd„Zdd„Zedd
„¦   «         Zdd„Ze	dd„¦   «         Z
dS )rÃ   z‡
    Abstract builder for series info table.

    Parameters
    ----------
    info : SeriesInfo.
        Instance of SeriesInfo.
    r‡   r�   r!   r^   c               ó   — || _         d S r`   r¼   rí   s     r%   rs   z_SeriesTableBuilder.__init__W  s   € Ø $ˆŒ	ˆ	ˆ	r'   rÉ   c                óF   — g | _         |                      ¦   «          | j         S r`   )rÊ   rð   r@   s    r%   rž   z_SeriesTableBuilder.get_linesZ  s#   € ØˆŒØ×!Ò!Ñ#Ô#Ð#ØŒ{Ðr'   r   c                ó   — | j         j        S )zSeries.rÍ   r@   s    r%   r=   z_SeriesTableBuilder.data_  rõ   r'   c                óJ   — | j                              d| j        › �¦  «         dS rù   rú   r@   s    r%   rû   z)_SeriesTableBuilder.add_memory_usage_lined  rü   r'   c                ó   — dS ©z<Add lines to the info table, pertaining to non-empty series.Nr2   r@   s    r%   rð   z(_SeriesTableBuilder._fill_non_empty_infoh  rC   r'   N)r‡   r�   r!   r^   ré   r�   rê   )rh   ri   rj   rk   rs   rž   rm   r=   rû   r   rð   r2   r'   r%   rÃ   rÃ   M  s¤   € € € € € ðð ð%ð %ð %ð %ðð ð ð ð
 ðð ð ñ „XððHð Hð Hð Hð ðKð Kð Kñ „^ðKð Kð Kr'   rÃ   c                  ó   — e Zd ZdZdd„ZdS )rÆ   z;
    Series info table builder for non-verbose output.
    r!   r^   c                ó¸   — |                       ¦   «          |                      ¦   «          |                      ¦   «          | j        r|                      ¦   «          dS dS rf  )r×   rÚ   rè   rÑ   rû   r@   s    r%   rð   z2_SeriesTableBuilderNonVerbose._fill_non_empty_infor  se   € à×!Ò!Ñ#Ô#Ð#Ø×!Ò!Ñ#Ô#Ð#Ø×ÒÑÔÐØÔ$ð 	)Ø×&Ò&Ñ(Ô(Ð(Ð(Ð(ð	)ð 	)r'   Nrê   )rh   ri   rj   rk   rð   r2   r'   r%   rÆ   rÆ   m  s2   € € € € € ðð ð)ð )ð )ð )ð )ð )r'   rÆ   c                  óR   — e Zd ZdZdd„Zdd	„Zdd
„Zedd„¦   «         Zdd„Z	dd„Z
dS )rÅ   z7
    Series info table builder for verbose output.
    r‡   r�   r»   r­   r!   r^   c               ó    — || _         || _        t          |                      ¦   «         ¦  «        | _        |                      ¦   «         | _        d S r`   rL  rM  s      r%   rs   z#_SeriesTableBuilderVerbose.__init__€  rN  r'   c                óX  — |                       ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          | j        r|                      ¦   «          dS dS rf  )	r×   rÚ   Úadd_series_name_liner4  r;  r@  rè   rÑ   rû   r@   s    r%   rð   z/_SeriesTableBuilderVerbose._fill_non_empty_info‹  s­   € à×!Ò!Ñ#Ô#Ð#Ø×!Ò!Ñ#Ô#Ð#Ø×!Ò!Ñ#Ô#Ð#Ø×ÒÑÔÐØ×ÒÑ!Ô!Ð!Ø×ÒÑÔÐØ×ÒÑÔÐØÔ$ð 	)Ø×&Ò&Ñ(Ô(Ð(Ð(Ð(ð	)ð 	)r'   c                óT   — | j                              d| j        j        › �¦  «         d S )NzSeries name: )rÊ   rÕ   r=   r  r@   s    r%   rl  z/_SeriesTableBuilderVerbose.add_series_name_line—  s+   € ØŒ×ÒÐ;¨4¬9¬>Ð;Ð;Ñ<Ô<Ð<Ð<Ð<r'   r
  c                ó   — | j         rddgS dgS )r  rS  r   rT  r@   s    r%   r  z"_SeriesTableBuilderVerbose.headersš  s"   € ð Ôð 	/Ø$ gÐ.Ð.ØˆyÐr'   r%  c              #  óR   K  — d„ |                       ¦   «         D ¦   «         E d{V —† dS )r-  c              3  ó   K  — | ]}|gV — Œd S r`   r2   )rà   rE  s     r%   r"  zF_SeriesTableBuilderVerbose._gen_rows_without_counts.<locals>.<genexpr>£  s$   è è € Ð<Ð< �U�GÐ<Ð<Ð<Ð<Ð<Ð<r'   N)rF  r@   s    r%   r(  z3_SeriesTableBuilderVerbose._gen_rows_without_counts¡  s>   è è € à<Ð<¨×)9Ò)9Ñ);Ô);Ð<Ñ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<r'   c              #  ó‚   K  — t          |                      ¦   «         |                      ¦   «         d¬¦  «        E d{V —† dS rZ  )r  rC  rF  r@   s    r%   r'  z0_SeriesTableBuilderVerbose._gen_rows_with_counts¥  sK   è è € å�t×0Ò0Ñ2Ô2°D×4DÒ4DÑ4FÔ4FÈtÐTÑTÔTÐTÐTÐTÐTÐTÐTÐTÐTÐTr'   N)r‡   r�   r»   r­   r!   r^   rê   rG  rH  )rh   ri   rj   rk   rs   rð   rl  rm   r  r(  r'  r2   r'   r%   rÅ   rÅ   {  s¬   € € € € € ðð ð	Rð 	Rð 	Rð 	Rð
)ð 
)ð 
)ð 
)ð=ð =ð =ð =ð ðð ð ñ „Xðð=ð =ð =ð =ðUð Uð Uð Uð Uð Ur'   rÅ   Údfr   rD   c                ó€   — | j                              ¦   «                              d„ ¦  «                             ¦   «         S )zK
    Create mapping between datatypes and their number of occurrences.
    c                ó   — | j         S r`   r  )r3   s    r%   ú<lambda>z-_get_dataframe_dtype_counts.<locals>.<lambda>¯  s   € °a´f€ r'   )rB   Úvalue_countsÚgroupbyr„   )rr  s    r%   ru   ru   ª  s6   € ð
 Œ9×!Ò!Ñ#Ô#×+Ò+Ð,<Ð,<Ñ=Ô=×AÒAÑCÔCÐCr'   )r   r   r   r    r!   r"   )r(   r)   r*   r"   r!   r"   r`   )r5   r6   r!   r7   )rr  r   r!   rD   )4Ú
__future__r   Úabcr   r   rŸ   Útextwrapr   Útypingr   Úpandas._configr	   Úpandas.io.formatsr
   r¡   Úpandas.io.formats.printingr   Úcollections.abcr   r   r   r   Úpandas._typingr   r   Úpandasr   r   r   r   Úseries_examples_subÚseries_see_also_subÚseries_max_cols_subÚseries_sub_kwargsr&   r4   r9   r;   ro   r�   r›   rˆ   r“   r¥   r¸   r¾   r  r½   rÃ   rÆ   rÅ   ru   r2   r'   r%   ú<module>r†     sâ  ðØ "Ð "Ð "Ð "Ð "Ð "ðð ð ð ð ð ð ð ð €
€
€
Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  à %Ð %Ð %Ð %Ð %Ð %à +Ð +Ð +Ð +Ð +Ð +Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3àð ðð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð
ð ð ð ð ð ð ð ð ð ð �&ð?ñô €ð �fð9ñ;ô ;Ð ð| �fð4ñô Ð ð
 �fðFñô Ð ð ØØ'Ø&Ø'Ø'Ø6ðð Ð ð'ð 'ð 'ð 'ð4,ð ,ð ,ð ,ð@ '+ðð ð ð ð ðPð Pð Pð Pð P�ñ Pô Pð PðfFð Fð Fð Fð F�Iñ Fô Fð FðR9=ð 9=ð 9=ð 9=ð 9=�ñ 9=ô 9=ð 9=ðx0ð 0ð 0ð 0ð 0ñ 0ô 0ð 0ð$Mð Mð Mð Mð MÐ0ñ Mô Mð Mð`(ð (ð (ð (ð (Ð-ñ (ô (ð (ðV5Eð 5Eð 5Eð 5Eð 5E˜Cñ 5Eô 5Eð 5Eðp0Hð 0Hð 0Hð 0Hð 0HÐ2ñ 0Hô 0Hð 0Hðf>ð >ð >ð >ð >Ð'=ñ >ô >ð >ð$`&ð `&ð `&ð `&ð `&Ð 5ñ `&ô `&ð `&ðFA$ð A$ð A$ð A$ð A$Ð$:Ð<Uñ A$ô A$ð A$ðHKð Kð Kð Kð KÐ/ñ Kô Kð Kð@)ð )ð )ð )ð )Ð$7ñ )ô )ð )ð,Uð ,Uð ,Uð ,Uð ,UÐ!4Ð6Oñ ,Uô ,Uð ,Uð^Dð Dð Dð Dð Dð Dr'   