o
    �¨ÊhãA  ã                
   @   sú  d dl mZ d dlZd dlmZ d dlZd dlZd dlZd dl	Z	d dl
mZmZ d dlmZmZmZmZmZmZ d dlmZ e	jdd„ ƒZdd	„ Zd
d„ Ze	j dg d¢¡dd„ ƒZdd„ Ze	j dg d¢¡dd„ ƒZdd„ Z e	j dg d¢¡dd„ ƒZ!dd„ Z"dd„ Z#d d!„ Z$d"d#„ Z%d$d%„ Z&d&d'„ Z'e	jj(ed(d)�d*d+„ ƒZ)e	jj*e d,d)�d-d.„ ƒZ+e	jj(ed/d)�d0d1„ ƒZ,d2d3„ Z-d4d5„ Z.d6d7„ Z/e	jj*e d8d)�d9d:„ ƒZ0d;d<„ Z1e	jj2d=d>„ ƒZ3e	j d?g d@¢g dA¢g dB¢g dC¢g dD¢g dE¢g¡dFdG„ ƒZ4dS )Hé    )ÚStringION)Úascii_uppercase)ÚIS64ÚPYPY)ÚCategoricalIndexÚ	DataFrameÚ
MultiIndexÚSeriesÚ
date_rangeÚoption_contextc                   C   s   t tj d¡ d¡g d¢d�S )z&Dataframe with duplicate column names.é   )iÜ  é   )Úar   Úbr   ©Úcolumns)r   ÚnpÚrandomÚdefault_rngÚstandard_normal© r   r   úV/var/www/html/env/lib/python3.10/site-packages/pandas/tests/frame/methods/test_info.pyÚduplicate_columns_frame   s   þr   c                  C   s:   t ƒ } tƒ }| j|d� | ¡ }t d¡}||ksJ ‚d S )N©Úbufzd        <class 'pandas.core.frame.DataFrame'>
        RangeIndex: 0 entries
        Empty DataFrame
©r   r   ÚinfoÚgetvalueÚtextwrapÚdedent©Údfr   ÚresultÚexpectedr   r   r   Útest_info_empty#   s   ÿr$   c               	   C   sœ   d} t dtj d¡jd| td�iƒ}tt tdƒ¡ 	tj d¡jdd| td�¡ƒ 
d	¡|d	< | ¡  tƒ }|j|d
� ||d	 dk }tƒ }|j|d
� d S )NiÄ	  Úint64r   éd   )ÚsizeÚdtypeÚ
abcdefghijr   é
   Úcategoryr   Úd)r   r   r   r   ÚintegersÚintr	   ÚarrayÚlistÚtakeÚastypeÚisnar   r   )Únr!   r   Údf2r   r   r   Ú'test_info_categorical_column_smoke_test2   s    ÿÿür6   Úfixture_func_name)Ú	int_frameÚfloat_frameÚdatetime_framer   Úfloat_string_framec                 C   sP   |  | ¡}tƒ }|j|d� | ¡  ¡ }t|ƒdksJ ‚tƒ }|j|dd� d S )Nr   r*   F©r   Úverbose)Úgetfixturevaluer   r   r   Ú
splitlinesÚlen)r7   ÚrequestÚframer   r"   r   r   r   Útest_info_smoke_testC   s   
rC   c                 C   sJ   t ƒ }| jdgd�jd|d� | jddgd�jd|d� tƒ j|d� d S )NÚAr   F©r=   r   ÚBr   )r   Úreindexr   r   )r9   r   r   r   r   Útest_info_smoke_test2X   s   rH   z&num_columns, max_info_columns, verbose))r*   r&   T)r*   é   T)r*   r*   T)r*   é	   F)r*   é   Fc                 C   sŒ   t tj d¡ d| f¡ƒ}td|ƒ�* tƒ }|j|d� | ¡ }tƒ }|j||d� | ¡ }||ks4J ‚W d   ƒ d S 1 s?w   Y  d S )Nr   é   údisplay.max_info_columnsr   r<   )	r   r   r   r   r   r   r   r   r   )Únum_columnsÚmax_info_columnsr=   rB   Ú
io_defaultr"   Úio_explicitr#   r   r   r   Ú#test_info_default_verbose_selectionb   s   "÷rR   c            
      C   sÎ   t ƒ } d}d}ttj d¡ d|f¡ƒ}|jd| d� |  ¡ }d}||v s'J ‚|jd| d� |  d¡ |  	¡ }t
|ƒdks?J ‚t|ƒD ]!\}}||  krS|| k rdn qCd	|| › d	�}	| |	¡sdJ ‚qCd S )
Néé  rL   r   é   TrE   z- #     Column  Dtype  
---    ------  -----  r   ú )r   r   r   r   r   r   r   r   ÚseekÚ	readlinesr@   Ú	enumerateÚ
startswith)
r   r'   ÚstartrB   ÚresÚheaderÚlinesÚiÚlineÚline_nrr   r   r   Ú-test_info_verbose_check_header_separator_bodyz   s$   
€ýra   z>size, header_exp, separator_exp, first_line_exp, last_line_exp))r   ú$ #   Column  Non-Null Count  Dtype  ú$---  ------  --------------  -----  ú$ 0   0       3 non-null      float64z$ 3   3       3 non-null      float64)rI   rb   rc   rd   z$ 10  10      3 non-null      float64)ée   z% #    Column  Non-Null Count  Dtype  z%---   ------  --------------  -----  z% 0    0       3 non-null      float64z% 100  100     3 non-null      float64)rS   z& #     Column  Non-Null Count  Dtype  z&---    ------  --------------  -----  z& 0     0       3 non-null      float64z& 1000  1000    3 non-null      float64)i'  z' #      Column  Non-Null Count  Dtype  z'---     ------  --------------  -----  z' 0      0       3 non-null      float64z' 10000  10000   3 non-null      float64c                 C   s¬   t tj d¡ d| f¡ƒ}tƒ �}|jdd|d� | ¡  ¡ }W d  ƒ n1 s)w   Y  |dd… }|�^}	}
}}}|	|ksBJ ‚|
|ksHJ ‚||ksNJ ‚||ksTJ ‚dS )zETest header column, spacer, first line and last line in verbose mode.r   rT   T)r=   Úshow_countsr   Néþÿÿÿ)	r   r   r   r   r   r   r   r   r?   )r'   Ú
header_expÚseparator_expÚfirst_line_expÚlast_line_exprB   r   Ú	all_linesÚtabler\   Ú	separatorÚ
first_lineÚrestÚ	last_liner   r   r   Ú%test_info_verbose_with_counts_spacing�   s   ,þrr   c                  C   sd   t dtddgdd�iƒ} tƒ }| j|d� | ¡ }t|  ¡  ¡ ƒ}t 	d|› d�¡}||ks0J ‚d S )	Nr   rK   r   Úi8)r(   r   a      <class 'pandas.core.frame.DataFrame'>
    RangeIndex: 2 entries, 0 to 1
    Data columns (total 1 columns):
     #   Column  Non-Null Count  Dtype
    ---  ------  --------------  -----
     0   a       2 non-null      int64
    dtypes: int64(1)
    memory usage: z bytes
    )
r   r	   r   r   r   ÚfloatÚmemory_usageÚsumr   r   )r!   r   r"   Úbytesr#   r   r   r   Útest_info_memoryÊ   s   øÿrx   c                  C   s²   t ƒ } ttj d¡ d¡ƒ}|j| d� t ƒ } |j| dd� |  ¡ }t| 	¡ ƒdks,J ‚|}t
ddƒ� t ƒ } |j| d� |  ¡ }||ksGJ ‚W d   ƒ d S 1 sRw   Y  d S )Nr   )rL   re   r   re   ©r   Úmax_colsr&   rM   )r   r   r   r   r   r   r   r   r@   r?   r   )Úior!   r"   r#   r   r   r   Útest_info_wideà   s   "ür|   c                  C   sZ   t ƒ } tddggddgd�}|j| d� |  ¡  d¡}d|d ks#J ‚d	|d
 ks+J ‚d S )NrK   g       @r   r   r   Tz% 0   a       1 non-null      int64  
rL   z% 1   a       1 non-null      float64
é   )r   r   r   r   r?   )r{   rB   r]   r   r   r   Ú0test_info_duplicate_columns_shows_correct_dtypesò   s   r~   c            
   	   C   s¸   g d¢} i }d}t | ƒD ]\}}tj d¡jd|d� |¡||< qt|ƒ}tƒ }|j|d� | 	¡ }d}||v s:J ‚t | ƒD ]\}}d|d›d	|d›d
|d›d|› �}	|	|v sYJ ‚q>d S )N©r%   Úfloat64zdatetime64[ns]ztimedelta64[ns]Ú
complex128ÚobjectÚboolr*   r   ©r'   r   zY #   Column  Non-Null Count  Dtype          
---  ------  --------------  -----          rU   r,   z   z       z non-null     )
rX   r   r   r   r-   r2   r   r   r   r   )
ÚdtypesÚdatar4   r^   r(   r!   r   r[   r\   Únamer   r   r   Útest_info_shows_column_dtypesü   s    	"ÿ"þrˆ   c               	   C   sÄ  t tj d¡ d¡ƒ} dD ]4\}}tddƒ�# tƒ }| j||d� | ¡ }t	| 
¡  d¡ƒ|ks2J ‚W d   ƒ n1 s<w   Y  qdD ]4\}}tdd	ƒ�# tƒ }| j||d� | ¡ }t	| 
¡  d¡ƒ|ksiJ ‚W d   ƒ n1 ssw   Y  qDd
D ]d\}}tddƒ�# tƒ }| j||d� | ¡ }t	| 
¡  d¡ƒ|ks J ‚W d   ƒ n1 sªw   Y  tdd	ƒ�# tƒ }| j||d� | ¡ }t	| 
¡  d¡ƒ|ksÐJ ‚W d   ƒ n1 sÚw   Y  q{d S )Nr   )r*   rL   ))rL   N©rL   F©é   TrO   r   r<   Ú
))r‹   Nr‰   rŠ   rL   ))r‹   rL   )rL   r   ry   )r   r   r   r   r   r   r   r   r   r@   ÚstripÚsplit)r!   Úlen_r=   r   r[   rz   r   r   r   Útest_info_max_cols  s@   ü€ü€üü€÷r�   c                  C   sà  g d¢} i }d}t | ƒD ]\}}tj d¡jd|d� |¡||< qt|ƒ}tƒ }|j|dd� | 	¡  
¡ }d|d v s=J ‚|j|d	d� | 	¡  
¡ }d|d vsRJ ‚|j|dd� | 	¡  
¡ }t d
|d ¡siJ ‚|jd d …d d…f j|dd� | 	¡  
¡ }t d
|d ¡r‰J ‚g d¢} i }d}t | ƒD ]\}}tj d¡jd|d� |¡||< q•t|ƒ}| |_tddgidgd�}|j|dd� | 	¡  
¡ }t d
|d ¡sÒJ ‚|j|dd� | 	¡  
¡ }t d|d ¡séJ ‚| ¡  ¡ }	t| ƒ| d |jj }
|	|
k�sJ ‚t |jj¡d }|t | ¡ ¡k�sJ ‚| ¡  ¡ |jdd� ¡ k�s(J ‚tddgdgd�jdd� tddgdgd�jj tdt dgtdƒg¡dgd�}|jj |jdd� |jjj |jdd� ¡ }|dk�snJ ‚d S )Nr   r*   r   r„   T)r   ru   zmemory usage: éÿÿÿÿFzmemory usage: [^+]+\+rL   )r%   r%   r%   r€   r&   r   rK   Úfoo©ÚindexÚdeepzmemory usage: [^+]+$é   ©r•   rD   ©r”   r   éè  ©r†   r”   r   r   )rX   r   r   r   r-   r2   r   r   r   r   r?   ÚreÚmatchÚilocr   ru   rv   r@   r”   Únbytesr'   Úvaluesr   Úfrom_productÚrange)r…   r†   r4   r^   r(   r!   r   r[   Údf_with_object_indexÚdf_sizeÚexp_sizeÚsize_dfÚmemr   r   r   Útest_info_memory_usage:  sb   	" ""ÿ
r§   z'on PyPy deep=True doesn't change result)Úreasonc                  C   sl   t ddgidgd�} | jddd� ¡ | jdd� ¡ ksJ ‚t ddgiƒ}|jdd� ¡ | ¡  ¡ ks4J ‚d S ©Nr   rK   r’   r“   T)r”   r•   r—   ©r   ru   rv   ©r¢   Ú	df_objectr   r   r   Ú$test_info_memory_usage_deep_not_pypy�  ó   ÿ$r­   z(on PyPy deep=True does not change resultc                  C   sl   t ddgidgd�} | jddd� ¡ | jdd� ¡ ksJ ‚t ddgiƒ}|jdd� ¡ | ¡  ¡ ks4J ‚d S r©   rª   r«   r   r   r   Ú test_info_memory_usage_deep_pypy›  r®   r¯   z PyPy getsizeof() fails by designc                  C   sR   t dt dgtdƒg¡dgd�} | jdd� ¡ }|t | ¡ }t|ƒdk s'J ‚d S )	NrK   r   r™   rD   rš   Tr—   r&   )	r   r   r    r¡   ru   rv   ÚsysÚ	getsizeofÚabs)r!   r¦   Údiffr   r   r   Útest_usage_via_getsizeof§  s   ÿr´   c                  C   s   t ƒ } tdtdƒg d¢d�}|j| d� d|  ¡ vsJ ‚t ƒ } tdtdƒtdƒd�}|j| d� d|  ¡ v s8J ‚t ƒ } tdtdƒt tdƒtdƒg¡d�}|j| d� d|  ¡ vs[J ‚t ƒ } tdtdƒt tdƒd	d
gg¡d�}|j| d� d|  ¡ v s~J ‚d S )NrK   Úab)rK   r   rT   ©r   r”   r   ú+ÚABCrT   r’   Úbar)r   r   r0   r   r   r   r    r¡   )r   r!   r   r   r   Ú test_info_memory_usage_qualified³  s(   ÿÿrº   c                  C   s¦   dd„ } d}t tƒ}tjttƒtd|d�gddgd�}td	tj 	d
¡ 
|| ¡i|d�}| d¡}|jj|jjks;J ‚| |ƒ| |ƒksEJ ‚| |ƒ| |ƒ dk sQJ ‚d S )Nc                 S   s   | j dd� ¡ S )NTr—   )ru   rv   )Úfr   r   r   ru   Ñ  s   z>test_info_memory_usage_bug_on_multiindex.<locals>.memory_usager&   Ú20160101)ÚperiodsÚidÚdate)ÚnamesÚvaluer   r“   iÐ  )r@   r   r   r    r0   r
   r   r   r   r   r   ÚunstackrŸ   rž   )ru   ÚNÚMr”   r!   Ú	unstackedr   r   r   Ú(test_info_memory_usage_bug_on_multiindexÍ  s   þÿ
rÆ   c                  C   s6   t ddgƒ} tt d¡| | d�}tƒ }|j|d� d S )Nr   r   )r   r   r˜   r   )r   r   r   Úzerosr   r   )Úidxr!   r   r   r   r   Útest_info_categoricalæ  s   rÉ   zGH 36579: fail on 32-bit systemc                  C   sT   t ddgddgdœddgd�} tƒ }| jd|d	� | ¡ }t d
¡}||ks(J ‚d S )NrK   r   rT   )rK   r   rD   rF   r“   T)rf   r   af          <class 'pandas.core.frame.DataFrame'>
        Index: 2 entries, A to B
        Data columns (total 2 columns):
         #   Column  Non-Null Count  Dtype
        ---  ------  --------------  -----
         0   1       2 non-null      int64
         1   2       2 non-null      int64
        dtypes: int64(2)
        memory usage: 48.0+ bytes
        r   r    r   r   r   Útest_info_int_columnsï  s   ÿrÊ   c                  C   sf   t ddgd�} t d ¡� |  ¡ }W d   ƒ n1 sw   Y  ttr%dnddgd�}t ||¡ d S )Nr   r   r“   é   r–   ÚIndex)r   ÚtmÚassert_produces_warningru   r	   r   Úassert_series_equal)r!   r"   r#   r   r   r   Ú"test_memory_usage_empty_no_warning  s   
ÿrÐ   c                  C   sŒ   t  d¡ tddgddggƒ} tddƒ� tƒ }| j|d� | ¡ }W d   ƒ n1 s,w   Y  tƒ }| j|d� | ¡ }||ksDJ ‚d S )	NÚnumbarK   r   rT   r   zcompute.use_numbaTr   )ÚpytestÚimportorskipr   r   r   r   r   r    r   r   r   Útest_info_compute_numba  s   

ýrÔ   z!row, columns, show_counts, result)é   rÕ   NT)rÕ   rÕ   TT)rÕ   rÕ   FF)rL   rL   NF)rL   rL   TF)rL   rL   FFc              	   C   s¸   t dtdƒtdƒd� ddi¡}tj|jd< td| d|ƒ�5 tƒ �}|j||d� d	| 	¡ v |u s3J ‚W d   ƒ n1 s=w   Y  W d   ƒ d S W d   ƒ d S 1 sUw   Y  d S )
NrK   r*   r¶   rt   )rK   rK   zdisplay.max_info_rowsrM   )r   rf   znon-null)
r   r¡   r2   r   Únanr�   r   r   r   r   )Úrowr   rf   r"   r!   r   r   r   r   Útest_info_show_counts   s    ÿþý"ýrØ   )5r{   r   r›   Ústringr   r°   r   Únumpyr   rÒ   Úpandas.compatr   r   Úpandasr   r   r   r	   r
   r   Úpandas._testingÚ_testingrÍ   Úfixturer   r$   r6   ÚmarkÚparametrizerC   rH   rR   ra   rr   rx   r|   r~   rˆ   r�   r§   Úskipifr­   Úxfailr¯   r´   rº   rÆ   rÉ   rÊ   rÐ   Ú
single_cpurÔ   rØ   r   r   r   r   Ú<module>   s|     
þ


þ

þ
(
"U


	
	
úþ