a
    PfA                  
   @   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   ]/var/www/ai-form-bot/venv/lib/python3.9/site-packages/pandas/tests/frame/methods/test_info.pyduplicate_columns_frame   s    r   c                  C   s:   t  } t }| j|d | }td}||ks6J 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dtypeZ
abcdefghijr   
   categoryr   d)r   r   r   r   integersintr	   arraylistZtakeastypeZisnar   r   )nr!   r   Zdf2r   r   r   'test_info_categorical_column_smoke_test2   s     r2   fixture_func_name)Z	int_framefloat_frameZdatetime_framer   Zfloat_string_framec                 C   sP   | | }t }|j|d |  }t|dks8J t }|j|dd d S )Nr   r)   Fr   verbose)Zgetfixturevaluer   r   r   
splitlineslen)r3   requestframer   r"   r   r   r   test_info_smoke_testC   s    
r;   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r6   r   Br   )r   Zreindexr   r   )r4   r   r   r   r   test_info_smoke_test2X   s    r?   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|R t }|j|d | }t }|j||d | }||kshJ W d    n1 s|0    Y  d S )Nr      display.max_info_columnsr   r5   )	r   r   r   r   r   r   r   r   r   )Znum_columnsmax_info_columnsr6   r:   Z
io_defaultr"   Zio_explicitr#   r   r   r   #test_info_default_verbose_selectionb   s    rF   c            
      C   s   t  } d}d}ttjdd|f}|jd| d |  }d}||v sNJ |jd| d | d | 	 }t
|dks~J t|D ]B\}}||  kr|| k rn qd	||  d	}	||	sJ qd S )
N  rC   r      Tr=   z- #     Column  Dtype  
---    ------  -----  r    )r   r   r   r   r   r   r   r   seek	readlinesr8   	enumerate
startswith)
r   r'   startr:   resheaderlinesilineZline_nrr   r   r   -test_info_verbose_check_header_separator_bodyz   s     
rT   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)r@   rU   rV   rW   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)rG   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 sR0    Y  |dd }|^}	}
}}}|	|ksJ |
|ksJ ||ksJ ||ksJ dS )zETest header column, spacer, first line and last line in verbose mode.r   rH   T)r6   show_countsr   N)	r   r   r   r   r   r   r   r   r7   )r'   Z
header_expZseparator_expZfirst_line_expZlast_line_expr:   r   	all_linestablerP   	separator
first_linerest	last_liner   r   r   %test_info_verbose_with_counts_spacing   s    ,*ra   c                  C   sd   t dtddgddi} t }| j|d | }t|   }t	d| d}||ks`J d S )	Nr   rB   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    rg   c                  C   s   t  } ttjdd}|j| d t  } |j| dd |  }t|	 dksXJ |}t
dd6 t  } |j| d |  }||ksJ W d    n1 s0    Y  d S )Nr   )rC   rX   r   rX   r   max_colsr&   rD   )r   r   r   r   r   r   r   r   r8   r7   r   )ior!   r"   r#   r   r   r   test_info_wide   s    rk   c                  C   sZ   t  } tddggddgd}|j| d |  d}d|d ksFJ d	|d
 ksVJ d S )NrB   g       @r   r   r   Tz% 0   a       1 non-null      int64  
rC   z% 1   a       1 non-null      float64
   )r   r   r   r   r7   )rj   r:   rQ   r   r   r   0test_info_duplicate_columns_shows_correct_dtypes   s    rm   c            
   	   C   s   g d} i }d}t | D ](\}}tjdjd|d|||< qt|}t }|j|d |	 }d}||v stJ t | D ]6\}}d|dd	|dd
|dd| }	|	|v s|J q|d S )Nr%   float64zdatetime64[ns]ztimedelta64[ns]Z
complex128objectboolr)   r   r'   r   zY #   Column  Non-Null Count  Dtype          
---  ------  --------------  -----          rI   r+   z   z       z non-null     )
rL   r   r   r   r,   r0   r   r   r   r   )
dtypesdatar1   rR   r(   r!   r   rO   rP   namer   r   r   test_info_shows_column_dtypes   s    	""rv   c               	   C   s  t tjdd} dD ]h\}}tddF t }| j||d | }t	|
 d|ksdJ W d    q1 sx0    Y  qdD ]h\}}tdd	F t }| j||d | }t	|
 d|ksJ W d    q1 s0    Y  qd
D ]\}}tddH t }| j||d | }t	|
 d|ksBJ W d    n1 sX0    Y  tdd	H t }| j||d | }t	|
 d|ksJ W d    q1 s0    Y  qd S )Nr   )r)   rC   ))rC   NrC   F   TrE   r   r5   
))ry   Nrw   rx   rC   ))ry   rC   )rC   r   rh   )r   r   r   r   r   r   r   r   r   r8   stripsplit)r!   Zlen_r6   r   rO   ri   r   r   r   test_info_max_cols  s0    ::<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 szJ |j|d	d |	 
 }d|d vsJ |j|dd |	 
 }td
|d sJ |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 sJ |j|dd |	 
 }td|d sJ |  }	t| | d |jj }
|	|
ksJ t|jjd }|t| ks6J |  |jdd ksXJ 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sJ d S )Nrn   r)   r   rr   T)r   rd   zmemory usage: Fzmemory usage: [^+]+\+rC   )r%   r%   r%   ro   r&   r   rB   fooindexdeepzmemory usage: [^+]+$   r   r<   r   r     rt   r   r   r   )rL   r   r   r   r,   r0   r   r   r   r   r7   rematchilocr   rd   re   r8   r   nbytesr'   valuesr   from_productrange)rs   rt   r1   rR   r(   r!   r   rO   df_with_object_indexZdf_sizeZexp_sizeZ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shJ d S Nr   rB   r   r   T)r   r   r   r   rd   re   r   Z	df_objectr   r   r   $test_info_memory_usage_deep_not_pypy  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:J t ddgi}|jdd |  kshJ 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 sNJ d S )	NrB   r   r   r<   r   Tr   r&   )	r   r   r   r   rd   re   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s8J t  } tdtdtdd}|j| d d|  v spJ t  } tdtdttdtdgd}|j| d d|  vsJ t  } tdtdttdd	d
ggd}|j| d d|  v sJ d S )NrB   ab)rB   r   rH   r   r   r   +ABCrH   r   bar)r   r   r/   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svJ | || |ksJ | || | dk sJ d S )Nc                 S   s   | j dd S )NTr   )rd   re   )fr   r   r   rd     s    z>test_info_memory_usage_bug_on_multiindex.<locals>.memory_usager&   Z20160101)Zperiodsiddate)namesvaluer   r   i  )r8   r   r   r   r/   r
   r   r   r   r   r   Zunstackr   r   )rd   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sPJ d S )NrB   r   rH   )rB   r   r<   r>   r   T)rY   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 s60    Y  ttrJdnddgd}t|| d S )Nr   r   r      r   Index)r   tmZassert_produces_warningrd   r	   r   Z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 sX0    Y  t }| j|d | }||ksJ d S )	NZnumbarB   r   rH   r   zcompute.use_numbaTr   )pytestZ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)rC   rC   NF)rC   rC   TF)rC   rC   FFc              	   C   s   t dtdtddddi}tj|jd< td| d|X t 2}|j||d d	|	 v |u sfJ W d    n1 sz0    Y  W d    n1 s0    Y  d S )
NrB   r)   r   rc   )rB   rB   zdisplay.max_info_rowsrD   )r   rY   znon-null)
r   r   r0   r   nanr   r   r   r   r   )rowr   rY   r"   r!   r   r   r   r   test_info_show_counts   s     r   )5rj   r   r   stringr   r   r   numpyr   r   Zpandas.compatr   r   Zpandasr   r   r   r	   r
   r   Zpandas._testingZ_testingr   Zfixturer   r$   r2   markZparametrizer;   r?   rF   rT   ra   rg   rk   rm   rv   r}   r   Zskipifr   Zxfailr   r   r   r   r   r   r   Z
single_cpur   r   r   r   r   r   <module>   sz    





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