o
    Û­jóC  ã                   @   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/   úc/var/www/html/CropPilot/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))Ú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 s„w   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 s®w   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 sçw   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   ÚstrrÜ   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     @