U
    _{fB                     @   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!   e/var/www/html/Darija-Ai-API/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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   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	stnR|d
kr~|j|jk	slt|j|jkstn(|dkr|j|jkst|j|jk	st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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'   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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   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    <