o
    թZh-D                     @   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                   @   sV   e Zd Zdd Zejdg ddd Zdd Zd	d
 Z	dd Z
dd Zdd ZdS )TestIndexConcatc                 C   s   t g dg dg dd}t dg di}tg d|_tg d|_t||gd	d
|d}tj}t |||dgg dg dddd|ggtg dd}|sT|jg d }t|| d S )Nabc         )      @皙	@333333?)Ztest1Ztest2test3r   )@皙@333333@xyz)r   r   qr   T)axisignore_indexsortr   )r   r   r   r   )r   r   r   r   r   r   r   )r   r   r   r   index)r   r   r   r   )	r   r   r"   r   npnanloctmassert_frame_equal)selfr    Zframe1Zframe2v1r$   expected r+   ]/var/www/html/lang_env/lib/python3.10/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/   r0   N)r/   r0   Zidx3N)NNNNc           
      C   s   t g d|dt g d|dt g d|dg}dd t|g dD }t|dd	}t g d
|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
   name)r   r   d)r   r3   ec                 S   s$   g | ]\}}t |g d 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   r3   r4   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sgJ d S )Nr   )r   r   ABCabcZindex_ar1   )columnsr"   Zindex_bkey0key1Zlvl0Zlvl1keysnamesr   T)Zinplace)r   r#   randomdefault_rnglistr   r   r"   rE   Z	set_namesr&   r'   )r(   r   r   r<   exprE   r+   r+   r,   test_concat_rename_indexQ   s"   z(TestIndexConcat.test_concat_rename_indexc                 C   sR   t ddg}t||g|dd}|r|dv r|j|jusJ d S |j|ju s'J d S )Nr   r   Tr   copy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	}|s-|j|jr"J |j|jr+J d S |d
v rE|j|jr:J |j|jsCJ d S |dv r[|j|jsRJ |j|jr]J d S d S )Nr   r   r      r   r   r@   TrK   rM   )r   r@   )r   r   r"   is_r@   )r(   r   rN   dfrO   r+   r+   r,   test_concat_copy_index_framep   s   z,TestIndexConcat.test_concat_copy_index_framec                 C   s  t g ddd}t g ddd}t||gddd}t|jtjs"J tdd	gd
dgddgg}tj||ddd t g d}t g d}t||gddd}t|jtjsVJ 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g dg dg}tj||ddd d S )Nr   r   r1   )rQ         r   r   T)r   r   rQ   r   rV   r   rW   Zcheck_index_typeZcheck_column_typeF)AB      r   rY   rZ   rR   )r   rV   r   r[   )r   rW   rQ   r\   )	r   r   
isinstancer@   pd
RangeIndexr   r&   r'   )r(   s1s2resrI   df1df2r+   r+   r,   test_default_index~   s*   (z"TestIndexConcat.test_default_indexc                 C   s,  t tjdjddddd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  | tt tjd
dg ddt tjd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   r   
   (   )sizerQ   )rY   rY   Cri   rR   r   r8   )rf   rQ   )rY   rY   rZ   rZ      rY   ri   rW   r\   	   )r   r#   rF   rG   ZintegersZreshaper   r&   r'   ilocstandard_normal_append)r(   rT   r<   r*   r+   r+   r,   test_dups_index   sF   
&6
zTestIndexConcat.test_dups_indexN)__name__
__module____qualname__r-   pytestmarkparametrizer=   rJ   rP   rU   re   ro   r+   r+   r+   r,   r	      s    
	 r	   c                   @   sJ  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d	edefddZdd Zdd Zdd Zej	dd d!ggg d"ggd#d$ Zd%d& Zd'd( Zd)d* Zej	d+g d,d-d. Zd/d0 Zd1S )2TestMultiIndexConcatc                 C   sp   |}|j }t||gddgdgd}|j jd|j ksJ t|jd | t|jd | |j jdks6J d S )Nr   r   	iterationrC   )rw   r   )r"   r   rE   r&   r'   r%   Znlevels)r(   Z multiindex_dataframe_random_dataframer"   r<   r+   r+   r,    test_concat_multiindex_with_keys   s   z5TestMultiIndexConcat.test_concat_multiindex_with_keysc           	      C   s6  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g d
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|g d
d}td|i|tjd}t	|| d S )Nr   rV   level1rE   col)r"   dtyper   level2rC   )r~   rz   Nr[   )r   from_productranger   r#   Zint32r   rH   r&   r'   r9   from_tuples)	r(   r"   rT   r<   r*   r~   rz   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g dd d f |jdgd d f g}|jg dd d f }t|| d S )Nr   )rk   r   r   levelscodes)r   r   rQ   rV   )r   r   rQ   rV   )r   r#   rF   rG   rm   r   r^   r_   repeatarangeZtiler"   r   rl   r&   r'   )r(   rT   rb   rI   r+   r+   r,   !test_concat_multiindex_rangeindex   s   ".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g d
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   )r`   ra   r`   ra   )testnameNN)r   r   rE   r   r{   )r   r   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   rY   rZ   r3   Z2017Z2018)startendZperiodsmi2_listc           
      C   s"  t |}t |}ttdt|f|d}ttdt|f|d}|d |d krAt |d t|d gg dg dgd}nt |d |d  t|d t|d  gg dg dgd}ttdt|f|d}td  t	||fdd	}	W d    n1 sw   Y  t
||	 d S )
Nr   rR   r   )r   r   r   r   )r   r   r   r   r   )r   r   r   r   )r   r   r   r   r8   )r   r   r   r#   ZzeroslenrH   r&   assert_produces_warningr   r'   )
r(   r   r   Zmi1Zmi2rc   rd   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g dig dd}t|gdgd}dgg dg}|j}t|}t|| |}t dg dit|d}t|| d S )Nr|   r
   )12r   r!   XrD   )r   r   r"   r   r   r&   assert_index_equalr'   )r(   rT   	iterablesZresult_indexr   r   r   r+   r+   r,   test_concat_multiindex_F  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g dd}tjtdd |jd	d d f }W d    n1 s;w   Y  t dg d
itg dd}tjtdd |jd	 }W d    n1 sew   Y  t|| t dg di}t dddgi}t dddgi}t|||gg dd}tjtdd |jd	d d f }W d    n1 sw   Y  t g dg dtdd	ddg}d d g|j
_tjtdd |jd	d d f }W d    n1 sw   Y  t|| d S )Nr2   r   r   r   )r   r   r   r   zindexing past lexsort depthmatchr   r   r   )r   )r   r   r   r!   )r   r   r   r   r   r   r3   )r   r   r   r   r   r   r   )r   r   r   r   r   r   r   Zaababcd)r   r   r2   )r   r   r&   r   r   r%   r   r'   rH   Z	set_indexr"   rE   )r(   rc   rd   Zdf3Zdf_aZout_aZdf_bZout_br+   r+   r,   test_concat_with_key_not_uniqueW  sT   
z4TestMultiIndexConcat.test_concat_with_key_not_uniquec                 C   s|   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g dgd	 W d    d S 1 s7w   Y  d S )
NrY   r   r   r!   r   z*Level values not unique: \['x', 'y', 'y'\]r   r   r   r   )rD   r   r   rs   Zraises
ValueErrorr   )r(   rc   rd   msgr+   r+   r,   "test_concat_with_duplicated_levels  s   "z7TestMultiIndexConcat.test_concat_with_duplicated_levelsr   r   r   r   c                 C   sp   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 d    d S 1 s1w   Y  d S )	NrY   r   r   r!   r   z+levels supported only when keys is not Noner   )r   r   )r(   r   rc   rd   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'   r^   r_   r   r"   )r(   rc   rd   r<   r*   r   r+   r+   r,   test_concat_range_index_result  s   z3TestMultiIndexConcat.test_concat_range_index_resultc                 C   s   t g dgtg dddd}t ddggtddgddd}t||gd	d
d	d}t g dddtjggtg dddd}t|| d S )Nr   r   r   r   objectr}   rR   r   r   r   Touterr   joinr    r   r   g      ?r   r   r   r#   r$   r&   r'   )r(   rc   rd   r<   r*   r+   r+   r,   test_concat_index_keep_dtype  s    z1TestMultiIndexConcat.test_concat_index_keep_dtypec                 C   s   t g dgtg d|dd}t ddggtddg|dd}t||gdd	dd
}t g dddtjggtg d|dd}t|| d S )Nr   r   r   rR   r   r   r   Tr   r   r   r   )r(   Zany_numeric_ea_dtyperc   rd   r<   r*   r+   r+   r,   'test_concat_index_keep_dtype_ea_numeric  s   z<TestMultiIndexConcat.test_concat_index_keep_dtype_ea_numericr}   )ZInt8ZInt16Int32c                 C   s   t g dgtg d|dd}t ddggtddgddd}t||gd	d
d	d}t g dddtjggtg dddd}t|| d S )Nr   r   r   rR   r   r   r   r   Tr   r   r   r   )r(   r}   rc   rd   r<   r*   r+   r+   r,   test_concat_index_find_common  s    z2TestMultiIndexConcat.test_concat_index_find_commonc                 C   s   t g d}t ddg}t g d}t g |stnd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|sQtndd}tj||ddd d S )Nr
   r   r   )r   r   r   r3   zstring[pyarrow_numpy]r   Fr   r   )r    r   r   r   r   r   r   r3   TrX   )r   r   r   r   r#   r$   r&   r'   )r(   Zusing_infer_stringr`   ra   Zs3Zs4r<   r*   r+   r+   r,   (test_concat_axis_1_sort_false_rangeindex  s(   
	
z=TestMultiIndexConcat.test_concat_axis_1_sort_false_rangeindexN)rp   rq   rr   ry   r   r   r   rs   rt   ru   r   r#   r   r^   Z
date_rangerH   r   r   r   r   r   r   r   r   r   r   r+   r+   r+   r,   rv      sJ    
		.



rv   )rL   r   numpyr#   rs   Zpandas.errorsr   Zpandasr^   r   r   r   r   r   Zpandas._testingZ_testingr&   r	   rv   r+   r+   r+   r,   <module>   s     @