U
    +if89                     @   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 e
jdd Zdd	 Zd
d Ze
jdddddgdd Ze
jddddddgdd Zdd Ze
jddddd d!g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d0d1d2d3 Z&e
jj%e d4d1d5d6 Z'e
jj%ed7d1d8d9 Z(d:d; Z)d<d= Z*d>d? Z+e
jj,e d@d1dAdB Z-dS )C    )StringION)ascii_uppercase)IS64PYPY)CategoricalIndex	DataFrame
MultiIndexSeries
date_rangeoption_contextc                   C   s   t tjddddddgdS )z&Dataframe with duplicate column names.i     abcolumns)r   nprandomrandn r   r   T/home/mars/bis/venv/lib/python3.8/site-packages/pandas/tests/io/formats/test_info.pyduplicate_columns_frame   s    r   c                  C   s:   t  } t }| j|d | }td}||ks6td S )Nbufz^        <class 'pandas.core.frame.DataFrame'>
        Index: 0 entries
        Empty DataFramer   r   infogetvaluetextwrapdedentAssertionErrordfr   resultexpectedr   r   r   test_info_empty   s    r#   c                  C   s   d} t dtjjd| di}tttdtjjdd| dd|d< |	  t
 }|j|d	 ||d d
k }t
 }|j|d	 d S )Ni	  int64d   sizeZ
abcdefghijr   
   categoryr   d)r   r   r   randintr	   arraylistZtakeastypeZisnar   r   )nr    r   Zdf2r   r   r   'test_info_categorical_column_smoke_test-   s     r0   fixture_func_nameZ	int_frameZfloat_frameZdatetime_framec                 C   s<   | | }t }|j|d |  }t|dks8td S )Nr   r(   )Zgetfixturevaluer   r   r   
splitlineslenr   )r1   requestframer   r!   r   r   r   test_info_smoke_test<   s
    

r6   z&num_columns, max_info_columns, verbose)r(   r%   T)r(      T)r(   r(   T)r(   	   F)r(      Fc              	   C   sn   t tjd| }td|H t }|j|d | }t }|j||d | }||ks`tW 5 Q R X d S )N   display.max_info_columnsr   r   verbose)	r   r   r   r   r   r   r   r   r   )Znum_columnsmax_info_columnsr=   r5   Z
io_defaultr!   Zio_explicitr"   r   r   r   #test_info_default_verbose_selectionM   s    r?   c            
      C   s   t  } d}d}ttjd|}|jd| d |  }d}||ksFt|jd| d | d | 	 }t
|dksvtt|D ]:\}}||kr~||| k r~d||  d}	||	s~tq~d S )	N  r:      T)r=   r   z- #     Column  Dtype  
---    ------  -----  r    )r   r   r   r   r   r   r   r   seek	readlinesr3   	enumerate
startswith)
r   r'   startr5   resheaderlinesilineZline_nrr   r   r   -test_info_verbose_check_header_separator_bodye   s     
rM   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)r7   rN   rO   rP   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)r@   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| }t "}|jdd|d |  }W 5 Q R X |dd }|^}	}
}}}|	|ksht|
|kstt||kst||kstdS )zETest header column, spacer, first line and last line in verbose mode.rA   T)r=   show_countsr   N)	r   r   r   r   r   r   r   r2   r   )r'   Z
header_expZseparator_expZfirst_line_expZlast_line_expr5   r   	all_linestablerI   	separator
first_linerest	last_liner   r   r   %test_info_verbose_with_counts_spacing{   s    ,rZ   c                  C   sd   t dtddgddi} t }| j|d | }t|   }t	d| d}||ks`t
d S )	Nr   r9      i8)dtyper   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   r!   bytesr"   r   r   r   test_info_memory   s    rb   c               	   C   s   t  } ttjdd}|j| d t  } |j| dd |  }t| dksTt	|}t
dd, t  } |j| d |  }||kst	W 5 Q R X d S )Nr:   rQ   r   r   max_colsr%   r;   )r   r   r   r   r   r   r   r3   r2   r   r   )ior    r!   r"   r   r   r   test_info_wide   s    rf   c                  C   sZ   t  } tddggddgd}|j| d |  d}d|d ksFtd	|d
 ksVtd S )Nr9   g       @r   r   r   Tz% 0   a       1 non-null      int64  
r:   z% 1   a       1 non-null      float64
   )r   r   r   r   r2   r   )re   r5   rJ   r   r   r   0test_info_duplicate_columns_shows_correct_dtypes   s    rh   c            
   	   C   s   dddddddg} i }d}t | D ]"\}}tjjd	|d
|||< q"t|}t }|j|d | }d}||ksxt	t | D ]6\}}d|dd|dd|dd| }	|	|kst	qd S )Nr$   float64datetime64[ns]timedelta64[ns]
complex128objectboolr(   r[   r&   r   zY #   Column  Non-Null Count  Dtype          
---  ------  --------------  -----          rB   r*   z   z       z non-null     )
rE   r   r   r+   r.   r   r   r   r   r   )
dtypesdatar/   rK   r]   r    r   rH   rI   namer   r   r   test_info_shows_column_dtypes   s,    	"rr   c               
   C   st  t tjdd} dD ]T\}}tdd< t }| j||d | }t|	 
d|ks`tW 5 Q R X qdD ]T\}}tdd< t }| j||d | }t|	 
d|kstW 5 Q R X qpd	D ]\}}tdd> t }| j||d
 | }t|	 
d|kstW 5 Q R X tdd> t }| j||d
 | }t|	 
d|ksdtW 5 Q R X qd S )Nr(   r:   ))r:   Nr:   F   Tr>   r   r<   
))ru   Nrs   rt   ))ru   r:   )r:   r   rc   )r   r   r   r   r   r   r   r   r3   stripsplitr   )r    Zlen_r=   r   rH   rd   r   r   r   test_info_max_cols  s0    &&&ry   c                  C   s  dddddddg} i }d}t | D ]"\}}tjjd	|d
|||< q"t|}t }|j|dd | 	 }d|d ks~t
|j|dd | 	 }d|d kst
|j|dd | 	 }td|d st
|jd d d df j|dd | 	 }td|d rt
ddddg} i }d}t | D ]$\}}tjjd	|d
|||< q4t|}| |_tddgidgd}|j|dd | 	 }td|d st
|j|dd | 	 }td|d st
|  }	t| | d |jj }
|	|
kst
t|jjd }|t| ks8t
|  |jdd ksZt
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st
d S ) Nr$   ri   rj   rk   rl   rm   rn   r(   r[   r&   T)r   r_   zmemory usage: Fzmemory usage: [^+]+\+r:   r%   r   r9   fooindexdeepzmemory usage: [^+]+$   r~   Ar}   r     rp   r}   r   r   )rE   r   r   r+   r.   r   r   r   r   r2   r   rematchZilocr   r_   r`   r3   r}   nbytesr'   valuesr   from_productrange)ro   rp   r/   rK   r]   r    r   rH   df_with_object_indexZdf_sizeZexp_sizeZsize_dfmemr   r   r   test_info_memory_usage%  st    	 "  
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:tt ddgi}|jdd |  kshtd S Nr   r9   r{   r|   T)r}   r~   r   r   r_   r`   r   r   Z	df_objectr   r   r   $test_info_memory_usage_deep_not_pypyz  s    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:tt ddgi}|jdd |  kshtd S r   r   r   r   r   r    test_info_memory_usage_deep_pypy  s    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 sNt	d S )	Nr9   r   r   r   r   Tr   r%   )
r   r   r   r   r_   r`   sys	getsizeofabsr   )r    r   diffr   r   r   test_usage_via_getsizeof  s      r   c                  C   s  t  } tdtddddgd}|j| d d|  ks:tt  } tdtdtdd}|j| d d|  ksrtt  } tdtdttdtdgd}|j| d d|  kstt  } tdtdttdd	d
ggd}|j| d d|  kstd S )Nr9   abr[   rA   )r   r}   r   +ABCr{   bar)	r   r   r-   r   r   r   r   r   r   )r   r    r   r   r    test_info_memory_usage_qualified  s0        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	|| i|d
}|
d}|jj|jjkspt| || |kst| || | dk std S )Nc                 S   s   | j dd S )NTr   )r_   r`   )fr   r   r   r_     s    z>test_info_memory_usage_bug_on_multiindex.<locals>.memory_usager%   Z20160101)Zperiodsiddate)namesvaluer|   i  )r3   	uppercaser   r   r-   r
   r   r   r   r   Zunstackr   r   r   )r_   NMr}   r    Z	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   Z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sPtd S )Nr9   r[   rA   )r9   r[   r   Br|   T)rR   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   ).re   r   r   stringr   r   r   r   numpyr   ZpytestZpandas.compatr   r   Zpandasr   r   r   r	   r
   r   Zfixturer   r#   r0   markZparametrizer6   r?   rM   rZ   rb   rf   rh   rr   ry   r   Zskipifr   r   r   r   r   r   Zxfailr   r   r   r   r   <module>   sv    

	


(

"U


	