o
    i@                     @   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                   @   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?)test1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!   frame1frame2v1r%   expected r.   a/var/www/edux/Edux_v2/venv/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))idxr1   r1   r1   )r1   r1   NN)r1   NNN)idx1idx2NN)r2   r2   r3   N)r2   r3   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   r7   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   r7   r8   r   r   r"   )r   zipr   r   r$   r%   r'   r(   )
r)   name_in1name_in2name_in3name_outindicesframesresult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scJ d S )Nr   ABCabcindex_ar5   )columnsr#   index_bkey0key1lvl0lvl1keysnamesr   T)inplace)r   r$   randomrandlistr   r   r#   rR   	set_namesr'   r(   )r)   r
   r   rD   exprR   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usJ d S )Nr   r   Tr   copy)r   r   r#   )r)   r   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usJ |j|jus'J d S )
Nr   r   r      r
   r   rJ   TrZ   )r   r   r#   rJ   )r)   r   dfr]   r.   r.   r/   test_concat_copy_index_framek   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   r5   )r_         r   r   T)r   r    r_   r   rc   r   rd   check_index_typecheck_column_typeF)AB      r   rh   ri   r`   )r   rc   r   rj   )r   rd   r_   rk   )	r   r   
isinstancerJ   pd
RangeIndexr   r'   r(   )r)   s1s2resrX   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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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   
   (   )sizer_   )rh   rh   Crx   r`   r   r<   )rh   rh   ri   ri      r   rh   rx   rd   rk   	   )r   r$   rT   randintreshaper   r'   r(   ilocrandn_append)r)   ra   rD   r-   r.   r.   r/   test_dups_index   s>   
&6
zTestIndexConcat.test_dups_indexN)__name__
__module____qualname__r0   pytestmarkparametrizerF   rY   r^   rb   rt   r   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   	iterationrP   )r   r   )r#   r   rR   r'   r(   r&   nlevels)r)    multiindex_dataframe_random_dataframer#   rD   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   rc   level1rR   col)r#   dtyper   level2rP   )r   r   Nrj   )r   from_productranger   r$   int32r   rV   r'   r(   r=   from_tuples)	r)   r#   ra   rD   r-   r   r   no_name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 )Nrz   r   r   levelscodes)r   r   r_   rc   )r   r   r_   rc   )r   r$   rT   r~   r   rm   rn   repeatarangetiler#   r   r}   r'   r(   )r)   ra   rq   rX   r.   r.   r/   !test_concat_multiindex_rangeindex   s   ".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g d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   )ro   rp   ro   rp   )testnameNN)r   r   rR   r   r   )r[   r   r   r   r   r   r'   r(   )r)   r   example_multiindex1example_dataframe1example_multiindex2example_dataframe2example_dictexpected_indexr-   result_copy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   rh   ri   r7   20172018)startend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   r`   r   )r   r   r   r   )r   r   r   r   r   )r   r   r   r   )r   r   r   r   r<   )r   r   r   r$   zeroslenrV   r'   assert_produces_warningr   r(   )
r)   r   r   mi1mi2rr   rs   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rQ   )r   r   r#   r   r   r'   assert_index_equalr(   )r)   ra   	iterables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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 )Nr6   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   r7   )r   r   r   r   r   r   r   )r   r   r   r   r   r   r   aababcd)r
   r   r6   )r   r   r'   r   r   r&   r   r(   rV   	set_indexr#   rR   )r)   rr   rs   df3df_aout_adf_bout_br.   r.   r/   test_concat_with_key_not_uniqueI  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 )
Nrh   r   r   r"   r   z*Level values not unique: \['x', 'y', 'y'\]r   r   r   r   )rQ   r   r   r   raises
ValueErrorr   )r)   rr   rs   msgr.   r.   r/   "test_concat_with_duplicated_levelsw  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 )	Nrh   r   r   r"   r   z+levels supported only when keys is not Noner   )r   r   )r)   r   rr   rs   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(   rm   rn   r   r#   )r)   rr   rs   rD   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   r`   r   r   r   Touterr    joinr!   r   r   g      ?r   r   r   r$   r%   r'   r(   )r)   rr   rs   rD   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   r`   r   r   r   Tr   r   r   r   )r)   any_numeric_ea_dtyperr   rs   rD   r-   r.   r.   r/   'test_concat_index_keep_dtype_ea_numeric  s   z<TestMultiIndexConcat.test_concat_index_keep_dtype_ea_numericr   )Int8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   r`   r   r   r   r   Tr   r   r   r   )r)   r   rr   rs   rD   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 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   r   r7   r   Fr   r   )r!   r   r    r   r   r   r   r7   Tre   )r   r   r   r   r$   r%   r'   r(   )r)   ro   rp   s3s4rD   r-   r.   r.   r/   (test_concat_axis_1_sort_false_rangeindex  s$   	
z=TestMultiIndexConcat.test_concat_axis_1_sort_false_rangeindexN)r   r   r   r   r   r   r   r   r   r   r   r$   r   rm   
date_rangerV   r   r   r   r   r   r   r   r   r   r   r.   r.   r.   r/   r      sJ    
		.



r   )numpyr$   r   pandas.errorsr   pandasrm   r   r   r   r   r   pandas._testing_testingr'   r   r   r.   r.   r.   r/   <module>   s     2