o
    _~#g-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?)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/   /var/www/static.ux5.de/https/Moving-Object-Detection-with-OpenCV/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))idxr2   r2   r2   )r2   r2   NN)r2   NNN)idx1idx2NN)r3   r3   r4   N)r3   r4   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   r8   ec                 S   s$   g | ]\}}t |g d i|dqS ))r   r   r   r#   )r   ).0ir   r/   r/   r0   
<listcomp>@   s    z@TestIndexConcat.test_concat_same_index_names.<locals>.<listcomp>r   r   r    )r   r   r   r8   r9   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/   r0   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abcindex_ar6   )columnsr$   index_bkey0key1lvl0lvl1keysnamesr   T)inplace)r   r%   randomdefault_rnglistr   r   r$   rS   	set_namesr(   r)   )r*   r   r   rE   exprS   r/   r/   r0   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_writesercombr/   r/   r0   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   rK   Tr[   r]   )r   rK   )r   r   r$   is_rK   )r*   r    r^   dfr`   r/   r/   r0   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   r6   )rb         r   r   T)r    r!   rb   r   rg   r   rh   check_index_typecheck_column_typeF)AB      r   rl   rm   rc   )r   rg   r   rn   )r   rh   rb   ro   )	r   r   
isinstancerK   pd
RangeIndexr   r(   r)   )r*   s1s2resrY   df1df2r/   r/   r0   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   
   (   )sizerb   )rl   rl   Cr|   rc   r   r=   )ry   rb   )rl   rl   rm   rm      rl   r|   rh   ro   	   )r   r%   rU   rV   integersreshaper   r(   r)   ilocstandard_normal_append)r*   re   rE   r.   r/   r/   r0   test_dups_index   sF   
&6
zTestIndexConcat.test_dups_indexN)__name__
__module____qualname__r1   pytestmarkparametrizerG   rZ   ra   rf   rx   r   r/   r/   r/   r0   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   	iterationrQ   )r   r   )r$   r   rS   r(   r)   r'   nlevels)r*    multiindex_dataframe_random_dataframer$   rE   r/   r/   r0    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   rg   level1rS   col)r$   dtyper   level2rQ   )r   r   Nrn   )r   from_productranger   r%   int32r   rW   r(   r)   r>   from_tuples)	r*   r$   re   rE   r.   r   r   no_nametuplesr/   r/   r0   /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   )r~   r   r   levelscodes)r   r   rb   rg   )r   r   rb   rg   )r   r%   rU   rV   r   r   rq   rr   repeatarangetiler$   r   r   r(   r)   )r*   re   ru   rY   r/   r/   r0   !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   )rs   rt   rs   rt   )testnameNN)r   r   rS   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/   r0   (test_concat_multiindex_dfs_with_deepcopy  s   
z=TestMultiIndexConcat.test_concat_multiindex_dfs_with_deepcopymi1_listr   r   r   g       @g      @r   rl   rm   r8   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   rc   r   )r   r   r   r   )r   r   r   r   r   )r   r   r   r   )r   r   r   r   r=   )r   r   r   r%   zeroslenrW   r(   assert_produces_warningr   r)   )
r*   r   r   mi1mi2rv   rw   expected_miexpected_df	result_dfr/   r/   r0   *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rR   )r   r   r$   r   r   r(   assert_index_equalr)   )r*   re   	iterablesresult_indexr   r   r   r/   r/   r0   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 )Nr7   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   r8   )r   r   r   r   r   r   r   )r   r   r   r   r   r   r   aababcd)r   r   r7   )r   r   r(   r   r   r'   r   r)   rW   	set_indexr$   rS   )r*   rv   rw   df3df_aout_adf_bout_br/   r/   r0   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 )
Nrl   r   r   r#   r   z*Level values not unique: \['x', 'y', 'y'\]r   r   r   r   )rR   r   r   r   raises
ValueErrorr   )r*   rv   rw   msgr/   r/   r0   "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 )	Nrl   r   r   r#   r   z+levels supported only when keys is not Noner   )r   r   )r*   r   rv   rw   r   r/   r/   r0   &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)   rq   rr   r   r$   )r*   rv   rw   rE   r.   r   r/   r/   r0   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   rc   r   r   r   Touterr!   joinr"   r   r   g      ?r   r   r   r%   r&   r(   r)   )r*   rv   rw   rE   r.   r/   r/   r0   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   rc   r   r   r   Tr   r   r   r   )r*   any_numeric_ea_dtyperv   rw   rE   r.   r/   r/   r0   '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   rc   r   r   r   r   Tr   r   r   r   )r*   r   rv   rw   rE   r.   r/   r/   r0   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   r8   zstring[pyarrow_numpy]r   Fr   r   )r"   r   r!   r    r   r   r   r8   Tri   )r   r   r   r   r%   r&   r(   r)   )r*   using_infer_stringrs   rt   s3s4rE   r.   r/   r/   r0   (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   rq   
date_rangerW   r   r   r   r   r   r   r   r   r   r   r/   r/   r/   r0   r      sJ    
		.



r   )r\   r   numpyr%   r   pandas.errorsr   pandasrq   r   r   r   r   r   pandas._testing_testingr(   r	   r   r/   r/   r/   r0   <module>   s     @