ó
    Ñ]jàj  ã                  ól  • S SK Jr  S SKJrJr  S SKrS SKJr  S SKJ	r	  S SK
Jr  S SKJr  S SKJr  \	(       a  S S	KJrJrJrJr  S S
KJrJr  S SKJrJrJr  \" S5      r\" S5      r\" S5      r\" S5      r SS\ \\\SS.r!S4S jr"S5S jr# S6   S7S jjr$ " S S\5      r% " S S\%5      r& " S S\%5      r' " S S5      r( " S S \(5      r) " S! S"\(5      r* " S# S$\5      r+ " S% S&\+5      r, " S' S(\,5      r- " S) S*\+5      r. " S+ S,\,\.5      r/ " S- S.\+5      r0 " S/ S0\05      r1 " S1 S2\0\.5      r2S8S3 jr3g)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                ó<   • [        U 5      SU R                  U5      $ )as  
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     ÚS/home/mande/repo/quber/.venv/lib/python3.13/site-packages/pandas/io/formats/info.pyÚ_put_strr#   ‚   s   € ô. ˆq‹6�&�5ˆ>×Ñ Ó&Ð&ó    c                óR   • S H  nU S:  a  U S U SU 3s  $ U S-  n M     U S U S3$ )a3  
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                ó"   • U c  [        S5      n U $ )z5Get memory usage based on inputs and display options.zdisplay.memory_usager   )Úmemory_usages    r"   Ú_initialize_memory_usager3   »   s   € ð ÑÜ!Ð"8Ó9ˆØÐr$   c                  óö   • \ rS rSr% SrS\S'   S\S'   \\SS j5       5       r\\SS j5       5       r	\\SS	 j5       5       r
\\SS
 j5       5       r\SS j5       r\SS j5       r\          SS j5       rSrg)Ú	_BaseInfoéÄ   aB  
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                ó   • g)zq
Dtypes.

Returns
-------
dtypes : sequence
    Dtype of each of the DataFrame's columns (or one series column).
Nr,   ©Úselfs    r"   ÚdtypesÚ_BaseInfo.dtypesÕ   ó   � r$   c                ó   • g)ú!Mapping dtype - number of counts.Nr,   r;   s    r"   Údtype_countsÚ_BaseInfo.dtype_countsá   r?   r$   c                ó   • g)úBSequence of non-null counts for all columns or column (if series).Nr,   r;   s    r"   Únon_null_countsÚ_BaseInfo.non_null_countsæ   r?   r$   c                ó   • g)zl
Memory usage in bytes.

Returns
-------
memory_usage_bytes : int
    Object's total memory usage in bytes.
Nr,   r;   s    r"   Úmemory_usage_bytesÚ_BaseInfo.memory_usage_bytesë   r?   r$   c                óH   • [        U R                  U R                  5       S3$ )z0Memory usage in a form of human readable string.Ú
)r0   rI   r.   r;   s    r"   Úmemory_usage_stringÚ_BaseInfo.memory_usage_string÷   s%   € ô ˜d×5Ñ5°t×7JÑ7JÓKÐLÈBÐOÐOr$   c                óº   • SnU R                   (       aG  U R                   S:w  a7  SU R                  ;   d%  U R                  R                  R                  (       a  SnU$ )Nr   ÚdeepÚobjectÚ+)r2   rB   r8   ÚindexÚ_is_memory_usage_qualified)r<   r.   s     r"   r.   Ú_BaseInfo.size_qualifierü   sJ   € àˆØ××Ø× Ñ  FÓ*ð
  × 1Ñ 1Ó1Ø—y‘y—‘×A×Aà%(�NØÐr$   c               ó   • g ©Nr,   )r<   ÚbufÚmax_colsÚverboseÚshow_countss        r"   ÚrenderÚ_BaseInfo.render  s   € ð 	r$   r,   N©ÚreturnzIterable[Dtype]©r_   úMapping[str, int]©r_   zlist[int] | Series©r_   Úint©r_   r   ©
rX   úWriteBuffer[str] | NonerY   ú
int | NonerZ   úbool | Noner[   ri   r_   ÚNone)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__annotations__Úpropertyr   r=   rB   rF   rI   rM   r.   r\   Ú__static_attributes__r,   r$   r"   r5   r5   Ä   sõ   ‡ ñð ÓØÓàØóó ó ðð Øó0ó ó ð0ð ØóQó ó ðQð Øóó ó ðð óPó ðPð óó ðð ðð %ðð ð	ð
 ðð !ðð 
óó ór$   r5   c                  óÈ   • \ rS rSrSr S     SS jjr\SS j5       r\SS j5       r\SS j5       r	\SS j5       r
\SS	 j5       r\SS
 j5       r          SS jrSrg)ÚDataFrameInfoi  z(
Class storing dataframe-specific info.
Nc                ó0   • Xl         [        U5      U l        g rW   ©r8   r3   r2   ©r<   r8   r2   s      r"   Ú__init__ÚDataFrameInfo.__init__  s   € ð
  $Œ	Ü4°\ÓBˆÕr$   c                ó,   • [        U R                  5      $ rW   )Ú_get_dataframe_dtype_countsr8   r;   s    r"   rB   ÚDataFrameInfo.dtype_counts$  s   € ä*¨4¯9©9Ó5Ð5r$   c                ó.   • U R                   R                  $ )zO
Dtypes.

Returns
-------
dtypes
    Dtype of each of the DataFrame's columns.
©r8   r=   r;   s    r"   r=   ÚDataFrameInfo.dtypes(  s   € ð �y‰y×ÑÐr$   c                ó.   • U R                   R                  $ )zJ
Column names.

Returns
-------
ids : Index
    DataFrame's column names.
)r8   Úcolumnsr;   s    r"   ÚidsÚDataFrameInfo.ids4  s   € ð �y‰y× Ñ Ð r$   c                ó,   • [        U R                  5      $ ©z#Number of columns to be summarized.)Úlenr‚   r;   s    r"   Ú	col_countÚDataFrameInfo.col_count@  s   € ô �4—8‘8‹}Ðr$   c                ó6   • U R                   R                  5       $ )rE   ©r8   Úcountr;   s    r"   rF   ÚDataFrameInfo.non_null_countsE  s   € ð �y‰y�‰Ó Ð r$   c                óp   • U R                   S:H  nU R                  R                  SUS9R                  5       $ )NrP   T©rS   rP   )r2   r8   Úsum©r<   rP   s     r"   rI   Ú DataFrameInfo.memory_usage_bytesJ  s5   € à× Ñ  FÑ*ˆØ�y‰y×%Ñ%¨D°tÐ%Ð<×@Ñ@ÓBÐBr$   c               ó>   • [        U UUUS9nUR                  U5        g )N)ÚinforY   rZ   r[   )Ú_DataFrameInfoPrinterÚ	to_buffer©r<   rX   rY   rZ   r[   Úprinters         r"   r\   ÚDataFrameInfo.renderO  s*   € ô (ØØØØ#ñ	
ˆð 	×Ñ˜#Õr$   ©r8   r2   rW   )r8   r   r2   úbool | str | Noner_   rj   r`   r^   ©r_   r   rc   ©r_   r   rf   )rk   rl   rm   rn   ro   rx   rq   rB   r=   r‚   r‡   rF   rI   r\   rr   r,   r$   r"   rt   rt     sâ   † ñð +/ðCàðCð (ðCð 
õ	Cð ó6ó ð6ð ó	 ó ð	 ð ó	!ó ð	!ð óó ðð ó!ó ð!ð óCó ðCðð %ðð ð	ð
 ðð !ðð 
÷r$   rt   c                  ó¬   • \ rS rSrSr S     SS jjrSSSSS.         SS jjr\SS j5       r\SS j5       r	\SS	 j5       r
\SS
 j5       rSrg)Ú
SeriesInfoi`  z%
Class storing series-specific info.
Nc                ó0   • Xl         [        U5      U l        g rW   rv   rw   s      r"   rx   ÚSeriesInfo.__init__e  s   € ð
 !Œ	Ü4°\ÓBˆÕr$   )rX   rY   rZ   r[   c               óX   • Ub  [        S5      e[        U UUS9nUR                  U5        g )NzIArgument `max_cols` can only be passed in DataFrame.info, not Series.info)r“   rZ   r[   )Ú
ValueErrorÚ_SeriesInfoPrinterr•   r–   s         r"   r\   ÚSeriesInfo.renderm  sA   € ð ÑÜð5óð ô %ØØØ#ñ
ˆð
 	×Ñ˜#Õr$   c                ó8   • U R                   R                  5       /$ rW   rŠ   r;   s    r"   rF   ÚSeriesInfo.non_null_counts�  s   € à—	‘	—‘Ó!Ð"Ð"r$   c                ó0   • U R                   R                  /$ rW   r~   r;   s    r"   r=   ÚSeriesInfo.dtypes…  s   € à—	‘	× Ñ Ð!Ð!r$   c                óD   • SSK Jn  [        U" U R                  5      5      $ )Nr   )r   )Úpandas.core.framer   r{   r8   )r<   r   s     r"   rB   ÚSeriesInfo.dtype_counts‰  s   € å/ä*©9°T·Y±YÓ+?Ó@Ð@r$   c                óT   • U R                   S:H  nU R                  R                  SUS9$ )zkMemory usage in bytes.

Returns
-------
memory_usage_bytes : int
    Object's total memory usage in bytes.
rP   TrŽ   )r2   r8   r�   s     r"   rI   ÚSeriesInfo.memory_usage_bytes�  s.   € ð × Ñ  FÑ*ˆØ�y‰y×%Ñ%¨D°tÐ%Ð<Ð<r$   r™   rW   )r8   r   r2   rš   r_   rj   rf   )r_   z	list[int]r^   r`   rc   )rk   rl   rm   rn   ro   rx   r\   rq   rF   r=   rB   rI   rr   r,   r$   r"   rž   rž   `  sÈ   † ñð +/ðCàðCð (ðCð 
õ	Cð (,Ø#Ø#Ø#'ñð %ðð ð	ð
 ðð !ðð 
õð( ó#ó ð#ð ó"ó ð"ð óAó ðAð
 ó	=ó ó	=r$   rž   c                  ó:   • \ rS rSrSrSSS jjr\S	S j5       rSrg)
Ú_InfoPrinterAbstractiœ  z.
Class for printing dataframe or series info.
Nc                ó–   • U R                  5       nUR                  5       nUc  [        R                  n[        R
                  " X5        g)z Save dataframe info into buffer.N)Ú_create_table_builderÚ	get_linesÚsysÚstdoutÚfmtÚbuffer_put_lines)r<   rX   Útable_builderÚliness       r"   r•   Ú_InfoPrinterAbstract.to_buffer¡  s:   € à×2Ñ2Ó4ˆØ×'Ñ'Ó)ˆØ‰;Ü—*‘*ˆCÜ×Ò˜SÕ(r$   c                ó   • g)z!Create instance of table builder.Nr,   r;   s    r"   r±   Ú*_InfoPrinterAbstract._create_table_builder©  r?   r$   r,   rW   )rX   rg   r_   rj   )r_   Ú_TableBuilderAbstract)	rk   rl   rm   rn   ro   r•   r   r±   rr   r,   r$   r"   r¯   r¯   œ  s    † ñö)ð ó0ó ó0r$   r¯   c                  ó¬   • \ rS rSrSr   S         SS jjr\SS j5       r\SS j5       r\SS j5       r	\SS j5       r
SS	 jrSS
 jrSS jrSrg)r”   i®  aK  
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                ó–   • Xl         UR                  U l        X0l        U R                  U5      U l        U R                  U5      U l        g rW   )r“   r8   rZ   Ú_initialize_max_colsrY   Ú_initialize_show_countsr[   )r<   r“   rY   rZ   r[   s        r"   rx   Ú_DataFrameInfoPrinter.__init__¾  s>   € ð Œ	Ø—I‘IˆŒ	ØŒØ×1Ñ1°(Ó;ˆŒØ×7Ñ7¸ÓDˆÕr$   c                ó   • [        S5      $ )z"Maximum info rows to be displayed.zdisplay.max_info_rowsr   r;   s    r"   Úmax_rowsÚ_DataFrameInfoPrinter.max_rowsË  s   € ô Ð1Ó2Ð2r$   c                óF   • [        U R                  U R                  :„  5      $ )zDCheck if number of columns to be summarized does not exceed maximum.)Úboolr‡   rY   r;   s    r"   Úexceeds_info_colsÚ'_DataFrameInfoPrinter.exceeds_info_colsÐ  s   € ô �D—N‘N T§]¡]Ñ2Ó3Ð3r$   c                óX   • [        [        U R                  5      U R                  :„  5      $ )zACheck if number of rows to be summarized does not exceed maximum.)rÆ   r†   r8   rÃ   r;   s    r"   Úexceeds_info_rowsÚ'_DataFrameInfoPrinter.exceeds_info_rowsÕ  s    € ô ”C˜Ÿ	™	“N T§]¡]Ñ2Ó3Ð3r$   c                ó.   • U R                   R                  $ r…   ©r“   r‡   r;   s    r"   r‡   Ú_DataFrameInfoPrinter.col_countÚ  ó   € ð �y‰y×"Ñ"Ð"r$   c                ó"   • Uc  [        S5      $ U$ )Nzdisplay.max_info_columnsr   )r<   rY   s     r"   r¿   Ú*_DataFrameInfoPrinter._initialize_max_colsß  s   € ØÑÜÐ8Ó9Ð9Øˆr$   c                óp   • Uc2  [        U R                  (       + =(       a    U R                  (       + 5      $ U$ rW   )rÆ   rÇ   rÊ   ©r<   r[   s     r"   rÀ   Ú-_DataFrameInfoPrinter._initialize_show_countsä  s0   € ØÑÜ˜D×2Ñ2Ô2×Q¸4×;QÑ;QÔ7QÓRÐRàÐr$   c                ó(  • U R                   (       a  [        U R                  U R                  S9$ U R                   SL a  [	        U R                  S9$ U R
                  (       a  [	        U R                  S9$ [        U R                  U R                  S9$ )zK
Create instance of table builder based on verbosity and display settings.
©r“   Úwith_countsF©r“   )rZ   Ú_DataFrameTableBuilderVerboser“   r[   Ú _DataFrameTableBuilderNonVerboserÇ   r;   s    r"   r±   Ú+_DataFrameInfoPrinter._create_table_builderê  sz   € ð �<�<Ü0Ø—Y‘YØ ×,Ñ,ñð ð �\‰\˜UÒ"Ü3¸¿¹ÑCÐCØ×#×#Ü3¸¿¹ÑCÐCä0Ø—Y‘YØ ×,Ñ,ñð r$   )r8   r“   rY   r[   rZ   )NNN)
r“   rt   rY   rh   rZ   ri   r[   ri   r_   rj   rc   ©r_   rÆ   )rY   rh   r_   rd   ©r[   ri   r_   rÆ   )r_   Ú_DataFrameTableBuilder)rk   rl   rm   rn   ro   rx   rq   rÃ   rÇ   rÊ   r‡   r¿   rÀ   r±   rr   r,   r$   r"   r”   r”   ®  s¬   † ñð$  $Ø#Ø#'ðEàðEð ðEð ð	Eð
 !ðEð 
õEð ó3ó ð3ð ó4ó ð4ð ó4ó ð4ð ó#ó ð#ôô
÷r$   r”   c                  óL   • \ rS rSrSr  S       S	S jjrS
S jrSS jrSrg)r£   iþ  zë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                ój   • Xl         UR                  U l        X l        U R                  U5      U l        g rW   )r“   r8   rZ   rÀ   r[   )r<   r“   rZ   r[   s       r"   rx   Ú_SeriesInfoPrinter.__init__  s,   € ð Œ	Ø—I‘IˆŒ	ØŒØ×7Ñ7¸ÓDˆÕr$   c                ó    • U R                   (       d  U R                   c  [        U R                  U R                  S9$ [	        U R                  S9$ )z6
Create instance of table builder based on verbosity.
rÖ   rØ   )rZ   Ú_SeriesTableBuilderVerboser“   r[   Ú_SeriesTableBuilderNonVerboser;   s    r"   r±   Ú(_SeriesInfoPrinter._create_table_builder  sB   € ð �<�<˜4Ÿ<™<Ñ/Ü-Ø—Y‘YØ ×,Ñ,ñð ô
 1°d·i±iÑ@Ð@r$   c                ó   • Uc  gU$ )NTr,   rÓ   s     r"   rÀ   Ú*_SeriesInfoPrinter._initialize_show_counts"  s   € ØÑØàÐr$   )r8   r“   r[   rZ   )NN)r“   rž   rZ   ri   r[   ri   r_   rj   )r_   Ú_SeriesTableBuilderrÝ   )	rk   rl   rm   rn   ro   rx   r±   rÀ   rr   r,   r$   r"   r£   r£   þ  sJ   † ñ
ð  $Ø#'ð		Eàð	Eð ð	Eð !ð		Eð
 
õ	Eô
A÷r$   r£   c                  óØ   • \ rS rSr% SrS\S'   S\S'   \SS j5       r\SS j5       r	\SS	 j5       r
\SS
 j5       r\SS j5       r\SS j5       r\SS j5       rSS jrSS jrSS jrSrg)r¼   i)  z"
Abstract builder for info table.
ú	list[str]Ú_linesr5   r“   c                ó   • g)z-Product in a form of list of lines (strings).Nr,   r;   s    r"   r²   Ú_TableBuilderAbstract.get_lines1  r?   r$   c                ó.   • U R                   R                  $ rW   ©r“   r8   r;   s    r"   r8   Ú_TableBuilderAbstract.data5  s   € à�y‰y�~‰~Ðr$   c                ó.   • U R                   R                  $ )z*Dtypes of each of the DataFrame's columns.)r“   r=   r;   s    r"   r=   Ú_TableBuilderAbstract.dtypes9  s   € ð �y‰y×ÑÐr$   c                ó.   • U R                   R                  $ )rA   )r“   rB   r;   s    r"   rB   Ú"_TableBuilderAbstract.dtype_counts>  s   € ð �y‰y×%Ñ%Ð%r$   c                ó@   • [        U R                  R                  5      $ )z Whether to display memory usage.)rÆ   r“   r2   r;   s    r"   Údisplay_memory_usageÚ*_TableBuilderAbstract.display_memory_usageC  s   € ô �D—I‘I×*Ñ*Ó+Ð+r$   c                ó.   • U R                   R                  $ )z/Memory usage string with proper size qualifier.)r“   rM   r;   s    r"   rM   Ú)_TableBuilderAbstract.memory_usage_stringH  s   € ð �y‰y×,Ñ,Ð,r$   c                ó.   • U R                   R                  $ rW   )r“   rF   r;   s    r"   rF   Ú%_TableBuilderAbstract.non_null_countsM  s   € à�y‰y×(Ñ(Ð(r$   c                ór   • U R                   R                  [        [        U R                  5      5      5        g)z>Add line with string representation of dataframe to the table.N)rë   Úappendr   Útyper8   r;   s    r"   Úadd_object_type_lineÚ*_TableBuilderAbstract.add_object_type_lineQ  s!   € à�‰×Ñœ3œt D§I¡I›Ó/Õ0r$   c                ó~   • U R                   R                  U R                  R                  R	                  5       5        g)z,Add line with range of indices to the table.N)rë   rý   r8   rS   Ú_summaryr;   s    r"   Úadd_index_range_lineÚ*_TableBuilderAbstract.add_index_range_lineU  s%   € à�‰×Ñ˜4Ÿ9™9Ÿ?™?×3Ñ3Ó5Õ6r$   c                óæ   • [        U R                  R                  5       5       VVs/ s H  u  pU SUS S3PM     nnnU R                  R	                  SSR                  U5       35        gs  snnf )z2Add summary line with dtypes present in dataframe.Ú(ÚdÚ)zdtypes: z, N)ÚsortedrB   Úitemsrë   rý   Újoin)r<   ÚkeyÚvalÚcollected_dtypess       r"   Úadd_dtypes_lineÚ%_TableBuilderAbstract.add_dtypes_lineY  sq   € ô /5°T×5FÑ5F×5LÑ5LÓ5NÔ.Oô
Ú.O¡( #ˆsˆe�1�S˜�G˜1ÓÑ.Oð 	ñ 
ð 	�‰×Ñ˜X d§i¡iÐ0@Ó&AÐ%BÐCÕDùó
s   §A-r,   N©r_   rê   )r_   r7   r^   r`   rÜ   re   rb   ©r_   rj   )rk   rl   rm   rn   ro   rp   r   r²   rq   r8   r=   rB   rö   rM   rF   rÿ   r  r  rr   r,   r$   r"   r¼   r¼   )  s®   ‡ ñð ÓØ
ƒOàó<ó ð<ð óó ðð ó ó ð ð ó&ó ð&ð ó,ó ð,ð ó-ó ð-ð ó)ó ð)ô1ô7÷Er$   r¼   c                  ó�   • \ rS rSrSrSS jrSS jrSS jr\SS j5       r	\
SS j5       r\
SS j5       r\
SS	 j5       rSS
 jrSrg)rÞ   ia  zx
Abstract builder for dataframe info table.

Parameters
----------
info : DataFrameInfo.
    Instance of DataFrameInfo.
c               ó   • Xl         g rW   rØ   ©r<   r“   s     r"   rx   Ú_DataFrameTableBuilder.__init__k  s   € Ø#'�	r$   c                ó    • / U l         U R                  S:X  a  U R                  5         U R                   $ U R                  5         U R                   $ )Nr   )rë   r‡   Ú_fill_empty_infoÚ_fill_non_empty_infor;   s    r"   r²   Ú _DataFrameTableBuilder.get_linesn  sE   € ØˆŒØ�>‰>˜QÓØ×!Ñ!Ô#ð �{‰{Ðð ×%Ñ%Ô'Ø�{‰{Ðr$   c                ó¼   • U R                  5         U R                  5         U R                  R                  S[	        U R
                  5      R                   S35        g)z;Add lines to the info table, pertaining to empty dataframe.zEmpty rL   N)rÿ   r  rë   rý   rþ   r8   rk   r;   s    r"   r  Ú'_DataFrameTableBuilder._fill_empty_infov  sD   € à×!Ñ!Ô#Ø×!Ñ!Ô#Ø�‰×Ñ˜V¤D¨¯©£O×$<Ñ$<Ð#=¸RÐ@ÕAr$   c                ó   • g©z?Add lines to the info table, pertaining to non-empty dataframe.Nr,   r;   s    r"   r  Ú+_DataFrameTableBuilder._fill_non_empty_info|  r?   r$   c                ó.   • U R                   R                  $ )z
DataFrame.rï   r;   s    r"   r8   Ú_DataFrameTableBuilder.data€  ó   € ð �y‰y�~‰~Ðr$   c                ó.   • U R                   R                  $ )zDataframe columns.)r“   r‚   r;   s    r"   r‚   Ú_DataFrameTableBuilder.ids…  s   € ð �y‰y�}‰}Ðr$   c                ó.   • U R                   R                  $ )z-Number of dataframe columns to be summarized.rÍ   r;   s    r"   r‡   Ú _DataFrameTableBuilder.col_countŠ  rÏ   r$   c                óT   • U R                   R                  SU R                   35        g©z!Add line containing memory usage.zmemory usage: N©rë   rý   rM   r;   s    r"   Úadd_memory_usage_lineÚ,_DataFrameTableBuilder.add_memory_usage_line�  ó"   € à�‰×Ñ˜^¨D×,DÑ,DÐ+EÐFÕGr$   ©rë   r“   N)r“   rt   r_   rj   r  r  )r_   r   r›   rc   )rk   rl   rm   rn   ro   rx   r²   r  r   r  rq   r8   r‚   r‡   r*  rr   r,   r$   r"   rÞ   rÞ   a  so   † ñô(ôôBð óNó ðNð óó ðð óó ðð ó#ó ð#÷Hr$   rÞ   c                  ó,   • \ rS rSrSrSS jrSS jrSrg)rÚ   i”  z6
Dataframe info table builder for non-verbose output.
c                óÈ   • U R                  5         U R                  5         U R                  5         U R                  5         U R                  (       a  U R                  5         ggr  )rÿ   r  Úadd_columns_summary_liner  rö   r*  r;   s    r"   r  Ú5_DataFrameTableBuilderNonVerbose._fill_non_empty_info™  sL   € à×!Ñ!Ô#Ø×!Ñ!Ô#Ø×%Ñ%Ô'Ø×ÑÔØ×$×$Ø×&Ñ&Õ(ð %r$   c                óh   • U R                   R                  U R                  R                  SS95        g )NÚColumns©Úname)rë   rý   r‚   r  r;   s    r"   r0  Ú9_DataFrameTableBuilderNonVerbose.add_columns_summary_line¢  s&   € Ø�‰×Ñ˜4Ÿ8™8×,Ñ,°)Ð,Ð<Õ=r$   r,   Nr  )rk   rl   rm   rn   ro   r  r0  rr   r,   r$   r"   rÚ   rÚ   ”  s   † ñô)÷>r$   rÚ   c                  óð   • \ rS rSr% SrSrS\S'   S\S'   S\S	'   S
\S'   \\SS j5       5       r	\SS j5       r
SS jrSS jrSS jr\SS j5       r\SS j5       rSS jrSS jrSS jrSS jrSS jrSrg)Ú_TableBuilderVerboseMixini¦  z 
Mixin for verbose info output.
z  r   ÚSPACINGzSequence[Sequence[str]]ÚstrrowsúSequence[int]Úgross_column_widthsrÆ   r×   c                ó   • g)ú.Headers names of the columns in verbose table.Nr,   r;   s    r"   ÚheadersÚ!_TableBuilderVerboseMixin.headers°  r?   r$   c                óX   • U R                    Vs/ s H  n[        U5      PM     sn$ s  snf )z'Widths of header columns (only titles).)r?  r†   ©r<   Úcols     r"   Úheader_column_widthsÚ._TableBuilderVerboseMixin.header_column_widthsµ  s$   € ð %)§L¢LÓ1¢L˜S”�C–¡LÑ1Ð1ùÒ1s   �'c                ó„   • U R                  5       n[        U R                  USS9 Vs/ s H  n[        U6 PM     sn$ s  snf )zAGet widths of columns containing both headers and actual content.F©Ústrict)Ú_get_body_column_widthsÚziprD  Úmax)r<   Úbody_column_widthsÚwidthss      r"   Ú_get_gross_column_widthsÚ2_TableBuilderVerboseMixin._get_gross_column_widthsº  sS   € à!×9Ñ9Ó;Ðô Ø×)Ñ)Ð+=Àeòó
ò�ô �‹Lññ
ð 	
ùò 
s   ¨=c                óŽ   • [        [        U R                  SS065      nU Vs/ s H  n[        S U 5       5      PM     sn$ s  snf )z$Get widths of table content columns.rH  Tc              3  ó8   #   • U  H  n[        U5      v •  M     g 7frW   )r†   )Ú.0r/   s     r"   Ú	<genexpr>ÚD_TableBuilderVerboseMixin._get_body_column_widths.<locals>.<genexpr>Ç  s   é € Ð(¢C˜q”C˜—F�F¢Cùs   ‚)ÚlistrJ  r:  rK  )r<   ÚstrcolsrC  s      r"   rI  Ú1_TableBuilderVerboseMixin._get_body_column_widthsÄ  s=   € ä+/´°T·\±\Ð0OÈ$Ñ0OÓ+PˆÙ4;Ó<²G¨S”Ñ(¡CÓ(Ö(±GÑ<Ð<ùÒ<s   £Ac                ód   • U R                   (       a  U R                  5       $ U R                  5       $ )zl
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_rowsÚ#_TableBuilderVerboseMixin._gen_rowsÉ  s+   € ð ××Ø×-Ñ-Ó/Ð/à×0Ñ0Ó2Ð2r$   c                ó   • g)ú=Iterator with string representation of body data with counts.Nr,   r;   s    r"   rY  Ú/_TableBuilderVerboseMixin._gen_rows_with_countsÔ  r?   r$   c                ó   • g)ú@Iterator with string representation of body data without counts.Nr,   r;   s    r"   rZ  Ú2_TableBuilderVerboseMixin._gen_rows_without_countsØ  r?   r$   c           
     óò   • U R                   R                  [        U R                  U R                  SS9 VVs/ s H  u  p[        X5      PM     snn5      nU R                  R                  U5        g s  snnf ©NTrG  )r9  r  rJ  r?  r<  r#   rë   rý   )r<   ÚheaderÚ	col_widthÚheader_lines       r"   Úadd_header_lineÚ)_TableBuilderVerboseMixin.add_header_lineÜ  sn   € Ø—l‘l×'Ñ'ô *-Ø—L‘L $×":Ñ":À4ò*ôò*Ñ%�Fô ˜Ö+ñ*òó
ˆð 	�‰×Ñ˜;Õ'ùós   ¸A3
c           
     óú   • U R                   R                  [        U R                  U R                  SS9 VVs/ s H  u  p[        SU-  U5      PM     snn5      nU R                  R                  U5        g s  snnf )NTrG  Ú-)r9  r  rJ  rD  r<  r#   rë   rý   )r<   Úheader_colwidthÚgross_colwidthÚseparator_lines       r"   Úadd_separator_lineÚ,_TableBuilderVerboseMixin.add_separator_lineç  sx   € ØŸ™×*Ñ*ô 8;Ø×-Ñ-¨t×/GÑ/GÐPTò8ôò8Ñ3�Oô ˜˜Ñ.°Ö?ñ8òó
ˆð 	�‰×Ñ˜>Õ*ùós   ¸A7
c                ó  • U R                    Hi  nU R                  R                  [        XR                  SS9 VVs/ s H  u  p#[        X#5      PM     snn5      nU R                  R                  U5        Mk     g s  snnf rd  )r:  r9  r  rJ  r<  r#   rë   rý   )r<   ÚrowrC  rm  Ú	body_lines        r"   Úadd_body_linesÚ(_TableBuilderVerboseMixin.add_body_linesò  sv   € Ø—<”<ˆCØŸ™×)Ñ)ô 03Ø×5Ñ5¸dò0ôò0Ñ+˜ô ˜SÖ1ñ0òóˆIð �K‰K×Ñ˜yÖ)ò  ùós   ¼A;c              #  ó@   #   • U R                    H
  nU S3v •  M     g7f)z7Iterator with string representation of non-null counts.z	 non-nullN)rF   )r<   r‹   s     r"   Ú_gen_non_null_countsÚ._TableBuilderVerboseMixin._gen_non_null_countsþ  s"   é € à×)Ô)ˆEØ�G˜9Ð%Ô%ò *ùs   ‚c              #  óL   #   • U R                    H  n[        U5      v •  M     g7f)z5Iterator with string representation of column dtypes.N)r=   r   )r<   Údtypes     r"   Ú_gen_dtypesÚ%_TableBuilderVerboseMixin._gen_dtypes  s   é € à—[”[ˆEÜ˜uÓ%Ô%ò !ùó   ‚"$r,   N©r_   zSequence[str])r_   r;  ©r_   zIterator[Sequence[str]]r  ©r_   zIterator[str])rk   rl   rm   rn   ro   r9  rp   rq   r   r?  rD  rN  rI  r[  rY  rZ  rh  ro  rt  rw  r{  rr   r,   r$   r"   r8  r8  ¦  s§   ‡ ñð €GˆSÓØ$Ó$Ø&Ó&ØÓàØó=ó ó ð=ð ó2ó ð2ô
ô=ô
	3ð óLó ðLð óOó ðOô	(ô	+ô
*ô&÷
&r$   r8  c                  ó~   • \ rS rSrSr      SS jrSS jr\SS j5       rSS jr	SS jr
SS jrSS	 jrSS
 jrSrg)rÙ   i	  z2
Dataframe info table builder for verbose output.
c               ó‚   • Xl         X l        [        U R                  5       5      U l        U R                  5       U l        g rW   ©r“   r×   rU  r[  r:  rN  r<  ©r<   r“   r×   s      r"   rx   Ú&_DataFrameTableBuilderVerbose.__init__  ó3   € ð Œ	Ø&ÔÜ04°T·^±^Ó5EÓ0FˆŒØ26×2OÑ2OÓ2QˆÕ r$   c                ó(  • U R                  5         U R                  5         U R                  5         U R                  5         U R	                  5         U R                  5         U R                  5         U R                  (       a  U R                  5         ggr  )	rÿ   r  r0  rh  ro  rt  r  rö   r*  r;   s    r"   r  Ú2_DataFrameTableBuilderVerbose._fill_non_empty_info  sp   € à×!Ñ!Ô#Ø×!Ñ!Ô#Ø×%Ñ%Ô'Ø×ÑÔØ×ÑÔ!Ø×ÑÔØ×ÑÔØ×$×$Ø×&Ñ&Õ(ð %r$   c                ó4   • U R                   (       a  / SQ$ / SQ$ )r>  )ú # ÚColumnúNon-Null Countr   )rŠ  r‹  r   ©r×   r;   s    r"   r?  Ú%_DataFrameTableBuilderVerbose.headers%  s   € ð ××Ú?Ð?Ú)Ð)r$   c                óV   • U R                   R                  SU R                   S35        g )NzData columns (total z
 columns):)rë   rý   r‡   r;   s    r"   r0  Ú6_DataFrameTableBuilderVerbose.add_columns_summary_line,  s#   € Ø�‰×ÑÐ1°$·.±.Ð1AÀÐLÕMr$   c              #  óŒ   #   • [        U R                  5       U R                  5       U R                  5       SS9 Sh  v•N   g N7f)ra  TrG  N)rJ  Ú_gen_line_numbersÚ_gen_columnsr{  r;   s    r"   rZ  Ú6_DataFrameTableBuilderVerbose._gen_rows_without_counts/  s>   é € äØ×"Ñ"Ó$Ø×ÑÓØ×ÑÓØñ	
÷ 	
ó 	
ùs   ‚:A¼A½Ac              #  óª   #   • [        U R                  5       U R                  5       U R                  5       U R	                  5       SS9 Sh  v•N   g N7f©r^  TrG  N)rJ  r’  r“  rw  r{  r;   s    r"   rY  Ú3_DataFrameTableBuilderVerbose._gen_rows_with_counts8  sJ   é € äØ×"Ñ"Ó$Ø×ÑÓØ×%Ñ%Ó'Ø×ÑÓØñ
÷ 	
ó 	
ùs   ‚A	AÁAÁAc              #  óV   #   • [        U R                  5       H  u  pSU 3v •  M     g7f)z6Iterator with string representation of column numbers.r+   N)Ú	enumerater‚   )r<   ÚiÚ_s      r"   r’  Ú/_DataFrameTableBuilderVerbose._gen_line_numbersB  s%   é € ä˜dŸh™hÖ'‰DˆAØ�a�S�'ŒMò (ùs   ‚')c              #  óL   #   • U R                    H  n[        U5      v •  M     g7f)z4Iterator with string representation of column names.N)r‚   r   rB  s     r"   r“  Ú*_DataFrameTableBuilderVerbose._gen_columnsG  s   é € à—8”8ˆCÜ˜sÓ#Ô#ò ùr}  ©r<  r“   r:  r×   N)r“   rt   r×   rÆ   r_   rj   r  r~  r  r€  )rk   rl   rm   rn   ro   rx   r  rq   r?  r0  rZ  rY  r’  r“  rr   r,   r$   r"   rÙ   rÙ   	  sa   † ñð	Rð ð	Rð ð		Rð
 
ô	Rô
)ð ó*ó ð*ôNô
ô
ô÷
$r$   rÙ   c                  ó^   • \ rS rSrSrS
S jrSS jr\SS j5       rSS jr	\
SS j5       rSrg	)rè   iM  zo
Abstract builder for series info table.

Parameters
----------
info : SeriesInfo.
    Instance of SeriesInfo.
c               ó   • Xl         g rW   rØ   r  s     r"   rx   Ú_SeriesTableBuilder.__init__W  s   € Ø $�	r$   c                óH   • / U l         U R                  5         U R                   $ rW   )rë   r  r;   s    r"   r²   Ú_SeriesTableBuilder.get_linesZ  s   € ØˆŒØ×!Ñ!Ô#Ø�{‰{Ðr$   c                ó.   • U R                   R                  $ )zSeries.rï   r;   s    r"   r8   Ú_SeriesTableBuilder.data_  r"  r$   c                óT   • U R                   R                  SU R                   35        gr(  r)  r;   s    r"   r*  Ú)_SeriesTableBuilder.add_memory_usage_lined  r,  r$   c                ó   • g©z<Add lines to the info table, pertaining to non-empty series.Nr,   r;   s    r"   r  Ú(_SeriesTableBuilder._fill_non_empty_infoh  r?   r$   r-  N)r“   rž   r_   rj   r  rœ   r  )rk   rl   rm   rn   ro   rx   r²   rq   r8   r*  r   r  rr   r,   r$   r"   rè   rè   M  sA   † ñô%ôð
 óó ðôHð óKó óKr$   rè   c                  ó"   • \ rS rSrSrSS jrSrg)rä   im  z3
Series info table builder for non-verbose output.
c                ó¨   • U R                  5         U R                  5         U R                  5         U R                  (       a  U R	                  5         ggrª  )rÿ   r  r  rö   r*  r;   s    r"   r  Ú2_SeriesTableBuilderNonVerbose._fill_non_empty_infor  s@   € à×!Ñ!Ô#Ø×!Ñ!Ô#Ø×ÑÔØ×$×$Ø×&Ñ&Õ(ð %r$   r,   Nr  )rk   rl   rm   rn   ro   r  rr   r,   r$   r"   rä   rä   m  s   † ñ÷)r$   rä   c                  ój   • \ rS rSrSr      SS jrSS jrSS jr\SS j5       r	SS jr
SS jrS	rg
)rã   i{  z/
Series info table builder for verbose output.
c               ó‚   • Xl         X l        [        U R                  5       5      U l        U R                  5       U l        g rW   rƒ  r„  s      r"   rx   Ú#_SeriesTableBuilderVerbose.__init__€  r†  r$   c                ó(  • U R                  5         U R                  5         U R                  5         U R                  5         U R	                  5         U R                  5         U R                  5         U R                  (       a  U R                  5         ggrª  )	rÿ   r  Úadd_series_name_linerh  ro  rt  r  rö   r*  r;   s    r"   r  Ú/_SeriesTableBuilderVerbose._fill_non_empty_info‹  sp   € à×!Ñ!Ô#Ø×!Ñ!Ô#Ø×!Ñ!Ô#Ø×ÑÔØ×ÑÔ!Ø×ÑÔØ×ÑÔØ×$×$Ø×&Ñ&Õ(ð %r$   c                óh   • U R                   R                  SU R                  R                   35        g )NzSeries name: )rë   rý   r8   r5  r;   s    r"   r³  Ú/_SeriesTableBuilderVerbose.add_series_name_line—  s$   € Ø�‰×Ñ˜]¨4¯9©9¯>©>Ð*:Ð;Õ<r$   c                ó2   • U R                   (       a  SS/$ S/$ )r>  rŒ  r   r�  r;   s    r"   r?  Ú"_SeriesTableBuilderVerbose.headersš  s    € ð ××Ø$ gÐ.Ð.ØˆyÐr$   c              #  óN   #   • S U R                  5        5        Sh  v•N   g N7f)ra  c              3  ó&   #   • U  H  o/v •  M	     g 7frW   r,   )rR  rz  s     r"   rS  ÚF_SeriesTableBuilderVerbose._gen_rows_without_counts.<locals>.<genexpr>£  s   é € Ð<Ò); •GÒ);ùs   ‚N)r{  r;   s    r"   rZ  Ú3_SeriesTableBuilderVerbose._gen_rows_without_counts¡  s   é € á<¨×)9Ñ)9Ô);Ó<×<Ó<ùs   ‚%�#ž%c              #  ón   #   • [        U R                  5       U R                  5       SS9 Sh  v•N   g N7fr–  )rJ  rw  r{  r;   s    r"   rY  Ú0_SeriesTableBuilderVerbose._gen_rows_with_counts¥  s)   é € ä�t×0Ñ0Ó2°D×4DÑ4DÓ4FÈtÑT×TÓTùs   ‚+5­3®5rŸ  N)r“   rž   r×   rÆ   r_   rj   r  r~  r  )rk   rl   rm   rn   ro   rx   r  r³  rq   r?  rZ  rY  rr   r,   r$   r"   rã   rã   {  sW   † ñð	Rð ð	Rð ð		Rð
 
ô	Rô
)ô=ð óó ðô=÷Ur$   rã   c                ór   • U R                   R                  5       R                  S 5      R                  5       $ )zC
Create mapping between datatypes and their number of occurrences.
c                ó   • U R                   $ rW   r4  )r/   s    r"   Ú<lambda>Ú-_get_dataframe_dtype_counts.<locals>.<lambda>¯  s   € °a·f²fr$   )r=   Úvalue_countsÚgroupbyr�   )Údfs    r"   r{   r{   ª  s,   € ð
 �9‰9×!Ñ!Ó#×+Ñ+Ñ,<Ó=×AÑAÓCÐCr$   )r    zstr | Dtyper!   rd   r_   r   )r-   Úfloatr.   r   r_   r   rW   )r2   rš   r_   r9   )rÅ  r   r_   ra   )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   rt   rž   r¯   r”   r£   r¼   rÞ   rÚ   r8  rÙ   rè   rä   rã   r{   r,   r$   r"   Ú<module>rÕ     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$   