o
    Eh0                     @   s   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 d dl	m
Z
 d dlmZ d dlZd dlmZmZmZmZ d dlmZ G dd dZdS )	    )deepcopyN)using_string_dtype)option_context)HAS_PYARROW)	DataFrameSeries
date_rangetimedelta_rangec                	   @   s,  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Ze	j
je o#edddd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Ze	j
d!e ed"gd#ed"gd$ed"g igd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Ze	j
d3g d4d5d6 Z d7d8 Z!d9d: Z"d;S )<TestDataFrameMiscc                 C   sn   |d }|j dksJ |d}|j dksJ |jd d df }|j dks'J |jd d  }|j dks5J d S )NAB)namepoploc)selffloat_framess2 r   ;lib/python3.10/site-packages/pandas/tests/frame/test_api.pytest_getitem_pop_assign_name   s   
z.TestDataFrameMisc.test_getitem_pop_assign_namec                 C   s  |}| ddksJ | ddksJ | ddksJ | ddks&J | ddks/J |ddks8J |ddksAJ |ddksJJ |ddksSJ |ddks\J |d|ju sfJ |d|ju spJ tjtdd | d W d    n1 sw   Y  tjtd	d |d
 W d    n1 sw   Y  tjtdd |d  W d    n1 sw   Y  tjtdd | d  W d    d S 1 sw   Y  d S )Nr      indexZrowscolumnszNo axis namedmatch   zNo axis.*foofoozNo axis.*None)Z_get_axis_numberZ_get_axis_nameZ	_get_axisr   r   pytestraises
ValueError)r   r   fr   r   r   test_get_axis%   s2   "zTestDataFrameMisc.test_get_axisc                 C   s>   t jtdd |j|v  W d    d S 1 sw   Y  d S )Nzunhashable type: 'Index'r   )r   r   	TypeErrorr   )r   r   r   r   r   test_column_contains_raisesB   s   "z-TestDataFrameMisc.test_column_contains_raisesc                 C   s   t tdtdgtdd}tdD ]
}|t|v sJ qt|dts'J t tdtdgtjtt	ddd}tdD ]
}|t|v sJJ q@tdD ]
}|t|vsYJ qOt|dt sdJ d S )NZabcdZefghZABCDr   r   ZEFGH)
r   listdir
isinstance__getitem__r   pdZ
MultiIndexZfrom_tupleszip)r   dfkeyr   r   r   test_tab_completionF   s   z%TestDataFrameMisc.test_tab_completionc                 C   s   dd t dD }t dt dg}t||d}dt|v sJ dt|vs'J tdd t||d}d	t|v s;J d
t|vsCJ W d    n1 sMw   Y  tdd  t||d}dt|v sfJ W d    d S 1 sqw   Y  d S )Nc                 S   s   g | ]}d t | qS )a)str).0ir   r   r   
<listcomp>[   s    z@TestDataFrameMisc.test_display_max_dir_items.<locals>.<listcomp>i  r%   Za99Za100zdisplay.max_dir_itemsi,  Za299Za300Za419)ranger   r'   r   )r   r   valuesr,   r   r   r   test_display_max_dir_itemsY   s   "z,TestDataFrameMisc.test_display_max_dir_itemsc                 C   s   t  }t dg}d}tjt|d t| W d    n1 s w   Y  tjt|d t| W d    d S 1 s<w   Y  d S )Nr   zunhashable type: 'DataFrame'r   )r   r   r   r#   hash)r   empty_framer,   msgr   r   r   test_not_hashablel   s   


"z#TestDataFrameMisc.test_not_hashablezsurrogates not allowed)reasonc                 C   s6   d}t |g i}|t|vsJ |jd |ksJ d S )Nu   r   )r   r'   r   )r   Zcolnamer,   r   r   r   +test_column_name_contains_unicode_surrogatev   s   z=TestDataFrameMisc.test_column_name_contains_unicode_surrogatec                 C   sH   t tjdd}t tjdd}d|j_|jjd u s"J d S )Nr   )r      r   )r   npZrandomZdefault_rngZstandard_normalr   r   )r   Zdf1Zdf2r   r   r   test_new_empty_index   s   z&TestDataFrameMisc.test_new_empty_indexc                 C   sr   | d}||ju sJ | d}||ju sJ d}tjt|d | d W d    d S 1 s2w   Y  d S )Nr   r   zAxis must be 0 or 1 \(got 2\)r   r   )Z_get_agg_axisr   r   r   r   r    )r   r   Zcolsidxr9   r   r   r   test_get_agg_axis   s   

"z#TestDataFrameMisc.test_get_agg_axisc                 C   sX   t  }|jsJ |jrJ |jrJ t g dg ddtdd}|d= |jr*J d S )N)g      ?g       @g      @r/   bcr   r   r=   r   r   )r   emptyr>   arange)r   r   float_string_framer8   r,   r   r   r   
test_empty   s   


 zTestDataFrameMisc.test_emptyc                 C   sF   t |t |jksJ |ddg j}|jddgdj}t|| d S )Nr   r   r%   )lenr   r5   ZreindextmZassert_almost_equal)r   r   Zarrexpectedr   r   r   test_len   s   zTestDataFrameMisc.test_lenc                 C   sP   |}|j dd}|j dd}t|| |j dd}|j dd}t|| d S )Nr   )Zaxisr   r   r   )sumrL   assert_series_equal)r   r   r!   rM   resultr   r   r   test_axis_aliases   s   z#TestDataFrameMisc.test_axis_aliasesc                 C   s$   t tjsJ t tjsJ d S N)pydocZgetdocr   r   r   )r   r   r   r   test_class_axis   s   z!TestDataFrameMisc.test_class_axisc                 C   s*   |j }| D ]\}}|j|ksJ qd S rS   )Z_seriesitemsr   )r   rI   Zserieskvr   r   r   test_series_put_names   s   z'TestDataFrameMisc.test_series_put_namesc                 C   sb   t g d}|jrJ t dgdgd}|jrJ t ddgddgd }|js)J |jjs/J d S )N)r   r   r=   r   )r   r   r/   rC   rD   d)r   rG   ZdropnaTr   r,   r   r   r   test_empty_nonzero   s   


z$TestDataFrameMisc.test_empty_nonzeror,   r   rF   r%   c                 C   s   |j sJ |jj sJ d S rS   )rG   r[   r\   r   r   r   test_empty_like   s   

z!TestDataFrameMisc.test_empty_likec                 C   sT   t tdddtdddd}|j}|j }ttddidd}t	
|| d S )	NZ20130101
   )Zperiodsz1 dayrE   objectcount)r   )r   r   r	   r[   ZdtypesZvalue_countsr   r>   ZdtyperL   rP   )r   r,   trQ   rM   r   r   r   test_with_datetimelikes   s   


z)TestDataFrameMisc.test_with_datetimelikesc                 C   s$   t |}d|jd< ||rJ d S )Nr_   )r   r   )r   r   Zequals)r   r   Zcpr   r   r   test_deepcopy   s   
zTestDataFrameMisc.test_deepcopyc                 C   sD  t g dg dg dd}dd }dd }|| | d	d }||d
| dd }|| | dd }|| | dd }|| | dd }|| | dd }|| | dd }|| | | d }dd }||d
d | dd }|| | dd }|| | dd }|| | d S )N)r   ZbarZbazZqux)r   r   r   r   )r   r   r=      rB   c                 S   s   || }|d u s
J d S rS   r   )baser!   rQ   r   r   r   _check_f   s   z<TestDataFrameMisc.test_inplace_return_self.<locals>._check_fc                 S      | j dddS )Nr/   Tinplace)	set_indexxr   r   r   <lambda>       z<TestDataFrameMisc.test_inplace_return_self.<locals>.<lambda>c                 S      | j ddS NTri   Zreset_indexrl   r   r   r   rn          r/   c                 S   rp   rq   )Zdrop_duplicatesrl   r   r   r   rn      rs   c                 S   rh   )NrC   Tri   )Zsort_valuesrl   r   r   r   rn      ro   c                 S   rp   rq   )Z
sort_indexrl   r   r   r   rn     rs   c                 S   rh   Nr   Tri   Zfillnarl   r   r   r   rn     ro   c                 S      | j ddddS Nr   r   Tri   replacerl   r   r   r   rn         c                 S      | j ddiddS Nr   r   Tri   renamerl   r   r   r   rn         rD   c                 S   s   | j dddS )NT)rj   Zdroprr   rl   r   r   r   rn     ro   c                 S   rh   rt   ru   rl   r   r   r   rn     ro   c                 S   rv   rw   rx   rl   r   r   r   rn     rz   c                 S   r{   r|   r}   rl   r   r   r   rn   "  r   )r   copyrk   )r   datarg   r!   rZ   r   r   r   test_inplace_return_self   s:   z*TestDataFrameMisc.test_inplace_return_selfc              	   C   s   t jddd ddlm} |tu rd}nd}|| tjd dd	. |d
 t|j	
dd W d    n1 s;w   Y  W d    d S W d    d S 1 sSw   Y  d S )NZIPythonz6.0.0)Z
minversionr   )provisionalcompleterz/from pandas import DataFrame; obj = DataFrame()z5from pandas import Series; obj = Series(dtype=object)F)Zraise_on_extra_warningsignorezobj.r   )r   ZimportorskipZIPython.core.completerr   r   Zrun_cellrL   assert_produces_warningr&   Z	CompleterZcompletions)r   Zipframe_or_seriesr   coder   r   r   test_tab_complete_warning%  s   

"z+TestDataFrameMisc.test_tab_complete_warningc                 C   sJ   t dddgi}|ji ksJ d|jd< |jtd}|jddiks#J d S )Nr   r   r=   r   versionr%   r   attrsr~   r0   r   r,   rQ   r   r   r   
test_attrs6  s
   
zTestDataFrameMisc.test_attrsc                 C   sd   t dddgi}|ji ksJ ddh|jd< |jtd}|j|jks$J |jd |jd us0J d S )Nr   r   r=   ZspamZhamZtagsr%   r   r   r   r   r   test_attrs_deepcopy>  s   z%TestDataFrameMisc.test_attrs_deepcopyallows_duplicate_labels)TFNc                 C   st  t dddgi}d}|tu r|d }d}|j|d}|d u r'|jjdu s&J n|jj|u s/J ||us5J |jjdu s=J |tu rLt|j|jsKJ nt|d j|d jsZJ t	| d|j
|< W d    n1 sow   Y  |r|j
| dksJ n#|j
| dksJ t	| d|j
|< W d    n1 sw   Y  |jd|d}d	|j
|< |j
| dksJ d S )
Nr   r   r   )r   r   r   )r   T)r   r   r_   )r   r   Z	set_flagsflagsr   r>   Zmay_share_memoryr5   rL   Zassert_cow_warningZiloc)r   r   r   Zusing_copy_on_writeZwarn_copy_on_writeobjr-   rQ   r   r   r   test_set_flagsG  s8   
z TestDataFrameMisc.test_set_flagsc                 C   sX   t  }d}tjt|d |tdddd W d    d S 1 s%w   Y  d S )Nz<'DataFrame' object has no attribute '_constructor_expanddim'r      r=   )r   r   r   AttributeErrorZ_constructor_expanddimr>   rH   Zreshaper   r,   r9   r   r   r   test_constructor_expanddimz  s
   "z,TestDataFrameMisc.test_constructor_expanddimc                 C   sJ   t  }d}tjt|dd t| W d    d S 1 sw   Y  d S )NzDataFrame._data is deprecatedF)r   Zcheck_stacklevel)r   rL   r   DeprecationWarninginspectZ
getmembersr   r   r   r   test_inspect_getmembers  s   "z)TestDataFrameMisc.test_inspect_getmembersN)#__name__
__module____qualname__r   r"   r$   r.   r6   r:   r   ZmarkZxfailr   r   r<   r?   rA   rJ   rN   rR   rU   rY   r]   Zparametrizer   r^   rc   rd   r   r   r   r   r   r   r   r   r   r   r   r
      sL    


	



	@	
2
r
   )r   r   r   rT   Znumpyr>   r   Zpandas._configr   Zpandas._config.configr   Zpandas.compatr   Zpandasr*   r   r   r   r	   Zpandas._testingZ_testingrL   r
   r   r   r   r   <module>   s    