Ë
    )V.jm  ã                  óœ  — 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%d9d„Z&d:d„Z'	 d;	 	 	 d<d„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(„ d)e«      Z/ G d*„ d+e/«      Z0 G d,„ d-e0«      Z1 G d.„ d/e/«      Z2 G d0„ d1e0e2«      Z3 G d2„ d3e/«      Z4 G d4„ d5e4«      Z5 G d6„ d7e4e2«      Z6d=d8„Z7y)>é    )Ú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}
    c                ó<   — t        | «      d| j                  |«      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)ÚstrÚljust)ÚsÚspaces     úXC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\pandas/io/formats/info.pyÚ_put_strr#   %  s   € ô. ˆq‹6�&�5ˆ>×Ñ Ó&Ð&ó    c                óL   — 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© )ÚnumÚsize_qualifierÚxs      r"   Ú_sizeof_fmtr0   ?  sL   € ó0 /ˆØ�Š<Ø˜$�Z Ð/¨q°°Ð4Ò4Øˆv‰‰ð /ð �$ˆZ˜Ð' sÐ+Ð+r$   c                ó    — | €t        d«      } | S )z5Get memory usage based on inputs and display options.zdisplay.memory_usager   )Úmemory_usages    r"   Ú_initialize_memory_usager3   ^  s   € ð ÐÜ!Ð"8Ó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y)Ú	_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Údataú
bool | strr2   c                 ó   — y)z¡
        Dtypes.

        Returns
        -------
        dtypes : sequence
            Dtype of each of the DataFrame's columns (or one series column).
        Nr,   ©Úselfs    r"   Údtypesz_BaseInfo.dtypesx  ó   � r$   c                 ó   — y)ú!Mapping dtype - number of counts.Nr,   r:   s    r"   Údtype_countsz_BaseInfo.dtype_counts„  r=   r$   c                 ó   — y)úBSequence of non-null counts for all columns or column (if series).Nr,   r:   s    r"   Únon_null_countsz_BaseInfo.non_null_counts‰  r=   r$   c                 ó   — y)zœ
        Memory usage in bytes.

        Returns
        -------
        memory_usage_bytes : int
            Object's total memory usage in bytes.
        Nr,   r:   s    r"   Úmemory_usage_bytesz_BaseInfo.memory_usage_bytesŽ  r=   r$   c                óH   — t        | j                  | j                  «      › d�S )z0Memory usage in a form of human readable string.Ú
)r0   rE   r.   r:   s    r"   Úmemory_usage_stringz_BaseInfo.memory_usage_stringš  s%   € ô ˜d×5Ñ5°t×7JÑ7JÓKÐLÈBÐOÐOr$   c                ó¨   — d}| j                   rC| j                   dk7  r4d| j                  v s$| j                  j                  j	                  «       rd}|S )Nr   ÚdeepÚobjectÚ+)r2   r@   r7   ÚindexÚ_is_memory_usage_qualified)r;   r.   s     r"   r.   z_BaseInfo.size_qualifierŸ  sM   € àˆØ×ÒØ× Ñ  FÒ*ð
  × 1Ñ 1Ñ1Ø—y‘y—‘×AÑAÔCà%(�NØÐr$   c                ó   — y ©Nr,   )r;   ÚbufÚmax_colsÚverboseÚshow_countss        r"   Úrenderz_BaseInfo.render®  s   € ð 	r$   N©ÚreturnzIterable[Dtype]©rW   úMapping[str, int]©rW   úSequence[int]©rW   Úint©rW   r   ©
rQ   úWriteBuffer[str] | NonerR   ú
int | NonerS   úbool | NonerT   rb   rW   ÚNone)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__Úpropertyr   r<   r@   rC   rE   rH   r.   rU   r,   r$   r"   r5   r5   g  sõ   … ñð ÓØÓàØòó ó ðð Øò0ó ó ð0ð ØòQó ó ðQð Øòó ó ðð òPó ðPð òó ðð ðð %ðð ð	ð
 ðð !ðð 
òó ñr$   r5   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y)ÚDataFrameInfoz0
    Class storing dataframe-specific info.
    Nc                ó2   — || _         t        |«      | _        y rP   ©r7   r3   r2   ©r;   r7   r2   s      r"   Ú__init__zDataFrameInfo.__init__¿  s   € ð
  $ˆŒ	Ü4°\ÓBˆÕr$   c                ó,   — t        | j                  «      S rP   )Ú_get_dataframe_dtype_countsr7   r:   s    r"   r@   zDataFrameInfo.dtype_countsÇ  s   € ä*¨4¯9©9Ó5Ð5r$   c                ó.   — | j                   j                  S )z
        Dtypes.

        Returns
        -------
        dtypes
            Dtype of each of the DataFrame's columns.
        ©r7   r<   r:   s    r"   r<   zDataFrameInfo.dtypesË  s   € ð �y‰y×ÑÐr$   c                ó.   — | j                   j                  S )zz
        Column names.

        Returns
        -------
        ids : Index
            DataFrame's column names.
        )r7   Úcolumnsr:   s    r"   ÚidszDataFrameInfo.ids×  s   € ð �y‰y× Ñ Ð r$   c                ó,   — t        | j                  «      S ©z#Number of columns to be summarized.)Úlenrv   r:   s    r"   Ú	col_countzDataFrameInfo.col_countã  s   € ô �4—8‘8‹}Ðr$   c                ó6   — | j                   j                  «       S )rB   ©r7   Úcountr:   s    r"   rC   zDataFrameInfo.non_null_countsè  s   € ð �y‰y�‰Ó Ð r$   c                óv   — | j                   dk(  }| j                  j                  d|¬«      j                  «       S )NrJ   T©rM   rJ   )r2   r7   Úsum©r;   rJ   s     r"   rE   z DataFrameInfo.memory_usage_bytesí  s5   € à× Ñ  FÑ*ˆØ�y‰y×%Ñ%¨D°tÐ%Ó<×@Ñ@ÓBÐBr$   c               óD   — t        | |||¬«      }|j                  |«       y )N)ÚinforR   rS   rT   )Ú_DataFrameInfoPrinterÚ	to_buffer©r;   rQ   rR   rS   rT   Úprinters         r"   rU   zDataFrameInfo.renderò  s*   € ô (ØØØØ#ô	
ˆð 	×Ñ˜#Õr$   rP   )r7   r   r2   úbool | str | NonerW   rc   rX   rV   ©rW   r   r\   rZ   r_   )rd   re   rf   rg   ro   ri   r@   r<   rv   rz   rC   rE   rU   r,   r$   r"   rk   rk   º  sâ   „ ñð +/ðCàðCð (ðCð 
ó	Cð ò6ó ð6ð ò	 ó ð	 ð ò	!ó ð	!ð òó ðð ò!ó ð!ð òCó ðCðð %ðð ð	ð
 ðð !ðð 
ôr$   rk   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
y)Ú
SeriesInfoz-
    Class storing series-specific info.
    Nc                ó2   — || _         t        |«      | _        y rP   rm   rn   s      r"   ro   zSeriesInfo.__init__  s   € ð
 !ˆŒ	Ü4°\ÓBˆÕr$   )rQ   rR   rS   rT   c               ó\   — |�t        d«      ‚t        | ||¬«      }|j                  |«       y )NzIArgument `max_cols` can only be passed in DataFrame.info, not Series.info)rƒ   rS   rT   )Ú
ValueErrorÚ_SeriesInfoPrinterr…   r†   s         r"   rU   zSeriesInfo.render  sA   € ð ÐÜð5óð ô %ØØØ#ô
ˆð
 	×Ñ˜#Õr$   c                ó8   — | j                   j                  «       gS rP   r|   r:   s    r"   rC   zSeriesInfo.non_null_counts$  s   € à—	‘	—‘Ó!Ð"Ð"r$   c                ó0   — | j                   j                  gS rP   rs   r:   s    r"   r<   zSeriesInfo.dtypes(  s   € à—	‘	× Ñ Ð!Ð!r$   c                óD   — ddl m} t         || j                  «      «      S )Nr   )r   )Úpandas.core.framer   rq   r7   )r;   r   s     r"   r@   zSeriesInfo.dtype_counts,  s   € å/ä*©9°T·Y±YÓ+?Ó@Ð@r$   c                óZ   — | j                   dk(  }| j                  j                  d|¬«      S )z“Memory usage in bytes.

        Returns
        -------
        memory_usage_bytes : int
            Object's total memory usage in bytes.
        rJ   Tr   )r2   r7   r�   s     r"   rE   zSeriesInfo.memory_usage_bytes2  s.   € ð × Ñ  FÑ*ˆØ�y‰y×%Ñ%¨D°tÐ%Ó<Ð<r$   rP   )r7   r   r2   rˆ   rW   rc   r_   rZ   rV   rX   r\   )rd   re   rf   rg   ro   rU   ri   rC   r<   r@   rE   r,   r$   r"   r‹   r‹     sÈ   „ ñð +/ðCàðCð (ðCð 
ó	Cð (,Ø#Ø#Ø#'ñð %ðð ð	ð
 ðð !ðð 
óð( ò#ó ð#ð ò"ó ð"ð òAó ðAð
 ò	=ó ñ	=r$   r‹   c                  ó,   — e Zd ZdZddd„Zedd„«       Zy)Ú_InfoPrinterAbstractz6
    Class for printing dataframe or series info.
    Nc                ó”   — | j                  «       }|j                  «       }|€t        j                  }t	        j
                  ||«       y)z Save dataframe info into buffer.N)Ú_create_table_builderÚ	get_linesÚsysÚstdoutÚfmtÚbuffer_put_lines)r;   rQ   Útable_builderÚliness       r"   r…   z_InfoPrinterAbstract.to_bufferD  s<   € à×2Ñ2Ó4ˆØ×'Ñ'Ó)ˆØˆ;Ü—*‘*ˆCÜ×Ñ˜S %Õ(r$   c                 ó   — y)z!Create instance of table builder.Nr,   r:   s    r"   r˜   z*_InfoPrinterAbstract._create_table_builderL  r=   r$   rP   )rQ   r`   rW   rc   )rW   Ú_TableBuilderAbstract)rd   re   rf   rg   r…   r   r˜   r,   r$   r"   r–   r–   ?  s    „ ñô)ð ò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y)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.
    Nc                óš   — || _         |j                  | _        || _        | j                  |«      | _        | j                  |«      | _        y rP   )rƒ   r7   rS   Ú_initialize_max_colsrR   Ú_initialize_show_countsrT   )r;   rƒ   rR   rS   rT   s        r"   ro   z_DataFrameInfoPrinter.__init__a  sB   € ð ˆŒ	Ø—I‘IˆŒ	ØˆŒØ×1Ñ1°(Ó;ˆŒØ×7Ñ7¸ÓDˆÕr$   c                óF   — t        dt        | j                  «      dz   «      S )z"Maximum info rows to be displayed.zdisplay.max_info_rowsé   )r	   ry   r7   r:   s    r"   Úmax_rowsz_DataFrameInfoPrinter.max_rowsn  s   € ô Ð1´3°t·y±y³>ÀAÑ3EÓFÐFr$   c                óF   — t        | j                  | j                  kD  «      S )zDCheck if number of columns to be summarized does not exceed maximum.)Úboolrz   rR   r:   s    r"   Úexceeds_info_colsz'_DataFrameInfoPrinter.exceeds_info_colss  s   € ô �D—N‘N T§]¡]Ñ2Ó3Ð3r$   c                óX   — t        t        | j                  «      | j                  kD  «      S )zACheck if number of rows to be summarized does not exceed maximum.)rª   ry   r7   r¨   r:   s    r"   Úexceeds_info_rowsz'_DataFrameInfoPrinter.exceeds_info_rowsx  s    € ô ”C˜Ÿ	™	“N T§]¡]Ñ2Ó3Ð3r$   c                ó.   — | j                   j                  S rx   ©rƒ   rz   r:   s    r"   rz   z_DataFrameInfoPrinter.col_count}  ó   € ð �y‰y×"Ñ"Ð"r$   c                ó<   — |€t        d| j                  dz   «      S |S )Nzdisplay.max_info_columnsr§   )r	   rz   )r;   rR   s     r"   r¤   z*_DataFrameInfoPrinter._initialize_max_cols‚  s$   € ØÐÜÐ8¸$¿.¹.È1Ñ:LÓMÐMØˆr$   c                óT   — |€%t        | j                   xr | j                   «      S |S rP   )rª   r«   r­   ©r;   rT   s     r"   r¥   z-_DataFrameInfoPrinter._initialize_show_counts‡  s0   € ØÐÜ˜D×2Ñ2Ð2ÒQ¸4×;QÑ;QÐ7QÓRÐRàÐr$   c                ó*  — | 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ƒ   )rS   Ú_DataFrameTableBuilderVerboserƒ   rT   Ú _DataFrameTableBuilderNonVerboser«   r:   s    r"   r˜   z+_DataFrameInfoPrinter._create_table_builder�  sz   € ð �<Š<Ü0Ø—Y‘YØ ×,Ñ,ôð ð �\‰\˜UÑ"Ü3¸¿¹ÔCÐCØ×#Ò#Ü3¸¿¹ÔCÐCä0Ø—Y‘YØ ×,Ñ,ôð r$   )NNN)
rƒ   rk   rR   ra   rS   rb   rT   rb   rW   rc   r\   ©rW   rª   )rR   ra   rW   r]   ©rT   rb   rW   rª   )rW   Ú_DataFrameTableBuilder)rd   re   rf   rg   ro   ri   r¨   r«   r­   rz   r¤   r¥   r˜   r,   r$   r"   r„   r„   Q  s®   „ ñð$  $Ø#Ø#'ðEàðEð ðEð ð	Eð
 !ðEð 
óEð òGó ðGð ò4ó ð4ð ò4ó ð4ð ò#ó ð#óó
ôr$   r„   c                  ó<   — e Zd ZdZ	 	 d	 	 	 	 	 	 	 dd„Zdd„Zd	d„Zy)
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.
    Nc                ón   — || _         |j                  | _        || _        | j                  |«      | _        y rP   )rƒ   r7   rS   r¥   rT   )r;   rƒ   rS   rT   s       r"   ro   z_SeriesInfoPrinter.__init__®  s0   € ð ˆŒ	Ø—I‘IˆŒ	ØˆŒØ×7Ñ7¸ÓDˆÕr$   c                ó    — | j                   s| j                   €!t        | j                  | j                  ¬«      S t	        | j                  ¬«      S )zF
        Create instance of table builder based on verbosity.
        rµ   r·   )rS   Ú_SeriesTableBuilderVerboserƒ   rT   Ú_SeriesTableBuilderNonVerboser:   s    r"   r˜   z(_SeriesInfoPrinter._create_table_builder¹  sB   € ð �<Š<˜4Ÿ<™<Ð/Ü-Ø—Y‘YØ ×,Ñ,ôð ô
 1°d·i±iÔ@Ð@r$   c                ó   — |€y|S )NTr,   r³   s     r"   r¥   z*_SeriesInfoPrinter._initialize_show_countsÅ  s   € ØÐØàÐr$   )NN)rƒ   r‹   rS   rb   rT   rb   rW   rc   )rW   Ú_SeriesTableBuilderr»   )rd   re   rf   rg   ro   r˜   r¥   r,   r$   r"   r�   r�   ¡  sJ   „ ñ
ð  $Ø#'ð		Eàð	Eð ð	Eð !ð		Eð
 
ó	Eó
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y)r¡   z*
    Abstract builder for info table.
    ú	list[str]Ú_linesr5   rƒ   c                 ó   — y)z-Product in a form of list of lines (strings).Nr,   r:   s    r"   r™   z_TableBuilderAbstract.get_linesÔ  r=   r$   c                ó.   — | j                   j                  S rP   ©rƒ   r7   r:   s    r"   r7   z_TableBuilderAbstract.dataØ  s   € à�y‰y�~‰~Ðr$   c                ó.   — | j                   j                  S )z*Dtypes of each of the DataFrame's columns.)rƒ   r<   r:   s    r"   r<   z_TableBuilderAbstract.dtypesÜ  s   € ð �y‰y×ÑÐr$   c                ó.   — | j                   j                  S )r?   )rƒ   r@   r:   s    r"   r@   z"_TableBuilderAbstract.dtype_countsá  s   € ð �y‰y×%Ñ%Ð%r$   c                ó@   — t        | j                  j                  «      S )z Whether to display memory usage.)rª   rƒ   r2   r:   s    r"   Údisplay_memory_usagez*_TableBuilderAbstract.display_memory_usageæ  s   € ô �D—I‘I×*Ñ*Ó+Ð+r$   c                ó.   — | j                   j                  S )z/Memory usage string with proper size qualifier.)rƒ   rH   r:   s    r"   rH   z)_TableBuilderAbstract.memory_usage_stringë  s   € ð �y‰y×,Ñ,Ð,r$   c                ó.   — | j                   j                  S rP   )rƒ   rC   r:   s    r"   rC   z%_TableBuilderAbstract.non_null_countsð  s   € à�y‰y×(Ñ(Ð(r$   c                ór   — | j                   j                  t        t        | j                  «      «      «       y)z>Add line with string representation of dataframe to the table.N)rÆ   Úappendr   Útyper7   r:   s    r"   Úadd_object_type_linez*_TableBuilderAbstract.add_object_type_lineô  s!   € à�‰×Ñœ3œt D§I¡I›Ó/Õ0r$   c                ó~   — | j                   j                  | j                  j                  j	                  «       «       y)z,Add line with range of indices to the table.N)rÆ   rÑ   r7   rM   Ú_summaryr:   s    r"   Úadd_index_range_linez*_TableBuilderAbstract.add_index_range_lineø  s%   € à�‰×Ñ˜4Ÿ9™9Ÿ?™?×3Ñ3Ó5Õ6r$   c                óâ   — t        | j                  j                  «       «      D ��cg c]  \  }}|› d|d›d�‘Œ }}}| j                  j	                  ddj                  |«      › �«       yc c}}w )z2Add summary line with dtypes present in dataframe.Ú(ÚdÚ)zdtypes: z, N)Úsortedr@   ÚitemsrÆ   rÑ   Újoin)r;   ÚkeyÚvalÚcollected_dtypess       r"   Úadd_dtypes_linez%_TableBuilderAbstract.add_dtypes_lineü  ss   € ô /5°T×5FÑ5F×5LÑ5LÓ5NÔ.Oô
Ù.O¡( # sˆsˆe�1�S˜�G˜1ÒÐ.Oð 	ñ 
ð 	�‰×Ñ˜X d§i¡iÐ0@Ó&AÐ%BÐCÕDùó
s   §A+N©rW   rÅ   )rW   r6   rV   rX   rº   r^   rZ   ©rW   rc   )rd   re   rf   rg   rh   r   r™   ri   r7   r<   r@   rÍ   rH   rC   rÓ   rÖ   rá   r,   r$   r"   r¡   r¡   Ì  s®   … ñð ÓØ
ƒOàò<ó ð<ð òó ðð ò ó ð ð ò&ó ð&ð ò,ó ð,ð ò-ó ð-ð ò)ó ð)ó1ó7ôEr$   r¡   c                  óx   — 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y
)r¼   z�
    Abstract builder for dataframe info table.

    Parameters
    ----------
    info : DataFrameInfo.
        Instance of DataFrameInfo.
    c               ó   — || _         y rP   r·   ©r;   rƒ   s     r"   ro   z_DataFrameTableBuilder.__init__  s	   € Ø#'ˆ�	r$   c                óž   — g | _         | j                  dk(  r| j                  «        | j                   S | j                  «        | j                   S )Nr   )rÆ   rz   Ú_fill_empty_infoÚ_fill_non_empty_infor:   s    r"   r™   z _DataFrameTableBuilder.get_lines  sE   € ØˆŒØ�>‰>˜QÒØ×!Ñ!Ô#ð �{‰{Ðð ×%Ñ%Ô'Ø�{‰{Ðr$   c                ó¼   — | j                  «        | j                  «        | j                  j                  dt	        | j
                  «      j                  › d�«       y)z;Add lines to the info table, pertaining to empty dataframe.zEmpty rG   N)rÓ   rÖ   rÆ   rÑ   rÒ   r7   rd   r:   s    r"   rè   z'_DataFrameTableBuilder._fill_empty_info  sD   € à×!Ñ!Ô#Ø×!Ñ!Ô#Ø�‰×Ñ˜V¤D¨¯©£O×$<Ñ$<Ð#=¸RÐ@ÕAr$   c                 ó   — y©z?Add lines to the info table, pertaining to non-empty dataframe.Nr,   r:   s    r"   ré   z+_DataFrameTableBuilder._fill_non_empty_info  r=   r$   c                ó.   — | j                   j                  S )z
DataFrame.rÉ   r:   s    r"   r7   z_DataFrameTableBuilder.data#  ó   € ð �y‰y�~‰~Ðr$   c                ó.   — | j                   j                  S )zDataframe columns.)rƒ   rv   r:   s    r"   rv   z_DataFrameTableBuilder.ids(  s   € ð �y‰y�}‰}Ðr$   c                ó.   — | j                   j                  S )z-Number of dataframe columns to be summarized.r¯   r:   s    r"   rz   z _DataFrameTableBuilder.col_count-  r°   r$   c                óT   — | j                   j                  d| j                  › �«       y©z!Add line containing memory usage.zmemory usage: N©rÆ   rÑ   rH   r:   s    r"   Úadd_memory_usage_linez,_DataFrameTableBuilder.add_memory_usage_line2  ó"   € à�‰×Ñ˜^¨D×,DÑ,DÐ+EÐFÕGr$   N)rƒ   rk   rW   rc   râ   rã   )rW   r   r‰   r\   )rd   re   rf   rg   ro   r™   rè   r   ré   ri   r7   rv   rz   rô   r,   r$   r"   r¼   r¼     so   „ ñó(óóBð òNó ðNð òó ðð òó ðð ò#ó ð#ôHr$   r¼   c                  ó    — e Zd ZdZdd„Zdd„Zy)r¹   z>
    Dataframe info table builder for non-verbose output.
    c                ó¾   — | j                  «        | j                  «        | j                  «        | j                  «        | j                  r| j                  «        yyrì   )rÓ   rÖ   Úadd_columns_summary_linerá   rÍ   rô   r:   s    r"   ré   z5_DataFrameTableBuilderNonVerbose._fill_non_empty_info<  sL   € à×!Ñ!Ô#Ø×!Ñ!Ô#Ø×%Ñ%Ô'Ø×ÑÔØ×$Ò$Ø×&Ñ&Õ(ð %r$   c                ón   — | j                   j                  | j                  j                  d¬«      «       y )NÚColumns©Úname)rÆ   rÑ   rv   rÕ   r:   s    r"   rø   z9_DataFrameTableBuilderNonVerbose.add_columns_summary_lineE  s&   € Ø�‰×Ñ˜4Ÿ8™8×,Ñ,°)Ð,Ó<Õ=r$   Nrã   )rd   re   rf   rg   ré   rø   r,   r$   r"   r¹   r¹   7  s   „ ñó)ô>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y)Ú_TableBuilderVerboseMixinz(
    Mixin for verbose info output.
    z  r   ÚSPACINGzSequence[Sequence[str]]Ústrrowsr[   Úgross_column_widthsrª   r¶   c                 ó   — y)ú.Headers names of the columns in verbose table.Nr,   r:   s    r"   Úheadersz!_TableBuilderVerboseMixin.headersS  r=   r$   c                óR   — | j                   D �cg c]  }t        |«      ‘Œ c}S c c}w )z'Widths of header columns (only titles).)r  ry   ©r;   Úcols     r"   Úheader_column_widthsz._TableBuilderVerboseMixin.header_column_widthsX  s$   € ð %)§L¢LÓ1¡L˜S”�C• LÑ1Ð1ùÒ1s   �$c                ó€   — | j                  «       }t        | j                  |«      D �cg c]
  }t        |Ž ‘Œ c}S c c}w )zAGet widths of columns containing both headers and actual content.)Ú_get_body_column_widthsÚzipr  Úmax)r;   Úbody_column_widthsÚwidthss      r"   Ú_get_gross_column_widthsz2_TableBuilderVerboseMixin._get_gross_column_widths]  sJ   € à!×9Ñ9Ó;Ðô ˜d×7Ñ7Ð9KÔLó
áL�ô �ŠLØLñ
ð 	
ùò 
s   ©;c                ó‚   — t        t        | j                  Ž «      }|D �cg c]  }t        d„ |D «       «      ‘Œ c}S c c}w )z$Get widths of table content columns.c              3  ó2   K  — | ]  }t        |«      –— Œ y ­wrP   )ry   )Ú.0r/   s     r"   Ú	<genexpr>zD_TableBuilderVerboseMixin._get_body_column_widths.<locals>.<genexpr>h  s   è ø€ Ð(¡C˜q”C˜—F¡Cùs   ‚)Úlistr  r   r  )r;   Ústrcolsr  s      r"   r
  z1_TableBuilderVerboseMixin._get_body_column_widthse  s8   € ä+/´°T·\±\Ð0BÓ+CˆÙ4;Ó<±G¨S”Ñ(¡CÓ(Õ(°GÑ<Ð<ùÒ<s    <c                óZ   — | j                   r| j                  «       S | j                  «       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  s+   € ð ×ÒØ×-Ñ-Ó/Ð/à×0Ñ0Ó2Ð2r$   c                 ó   — y©z=Iterator with string representation of body data with counts.Nr,   r:   s    r"   r  z/_TableBuilderVerboseMixin._gen_rows_with_countsu  r=   r$   c                 ó   — y©z@Iterator with string representation of body data without counts.Nr,   r:   s    r"   r  z2_TableBuilderVerboseMixin._gen_rows_without_countsy  r=   r$   c           
     óò   — | j                   j                  t        | j                  | j                  «      D ��cg c]  \  }}t        ||«      ‘Œ c}}«      }| j                  j                  |«       y c c}}w rP   )rÿ   rÝ   r  r  r  r#   rÆ   rÑ   )r;   ÚheaderÚ	col_widthÚheader_lines       r"   Úadd_header_linez)_TableBuilderVerboseMixin.add_header_line}  si   € Ø—l‘l×'Ñ'ô *-¨T¯\©\¸4×;SÑ;SÔ)Tôá)TÑ%�F˜Iô ˜ Õ+Ø)Tòó
ˆð 	�‰×Ñ˜;Õ'ùós   ¹A3
c           
     óø   — | j                   j                  t        | j                  | j                  «      D ��cg c]  \  }}t        d|z  |«      ‘Œ c}}«      }| j                  j                  |«       y c c}}w )NÚ-)rÿ   rÝ   r  r  r  r#   rÆ   rÑ   )r;   Úheader_colwidthÚgross_colwidthÚseparator_lines       r"   Úadd_separator_linez,_TableBuilderVerboseMixin.add_separator_line†  sw   € ØŸ™×*Ñ*ô 8;Ø×-Ñ-¨t×/GÑ/Gô8ôñ8Ñ3�O ^ô ˜˜Ñ.°Õ?ð8òó
ˆð 	�‰×Ñ˜>Õ*ùós   ¹A6
c                ó   — | j                   D ]i  }| j                  j                  t        || j                  «      D ��cg c]  \  }}t        ||«      ‘Œ c}}«      }| j                  j                  |«       Œk y c c}}w rP   )r   rÿ   rÝ   r  r  r#   rÆ   rÑ   )r;   Úrowr  r&  Ú	body_lines        r"   Úadd_body_linesz(_TableBuilderVerboseMixin.add_body_lines‘  ss   € Ø—<”<ˆCØŸ™×)Ñ)ô 03°3¸×8PÑ8PÔ/Qôá/QÑ+˜˜^ô ˜S .Õ1Ø/QòóˆIð �K‰K×Ñ˜yÕ)ñ  ùós   ¾A:c              #  ó<   K  — | j                   D ]	  }|› d�–— Œ y­w)z7Iterator with string representation of non-null counts.z	 non-nullN)rC   )r;   r}   s     r"   Ú_gen_non_null_countsz._TableBuilderVerboseMixin._gen_non_null_counts›  s#   è ø€ à×)Ô)ˆEØ�G˜9Ð%Ó%ñ *ùs   ‚c              #  óH   K  — | j                   D ]  }t        |«      –— Œ y­w)z5Iterator with string representation of column dtypes.N)r<   r   )r;   Údtypes     r"   Ú_gen_dtypesz%_TableBuilderVerboseMixin._gen_dtypes   s   è ø€ à—[”[ˆEÜ˜uÓ%Ó%ñ !ùó   ‚ "N©rW   zSequence[str]rZ   ©rW   zIterator[Sequence[str]]rã   ©rW   zIterator[str])rd   re   rf   rg   rÿ   rh   ri   r   r  r  r  r
  r  r  r  r"  r(  r,  r.  r1  r,   r$   r"   rþ   rþ   I  s§   … ñð €GˆSÓØ$Ó$Ø&Ó&ØÓàØò=ó ó ð=ð ò2ó ð2ó
ó=ó
	3ð òLó ðLð òOó ðOó(ó	+ó*ó&ô
&r$   rþ   c                  óf   — 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y
)r¸   z:
    Dataframe info table builder for verbose output.
    c               ó†   — || _         || _        t        | j                  «       «      | _        | j                  «       | _        y rP   ©rƒ   r¶   r  r  r   r  r  ©r;   rƒ   r¶   s      r"   ro   z&_DataFrameTableBuilderVerbose.__init__«  ó7   € ð ˆŒ	Ø&ˆÔÜ04°T·^±^Ó5EÓ0FˆŒØ26×2OÑ2OÓ2QˆÕ r$   c                ó  — | j                  «        | j                  «        | j                  «        | j                  «        | j	                  «        | j                  «        | j                  «        | j                  r| j                  «        yyrì   )	rÓ   rÖ   rø   r"  r(  r,  rá   rÍ   rô   r:   s    r"   ré   z2_DataFrameTableBuilderVerbose._fill_non_empty_info¶  sp   € à×!Ñ!Ô#Ø×!Ñ!Ô#Ø×%Ñ%Ô'Ø×ÑÔØ×ÑÔ!Ø×ÑÔØ×ÑÔØ×$Ò$Ø×&Ñ&Õ(ð %r$   c                ó*   — | j                   rg d¢S g d¢S )r  )ú # ÚColumnúNon-Null Countr   )r=  r>  r   ©r¶   r:   s    r"   r  z%_DataFrameTableBuilderVerbose.headersÂ  s   € ð ×ÒÚ?Ð?Ú)Ð)r$   c                óV   — | j                   j                  d| j                  › d�«       y )NzData columns (total z
 columns):)rÆ   rÑ   rz   r:   s    r"   rø   z6_DataFrameTableBuilderVerbose.add_columns_summary_lineÉ  s#   € Ø�‰×ÑÐ1°$·.±.Ð1AÀÐLÕMr$   c              #  óŽ   K  — t        | j                  «       | j                  «       | j                  «       «      E d{  –—†  y7 Œ­wr  )r  Ú_gen_line_numbersÚ_gen_columnsr1  r:   s    r"   r  z6_DataFrameTableBuilderVerbose._gen_rows_without_countsÌ  s<   è ø€ äØ×"Ñ"Ó$Ø×ÑÓØ×ÑÓó
÷ 	
ò 	
ús   ‚;A½A¾Ac              #  ó¬   K  — t        | j                  «       | j                  «       | j                  «       | j	                  «       «      E d{  –—†  y7 Œ­wr  )r  rC  rD  r.  r1  r:   s    r"   r  z3_DataFrameTableBuilderVerbose._gen_rows_with_countsÔ  sH   è ø€ äØ×"Ñ"Ó$Ø×ÑÓØ×%Ñ%Ó'Ø×ÑÓó	
÷ 	
ò 	
ús   ‚A
AÁAÁAc              #  óT   K  — t        | j                  «      D ]  \  }}d|› �–— Œ y­w)z6Iterator with string representation of column numbers.r+   N)Ú	enumeraterv   )r;   ÚiÚ_s      r"   rC  z/_DataFrameTableBuilderVerbose._gen_line_numbersÝ  s(   è ø€ ä˜dŸh™hÖ'‰DˆAˆqØ�a�S�'‹Mñ (ùs   ‚&(c              #  óH   K  — | j                   D ]  }t        |«      –— Œ y­w)z4Iterator with string representation of column names.N)rv   r   r  s     r"   rD  z*_DataFrameTableBuilderVerbose._gen_columnsâ  s   è ø€ à—8”8ˆCÜ˜sÓ#Ó#ñ ùr2  N)rƒ   rk   r¶   rª   rW   rc   rã   r3  r4  r5  )rd   re   rf   rg   ro   ré   ri   r  rø   r  r  rC  rD  r,   r$   r"   r¸   r¸   ¦  sa   „ ñð	Rð ð	Rð ð		Rð
 
ó	Ró
)ð ò*ó ð*óNó
ó
óô
$r$   r¸   c                  óL   — e Zd ZdZdd„Zd	d„Zed
d„«       Zdd„Ze	dd„«       Z
y)rÃ   z‡
    Abstract builder for series info table.

    Parameters
    ----------
    info : SeriesInfo.
        Instance of SeriesInfo.
    c               ó   — || _         y rP   r·   ræ   s     r"   ro   z_SeriesTableBuilder.__init__ò  s	   € Ø $ˆ�	r$   c                óH   — g | _         | j                  «        | j                   S rP   )rÆ   ré   r:   s    r"   r™   z_SeriesTableBuilder.get_linesõ  s   € ØˆŒØ×!Ñ!Ô#Ø�{‰{Ðr$   c                ó.   — | j                   j                  S )zSeries.rÉ   r:   s    r"   r7   z_SeriesTableBuilder.dataú  rî   r$   c                óT   — | j                   j                  d| j                  › �«       yrò   ró   r:   s    r"   rô   z)_SeriesTableBuilder.add_memory_usage_lineÿ  rõ   r$   c                 ó   — y©z<Add lines to the info table, pertaining to non-empty series.Nr,   r:   s    r"   ré   z(_SeriesTableBuilder._fill_non_empty_info  r=   r$   N)rƒ   r‹   rW   rc   râ   )rW   r   rã   )rd   re   rf   rg   ro   r™   ri   r7   rô   r   ré   r,   r$   r"   rÃ   rÃ   è  sA   „ ñó%óð
 òó ðóHð òKó ñKr$   rÃ   c                  ó   — e Zd ZdZdd„Zy)rÁ   z;
    Series info table builder for non-verbose output.
    c                óž   — | j                  «        | j                  «        | j                  «        | j                  r| j	                  «        yyrQ  )rÓ   rÖ   rá   rÍ   rô   r:   s    r"   ré   z2_SeriesTableBuilderNonVerbose._fill_non_empty_info  s@   € à×!Ñ!Ô#Ø×!Ñ!Ô#Ø×ÑÔØ×$Ò$Ø×&Ñ&Õ(ð %r$   Nrã   )rd   re   rf   rg   ré   r,   r$   r"   rÁ   rÁ     s   „ ñô)r$   rÁ   c                  óV   — 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
y)rÀ   z7
    Series info table builder for verbose output.
    c               ó†   — || _         || _        t        | j                  «       «      | _        | j                  «       | _        y rP   r8  r9  s      r"   ro   z#_SeriesTableBuilderVerbose.__init__  r:  r$   c                ó  — | j                  «        | j                  «        | j                  «        | j                  «        | j	                  «        | j                  «        | j                  «        | j                  r| j                  «        yyrQ  )	rÓ   rÖ   Úadd_series_name_liner"  r(  r,  rá   rÍ   rô   r:   s    r"   ré   z/_SeriesTableBuilderVerbose._fill_non_empty_info&  sp   € à×!Ñ!Ô#Ø×!Ñ!Ô#Ø×!Ñ!Ô#Ø×ÑÔØ×ÑÔ!Ø×ÑÔØ×ÑÔØ×$Ò$Ø×&Ñ&Õ(ð %r$   c                óh   — | j                   j                  d| j                  j                  › �«       y )NzSeries name: )rÆ   rÑ   r7   rü   r:   s    r"   rW  z/_SeriesTableBuilderVerbose.add_series_name_line2  s$   € Ø�‰×Ñ˜]¨4¯9©9¯>©>Ð*:Ð;Õ<r$   c                ó(   — | j                   rddgS dgS )r  r?  r   r@  r:   s    r"   r  z"_SeriesTableBuilderVerbose.headers5  s    € ð ×ÒØ$ gÐ.Ð.ØˆyÐr$   c              #  ó@   K  — | j                  «       E d{  –—†  y7 Œ­wr  )r1  r:   s    r"   r  z3_SeriesTableBuilderVerbose._gen_rows_without_counts<  s   è ø€ à×#Ñ#Ó%×%Ò%ús   ‚–—c              #  óp   K  — t        | j                  «       | j                  «       «      E d{  –—†  y7 Œ­wr  )r  r.  r1  r:   s    r"   r  z0_SeriesTableBuilderVerbose._gen_rows_with_counts@  s0   è ø€ äØ×%Ñ%Ó'Ø×ÑÓó
÷ 	
ò 	
ús   ‚,6®4¯6N)rƒ   r‹   r¶   rª   rW   rc   rã   r3  r4  )rd   re   rf   rg   ro   ré   rW  ri   r  r  r  r,   r$   r"   rÀ   rÀ     sV   „ ñð	Rð ð	Rð ð		Rð
 
ó	Ró
)ó=ð òó ðó&ô
r$   rÀ   c                ór   — | j                   j                  «       j                  d„ «      j                  «       S )zK
    Create mapping between datatypes and their number of occurrences.
    c                ó   — | j                   S rP   rû   )r/   s    r"   Ú<lambda>z-_get_dataframe_dtype_counts.<locals>.<lambda>M  s   € °a·f²fr$   )r<   Úvalue_countsÚgroupbyr€   )Údfs    r"   rq   rq   H  s,   € ð
 �9‰9×!Ñ!Ó#×+Ñ+Ñ,<Ó=×AÑAÓCÐCr$   )r    zstr | Dtyper!   r]   rW   r   )r-   Úfloatr.   r   rW   r   rP   )r2   rˆ   rW   r8   )ra  r   rW   rY   )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#   r0   r3   r5   rk   r‹   r–   r„   r�   r¡   r¼   r¹   rþ   r¸   rÃ   rÁ   rÀ   rq   r,   r$   r"   Ú<module>ru     s÷  ðÝ "÷ó Ý Ý  å %å +Ý 3á÷ó ÷÷
ñ ñ ð@óÐ ñ ð?ó€ñ ðQóSÐ ñl ðBóÐ ð ØØ&Ø&Ø&Ø&ØñÐ ñ ð9ó;Ð ñ| ð4óÐ ð ØØØ&Ø'Ø'Ø6ñÐ ñ ð.ó0€óf'ó4,ð@ '+ðØ#ðàóôP�ô PôfF�Iô FôR9=�ô 9=÷x0ñ 0ô$MÐ0ô Mô`(Ð-ô (ôV5E˜Cô 5Eôp0HÐ2ô 0Hôf>Ð'=ô >ô$Z&Ð 5ô Z&ôz?$Ð$:Ð<Uô ?$ôDKÐ/ô Kô@)Ð$7ô )ô/
Ð!4Ð6Oô /
ôdDr$   