U
    `»{jv;  ã                   @   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   s’   t  dddddgdddd	d
gdddddgg¡} tddgddgdddgdddggdddgdddgdddgdddggdddd gd!�}t| |td"ƒd#�S )$NçEØðôJYà¿çrùé·¯Àçî|?5^ºÝ¿çÌÑã÷6ý©?ç²�ï§ÆK×?çà-� Ü?ç†ÉTÁ¨¤ö?çúíëÀ9#Ò?ç—9]ð?ç46<½RÆ?gá“©‚Qå¿gž^)ËÇà¿g¶óýÔxéÖ¿gI�€&Â†ì?g=›UŸ«@ÚaÚxÚbÚqçÄ±.n£$@ç      4@g      >@é   é   é   r   é   é   ÚoneÚtwoÚthreeÚfour©ÚlevelsÚcodesÚnamesÚABCDE©ÚindexÚcolumns)ÚnpÚarrayr   r   Úlist)Úarrr)   © r/   úb/var/www/html/bwave/python/venv/lib/python3.8/site-packages/pandas/tests/frame/indexing/test_xs.pyÚfour_level_index_dataframe   s    ýÿ"
ýr1   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   s>  |j d }| |¡}| ¡ D ]>\}}t |¡rFt || | ¡sZt‚q||| | kst‚qdddœddddœd	œ}t|ƒ}| d¡}|jtjks–t‚|d
 dks¦t‚|d dks¶t‚t	j
tt d¡d�� | |j d tƒ  ¡ W 5 Q R X |jd
dd�}	|d
 }
t |	|
¡ |jd
dd�}	d|	d d …< |
dk ¡ �s:t‚d S )Nr   r   r   )Ú1Ú2r3   r4   Ú3)r3   r4   r5   )ÚAÚBr6   r7   z*Timestamp('1999-12-31 00:00:00', freq='B')©Úmatchr   )Úaxis)r)   ÚxsÚitemsr+   ÚisnanÚAssertionErrorr   ÚdtypeZobject_ÚpytestÚraisesÚKeyErrorÚreÚescaper	   ÚtmÚassert_series_equalÚall)ÚselfZfloat_frameZdatetime_frameÚidxr;   ÚitemÚvalueZ	test_dataÚframeZseriesÚexpectedr/   r/   r0   Ú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dddd	dgtdƒdd�}t ||¡ t dddgd�}| d¡}tg dtg ƒtjd�}t ||¡ d S )Nr   ©r)   g      ð?r6   Úfoor7   g       @ÚCÚbarÚDg      @ÚEr'   )r)   Únamer   r   Úc)rU   r)   r?   )	r   r;   r   r-   rE   rF   r   r+   Zfloat64)rH   Údfr;   ÚexpÚresultrM   r/   r/   r0   Útest_xs_cornerG   s    

zTestXS.test_xs_cornerc                 C   sD   t tj dd¡dddddgd�}| d¡}|jd }t ||¡ d S )Nr   r   r   rV   r   rO   )r   r+   ÚrandomÚrandnr;   ÚilocrE   rF   )rH   rW   ÚcrossrX   r/   r/   r0   Ú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œƒ d	d
dg¡}|jdddd�}|d d… }t ||¡ t t¡� |jddgd	dgdd�}W 5 Q R X t ||¡ d S )NÚsatÚsun)r   r   Ú
strawberryé
   é   iØ  )ÚdayÚflavourZsalesÚyearrg   rf   re   F)ÚlevelÚ
drop_levelr   )r   Ú	set_indexr;   rE   Úassert_frame_equalÚassert_produces_warningÚFutureWarning©rH   rW   rY   rM   r/   r/   r0   Útest_xs_keep_levela   s    üÿù"zTestXS.test_xs_keep_levelc              	   C   sÈ   t t d¡ dd¡tdƒtdƒd�}| ¡ }|rPd| d¡d d …< t ||¡ nt|rœd}t	j
t|d�� d| d¡d d …< W 5 Q R X | d¡dk ¡ rÄt‚n(d| d¡d d …< | d¡dk ¡ sÄt‚d S )	Nr   r   r   r(   é   r   zC\nA value is trying to be set on a copy of a slice from a DataFramer8   )r   r+   ZarangeZreshapeÚrangeÚcopyr;   rE   rk   r@   rA   r   Úanyr>   rG   )rH   Úusing_array_managerÚusing_copy_on_writeÚdmÚdf_origÚmsgr/   r/   r0   Útest_xs_viewr   s    $zTestXS.test_xs_viewN)Ú__name__Ú
__module__Ú__qualname__rN   rZ   r_   ro   ry   r/   r/   r/   r0   r2   &   s
    r2   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˜   ddddddddgddddddddgg}t t|Ž ƒ}tj|ddgd	�}ttj d
d¡dddg|d�}|jdddd�}|j	d d …dgf }t
 ||¡ d S )NrR   ÚbazrP   Úquxr   r    ÚfirstÚsecond©r&   r   é   r6   r7   rQ   r(   )r   rR   )r�   r€   r   ©rh   r:   r   )r-   Úzipr   Úfrom_tuplesr   r+   r[   r\   r;   r]   rE   rk   )rH   ZarraysZtuplesr)   rW   rY   rM   r/   r/   r0   Útest_xs_doc_example‰   s    þz(TestXSWithMultiIndex.test_xs_doc_examplec                 C   sx   t ddƒ}tdƒ}tj||gddgd�}ttj t|ƒd¡|dd	d
gƒ}|j	ddd�}|j
dd d …f }t ||¡ d S )Niaß2ieß2ÚabcdeÚdateZsecidr‚   r   ÚXÚYÚZ©rh   )rq   r-   r   Zfrom_productr   r+   r[   r\   Úlenr;   ÚlocrE   rk   )rH   ÚdatesZidsr)   rW   rY   rM   r/   r/   r0   Útest_xs_integer_keyš   s    
 z(TestXSWithMultiIndex.test_xs_integer_keyc                 C   sL   |}|j ddd�}||j d¡dk }tddddgd	d
�|_t ||¡ d S )Nr    r�   r�   r   rP   rR   r~   r   r€   ©rU   )r;   r)   Zget_level_valuesr   rE   rk   ©rH   Ú multiindex_dataframe_random_datarW   rY   rM   r/   r/   r0   Útest_xs_level¥   s
    z"TestXSWithMultiIndex.test_xs_levelc                 C   s�   t j dd¡}tdddgdddgd	d
dggdddgdddgdddg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   ÚyrV   ÚrÚzr   r   r   ©r$   r%   rO   r�   ©r+   r[   r\   r   r   r;   rE   rk   )rH   r.   r)   rW   rM   rY   r/   r/   r0   Útest_xs_level_eq_2¬   s    þz'TestXSWithMultiIndex.test_xs_level_eq_2c              	   C   sf   |}|  ¡ }|jddd�}|r,d|d d …< n*d}tjt|d�� d|d d …< W 5 Q R X t ||¡ d S )Nr    r�   r�   rc   úAA value is trying to be set on a copy of a slice from a DataFramer8   ©rr   r;   r@   rA   r   rE   rk   )rH   r”   ru   rW   rw   rY   rx   r/   r/   r0   Útest_xs_setting_with_copy_error·   s    z4TestXSWithMultiIndex.test_xs_setting_with_copy_errorc              	   C   sj   |}|  ¡ }|jdddgd�}|r0d|d d …< n*d}tjt|d�� d|d d …< W 5 Q R X t ||¡ d S )N©r   r   r   r"   r�   rc   r�   r8   rž   )rH   r1   ru   rW   rw   rY   rx   r/   r/   r0   Ú(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ks"t‚t |jddd�gd ƒ}t|tƒrjt t	¡� |j||d�}W 5 Q R X n|j||d�}t 
||¡ d S )Nr   Fr   r�   r�   )r   r)   Z	is_uniquer>   r;   Ú
isinstancer-   rE   rl   rm   rk   )rH   Úkeyrh   r”   rL   rW   rM   rY   r/   r/   r0   Útest_xs_with_duplicatesÛ   s    
z,TestXSWithMultiIndex.test_xs_with_duplicatesc                 C   sv   dddddddg}t |dd	d
gd� dd	g¡}t d
ddddgitdtjddgd	d�d�}|jddd�}t ||¡ d S )N)r   rˆ   r   )r   Zbbcder   )r—   Zyzcdeé   )r™   Úxbcdeé   )r™   Né   )r™   Úzbcder¥   )r™   Úybcder¨   Za1Za2Zcnt©r*   r§   r¨   r¥   r¦   r©   rª   r’   rO   r™   r�   )r   rj   r   r+   Únanr;   rE   rk   )rH   ÚaccrW   rM   rY   r/   r/   r0   Útest_xs_missing_values_in_indexê   s    ù	þz4TestXSWithMultiIndex.test_xs_missing_values_in_indexzkey, level, exp_arr, exp_indexr   Úlvl0c                 C   s   | d d …dd…f S )Nr   r   r/   ©r   r/   r/   r0   Ú<lambda>  ó    zTestXSWithMultiIndex.<lambda>rR   rP   Úlvl1r’   c                 C   s   | d d …dd…f S )Nr   r   r/   r°   r/   r/   r0   r±     r²   c           
      C   s€   t j dd¡}tddgddddggddd	d	gdd	d
dggddgd�}t||d�}|j||d	d�}t||ƒ|d�}	t ||	¡ d S )Nr   r   r   rR   rP   ZhelloZworldr   r   r   r   r¯   r³   r#   r«   r„   r›   )
rH   r£   rh   Zexp_arrZ	exp_indexr.   r)   rW   rY   rM   r/   r/   r0   Ú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�   ©r;   ©rW   r/   r/   r0   r±     r²   c                 C   s   |   d¡j ddd�S )Nr   r   r"   r�   r¶   r·   r/   r/   r0   r±     r²   c                 C   s`   |}dddddg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(   ©r   r   r-   rE   rk   ©rH   rµ   r1   rW   Zexpected_valuesZexpected_indexrM   rY   r/   r/   r0   Ú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/   r0   r±   '  r²   c                 C   s
   |   d¡S )Nr   r¶   r·   r/   r/   r0   r±   '  r²   c                 C   s‚   |}dddddgdddd	d
gg}t ddgddgddggddgddgddggdddg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"   r#   r'   r(   r¸   r¹   r/   r/   r0   Útest_xs_level0&  s     þý  ÿz#TestXSWithMultiIndex.test_xs_level0c                 C   s*   |}|  d¡j}|jd }t ||¡ d S )N©rR   r    r   )r;   ÚvaluesrE   Zassert_almost_equalr“   r/   r/   r0   Útest_xs_values;  s    
z#TestXSWithMultiIndex.test_xs_valuesc                 C   s(   |}|  d¡}|jd }t ||¡ d S )Nr¼   )r;   r�   rE   rF   r“   r/   r/   r0   Útest_xs_loc_equalityA  s    

z)TestXSWithMultiIndex.test_xs_loc_equalityÚklassc              	   C   s¸   t dddgddggddddddgddddddggd�}ttj dd	¡|d
�}|tkr\|d }|jdd …  d¡}| t	dd d …f ¡}t
 ||¡ |jt	dd d …f  }t
 ||¡ d S )N)rP   rR   r   )rP   r~   r   )rP   r   r   r   r   r   rš   é   r   rO   éþÿÿÿ)r   r   r+   r[   r\   r   r]   Z	droplevelr;   r   rE   Zassert_equalr�   )rH   rÀ   r)   ÚobjrM   rY   r/   r/   r0   Ú+test_xs_IndexSlice_argument_not_implementedG  s    þz@TestXSWithMultiIndex.test_xs_IndexSlice_argument_not_implementedc              	   C   sR   t ddddgiƒ}|tkr"|d }d}tjt|d�� |jddd	� W 5 Q R X d S )
Nr6   r   r   r   zIndex must be a MultiIndexr8   r   Úasr�   )r   r   r@   rA   Ú	TypeErrorr;   )rH   rÀ   rÃ   rx   r/   r/   r0   Útest_xs_levels_raises\  s    z*TestXSWithMultiIndex.test_xs_levels_raisesc                 C   sp   t jdddgddgd�}tddd	g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   Zlevel1Zlevel2r‚   r   r   r   r«   r   F©r:   ri   )r   r†   r   r;   rE   rk   )rH   ÚmirW   rY   rM   r/   r/   r0   Ú"test_xs_multiindex_droplevel_falsef  s     ÿ ÿþz7TestXSWithMultiIndex.test_xs_multiindex_droplevel_falsec                 C   sL   t dddggtdddgƒd�}|jdddd	�}t ddgiƒ}t ||¡ d S )
Nr   r   r   r   r   rV   r«   FrÈ   )r   r   r;   rE   rk   rn   r/   r/   r0   Útest_xs_droplevel_falseu  s    z,TestXSWithMultiIndex.test_xs_droplevel_falsec                 C   s  t dddggtdddgƒd�}|jdddd	�}t |jd d …d
f j|jd d …d
f j¡s^t‚d|jd< |r|t ddgiƒ}nt ddgiƒ}t 	||¡ t dddggtdddgƒd�}|jdddd	�}d|jd< |rât ddgiƒ}n"|röt ddgiƒ}nt ddgiƒ}t 	||¡ d S )Nr   r   r   r   r   rV   r«   FrÈ   r   )r   r   g      @)
r   r   r;   r+   Zshares_memoryr]   Z_valuesr>   rE   rk   )rH   rt   ru   rW   rY   rM   r/   r/   r0   Útest_xs_droplevel_false_view|  s"    0

z1TestXSWithMultiIndex.test_xs_droplevel_false_viewc              
   C   st   t  dddg¡}tdddgddd	gg|d
�}t t¡�4 tjtdd�� |j	ddgddd� W 5 Q R X W 5 Q R X d S )N)r   Úmr   )r   Únr   )r—   ÚorV   r   r   r   r   r   rÁ   r«   r—   r8   r   F)ri   r:   )
r   r†   r   rE   rl   rm   r@   rA   rB   r;   )rH   rÉ   rW   r/   r/   r0   Ú$test_xs_list_indexer_droplevel_false�  s
    z9TestXSWithMultiIndex.test_xs_list_indexer_droplevel_falseN)rz   r{   r|   r‡   r‘   r•   rœ   rŸ   r¡   r@   ÚmarkZparametrizer¤   r®   r   r´   rº   r»   r¾   r¿   r   r   rÄ   rÇ   rÊ   rË   rÌ   rÐ   r/   r/   r/   r0   r}   ˆ   sL   
þþ
þþ
 ÿ


	!r}   )rC   Únumpyr+   r@   Zpandas.errorsr   Zpandasr   r   r   r   r   r   Zpandas._testingZ_testingrE   Zpandas.tseries.offsetsr	   Zfixturer1   r2   r}   r/   r/   r/   r0   Ú<module>   s    
b