o
    5cv;                     @   s   d dl Z d dlZd dlZd dlm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Z ejdd ZG dd dZG d	d
 d
ZdS )    N)SettingWithCopyError)	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'   Y/var/www/html/gps/gps/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idxr3   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)rL   rM   rN   rP   rR   r   )r!   namer   r   cr   )rT   r!   r6   )	r   r3   r   r%   r=   r>   r   r#   float64)r@   dfr3   expresultrI   r'   r'   r(   test_xs_cornerG   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   rV   r   r   rK   rV   )r   r#   randomrandnr3   ilocr=   r>   )r@   rX   crossrY   r'   r'   r(   test_xs_duplicatesZ   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)ri   rg   rf   rf   F)level
drop_levelr   ri   )r   	set_indexr3   r=   assert_frame_equalassert_produces_warningFutureWarningr@   rX   rZ   rI   r'   r'   r(   test_xs_keep_levela   s    
zTestXS.test_xs_keep_levelc                 C   s   t tdddtdtdd}| }|r)d|dd d < t|| d S |rZd}t	j
t|d d|dd d < W d    n1 sHw   Y  |ddk rXJ d S d|dd d < |ddk snJ d S )	Nr   r   r   r       r   zC\nA value is trying to be set on a copy of a slice from a DataFramer0   )r   r#   arangereshaperangecopyr3   r=   rm   r8   r9   r   anyr?   )r@   using_array_managerusing_copy_on_writedmdf_origmsgr'   r'   r(   test_xs_viewr   s   $zTestXS.test_xs_viewN)__name__
__module____qualname__rJ   r[   r`   rq   r}   r'   r'   r'   r(   r*   &   s     r*   c                   @   sV  e Zd Zd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/d0 Ze	j
d.eegd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Zd;S )<TestXSWithMultiIndexc                 C   s~   g dg dg}t t| }tj|ddgd}ttjddg d|d	}|jd
ddd}|j	d d dgf }t
|| d S )N)rP   rP   bazr   rM   rM   quxr   )r   r   r   r   r   r   r   r   firstsecondr   r      )r.   r/   rO   r    )r   rP   )r   r   r   rj   r2   r   )r%   zipr   from_tuplesr   r#   r\   r]   r3   r^   r=   rm   )r@   arraystuplesr!   rX   rZ   rI   r'   r'   r(   test_xs_doc_example   s   z(TestXSWithMultiIndex.test_xs_doc_examplec                 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secidr   r   )XYZrj   )ru   r%   r   from_productr   r#   r\   r]   lenr3   locr=   rm   )r@   datesidsr!   rX   rZ   rI   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   r   r   r   )rM   rP   r   r   r   rT   )r3   r!   get_level_valuesr   r=   rm   r@    multiindex_dataframe_random_datarX   rZ   rI   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)rV   rz)r   r   r   r   r   rK   r   r   r   r   rV   r   r#   r\   r]   r   r   r3   r=   rm   )r@   r&   r!   rX   rI   rZ   r'   r'   r(   test_xs_level_eq_2   s   z'TestXSWithMultiIndex.test_xs_level_eq_2c                 C   sz   |}|  }|jddd}|rd|d d < nd}tjt|d d|d d < W d    n1 s0w   Y  t|| d S )Nr   r   r   rd   AA value is trying to be set on a copy of a slice from a DataFramer0   rv   r3   r8   r9   r   r=   rm   )r@   r   ry   rX   r{   rZ   r|   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}|rd|d d < nd}tjt|d d|d d < W d    n1 s2w   Y  t|| d S )Nr   r   r   r   r   rd   r   r0   r   )r@   r)   ry   rX   r{   rZ   r|   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_uniquer3   
isinstancer%   r=   rn   ro   rm   )r@   keyrj   r   rG   rX   rI   rZ   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   rK   r   r   )r   rl   r   r#   nanr3   r=   rm   )r@   accrX   rI   rZ   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>rP   rM   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   )rP   rM   helloworld)r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   )
r@   r   rj   exp_arr	exp_indexr&   r!   rX   rZ   rI   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   r3   rX   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=   rm   r@   r   r)   rX   expected_valuesexpected_indexrI   rZ   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rP   r   r   )r3   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   )r3   r   r=   r>   r   r'   r'   r(   test_xs_loc_equalityA  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 }|jd
d  d}|t	dd d f }t
|| |jt	dd d f  }t
|| d S )N))rM   rP   r   )rM   r   r   rM   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   r      r   rK   r   )r   r   r#   r\   r]   r   r^   	droplevelr3   r   r=   assert_equalr   )r@   r   r!   objrI   rZ   r'   r'   r(   +test_xs_IndexSlice_argument_not_implementedG  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 MultiIndexr0   r   asr   )r   r   r8   r9   	TypeErrorr3   )r@   r   r   r|   r'   r'   r(   test_xs_levels_raises\  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r2   rk   r   r   r   )r   r   r   r3   r=   rm   )r@   mirX   rZ   rI   r'   r'   r(   "test_xs_multiindex_droplevel_falsef  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   rU   r   r   r   Fr   )r   r   r3   r=   rm   rp   r'   r'   r(   test_xs_droplevel_falseu  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
< |r<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
< |rmt ddgi}n|rwt dd	gi}nt ddgi}t|| d S )Nr   rU   r   r   r   Fr   r   r   )r   r   )r   g      @r   )	r   r   r3   r#   shares_memoryr^   _valuesr=   rm   )r@   rx   ry   rX   rZ   rI   r'   r'   r(   test_xs_droplevel_false_view|  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   orV   r   )r   r   r   r   r   r0   r   Fr   )rk   r2   )
r   r   r   r=   rn   ro   r8   r9   r:   r3   )r@   r   rX   r'   r'   r(   $test_xs_list_indexer_droplevel_false  s   "z9TestXSWithMultiIndex.test_xs_list_indexer_droplevel_falseN)r~   r   r   r   r   r   r   r   r   r8   markparametrizer   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r'   r'   r'   r(   r      sL    





	!r   )r;   numpyr#   r8   pandas.errorsr   pandasr   r   r   r   r   r   pandas._testing_testingr=   pandas.tseries.offsetsr	   fixturer)   r*   r   r'   r'   r'   r(   <module>   s     
b