o
    gd5                     @   s   d dl Z d dlZd dlZd dlmZmZmZmZm	Z	m
Z
 d dlmZ d dlm  mZ d dlmZ ejdd ZG dd dZG dd	 d	ZdS )
    N)	DataFrameIndex
IndexSlice
MultiIndexSeriesconcat)BDayc                  C   sp   t g dg dg dg} tddgddgg dg d	gg d
g dg dg dgg dd}t| |tddS )NgEJYgr鷯g|?5^ݿg6?gK?g-?gT?g9#?g9]?g46<R?)gQg^)gxֿgI&?g=U@axbq)ı.n$@      4@g      >@)         )r   r      )r   r   r   )r   r      )r   r   r   )onetwothreefourlevelscodesnamesABCDEindexcolumns)nparrayr   r   list)arrr     r&   a/home/ubuntu/cloudmapper/venv/lib/python3.10/site-packages/pandas/tests/frame/indexing/test_xs.pyfour_level_index_dataframe   s   r(   c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestXSc                 C   sP  |j d }||}| D ]\}}t|r#t|| | s"J q||| | ks-J qdddddddd	}t|}|d}|jtjksKJ |d
 dksSJ |d dks[J tj	t
tdd ||j d t   W d    n1 s{w   Y  |jd
dd}	|d
 }
t|	|
 |jd
dd}	d|	d d < |
dk sJ d S )Nr   r   r   )12r*   r+   3)r*   r+   r,   )ABr-   r.   z*Timestamp('1999-12-31 00:00:00', freq='B')matchr   )axis)r    xsitemsr"   isnanr   dtypeobject_pytestraisesKeyErrorreescaper   tmassert_series_equalall)selffloat_framedatetime_frameidxr2   itemvalue	test_dataframeseriesexpectedr&   r&   r'   test_xs&   s.   




zTestXS.test_xsc                 C   s   t dgd}d|d< d|d< d|d< d	|d
< d|d< |d}tg dtddd}t|| t g dd}|d}tg dtg tjd}t|| d S )Nr   r          ?r-   foor.          @CbarD      @E)rK   rL   rM   rO   rQ   r   )r    namer   r   cr   )rS   r    r5   )	r   r2   r   r$   r<   r=   r   r"   float64)r?   dfr2   expresultrH   r&   r&   r'   test_xs_cornerF   s   

zTestXS.test_xs_cornerc                 C   s>   t tjddg dd}|d}|jd }t|| d S )Nr   r   )r   r   rU   r   r   rJ   rU   )r   r"   randomrandnr2   ilocr<   r=   )r?   rW   crossrX   r&   r&   r'   test_xs_duplicatesY   s   

zTestXS.test_xs_duplicatesc                 C   s   t dddddddddddddg d	}|jdd
dd}|d d }t|| tt |jddgdd
gdd}W d    n1 sJw   Y  t|| d S )Nsatsun)r   r   
strawberry
      i  )dayflavoursalesyear)rh   rf   re   re   F)level
drop_levelr   rh   )r   	set_indexr2   r<   assert_frame_equalassert_produces_warningFutureWarningr?   rW   rY   rH   r&   r&   r'   test_xs_keep_level`   s    
zTestXS.test_xs_keep_levelc                 C   s   t tdddtdtdd}|rDd}tjtj|d d|	dd d < W d    n1 s2w   Y  |	ddk
 rBJ d S d|	dd d < |	ddk sXJ d S )	Nr   r   r   r   zC\nA value is trying to be set on a copy of a slice from a DataFramer/      r   )r   r"   arangereshaperanger7   r8   comSettingWithCopyErrorr2   anyr>   )r?   using_array_managerdmmsgr&   r&   r'   test_xs_viewq   s   $zTestXS.test_xs_viewN)__name__
__module____qualname__rI   rZ   r_   rp   r{   r&   r&   r&   r'   r)   %   s     r)   c                   @   sN  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zej	
dddgdgfgdd Zdd Zej	
ddddd eddgddfdddd edgddfgdd Zej	
dd d d!d gd"d# Zej	
dd$d d%d gd&d' Zd(d) Zd*d+ Zej	
d,eegd-d. Zej	
d,eegd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9S ):TestXSWithMultiIndexc                 C   sv   t dd}td}tj||gddgd}ttjt|d|g d}|j	ddd	}|j
dd d f }t|| d S )
Nia2ie2abcdedatesecidr   r   )XYZri   )rt   r$   r   from_productr   r"   r[   r\   lenr2   locr<   rl   )r?   datesidsr    rW   rY   rH   r&   r&   r'   test_xs_integer_key   s   
z(TestXSWithMultiIndex.test_xs_integer_keyc                 C   sH   |}|j ddd}||jddk }tg ddd|_t|| d S )Nr   secondr   r   )rL   rO   bazquxfirstrS   )r2   r    get_level_valuesr   r<   rl   r?    multiindex_dataframe_random_datarW   rY   rH   r&   r&   r'   test_xs_level   s
   z"TestXSWithMultiIndex.test_xs_levelc                 C   s   t jdd}tg dg dg dgg dg dg dgd}t||d}t|d	d
 dgdggd}|jdd
d}t|| d S )Nr   r   )r   pr   )r   r   y)rU   rz)r   r   r   r   r   rJ   r   r   r   r   rU   r   r"   r[   r\   r   r   r2   r<   rl   )r?   r%   r    rW   rH   rY   r&   r&   r'   test_xs_level_eq_2   s   z'TestXSWithMultiIndex.test_xs_level_eq_2c                 C   sX   |}|j ddd}d}tjtj|d d|d d < W d    d S 1 s%w   Y  d S )Nr   r   r   AA value is trying to be set on a copy of a slice from a DataFramer/   rc   r2   r7   r8   ru   rv   )r?   r   rW   rY   rz   r&   r&   r'   test_xs_setting_with_copy_error   s   "z4TestXSWithMultiIndex.test_xs_setting_with_copy_errorc                 C   s\   |}|j dddgd}d}tjtj|d d|d d < W d    d S 1 s'w   Y  d S )Nr   r   r   r   r   r   r/   rc   r   )r?   r(   rW   rY   rz   r&   r&   r'   (test_xs_setting_with_copy_error_multiple   s   "z=TestXSWithMultiIndex.test_xs_setting_with_copy_error_multiplez
key, level)r   r   r   r   c                 C   s   |}t |gd }|jjdu sJ t |jdddgd }t|tr?tt |j||d}W d    n1 s9w   Y  n|j||d}t	|| d S )Nr   Fr   r   r   )
r   r    	is_uniquer2   
isinstancer$   r<   rm   rn   rl   )r?   keyri   r   rF   rW   rH   rY   r&   r&   r'   test_xs_with_duplicates   s   
z,TestXSWithMultiIndex.test_xs_with_duplicatesc                 C   sf   g d}t |g ddddg}t dg ditdtjd	d
gddd}|jddd}t|| d S )N))r   r   r   )r   bbcder   )r   yzcde   )r   xbcde   )r   N   )r   zbcder   )r   ybcder   )a1a2cntr!   r   r   r   )r   r   r   r   r   r   r   r   rJ   r   r   )r   rk   r   r"   nanr2   r<   rl   )r?   accrW   rH   rY   r&   r&   r'   test_xs_missing_values_in_index   s   	
z4TestXSWithMultiIndex.test_xs_missing_values_in_indexzkey, level, exp_arr, exp_indexr   lvl0c                 C      | d d ddf S )Nr   r   r&   r   r&   r&   r'   <lambda>       zTestXSWithMultiIndex.<lambda>rO   rL   lvl1r   c                 C   r   )Nr   r   r&   r   r&   r&   r'   r      r   c           
      C   st   t jdd}tddgg dgg dg dgddgd	}t||d
}|j||dd}t|||d
}	t||	 d S )Nr   r   r   )rO   rL   helloworld)r   r   r   r   )r   r   r   r   r   r   r   r   r   )ri   r1   r   )
r?   r   ri   exp_arr	exp_indexr%   r    rW   rY   rH   r&   r&   r'   test_xs_named_levels_axis_eq_1   s   	z3TestXSWithMultiIndex.test_xs_named_levels_axis_eq_1indexerc                 C   s   | j dddgdS )Nr   r   r   r   r2   rW   r&   r&   r'   r      s    c                 C   s   |  dj dddS )Nr   r   r   r   r   r   r&   r&   r'   r      r   c                 C   sZ   |}g dg}t dgdggdgdggddgd}t||tdd	}||}t|| d S )
Nr
   r   r   r   r   r   r   r   r   r   r   r$   r<   rl   r?   r   r(   rW   expected_valuesexpected_indexrH   rY   r&   r&   r'   test_xs_level_multiple   s   

z+TestXSWithMultiIndex.test_xs_level_multiplec                 C   s   | j dddS )Nr   r   r   r   r   r&   r&   r'   r     s    c                 C   s
   |  dS )Nr   r   r   r&   r&   r'   r     s   
 c                 C   st   |}g dg dg}t ddgddgddggd	d
gd	d
gd
d	ggg dd}t||tdd}||}t|| d S )Nr	   r
   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r&   r&   r'   test_xs_level0  s   
z#TestXSWithMultiIndex.test_xs_level0c                 C   s*   |}| dj}|jd }t|| d S )NrO   r   r   )r2   valuesr<   assert_almost_equalr   r&   r&   r'   test_xs_values  s   
z#TestXSWithMultiIndex.test_xs_valuesc                 C   s(   |}| d}|jd }t|| d S )Nr   )r2   r   r<   r=   r   r&   r&   r'   test_xs_loc_equality  s   

z)TestXSWithMultiIndex.test_xs_loc_equalityklassc                 C   s   t g dddggg dg dgd}ttjdd|d	}|tu r%|d }d
}tjt|d |	t
dd d f  W d    d S 1 sEw   Y  d S )N))rL   rO   r   )rL   r   r   rL   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   r      r   rJ   zYExpected label or tuple of labels, got \(\('foo', 'qux', 0\), slice\(None, None, None\)\)r/   r   )r   r   r"   r[   r\   r   r7   r8   	TypeErrorr2   r   )r?   r   r    objrz   r&   r&   r'   +test_xs_IndexSlice_argument_not_implemented#  s   "z@TestXSWithMultiIndex.test_xs_IndexSlice_argument_not_implementedc                 C   sf   t dg di}|tu r|d }d}tjt|d |jddd W d    d S 1 s,w   Y  d S )Nr-   r   r   r   zIndex must be a MultiIndexr/   r   asr   )r   r   r7   r8   r   r2   )r?   r   r   rz   r&   r&   r'   test_xs_levels_raises7  s   "z*TestXSWithMultiIndex.test_xs_levels_raisesc                 C   sl   t jg dddgd}tg dg|d}|jddd	d
}tddggt jddgddgdd}t|| d S )N)r   r   r   r   )r   r   level1level2r   r   r   r   r   Fr1   rj   r   r   r   )r   from_tuplesr   r2   r<   rl   )r?   mirW   rY   rH   r&   r&   r'   "test_xs_multiindex_droplevel_falseA  s   z7TestXSWithMultiIndex.test_xs_multiindex_droplevel_falsec                 C   sH   t g dgtg dd}|jdddd}t ddgi}t|| d S )Nr   rT   r   r   r   Fr   )r   r   r2   r<   rl   ro   r&   r&   r'   test_xs_droplevel_falseP  s   z,TestXSWithMultiIndex.test_xs_droplevel_falsec                 C   s   t g dgtg dd}|jdddd}t|jd d df j|jd d df js-J d	|jd
< |s<t dd	gi}nt ddgi}t|| t g dgtg dd}|jdddd}d	|jd
< t ddgi}t|| d S )Nr   rT   r   r   r   Fr   r   r   )r   r   )r   g      @r   )	r   r   r2   r"   shares_memoryr]   _valuesr<   rl   )r?   rx   rW   rY   rH   r&   r&   r'   test_xs_droplevel_false_viewW  s   0

z1TestXSWithMultiIndex.test_xs_droplevel_false_viewc              	   C   s   t g d}tg dg dg|d}tt2 tjtdd |j	ddgdd	d
 W d    n1 s5w   Y  W d    d S W d    d S 1 sMw   Y  d S )N))r   mr   )r   nr   )r   orU   r   )r   r   r   r   r   r/   r   Fr   )rj   r1   )
r   r   r   r<   rm   rn   r7   r8   r9   r2   )r?   r   rW   r&   r&   r'   $test_xs_list_indexer_droplevel_falseo  s   "z9TestXSWithMultiIndex.test_xs_list_indexer_droplevel_falseN)r|   r}   r~   r   r   r   r   r   r7   markparametrizer   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r&   r&   r&   r'   r      sJ    





	r   )r:   numpyr"   r7   pandasr   r   r   r   r   r   pandas._testing_testingr<   pandas.core.commoncorecommonru   pandas.tseries.offsetsr   fixturer(   r)   r   r&   r&   r&   r'   <module>   s     
^