Ë
    êñiàj  ã                  óX  — 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!d4d„Z"d5d„Z#	 d6	 	 	 d7d„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+«      Z, G d'„ d(e,«      Z- G d)„ d*e+«      Z. G d+„ d,e,e.«      Z/ G d-„ d.e+«      Z0 G d/„ d0e0«      Z1 G d1„ d2e0e.«      Z2d8d3„Z3y)9é    )Úannotations)ÚABCÚabstractmethodN)Údedent)ÚTYPE_CHECKING©Ú
get_option)Úformat)Úpprint_thing)ÚIterableÚIteratorÚMappingÚSequence)ÚDtypeÚWriteBuffer)Ú	DataFrameÚIndexÚSeriesaR      show_counts : bool, optional
        Whether to show the non-null counts. By default, this is shown
        only if the DataFrame is smaller than
        ``pandas.options.display.max_info_rows`` and
        ``pandas.options.display.max_info_columns``. A value of True always
        shows the counts, and False never shows the counts.a¾      >>> int_values = [1, 2, 3, 4, 5]
    >>> text_values = ['alpha', 'beta', 'gamma', 'delta', 'epsilon']
    >>> s = pd.Series(text_values, index=int_values)
    >>> s.info()
    <class 'pandas.Series'>
    Index: 5 entries, 1 to 5
    Series name: None
    Non-Null Count  Dtype
    --------------  -----
    5 non-null      object
    dtypes: object(1)
    memory usage: 80.0+ bytes

    Prints a summary excluding information about its values:

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

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

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

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

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

    >>> s.info(memory_usage='deep')
    <class 'pandas.Series'>
    RangeIndex: 1000000 entries, 0 to 999999
    Series name: None
    Non-Null Count    Dtype
    --------------    -----
    1000000 non-null  object
    dtypes: object(1)
    memory usage: 55.3 MBzp    Series.describe: Generate descriptive statistics of Series.
    Series.memory_usage: Memory usage of Series.z_    max_cols : int, optional
        Unused, exists only for compatibility with DataFrame.info.r   Ú z
.. versionadded:: 1.4.0
)ÚklassÚtype_subÚmax_cols_subÚshow_counts_subÚexamples_subÚsee_also_subÚversion_added_subc                ó<   — 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     úX/var/www/pod-logistic/pod-ai/venv/lib/python3.12/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   œ   sQ   € ð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.dtypesÕ   ó   � 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                   r?| j                   dk7  r0d| 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ü   sJ   € àˆØ×ÒØ× Ñ  FÒ*ð
  × 1Ñ 1Ñ1Ø—y‘y—‘×AÒAà%(�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   zlist[int] | Series©rW   Úint©rW   r   ©
rQ   úWriteBuffer[str] | NonerR   ú
int | NonerS   úbool | NonerT   ra   rW   ÚNone)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__Úpropertyr   r<   r@   rC   rE   rH   r.   rU   r,   r$   r"   r5   r5   Ä   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.ids4  s   € ð �y‰y× Ñ Ð r$   c                ó,   — t        | j                  «      S ©z#Number of columns to be summarized.)Úlenru   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_countsE  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_bytesJ  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.renderO  s*   € ô (ØØØØ#ô	
ˆð 	×Ñ˜#Õr$   rP   )r7   r   r2   úbool | str | NonerW   rb   rX   rV   ©rW   r   r[   ©rW   r   r^   )rc   rd   re   rf   rn   rh   r@   r<   ru   ry   rC   rE   rU   r,   r$   r"   rj   rj     sâ   „ ñð +/ðCàðCð (ðCð 
ó	Cð ò6ó ð6ð ò	 ó ð	 ð ò	!ó ð	!ð òó ðð ò!ó ð!ð òCó ðCðð %ðð ð	ð
 ðð !ðð 
ôr$   rj   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   rl   rm   s      r"   rn   zSeriesInfo.__init__e  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.renderm  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   rr   r:   s    r"   r<   zSeriesInfo.dtypes…  s   € à—	‘	× Ñ Ð!Ð!r$   c                óD   — ddl m} t         || j                  «      «      S )Nr   )r   )Úpandas.core.framer   rp   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_bytes�  s.   € ð × Ñ  FÑ*ˆØ�y‰y×%Ñ%¨D°tÐ%Ó<Ð<r$   rP   )r7   r   r2   r‡   rW   rb   r^   )rW   z	list[int]rV   rX   r[   )rc   rd   re   rf   rn   rU   rh   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_buffer¡  s<   € à×2Ñ2Ó4ˆØ×'Ñ'Ó)ˆØˆ;Ü—*‘*ˆCÜ×Ñ˜S %Õ(r$   c                 ó   — y)z!Create instance of table builder.Nr,   r:   s    r"   r˜   z*_InfoPrinterAbstract._create_table_builder©  r=   r$   rP   )rQ   r_   rW   rb   )rW   Ú_TableBuilderAbstract)rc   rd   re   rf   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"   rn   z_DataFrameInfoPrinter.__init__¾  sB   € ð ˆŒ	Ø—I‘IˆŒ	ØˆŒØ×1Ñ1°(Ó;ˆŒØ×7Ñ7¸ÓDˆÕr$   c                ó   — t        d«      S )z"Maximum info rows to be displayed.zdisplay.max_info_rowsr   r:   s    r"   Úmax_rowsz_DataFrameInfoPrinter.max_rowsË  s   € ô Ð1Ó2Ð2r$   c                óF   — t        | j                  | j                  kD  «      S )zDCheck if number of columns to be summarized does not exceed maximum.)Úboolry   rR   r:   s    r"   Úexceeds_info_colsz'_DataFrameInfoPrinter.exceeds_info_colsÐ  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©   rx   r7   r§   r:   s    r"   Úexceeds_info_rowsz'_DataFrameInfoPrinter.exceeds_info_rowsÕ  s    € ô ”C˜Ÿ	™	“N T§]¡]Ñ2Ó3Ð3r$   c                ó.   — | j                   j                  S rw   ©r‚   ry   r:   s    r"   ry   z_DataFrameInfoPrinter.col_countÚ  ó   € ð �y‰y×"Ñ"Ð"r$   c                ó    — |€t        d«      S |S )Nzdisplay.max_info_columnsr   )r;   rR   s     r"   r¤   z*_DataFrameInfoPrinter._initialize_max_colsß  s   € ØÐÜÐ8Ó9Ð9Øˆ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‚   rj   rR   r`   rS   ra   rT   ra   rW   rb   r[   ©rW   r©   )rR   r`   rW   r\   ©rT   ra   rW   r©   )rW   Ú_DataFrameTableBuilder)rc   rd   re   rf   rn   rh   r§   rª   r¬   ry   r¤   r¥   r˜   r,   r$   r"   rƒ   rƒ   ®  s¬   „ ñð$  $Ø#Ø#'ðEàðEð ðEð ð	Eð
 !ðEð 
óEð ò3ó ð3ð ò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"   rn   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   ra   rT   ra   rW   rb   )rW   Ú_SeriesTableBuilderrº   )rc   rd   re   rf   rn   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_lines1  r=   r$   c                ó.   — | j                   j                  S rP   ©r‚   r7   r:   s    r"   r7   z_TableBuilderAbstract.data5  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.dtypes9  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_usageC  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_stringH  s   € ð �y‰y×,Ñ,Ð,r$   c                ó.   — | j                   j                  S rP   )r‚   rC   r:   s    r"   rC   z%_TableBuilderAbstract.non_null_countsM  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_lineQ  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_lineU  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_lineY  sq   € ô /5°T×5FÑ5F×5LÑ5LÓ5NÓ.O÷
Ù"* # sˆsˆe�1�S˜�G˜1Òð
Ðñ 
ð 	�‰×Ñ˜X d§i¡iÐ0@Ó&AÐ%BÐCÕDùó
s   §A+N©rW   rÄ   )rW   r6   rV   rX   r¹   r]   rZ   ©rW   rb   )rc   rd   re   rf   rg   r   r™   rh   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"   rn   z_DataFrameTableBuilder.__init__k  s	   € Ø#'ˆ�	r$   c                óž   — g | _         | j                  dk(  r| j                  «        | j                   S | j                  «        | j                   S )Nr   )rÅ   ry   Ú_fill_empty_infoÚ_fill_non_empty_infor:   s    r"   r™   z _DataFrameTableBuilder.get_linesn  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   rc   r:   s    r"   rç   z'_DataFrameTableBuilder._fill_empty_infov  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‚   ru   r:   s    r"   ru   z_DataFrameTableBuilder.ids…  s   € ð �y‰y�}‰}Ðr$   c                ó.   — | j                   j                  S )z-Number of dataframe columns to be summarized.r®   r:   s    r"   ry   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_line�  ó"   € à�‰×Ñ˜^¨D×,DÑ,DÐ+EÐFÕGr$   N)r‚   rj   rW   rb   rá   râ   )rW   r   rˆ   r[   )rc   rd   re   rf   rn   r™   rç   r   rè   rh   r7   ru   ry   ró   r,   r$   r"   r»   r»   a  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Ð   ru   rÔ   r:   s    r"   r÷   z9_DataFrameTableBuilderNonVerbose.add_columns_summary_line¢  s&   € Ø�‰×Ñ˜4Ÿ8™8×,Ñ,°)Ð,Ó<Õ=r$   Nrâ   )rc   rd   re   rf   rè   r÷   r,   r$   r"   r¸   r¸   ”  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]]ÚstrrowsúSequence[int]Úgross_column_widthsr©   rµ   c                 ó   — y)ú.Headers names of the columns in verbose table.Nr,   r:   s    r"   Úheadersz!_TableBuilderVerboseMixin.headers°  r=   r$   c                óR   — | j                   D �cg c]  }t        |«      ‘Œ c}S c c}w )z'Widths of header columns (only titles).)r  rx   ©r;   Úcols     r"   Úheader_column_widthsz._TableBuilderVerboseMixin.header_column_widthsµ  s    € ð %)§L¡LÖ1˜S”�C•Ò1Ð1ùÒ1s   �$c                ó„   — | j                  «       }t        | j                  |d¬«      D �cg c]
  }t        |Ž ‘Œ c}S c c}w )zAGet widths of columns containing both headers and actual content.F©Ústrict)Ú_get_body_column_widthsÚzipr  Úmax)r;   Úbody_column_widthsÚwidthss      r"   Ú_get_gross_column_widthsz2_TableBuilderVerboseMixin._get_gross_column_widthsº  sJ   € à!×9Ñ9Ó;Ðô Ø×)Ñ)Ð+=Àeôö
àô �ŠLò
ð 	
ùò 
s   «=c                óˆ   — t        t        | j                  ddiŽ«      }|D �cg c]  }t        d„ |D «       «      ‘Œ c}S c c}w )z$Get widths of table content columns.r  Tc              3  ó2   K  — | ]  }t        |«      –— Œ y ­wrP   )rx   )Ú.0r/   s     r"   ú	<genexpr>zD_TableBuilderVerboseMixin._get_body_column_widths.<locals>.<genexpr>Ç  s   è ø€ Ò(˜q”C˜—FÑ(ùs   ‚)Úlistr  rÿ   r  )r;   Ústrcolsr  s      r"   r  z1_TableBuilderVerboseMixin._get_body_column_widthsÄ  s9   € ä+/´°T·\±\Ð0OÈ$Ñ0OÓ+PˆØ4;Ö<¨S”Ñ( CÔ(Õ(Ò<Ð<ùÒ<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_rowsÉ  s+   € ð ×ÒØ×-Ñ-Ó/Ð/à×0Ñ0Ó2Ð2r$   c                 ó   — y)ú=Iterator with string representation of body data with counts.Nr,   r:   s    r"   r  z/_TableBuilderVerboseMixin._gen_rows_with_countsÔ  r=   r$   c                 ó   — y)ú@Iterator with string representation of body data without counts.Nr,   r:   s    r"   r  z2_TableBuilderVerboseMixin._gen_rows_without_countsØ  r=   r$   c           
     óö   — | j                   j                  t        | j                  | j                  d¬«      D ��cg c]  \  }}t        ||«      ‘Œ c}}«      }| j                  j                  |«       y c c}}w ©NTr
  )rþ   rÜ   r  r  r  r#   rÅ   rÐ   )r;   ÚheaderÚ	col_widthÚheader_lines       r"   Úadd_header_linez)_TableBuilderVerboseMixin.add_header_lineÜ  sh   € Ø—l‘l×'Ñ'ô *-Ø—L‘L $×":Ñ":À4ô*÷á%�F˜Iô ˜ Õ+óó
ˆð 	�‰×Ñ˜;Õ'ùós   »A5
c           
     óü   — | j                   j                  t        | j                  | j                  d¬«      D ��cg c]  \  }}t        d|z  |«      ‘Œ c}}«      }| j                  j                  |«       y c c}}w )NTr
  ú-)rþ   rÜ   r  r  r  r#   rÅ   rÐ   )r;   Úheader_colwidthÚgross_colwidthÚseparator_lines       r"   Úadd_separator_linez,_TableBuilderVerboseMixin.add_separator_lineç  sp   € ØŸ™×*Ñ*ô 8;Ø×-Ñ-¨t×/GÑ/GÐPTô8÷á3�O ^ô ˜˜Ñ.°Õ?óó
ˆð 	�‰×Ñ˜>Õ*ùós   »A8
c                ó  — | j                   D ]k  }| j                  j                  t        || j                  d¬«      D ��cg c]  \  }}t        ||«      ‘Œ c}}«      }| j                  j                  |«       Œm y c c}}w r!  )rÿ   rþ   rÜ   r  r  r#   rÅ   rÐ   )r;   Úrowr  r)  Ú	body_lines        r"   Úadd_body_linesz(_TableBuilderVerboseMixin.add_body_linesò  sw   € Ø—<‘<ò 		*ˆCØŸ™×)Ñ)ô 03Ø˜T×5Ñ5¸dô0÷á+˜˜^ô ˜S .Õ1óóˆ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])rW   r   ©rW   zIterator[Sequence[str]]râ   ©rW   zIterator[str])rc   rd   re   rf   rþ   rg   rh   r   r  r  r  r  r  r  r  r%  r+  r/  r1  r4  r,   r$   r"   rý   rý   ¦  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"   rn   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@  rA  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Ð   ry   r:   s    r"   r÷   z6_DataFrameTableBuilderVerbose.add_columns_summary_line,  s#   € Ø�‰×ÑÐ1°$·.±.Ð1AÀÐLÕMr$   c              #  ó’   K  — t        | j                  «       | j                  «       | j                  «       d¬«      E d{  –—†  y7 Œ­w)r  Tr
  N)r  Ú_gen_line_numbersÚ_gen_columnsr4  r:   s    r"   r  z6_DataFrameTableBuilderVerbose._gen_rows_without_counts/  s?   è ø€ äØ×"Ñ"Ó$Ø×ÑÓØ×ÑÓØô	
÷ 	
ò 	
ús   ‚=A¿AÁ Ac              #  ó°   K  — t        | j                  «       | j                  «       | j                  «       | j	                  «       d¬«      E d{  –—†  y7 Œ­w©r  Tr
  N)r  rF  rG  r1  r4  r:   s    r"   r  z3_DataFrameTableBuilderVerbose._gen_rows_with_counts8  sK   è ø€ äØ×"Ñ"Ó$Ø×ÑÓØ×%Ñ%Ó'Ø×ÑÓØô
÷ 	
ò 	
ús   ‚AAÁAÁAc              #  óT   K  — t        | j                  «      D ]  \  }}d|› �–— Œ y­w)z6Iterator with string representation of column numbers.r+   N)Ú	enumerateru   )r;   ÚiÚ_s      r"   rF  z/_DataFrameTableBuilderVerbose._gen_line_numbersB  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)ru   r   r  s     r"   rG  z*_DataFrameTableBuilderVerbose._gen_columnsG  s$   è ø€ à—8‘8ò 	$ˆCÜ˜sÓ#Ó#ñ	$ùr5  N)r‚   rj   rµ   r©   rW   rb   râ   r6  r7  r8  )rc   rd   re   rf   rn   rè   rh   r  r÷   r  r  rF  rG  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"   rn   z_SeriesTableBuilder.__init__W  s	   € Ø $ˆ�	r$   c                óH   — g | _         | j                  «        | j                   S rP   )rÅ   rè   r:   s    r"   r™   z_SeriesTableBuilder.get_linesZ  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_lined  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_infoh  r=   r$   N)r‚   r‹   rW   rb   rá   r‰   râ   )rc   rd   re   rf   rn   r™   rh   r7   ró   r   rè   r,   r$   r"   rÂ   rÂ   M  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rU  )rÒ   rÕ   rà   rÌ   ró   r:   s    r"   rè   z2_SeriesTableBuilderNonVerbose._fill_non_empty_infor  s@   € à×!Ñ!Ô#Ø×!Ñ!Ô#Ø×ÑÔØ×$Ò$Ø×&Ñ&Õ(ð %r$   Nrâ   )rc   rd   re   rf   rè   r,   r$   r"   rÀ   rÀ   m  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   r;  r<  s      r"   rn   z#_SeriesTableBuilderVerbose.__init__€  r=  r$   c                ó  — | j                  «        | j                  «        | j                  «        | j                  «        | j	                  «        | j                  «        | j                  «        | j                  r| j                  «        yyrU  )	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"   r[  z/_SeriesTableBuilderVerbose.add_series_name_line—  s$   € Ø�‰×Ñ˜]¨4¯9©9¯>©>Ð*:Ð;Õ<r$   c                ó(   — | j                   rddgS dgS )r  rB  r   rC  r:   s    r"   r  z"_SeriesTableBuilderVerbose.headersš  s    € ð ×ÒØ$ gÐ.Ð.ØˆyÐr$   c              #  óN   K  — d„ | j                  «       D «       E d{  –—†  y7 Œ­w)r  c              3  ó"   K  — | ]  }|g–— Œ	 y ­wrP   r,   )r  r3  s     r"   r  zF_SeriesTableBuilderVerbose._gen_rows_without_counts.<locals>.<genexpr>£  s   è ø€ Ò< �U”GÑ<ùs   ‚N)r4  r:   s    r"   r  z3_SeriesTableBuilderVerbose._gen_rows_without_counts¡  s   è ø€ á<¨×)9Ñ)9Ó);Ô<×<Ò<ús   ‚%�#ž%c              #  ót   K  — t        | j                  «       | j                  «       d¬«      E d{  –—†  y7 Œ­wrI  )r  r1  r4  r:   s    r"   r  z0_SeriesTableBuilderVerbose._gen_rows_with_counts¥  s*   è ø€ ä�t×0Ñ0Ó2°D×4DÑ4DÓ4FÈtÔT×TÒTús   ‚.8°6±8N)r‚   r‹   rµ   r©   rW   rb   râ   r6  r7  )rc   rd   re   rf   rn   rè   r[  rh   r  r  r  r,   r$   r"   r¿   r¿   {  sW   „ ñð	Rð ð	Rð ð		Rð
 
ó	Ró
)ó=ð òó ðó=ôU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>¯  s
   € °a·f±f€ r$   )r<   Úvalue_countsÚgroupbyr   )Údfs    r"   rp   rp   ª  s,   € ð
 �9‰9×!Ñ!Ó#×+Ñ+Ñ,<Ó=×AÑAÓCÐCr$   )r    zstr | Dtyper!   r\   rW   r   )r-   Úfloatr.   r   rW   r   rP   )r2   r‡   rW   r8   )rf  r   rW   rY   )4Ú
__future__r   Úabcr   r   rš   Útextwrapr   Útypingr   Úpandas._configr	   Úpandas.io.formatsr
   rœ   Úpandas.io.formats.printingr   Úcollections.abcr   r   r   r   Úpandas._typingr   r   Úpandasr   r   r   r   Úseries_examples_subÚseries_see_also_subÚseries_max_cols_subÚseries_sub_kwargsr#   r0   r3   r5   rj   r‹   r–   rƒ   r�   r¡   r»   r¸   rý   r·   rÂ   rÀ   r¿   rp   r,   r$   r"   ú<module>rv     s¢  ðÝ "÷ó Ý Ý  å %å +Ý 3á÷ó ÷÷
ñ ñ ð?ó€ñ ð9ó;Ð ñ| ð4óÐ ñ
 ðFóÐ ð ØØ'Ø&Ø'Ø'Ø6ñÐ ó'ó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>Ð'=ô >ô$`&Ð 5ô `&ôFA$Ð$:Ð<Uô A$ôHKÐ/ô Kô@)Ð$7ô )ô,UÐ!4Ð6Oô ,Uô^Dr$   