U
    ¾mœd½B  ã                   @   sx   d dl mZ d dlZd dlZd dlmZ d dlZd dlm	Z	m
Z
mZmZmZ d dlmZ G dd„ dƒZG dd„ dƒZdS )	é    )ÚdeepcopyN)ÚPerformanceWarning)Ú	DataFrameÚIndexÚ
MultiIndexÚSeriesÚconcatc                
   @   s`   e Zd Zdd„ Zej ddddddd	d
g¡dd„ ƒZdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ ZdS )ÚTestIndexConcatc                 C   sÔ   t dddgdddgddd	gd
œƒ}t ddddgiƒ}tdddgƒ|_tdddgƒ|_t||gdd|d�}tj}t |||dgddddgddddgddd	|ggtddddgƒd�}|sÄ|jddddg }t ||¡ d S )NÚaÚbÚcé   é   é   g      @gš™™™™™	@g333333ó?)Ztest1Ztest2Útest3r   gÍÌÌÌÌÌ@gš™™™™™@g333333@ÚxÚyÚzÚqT)ÚaxisÚignore_indexÚsort©Úindex)	r   r   r   r   ÚnpÚnanÚlocÚtmÚassert_frame_equal)Úselfr   Zframe1Zframe2Zv1r   Úexpected© r!   ú_/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/pandas/tests/reshape/concat/test_index.pyÚtest_concat_ignore_index   s&    ÿ



üù	z(TestIndexConcat.test_concat_ignore_indexz#name_in1,name_in2,name_in3,name_out)Úidxr$   r$   r$   )r$   r$   NN)r$   NNN)Úidx1Úidx2NN)r%   r%   r&   N)r%   r&   Zidx3N)NNNNc           
      C   s¾   t dddg|d�t dddg|d�t dddg|d�g}dd„ t|d	d
dgƒD ƒ}t|dd�}t dddddg|d�}tdddtjtjgtjdddtjgtjtjdddgdœ|d�}	t ||	¡ d S )Nr
   r   r   ©ÚnameÚdÚec                 S   s&   g | ]\}}t |d ddgi|d�‘qS )r   r   r   r   )r   )Ú.0Úir   r!   r!   r"   Ú
<listcomp>@   s    z@TestIndexConcat.test_concat_same_index_names.<locals>.<listcomp>r   r   r   r   ©r   r   r   )r   r   r   r   )r   Úzipr   r   r   r   r   r   )
r   Zname_in1Zname_in2Zname_in3Zname_outÚindicesÚframesÚresultZexp_indr    r!   r!   r"   Útest_concat_same_index_names-   s"    ýÿýú	z,TestIndexConcat.test_concat_same_index_namesc                 C   sÊ   t tj dd¡tdƒttdƒdd�d�}t tj dd¡tdƒttdƒdd�d�}t||gdd	gd
dgd�}t||gdd	gd
gd�}t|jjƒ}d|d< |jj	|dd� t
 ||¡ |jj|jjksÆt‚d S )Nr   ÚABCÚabcZindex_ar'   )Úcolumnsr   Zindex_bÚkey0Úkey1Zlvl0Zlvl1©ÚkeysÚnamesr   T)Zinplace)r   r   ÚrandomZrandÚlistr   r   r   r;   Z	set_namesr   r   ÚAssertionError)r   r
   r   r2   Úexpr;   r!   r!   r"   Útest_concat_rename_indexQ   s"    ýýz(TestIndexConcat.test_concat_rename_indexc                 C   sP   t ddgƒ}t||g|dd�}|r*|dkr<|j|jk	sLt‚n|j|jksLt‚d S )Nr   r   T©r   Úcopy©r   r   )r   r   r   r>   )r   r   Úusing_copy_on_writeZserÚcombr!   r!   r"   Útest_concat_copy_index_seriesg   s
    z-TestIndexConcat.test_concat_copy_index_seriesc                 C   sª   t ddgddggddgd�}t||g|dd	�}|sT|j|jk	sBt‚|j|jk	s¦t‚nR|d
kr~|j|jk	slt‚|j|jks¦t‚n(|dkr¦|j|jks–t‚|j|jk	s¦t‚d S )Nr   r   r   é   r
   r   ©r6   TrA   rC   )r   r6   )r   r   r   r>   r6   )r   r   rD   ÚdfrE   r!   r!   r"   Útest_concat_copy_index_framep   s    z,TestIndexConcat.test_concat_copy_index_framec                 C   s¨  t dddgdd�}t dddgd	d�}t||gdd
d�}t|jtjƒsHt‚tddgddgddggƒ}tj	||d
d
d� t dddgƒ}t dddgƒ}t||gddd�}t|jtjƒs´t‚tddgddgddggƒ}t d¡|_tj	||d
d
d� tddgddgdœƒ}tddgddgdœƒ}t||gdd
d�}tddgddgddgddggddgd�}tj	||d
d
d� t||gdd
d�}tddddgddddggƒ}tj	||d
d
d� d S )Nr   r   r   r   r'   rG   é   é   r   T)r   r   ©Zcheck_index_typeZcheck_column_typeF)ÚAÚBé   é   r   rN   rO   rH   )
r   r   Ú
isinstancer6   ÚpdÚ
RangeIndexr>   r   r   r   )r   Ús1Ús2Úresr?   Údf1Údf2r!   r!   r"   Útest_default_index~   s*    (z"TestIndexConcat.test_default_indexc                 C   s$  t tjjdddd� dd¡ddddgd�}t||gd	d
�}t |jd d …d d…f |¡ t |jd d …dd …f |¡ t||gdd
�}t |jd d… |¡ t |jdd … |¡ tt tj 	dd¡ddddgd�t tjjdddd� dd¡ddgd�gd	d
�}t||gd	d
�}t |jd d …d d…f |¡ t |jd d …dd …f |¡ t||gdd
�}t |jd d… |¡ t |jdd … |¡ |jdd…d d …f  
|jdd … ¡}t ||¡ |jdd…d d …f  
|jdd… ¡ 
|jdd… ¡}t ||¡ t||gdd
�}| 
|¡}t ||¡ d S )Nr   é
   é(   )ÚsizerG   rN   ÚCrH   r   r.   rO   é   r   rL   rQ   é	   )r   r   r<   ÚrandintZreshaper   r   r   ÚilocÚrandnÚ_append)r   rI   r2   r    r!   r!   r"   Útest_dups_indexž   s@    
þ ÿþù
&6
zTestIndexConcat.test_dups_indexN)Ú__name__Ú
__module__Ú__qualname__r#   ÚpytestÚmarkÚparametrizer3   r@   rF   rJ   rZ   re   r!   r!   r!   r"   r	      s$   ùþ
	 r	   c                   @   sL  e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zej 	d	d
ge
dƒgdge dd¡gdgddggdgejdddd�gg¡ej 	dd
ge
dƒgdge dd¡gdgddggdgejdddd�gg¡eedœdd„ƒƒZdd„ Zdd„ Zdd„ Zej 	d d!d"ggd!d"d"ggg¡d#d$„ ƒZd%d&„ Zd'd(„ Zd)d*„ Zej 	d+d,d-d.g¡d/d0„ ƒZd1d2„ Zd3S )4ÚTestMultiIndexConcatc                 C   sp   |}|j }t||gddgdgd�}|j jd|j ks8t‚t |jd |¡ t |jd |¡ |j jdkslt‚d S )Nr   r   Ú	iterationr9   )rm   r   )r   r   r;   r>   r   r   r   Znlevels)r   Z multiindex_dataframe_random_dataÚframer   r2   r!   r!   r"   Ú test_concat_multiindex_with_keysÏ   s    z5TestMultiIndexConcat.test_concat_multiindex_with_keysc           	      C   s:  t jdgtdƒgdd gd�}tdtdƒi|tjd�}t||gddgdgd	�}t jddgdgtdƒgddd gd�}tdttdƒƒd i|tjd�}t 	||¡ t||d d… gddgdgd	�}dgd dgd  }dgd
 }ttdƒƒttdƒƒ }tt
|||ƒƒ}t j|ddd gd�}td|i|tjd�}t 	||¡ d S )Nr   rK   Úlevel1©r;   Úcol)r   Údtyper   Úlevel2r9   rP   )r   Úfrom_productÚranger   r   Zint32r   r=   r   r   r/   Úfrom_tuples)	r   r   rI   r2   r    rt   rp   Zno_nameZtuplesr!   r!   r"   Ú/test_concat_multiindex_with_none_in_index_namesÙ   s"     ÿ  
zDTestMultiIndexConcat.test_concat_multiindex_with_none_in_index_namesc                 C   sª   t tj dd¡ƒ}tt d¡t d¡gt t d¡d¡t 	t d¡d¡gd�|_
t|jdddgd d …f |jdgd d …f gƒ}|jddddgd d …f }t ||¡ d S )Nr`   r   r   ©ÚlevelsÚcodesrG   rK   )r   r   r<   rc   r   rS   rT   ÚrepeatÚarangeZtiler   r   rb   r   r   )r   rI   rW   r?   r!   r!   r"   Ú!test_concat_multiindex_rangeindexî   s    "þ0z6TestMultiIndexConcat.test_concat_multiindex_rangeindexc           
      C   sÐ   t  dgdgg¡}tdg|d�}t  dgdgg¡}tdg|d�}||dœ}t dd	gdgddggddgddgddggd
d d gd�}tdgdgg|d�}tt|ƒd
gd�}t ||¡ t|d
gd�}	t |	|¡ d S )Nr
   r   r   r   r   r   )rU   rV   rU   rV   Ztestname)rz   r{   r;   rq   )r   ru   r   r   r   r   r   )
r   Zexample_multiindex1Zexample_dataframe1Zexample_multiindex2Zexample_dataframe2Zexample_dictÚexpected_indexr    Zresult_copyZresult_no_copyr!   r!   r"   Ú(test_concat_multiindex_dfs_with_deepcopyý   s    
ýz=TestMultiIndexConcat.test_concat_multiindex_dfs_with_deepcopyÚmi1_listr
   r   r   g       @g      @r   rN   rO   r)   Z2017Z2018)ÚstartÚendZperiodsÚmi2_list)r�   r„   c           
   	   C   s  t  |¡}t  |¡}tt dt|ƒf¡|d�}tt dt|ƒf¡|d�}|d |d krŠt |d t|d ƒgddddgddddggd�}nDt |d |d  t|d ƒt|d ƒ gddddgddddggd�}tt dt|ƒf¡|d�}t d ¡� t	||fdd�}	W 5 Q R X t 
||	¡ d S )Nr   rH   r   ry   r   r   r.   )r   ru   r   r   ZzerosÚlenr=   r   Úassert_produces_warningr   r   )
r   r�   r„   Zmi1Zmi2rX   rY   Zexpected_miÚexpected_dfÚ	result_dfr!   r!   r"   Ú*test_concat_with_various_multiindex_dtypes  s&    

þþûz?TestMultiIndexConcat.test_concat_with_various_multiindex_dtypesc                 C   sˆ   t ddddgidddgd�}t|gdgd	�}dgdddgg}|j}t |¡}t ||¡ |}t ddddgit |¡d�}t ||¡ d S )
Nrr   r
   r   r   Ú1Ú2r   ÚX©r:   )r   r   r   r   ru   r   Úassert_index_equalr   )r   rI   Ú	iterablesZresult_indexr   rˆ   r‡   r!   r!   r"   Útest_concat_multiindex_B  s    
 ÿz,TestMultiIndexConcat.test_concat_multiindex_c              	   C   s¶  t ddgiƒ}t ddgiƒ}t ddgiƒ}t|||gdddgd�}tjtdd	�� |jd
d d …f }W 5 Q R X t ddddgitd
dd
gƒd�}tjtdd	�� |jd
 }W 5 Q R X t ||¡ t ddddgiƒ}t dddgiƒ}t dddgiƒ}t|||gdddgd�}tjtdd	�� |jd
d d …f }W 5 Q R X t dddddddgdddddddgtdƒdœƒ 	ddg¡}d d g|j
_tjtdd	�� |jd
d d …f }W 5 Q R X t ||¡ d S )Nr(   r   r   r   r   r   r�   zindexing past lexsort depth©Úmatch)r   r   )r   r   r   r
   r   r   r)   r   Zaababcd)r
   r   r(   )r   r   r   r†   r   r   r   r   r=   Z	set_indexr   r;   )r   rX   rY   Zdf3Zdf_aZout_aZdf_bZout_br!   r!   r"   Útest_concat_with_key_not_uniqueS  sV     ÿ ÿ ÿ ÿýÿú ÿz4TestMultiIndexConcat.test_concat_with_key_not_uniquec              	   C   sh   t ddgidgd�}t ddgidgd�}d}tjt|d��$ t||gddgdddggd� W 5 Q R X d S )	NrN   r   r   r   r   z*Level values not unique: \['x', 'y', 'y'\]r‘   )r:   rz   ©r   ri   ZraisesÚ
ValueErrorr   )r   rX   rY   Úmsgr!   r!   r"   Ú"test_concat_with_duplicated_levels�  s
    z7TestMultiIndexConcat.test_concat_with_duplicated_levelsrz   r   r   c              	   C   sZ   t ddgidgd�}t ddgidgd�}d}tjt|d�� t||g|d� W 5 Q R X d S )	NrN   r   r   r   r   z+levels supported only when keys is not Noner‘   )rz   r”   )r   rz   rX   rY   r–   r!   r!   r"   Ú&test_concat_with_levels_with_none_keys‰  s
    z;TestMultiIndexConcat.test_concat_with_levels_with_none_keysc                 C   sv   t dddgiƒ}t dddgiƒ}t||gddd�}t ddgddgdœƒ}t ||¡ t dd¡}tj|j|dd	� d S )
Nr
   r   r   r   T)r   r   )r
   r   r   )Úexact)r   r   r   r   rS   rT   rŽ   r   )r   rX   rY   r2   r    r   r!   r!   r"   Útest_concat_range_index_result‘  s    z3TestMultiIndexConcat.test_concat_range_index_resultc                 C   s�   t dddggtdddgdd�d�}t ddggtddgdd�d�}t||gdd	dd
�}t dddgddtjggtdddgdd�d�}t ||¡ d S )Nr   r   r   r   Úobject©rs   rH   TÚouter©r   Újoinr   ç      ð?©r   r   r   r   r   r   r   )r   rX   rY   r2   r    r!   r!   r"   Útest_concat_index_keep_dtypeœ  s    " ÿz1TestMultiIndexConcat.test_concat_index_keep_dtypec                 C   s�   t dddggtdddg|d�d�}t ddggtddg|d�d�}t||gdddd	�}t ddd
gddtjggtdddg|d�d�}t ||¡ d S )Nr   r   r   r   rœ   rH   Tr�   rž   r    r¡   )r   Zany_numeric_ea_dtyperX   rY   r2   r    r!   r!   r"   Ú'test_concat_index_keep_dtype_ea_numeric¦  s    
 ÿþz<TestMultiIndexConcat.test_concat_index_keep_dtype_ea_numericrs   ZInt8ZInt16ÚInt32c                 C   s�   t dddggtdddg|d�d�}t ddggtddgdd�d�}t||gdd	dd
�}t dddgddtjggtdddgdd�d�}t ||¡ d S )Nr   r   r   r   rœ   rH   r¤   Tr�   rž   r    r¡   )r   rs   rX   rY   r2   r    r!   r!   r"   Útest_concat_index_find_common³  s    " ÿz2TestMultiIndexConcat.test_concat_index_find_commonc                 C   s¶   t dddgƒ}t ddgƒ}t ddddgƒ}t g td�}t||||gddddd	�}tdgd
 tjg dgd
 tjg dtjgd tjgd dg tjg gtd�}tj||ddd� d S )Nr
   r   r   r)   rœ   Fr�   r   )r   rŸ   r   r   r   r   TrM   )r   r›   r   r   r   r   r   r   )r   rU   rV   Zs3Zs4r2   r    r!   r!   r"   Ú(test_concat_axis_1_sort_false_rangeindex¾  s2    
    ÿüù	   ÿz=TestMultiIndexConcat.test_concat_axis_1_sort_false_rangeindexN)rf   rg   rh   ro   rx   r~   r€   ri   rj   rk   rv   r   r}   rS   Z
date_ranger=   r‰   r�   r“   r—   r˜   rš   r¢   r£   r¥   r¦   r!   r!   r!   r"   rl   Î   sD   
üþ	üþ
 ÿ.



rl   )rB   r   Únumpyr   ri   Zpandas.errorsr   ZpandasrS   r   r   r   r   r   Zpandas._testingZ_testingr   r	   rl   r!   r!   r!   r"   Ú<module>   s    <