§
    Ó! hm  ã                  ó  — 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! ed¦  «        Z" ed¦  «        Z#dddee"e#ddœZ$ ed¦  «        Z%dGd„Z&dHd#„Z'	 dIdJd'„Z( G d(„ d)e¦  «        Z) G d*„ d+e)¦  «        Z* G d,„ d-e)¦  «        Z+ G d.„ d/¦  «        Z, G d0„ d1e,¦  «        Z- G d2„ d3e,¦  «        Z. G d4„ d5e¦  «        Z/ G d6„ d7e/¦  «        Z0 G d8„ d9e0¦  «        Z1 G d:„ d;e/¦  «        Z2 G d<„ d=e0e2¦  «        Z3 G d>„ d?e/¦  «        Z4 G d@„ dAe4¦  «        Z5 G dB„ dCe4e2¦  «        Z6dKdF„Z7dS )Lé    )Úannotations)ÚABCÚabstractmethodN)Údedent)ÚTYPE_CHECKING©Ú
get_option)Úformat)Úpprint_thing)ÚIterableÚIteratorÚMappingÚSequence)ÚDtypeÚWriteBuffer)Ú	DataFrameÚIndexÚSeriesa      max_cols : int, optional
        When to switch from the verbose to the truncated output. If the
        DataFrame has more than `max_cols` columns, the truncated output
        is used. By default, the setting in
        ``pandas.options.display.max_info_columns`` is used.aR      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']
    >>> float_values = [0.0, 0.25, 0.5, 0.75, 1.0]
    >>> df = pd.DataFrame({"int_col": int_values, "text_col": text_values,
    ...                   "float_col": float_values})
    >>> df
        int_col text_col  float_col
    0        1    alpha       0.00
    1        2     beta       0.25
    2        3    gamma       0.50
    3        4    delta       0.75
    4        5  epsilon       1.00

    Prints information of all columns:

    >>> df.info(verbose=True)
    <class 'pandas.core.frame.DataFrame'>
    RangeIndex: 5 entries, 0 to 4
    Data columns (total 3 columns):
     #   Column     Non-Null Count  Dtype
    ---  ------     --------------  -----
     0   int_col    5 non-null      int64
     1   text_col   5 non-null      object
     2   float_col  5 non-null      float64
    dtypes: float64(1), int64(1), object(1)
    memory usage: 248.0+ bytes

    Prints a summary of columns count and its dtypes but not per column
    information:

    >>> df.info(verbose=False)
    <class 'pandas.core.frame.DataFrame'>
    RangeIndex: 5 entries, 0 to 4
    Columns: 3 entries, int_col to float_col
    dtypes: float64(1), int64(1), object(1)
    memory usage: 248.0+ bytes

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

    >>> import io
    >>> buffer = io.StringIO()
    >>> df.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 DataFrames and fine-tune memory optimization:

    >>> random_strings_array = np.random.choice(['a', 'b', 'c'], 10 ** 6)
    >>> df = pd.DataFrame({
    ...     'column_1': np.random.choice(['a', 'b', 'c'], 10 ** 6),
    ...     'column_2': np.random.choice(['a', 'b', 'c'], 10 ** 6),
    ...     'column_3': np.random.choice(['a', 'b', 'c'], 10 ** 6)
    ... })
    >>> df.info()
    <class 'pandas.core.frame.DataFrame'>
    RangeIndex: 1000000 entries, 0 to 999999
    Data columns (total 3 columns):
     #   Column    Non-Null Count    Dtype
    ---  ------    --------------    -----
     0   column_1  1000000 non-null  object
     1   column_2  1000000 non-null  object
     2   column_3  1000000 non-null  object
    dtypes: object(3)
    memory usage: 22.9+ MB

    >>> df.info(memory_usage='deep')
    <class 'pandas.core.frame.DataFrame'>
    RangeIndex: 1000000 entries, 0 to 999999
    Data columns (total 3 columns):
     #   Column    Non-Null Count    Dtype
    ---  ------    --------------    -----
     0   column_1  1000000 non-null  object
     1   column_2  1000000 non-null  object
     2   column_3  1000000 non-null  object
    dtypes: object(3)
    memory usage: 165.9 MBz”    DataFrame.describe: Generate descriptive statistics of DataFrame
        columns.
    DataFrame.memory_usage: Memory usage of DataFrame columns.r   z and columnsÚ )ÚklassÚtype_subÚmax_cols_subÚshow_counts_subÚexamples_subÚsee_also_subÚversion_added_subaî      >>> 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.core.series.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.core.series.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.core.series.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.core.series.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.r   z
.. versionadded:: 1.4.0
aÅ  
    Print a concise summary of a {klass}.

    This method prints information about a {klass} including
    the index dtype{type_sub}, non-null values and memory usage.
    {version_added_sub}
    Parameters
    ----------
    verbose : bool, optional
        Whether to print the full summary. By default, the setting in
        ``pandas.options.display.max_info_columns`` is followed.
    buf : writable buffer, defaults to sys.stdout
        Where to send the output. By default, the output is printed to
        sys.stdout. Pass a writable buffer if you need to further process
        the output.
    {max_cols_sub}
    memory_usage : bool, str, optional
        Specifies whether total memory usage of the {klass}
        elements (including the index) should be displayed. By default,
        this follows the ``pandas.options.display.memory_usage`` setting.

        True always show memory usage. False never shows memory usage.
        A value of 'deep' is equivalent to "True with deep introspection".
        Memory usage is shown in human-readable units (base-2
        representation). Without deep introspection a memory estimation is
        made based in column dtype and number of rows assuming values
        consume the same memory amount for corresponding dtypes. With deep
        memory introspection, a real memory usage calculation is performed
        at the cost of computational resources. See the
        :ref:`Frequently Asked Questions <df-memory-usage>` for more
        details.
    {show_counts_sub}

    Returns
    -------
    None
        This method prints a summary of a {klass} and returns None.

    See Also
    --------
    {see_also_sub}

    Examples
    --------
    {examples_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     úPc:\xampp_lite_8_4\www\timesheet\venv\Lib\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.dtypesx  ó   € € € r'   úMapping[str, int]c                ó   — dS )ú!Mapping dtype - number of counts.Nr2   r@   s    r%   Údtype_countsz_BaseInfo.dtype_counts„  rC   r'   úSequence[int]c                ó   — 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                ó€   — d}| j         r4| j         dk    r)d| j        v s| 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Ÿ  sU   € àˆØÔð 		)ØÔ  FÒ*Ð*ð
  Ô 1Ð1Ð1Ø”y”×AÒAÑCÔCð 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;   g  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.ids×  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'   rH   c                ó4   — | j                              ¦   «         S )rJ   ©r=   Úcountr@   s    r%   rK   zDataFrameInfo.non_null_countsè  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_bytesí  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.renderò  s@   € õ (ØØØØ#ð	
ñ 
ô 
ˆð 	×Ò˜#ÑÔÐÐÐr'   r`   )r=   r   r5   r6   r!   r^   rc   rb   ©r!   r   re   rd   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__  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.render  s\   € ð ÐÝð5ñô ð õ %ØØØ#ð
ñ 
ô 
ˆð
 	×Ò˜#ÑÔÐÐÐr'   rH   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_bytes2  s,   € ð Ô  FÒ*ˆØŒy×%Ò%¨D°tÐ%Ñ<Ô<Ð<r'   r`   )r=   r   r5   r6   r!   r^   rg   rd   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_bufferD  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_builderL  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__a  sL   € ð ˆŒ	Ø”IˆŒ	ØˆŒØ×1Ò1°(Ñ;Ô;ˆŒØ×7Ò7¸ÑDÔDˆÔÐÐr'   r    c                óL   — t          dt          | j        ¦  «        dz   ¦  «        S )z"Maximum info rows to be displayed.zdisplay.max_info_rowsé   )r	   r}   r=   r@   s    r%   Úmax_rowsz_DataFrameInfoPrinter.max_rowsn  s"   € õ Ð1µ3°t´y±>´>ÀAÑ3EÑFÔFÐFr'   Ú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_colss  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_rowsx  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| j        dz   ¦  «        S |S )Nzdisplay.max_info_columnsrª   )r	   r~   )rA   rY   s     r%   r§   z*_DataFrameInfoPrinter._initialize_max_cols‚  s%   € ØÐÝÐ8¸$¼.È1Ñ:LÑMÔMÐMØˆ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ˆ   Q  s  € € € € € ðð ð$  $Ø#Ø#'ðEð Eð Eð Eð Eð ðGð Gð Gñ „XðGð ð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_linesÔ  rC   r'   r<   c                ó   — | j         j        S r`   ©r‡   r=   r@   s    r%   r=   z_TableBuilderAbstract.dataØ  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.dtypesÜ  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_usageæ  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_stringë  s   € ð ŒyÔ,Ð,r'   rH   c                ó   — | j         j        S r`   )r‡   rK   r@   s    r%   rK   z%_TableBuilderAbstract.non_null_countsð  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_lineô  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_lineø  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_lineü  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__  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_lines  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_info  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_line2  ó*   € àŒ×ÒÐ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·     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_lineE  s1   € ØŒ×Ò˜4œ8×,Ò,°)Ð,Ñ<Ô<Ñ=Ô=Ð=Ð=Ð=r'   Nré   )rh   ri   rj   rk   rï   rþ   r2   r'   r%   r½   r½   7  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]]ÚstrrowsrH   Úgross_column_widthsr¬   rº   r!   úSequence[str]c                ó   — dS )ú.Headers names of the columns in verbose table.Nr2   r@   s    r%   Úheadersz!_TableBuilderVerboseMixin.headersS  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_widthsX  s   € ð 2Ð1 D¤LÐ1Ñ1Ô1Ð1r'   c                óh   — |                       ¦   «         }d„ t          | j        |¦  «        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'   )Ú_get_body_column_widthsÚzipr  )rA   Úbody_column_widthss     r%   Ú_get_gross_column_widthsz2_TableBuilderVerboseMixin._get_gross_column_widths]  sC   € à!×9Ò9Ñ;Ô;Ðð
ð 
å˜dÔ7Ð9KÑLÔLð
ñ 
ô 
ð 	
r'   c                óP   — t          t          | j        Ž ¦  «        }d„ |D ¦   «         S )z$Get widths of table content columns.c                ó@   — 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>h  s(   è è € Ð(Ð(˜q•C˜‘F”FÐ(Ð(Ð(Ð(Ð(Ð(r'   r  r  s     r%   râ   zE_TableBuilderVerboseMixin._get_body_column_widths.<locals>.<listcomp>h  s/   € Ð<Ð<Ð<¨S•Ð(Ð( CÐ(Ñ(Ô(Ñ(Ô(Ð<Ð<Ð<r'   )Úlistr  r  )rA   Ústrcolss     r%   r  z1_TableBuilderVerboseMixin._get_body_column_widthse  s*   € å+/µ°T´\Ð0BÑ+CÔ+CˆØ<Ð<°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_rowsj  s3   € ð Ôð 	3Ø×-Ò-Ñ/Ô/Ð/à×0Ò0Ñ2Ô2Ð2r'   c                ó   — dS ©z=Iterator with string representation of body data with counts.Nr2   r@   s    r%   r#  z/_TableBuilderVerboseMixin._gen_rows_with_countsu  rC   r'   c                ó   — dS ©z@Iterator with string representation of body data without counts.Nr2   r@   s    r%   r$  z2_TableBuilderVerboseMixin._gen_rows_without_countsy  rC   r'   r^   c                ó²   — | j                              d„ t          | j        | j        ¦  «        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'   )r  rå   r  r  r  rÉ   rÔ   )rA   Úheader_lines     r%   Úadd_header_linez)_TableBuilderVerboseMixin.add_header_line}  sb   € Ø”l×'Ò'ðð å),¨T¬\¸4Ô;SÑ)TÔ)Tðñ ô ñ
ô 
ˆð 	Œ×Ò˜;Ñ'Ô'Ð'Ð'Ð'r'   c                ó²   — | j                              d„ t          | j        | j        ¦  «        D ¦   «         ¦  «        }| j                             |¦  «         d S )Nc                ó:   — g | ]\  }}t          d |z  |¦  «        ‘ŒS )ú-r,  )rß   Úheader_colwidthÚgross_colwidths      r%   râ   z@_TableBuilderVerboseMixin.add_separator_line.<locals>.<listcomp>ˆ  s;   € ð ð ð á3�O ^õ ˜˜Ñ.°Ñ?Ô?ðð ð r'   )r  rå   r  r  r  rÉ   rÔ   )rA   Úseparator_lines     r%   Úadd_separator_linez,_TableBuilderVerboseMixin.add_separator_line†  sh   € Øœ×*Ò*ðð å7:ØÔ-¨tÔ/Gñ8ô 8ðñ ô ñ
ô 
ˆð 	Œ×Ò˜>Ñ*Ô*Ð*Ð*Ð*r'   c                ó¼   — | j         D ]S}| j                             d„ t          || j        ¦  «        D ¦   «         ¦  «        }| j                             |¦  «         ŒTd S )Nc                ó4   — g | ]\  }}t          ||¦  «        ‘ŒS r2   r,  )rß   r  r5  s      r%   râ   z<_TableBuilderVerboseMixin.add_body_lines.<locals>.<listcomp>”  s6   € ð ð ð á+˜˜^õ ˜S .Ñ1Ô1ðð ð r'   )r  r  rå   r  r  rÉ   rÔ   )rA   ÚrowÚ	body_lines      r%   Úadd_body_linesz(_TableBuilderVerboseMixin.add_body_lines‘  sx   € Ø”<ð 	*ð 	*ˆCØœ×)Ò)ðð å/2°3¸Ô8PÑ/QÔ/Qðñ ô ñô ˆ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  rd   ©r!   r!  ré   ©r!   r=  )rh   ri   rj   rk   r  rl   rm   r   r  r  r  r  r%  r#  r$  r0  r7  r<  r?  rB  r2   r'   r%   r  r  I  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þ   r0  r7  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   )rM  rN  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          |                      ¦   «         |                      ¦   «         |                      ¦   «         ¦  «        E d{V —† dS r)  )r  Ú_gen_line_numbersÚ_gen_columnsrB  r@   s    r%   r$  z6_DataFrameTableBuilderVerbose._gen_rows_without_countsÌ  sm   è è € åØ×"Ò"Ñ$Ô$Ø×ÒÑÔØ×ÒÑÔñ
ô 
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
r'   c              #  óÊ   K  — t          |                      ¦   «         |                      ¦   «         |                      ¦   «         |                      ¦   «         ¦  «        E d{V —† dS r'  )r  rS  rT  r?  rB  r@   s    r%   r#  z3_DataFrameTableBuilderVerbose._gen_rows_with_countsÔ  s|   è è € åØ×"Ò"Ñ$Ô$Ø×ÒÑÔØ×%Ò%Ñ'Ô'Ø×ÒÑÔñ	
ô 
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
r'   r=  c              #  óL   K  — t          | j        ¦  «        D ]\  }}d|› �V — ŒdS )z6Iterator with string representation of column numbers.r1   N)Ú	enumeraterz   )rA   ÚiÚ_s      r%   rS  z/_DataFrameTableBuilderVerbose._gen_line_numbersÝ  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%   rT  z*_DataFrameTableBuilderVerbose._gen_columnsâ  s8   è è € à”8ð 	$ð 	$ˆCÝ˜sÑ#Ô#Ð#Ð#Ð#Ð#ð	$ð 	$r'   N)r‡   ro   rº   r¬   r!   r^   ré   rC  rD  rE  )rh   ri   rj   rk   rs   rï   rm   r  rþ   r$  r#  rS  rT  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__ò  s   € Ø $ˆŒ	ˆ	ˆ	r'   rÈ   c                óF   — g | _         |                      ¦   «          | j         S r`   )rÉ   rï   r@   s    r%   rœ   z_SeriesTableBuilder.get_linesõ  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_lineÿ  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_info  rC   r'   N)r‡   rŽ   r!   r^   rè   )r!   r   ré   )rh   ri   rj   rk   rs   rœ   rm   r=   rú   r   rï   r2   r'   r%   rÂ   rÂ   è  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 ra  )rÖ   rÙ   rç   rÐ   rú   r@   s    r%   rï   z2_SeriesTableBuilderNonVerbose._fill_non_empty_info  se   € à×!Ò!Ñ#Ô#Ð#Ø×!Ò!Ñ#Ô#Ð#Ø×ÒÑÔÐØÔ$ð 	)Ø×&Ò&Ñ(Ô(Ð(Ð(Ð(ð	)ð 	)r'   Nré   )rh   ri   rj   rk   rï   r2   r'   r%   rÅ   rÅ     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`   rH  rI  s      r%   rs   z#_SeriesTableBuilderVerbose.__init__  rJ  r'   c                óX  — |                       ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          | j        r|                      ¦   «          dS dS ra  )	rÖ   rÙ   Úadd_series_name_liner0  r7  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%   rg  z/_SeriesTableBuilderVerbose.add_series_name_line2  s+   € ØŒ×ÒÐ;¨4¬9¬>Ð;Ð;Ñ<Ô<Ð<Ð<Ð<r'   r  c                ó   — | j         rddgS dgS )r
  rO  r   rP  r@   s    r%   r  z"_SeriesTableBuilderVerbose.headers5  s"   € ð Ôð 	/Ø$ gÐ.Ð.ØˆyÐr'   r!  c              #  ó>   K  — |                       ¦   «         E d{V —† dS r)  )rB  r@   s    r%   r$  z3_SeriesTableBuilderVerbose._gen_rows_without_counts<  s0   è è € à×#Ò#Ñ%Ô%Ð%Ð%Ð%Ð%Ð%Ð%Ð%Ð%Ð%r'   c              #  ó~   K  — t          |                      ¦   «         |                      ¦   «         ¦  «        E d{V —† dS r'  )r  r?  rB  r@   s    r%   r#  z0_SeriesTableBuilderVerbose._gen_rows_with_counts@  s^   è è € åØ×%Ò%Ñ'Ô'Ø×ÒÑÔñ
ô 
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
r'   N)r‡   rŽ   rº   r¬   r!   r^   ré   rC  rD  )rh   ri   rj   rk   rs   rï   rg  rm   r  r$  r#  r2   r'   r%   rÄ   rÄ     s¦   € € € € € ðð ð	Rð 	Rð 	Rð 	Rð
)ð 
)ð 
)ð 
)ð=ð =ð =ð =ð ðð ð ñ „Xðð&ð &ð &ð &ð
ð 
ð 
ð 
ð 
ð 
r'   rÄ   ÚdfrD   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>M  s   € °a´f€ r'   )rB   Úvalue_countsÚgroupbyr„   )rl  s    r%   ru   ru   H  s6   € ð
 Œ9×!Ò!Ñ#Ô#×+Ò+Ð,<Ð,<Ñ=Ô=×AÒAÑCÔCÐCr'   )r   r   r   r    r!   r"   )r(   r)   r*   r"   r!   r"   r`   )r5   r6   r!   r7   )rl  r   r!   rD   )8Ú
__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   Úframe_max_cols_subr   Úframe_examples_subÚframe_see_also_subÚframe_sub_kwargsÚseries_examples_subÚseries_see_also_subÚseries_sub_kwargsÚINFO_DOCSTRINGr&   r4   r9   r;   ro   rŽ   r™   rˆ   r’   r£   r·   r½   r  r¼   rÂ   rÅ   rÄ   ru   r2   r'   r%   ú<module>r„     sF  ðØ "Ð "Ð "Ð "Ð "Ð "ðð ð ð ð ð ð ð ð €
€
€
Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  à %Ð %Ð %Ð %Ð %Ð %à +Ð +Ð +Ð +Ð +Ð +Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3àð ðð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð
ð ð ð ð ð ð ð ð ð ð �Vð@ñô Ð ð �&ð?ñô €ð �VðQñSô SÐ ðl �VðBñô Ð ð ØØ&Ø&Ø&Ø&Øðð Ð ð �fð9ñ;ô ;Ð ð| �fð4ñô Ð ð ØØØ&Ø'Ø'Ø6ðð Ð ð �ð.ñ0ô 0€ðf'ð 'ð 'ð 'ð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>ð >ð >ð >ð >Ð'=ñ >ô >ð >ð$Z&ð Z&ð Z&ð Z&ð Z&Ð 5ñ Z&ô Z&ð Z&ðz?$ð ?$ð ?$ð ?$ð ?$Ð$:Ð<Uñ ?$ô ?$ð ?$ðDKð Kð Kð Kð KÐ/ñ Kô Kð Kð@)ð )ð )ð )ð )Ð$7ñ )ô )ð )ð/
ð /
ð /
ð /
ð /
Ð!4Ð6Oñ /
ô /
ð /
ðdDð Dð Dð Dð Dð Dr'   