U
    sVc@                     @   sl   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 )    N)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    J/tmp/pip-unpacked-wheel-xj8nt62q/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st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
   r1   expr:   r    r    r!   test_concat_rename_indexO   s"    z(TestIndexConcat.test_concat_rename_indexc                 C   s2   t ddg}t||g|dd}|j|jk	s.td S )Nr   r   Tr   copy)r   r   r   r=   )r   r   Zsercombr    r    r!   test_concat_copy_index_seriese   s    z-TestIndexConcat.test_concat_copy_index_seriesc                 C   sR   t ddgddggddgd}t||g|dd	}|j|jk	s>t|j|jk	sNtd S )
Nr   r   r      r	   r
   r5   Tr@   )r   r   r   r=   r5   )r   r   dfrB   r    r    r!   test_concat_copy_index_framek   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st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&   rD         r   T)r   r   Zcheck_index_typeZcheck_column_typeF)AB      r   rK   rL   rE   )
r   r   
isinstancer5   pd
RangeIndexr=   r   r   r   )r   s1s2resr>   df1df2r    r    r!   test_default_indexr   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   
   (   )sizerD   rK   CrE   r   r-   rL      r   rI   rN   	   )r   r   r;   randintZreshaper   r   r   ilocrandn_append)r   rF   r1   r   r    r    r!   test_dups_index   s@    
 
&6
zTestIndexConcat.test_dups_indexN)__name__
__module____qualname__r"   pytestmarkparametrizer2   r?   rC   rG   rW   rb   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   	iterationr8   )rj   r   )r   r   r:   r=   r   r   r   Znlevels)r   Z multiindex_dataframe_random_dataframer   r1   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   rH   level1r:   col)r   dtyper   level2r8   rM   )r   from_productranger   r   Zint32r   r<   r   r   r.   from_tuples)	r   r   rF   r1   r   rq   rm   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codesrD   rH   )r   r   r;   r`   r   rP   rQ   repeatarangeZtiler   r   r_   r   r   )r   rF   rT   r>   r    r    r!   !test_concat_multiindex_rangeindex   s    "0z6TestMultiIndexConcat.test_concat_multiindex_rangeindexc                 C   s   ddl m} 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||dgd}	t|	| t|dgd}
t|
| d S )Nr   )deepcopyr	   r
   r   r   r   )rR   rS   rR   rS   Ztestname)rw   rx   r:   rn   )rA   r|   r   rr   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   rK   rL   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rt |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   rE   r   rv   r   r   r-   )r   rr   r   r   zeroslenr<   r   assert_produces_warningr   r   )
r   r   r   Zmi1Zmi2rU   rV   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 )
Nro   r	   r
   r   12r   Xr9   )r   r   r   r   rr   r   assert_index_equalr   )r   rF   	iterablesZresult_indexr}   r   r   r    r    r!   test_concat_multiindex_8  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   rU   rV   Zdf3Zdf_aZout_aZdf_bZout_br    r    r!   test_concat_with_key_not_uniqueI  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 )	NrK   r   r   r   r   z*Level values not unique: \['x', 'y', 'y'\]r   )r9   rw   r   rf   Zraises
ValueErrorr   )r   rU   rV   msgr    r    r!   "test_concat_with_duplicated_levelsw  s
    z7TestMultiIndexConcat.test_concat_with_duplicated_levelsrw   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 )	NrK   r   r   r   r   z+levels supported only when keys is not Noner   )rw   r   )r   rw   rU   rV   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   rP   rQ   r   r   )r   rU   rV   r1   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rp   rE   Touterr   joinr         ?r   r   r   r   r   r   r   )r   rU   rV   r1   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   rE   Tr   r   r   r   )r   Zany_numeric_ea_dtyperU   rV   r1   r   r    r    r!   'test_concat_index_keep_dtype_ea_numeric  s    
 z<TestMultiIndexConcat.test_concat_index_keep_dtype_ea_numericrp   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   rE   r   Tr   r   r   r   )r   rp   rU   rV   r1   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   TrJ   )r   r   r   r   r   r   r   r   )r   rR   rS   Zs3Zs4r1   r   r    r    r!   (test_concat_axis_1_sort_false_rangeindex  s2    
    	   z=TestMultiIndexConcat.test_concat_axis_1_sort_false_rangeindexN)rc   rd   re   rl   ru   r{   r~   rf   rg   rh   rs   r   rz   rP   Z
date_ranger<   r   r   r   r   r   r   r   r   r   r   r    r    r    r!   ri      sD   
	
 .



ri   )Znumpyr   rf   Zpandas.errorsr   ZpandasrP   r   r   r   r   r   Zpandas._testingZ_testingr   r   ri   r    r    r    r!   <module>   s    2