U
    ¾mœdÃ;  ã                   @   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/   ú\/home/sam/Atlas/atlas_env/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   st  |  ¡ }|jd }| |¡}| ¡ D ]>\}}t |¡rNt || | ¡sbt‚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 …< |�r^t |d
 |d
 ¡ |dk ¡ �rpt‚n|dk ¡ �spt‚d S )Nr   r   r   )Ú1Ú2r3   r4   Ú3)r3   r4   r5   )ÚAÚBr6   r7   z Timestamp('1999-12-31 00:00:00')©Úmatchr   )Úaxis)Úcopyr)   ÚxsÚitemsr+   ÚisnanÚAssertionErrorr   ÚdtypeZobject_ÚpytestÚraisesÚKeyErrorÚreÚescaper	   ÚtmÚassert_series_equalÚall)ÚselfZfloat_frameZdatetime_frameÚusing_copy_on_writeZfloat_frame_origÚidxr<   ÚitemÚvalueZ	test_dataÚframeZseriesÚexpectedr/   r/   r0   Útest_xs'   s6    



 ÿ 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jd�}t ||¡ d S )Nr   ©r)   g      ð?r6   Úfoor7   g       @ÚCÚbarÚDg      @ÚEr'   )r)   Únamer   r   Úc)rW   r@   )r   r<   r   r-   rF   rG   r+   Zfloat64)rI   Údfr<   ÚexpÚresultrO   r/   r/   r0   Útest_xs_cornerM   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   rX   r   rQ   )r   r+   ÚrandomÚrandnr<   ÚilocrF   rG   )rI   rY   ÚcrossrZ   r/   r/   r0   Útest_xs_duplicates`   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 ||¡ |jdd	dgdd�}t ||¡ d S )NÚsatÚsun)r   r   Ú
strawberryé
   é   éØ  )ÚdayÚflavourZsalesÚyearrj   ri   rh   F)ÚlevelÚ
drop_levelr   )rg   rb   )r   Ú	set_indexr<   rF   Úassert_frame_equal©rI   rY   r[   rO   r/   r/   r0   Útest_xs_keep_levelg   s    üÿùzTestXS.test_xs_keep_levelc              	   C   sÜ   t t d¡ dd¡tdƒtdƒd�}| ¡ }|rdt ¡ � d| d¡d d …< W 5 Q R X 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Úranger;   rF   Zraises_chained_assignment_errorr<   rn   rA   rB   r   Úanyr?   rH   )rI   Úusing_array_managerrJ   ÚdmÚdf_origÚmsgr/   r/   r0   Útest_xs_vieww   s    $
zTestXS.test_xs_viewN)Ú__name__Ú
__module__Ú__qualname__rP   r\   ra   rp   rx   r/   r/   r/   r0   r2   &   s
   &r2   c                   @   s2  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d.d/„ Zd0d1„ Zd2d3„ Zd4d5„ Zd6d7„ Zd8d9„ 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 )NrT   ÚbazrR   Úquxr   r    ÚfirstÚsecond©r&   r   é   r6   r7   rS   r(   )r   rT   )r€   r   r   ©rk   r:   r   )r-   Úzipr   Úfrom_tuplesr   r+   r]   r^   r<   r_   rF   rn   )rI   ZarraysZtuplesr)   rY   r[   rO   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©rk   )rr   r-   r   Zfrom_productr   r+   r]   r^   Úlenr<   ÚlocrF   rn   )rI   ÚdatesZidsr)   rY   r[   rO   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   rR   rT   r}   r~   r   ©rW   )r<   r)   Zget_level_valuesr   rF   rn   ©rI   Ú multiindex_dataframe_random_datarY   r[   rO   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   ÚyrX   ÚrÚzr   r   r   ©r$   r%   rQ   rŒ   ©r+   r]   r^   r   r   r<   rF   rn   )rI   r.   r)   rY   rO   r[   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Œ   re   úAA value is trying to be set on a copy of a slice from a DataFramer8   ©r;   r<   rA   rB   r   rF   rn   )rI   r“   rJ   rY   rv   r[   rw   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Œ   re   rœ   r8   r�   )rI   r1   rJ   rY   rv   r[   rw   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   sv   |}t |gd ƒ}|jjdks"t‚t |jddd�gd ƒ}t|tƒrX|jt|ƒ|d�}n|j||d�}t 	||¡ d S )Nr   Fr   r€   rŒ   )
r   r)   Z	is_uniquer?   r<   Ú
isinstancer-   ÚtuplerF   rn   )rI   Úkeyrk   r“   rN   rY   rO   r[   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‘   rQ   r˜   rŒ   )r   rm   r   r+   Únanr<   rF   rn   )rI   ÚaccrY   rO   r[   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>rT   rR   Ú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   rT   rR   ZhelloZworldr   r   r   r   r¯   r³   r#   r«   rƒ   rš   )
rI   r£   rk   Zexp_arrZ	exp_indexr.   r)   rY   r[   rO   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<   ©rY   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-   rF   rn   ©rI   rµ   r1   rY   Zexpected_valuesZexpected_indexrO   r[   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©rT   r    r   )r<   ÚvaluesrF   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Ž   rF   rG   r’   r/   r/   r0   Útest_xs_loc_equalityF  s    

z)TestXSWithMultiIndex.test_xs_loc_equalityc              	   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)rR   rT   r   )rR   r}   r   )rR   r~   r   r   r   r   r™   é   r   rQ   éþÿÿÿ)r   r   r+   r]   r^   r   r_   Z	droplevelr<   r   rF   Zassert_equalrŽ   )rI   Úframe_or_seriesr)   ÚobjrO   r[   r/   r/   r0   Ú+test_xs_IndexSlice_argument_not_implementedL  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   rA   rB   Ú	TypeErrorr<   )rI   rÂ   rÃ   rw   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:   rl   )r   r…   r   r<   rF   rn   )rI   ÚmirY   r[   rO   r/   r/   r0   Ú"test_xs_multiindex_droplevel_falsei  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   rX   r«   FrÈ   )r   r   r<   rF   rn   ro   r/   r/   r0   Útest_xs_droplevel_falsex  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   rX   r«   FrÈ   r   )r   r   g      @)
r   r   r<   r+   Zshares_memoryr_   Z_valuesr?   rF   rn   )rI   rt   rJ   rY   r[   rO   r/   r/   r0   Útest_xs_droplevel_false_view  s"    0

z1TestXSWithMultiIndex.test_xs_droplevel_false_viewc              	   C   sZ   t  dddg¡}tdddgddd	gg|d
�}tjtdd�� |jdddd� W 5 Q R X d S )N)r   Úmr   )r   Únr   )r–   ÚorX   r   r   r   r   r   rÀ   r«   r–   r8   )r   r–   F)rl   r:   )r   r…   r   rA   rB   rC   r<   )rI   rÉ   rY   r/   r/   r0   Ú$test_xs_list_indexer_droplevel_false   s    z9TestXSWithMultiIndex.test_xs_list_indexer_droplevel_falseN)ry   rz   r{   r†   r�   r”   r›   rž   r    rA   ÚmarkZparametrizer¤   r®   r   r´   rº   r»   r¾   r¿   rÄ   rÇ   rÊ   rË   rÌ   rÐ   r/   r/   r/   r0   r|   Ž   sH   
þþ
þþ
 ÿ
	!r|   )rD   Únumpyr+   rA   Zpandas.errorsr   Zpandasr   r   r   r   r   r   Zpandas._testingZ_testingrF   Zpandas.tseries.offsetsr	   Zfixturer1   r2   r|   r/   r/   r/   r0   Ú<module>   s    
h