a
    Pf-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}|s|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frame2Zv1r$   expected r*   _/var/www/ai-form-bot/venv/lib/python3.9/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 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   r2   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   r2   r3   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sJ d S )Nr   )r   r   ABCabcZindex_ar0   )columnsr"   Zindex_bkey0key1Zlvl0Zlvl1keysnamesr   T)Zinplace)r   r#   randomdefault_rnglistr   r   r"   rD   Z	set_namesr&   r'   )r(   r   r   r;   exprD   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v r<|j|jusLJ n|j|ju sLJ 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	}|sX|j|jrDJ |j|jrJ nZ|d
v r|j|jrrJ |j|jsJ n,|dv r|j|jsJ |j|jrJ d S )Nr   r   r      r   r   r?   TrJ   rL   )r   r?   )r   r   r"   is_r?   )r(   r   rM   dfrN   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sDJ 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sJ 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   r0   )rP         r   r   T)r   r   rP   r   rU   r   rV   Zcheck_index_typeZcheck_column_typeF)AB      r   rX   rY   rQ   )r   rU   r   rZ   )r   rV   rP   r[   )	r   r   
isinstancer?   pd
RangeIndexr   r&   r'   )r(   s1s2resrH   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   
   (   )sizerP   )rX   rX   Crh   rQ   r   r7   )re   rP   )rX   rX   rY   rY      rX   rh   rV   r[   	   )r   r#   rE   rF   ZintegersZreshaper   r&   r'   ilocstandard_normal_append)r(   rS   r;   r)   r*   r*   r+   test_dups_index   sF    
&6
zTestIndexConcat.test_dups_indexN)__name__
__module____qualname__r,   pytestmarkparametrizer<   rI   rO   rT   rd   rn   r*   r*   r*   r+   r	      s   
	 r	   c                   @   sH  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g d#ggd$d% Zd&d' Zd(d) Zd*d+ Zej	d,g d-d.d/ Zd0d1 Zd2S )3TestMultiIndexConcatc                 C   sp   |}|j }t||gddgdgd}|j jd|j ks8J t|jd | t|jd | |j jdkslJ d S )Nr   r   	iterationrB   )rv   r   )r"   r   rD   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   rU   level1rD   col)r"   dtyper   level2rB   )r}   ry   NrZ   )r   from_productranger   r#   Zint32r   rG   r&   r'   r8   from_tuples)	r(   r"   rS   r;   r)   r}   ry   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   )rj   r   r   levelscodes)r   r   rP   rU   )r   r   rP   rU   )r   r#   rE   rF   rl   r   r]   r^   repeatarangeZtiler"   r   rk   r&   r'   )r(   rS   ra   rH   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_   r`   r_   r`   )testnameNN)r   r   rD   r   rz   )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   rX   rY   r2   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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 s
0    Y  t
||	 d S )
Nr   rQ   r   )r   r   r   r   )r   r   r   r   r   )r   r   r   r   )r   r   r   r   r7   )r   r~   r   r#   ZzeroslenrG   r&   assert_produces_warningr   r'   )
r(   r   r   Zmi1Zmi2rb   rc   Zexpected_miexpected_df	result_dfr*   r*   r+   *test_concat_with_various_multiindex_dtypes  s&    

0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rC   )r   r   r"   r   r~   r&   assert_index_equalr'   )r(   rS   	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 sv0    Y  t dg d
itg dd}tjtdd |jd	 }W d    n1 s0    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 s^0    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 s0    Y  t|| d S )Nr1   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   r2   )r   r   r   r   r   r   r   )r   r   r   r   r   r   r   Zaababcd)r   r   r1   )r   r   r&   r   r   r%   r   r'   rG   Z	set_indexr"   rD   )r(   rb   rc   Zdf3Zdf_aZout_aZdf_bZout_br*   r*   r+   test_concat_with_key_not_uniqueW  sL    0(22z4TestMultiIndexConcat.test_concat_with_key_not_uniquec                 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dgg dgd	 W d    n1 sl0    Y  d S )
NrX   r   r   r!   r   z*Level values not unique: \['x', 'y', 'y'\]r   r   r   r   )rC   r   r   rr   Zraises
ValueErrorr   )r(   rb   rc   msgr*   r*   r+   "test_concat_with_duplicated_levels  s
    z7TestMultiIndexConcat.test_concat_with_duplicated_levelsr   r   r   r   c                 C   sn   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    n1 s`0    Y  d S )	NrX   r   r   r!   r   z+levels supported only when keys is not Noner   )r   r   )r(   r   rb   rc   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(   rb   rc   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|   rQ   r   r   r   Touterr   joinr    r   r   g      ?r   r   r   r#   r$   r&   r'   )r(   rb   rc   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   rQ   r   r   r   Tr   r   r   r   )r(   Zany_numeric_ea_dtyperb   rc   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   rQ   r   r   r   r   Tr   r   r   r   )r(   r|   rb   rc   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 |s0t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|stndd}tj||ddd d S )Nr
   r   r   )r   r   r   r2   zstring[pyarrow_numpy]r   Fr   r   )r    r   r   r   r   r   r   r2   TrW   )r   r   r   r   r#   r$   r&   r'   )r(   Zusing_infer_stringr_   r`   Zs3Zs4r;   r)   r*   r*   r+   (test_concat_axis_1_sort_false_rangeindex  s(    
	z=TestMultiIndexConcat.test_concat_axis_1_sort_false_rangeindexN)ro   rp   rq   rx   r   r   r   rr   rs   rt   r   r#   r   r]   Z
date_rangerG   r   r   r   r   r   r   r   r   r   r   r*   r*   r*   r+   ru      sB   
	
.



ru   )rK   r   numpyr#   rr   Zpandas.errorsr   Zpandasr]   r   r   r   r   r   Zpandas._testingZ_testingr&   r	   ru   r*   r*   r*   r+   <module>   s    @