U
    *ifn,                     @   sT   d dl Zd dlZd dlZd dlmZmZmZ d dlm	Z
 dddZG dd dZdS )    N)	DataFrameSeries
date_rangec                 C   s&   |d k	rt | | | j t|  d S )N)tmassert_frame_equalZdtypesstr)resultexpected r
   \/home/mars/bis/venv/lib/python3.8/site-packages/pandas/tests/frame/test_nonunique_indexes.pycheck   s    r   c                   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!S )"TestDataFrameNonuniqueIndexesc                 C   sJ   t jdd}ttd}t|ddgd}||_t||d}t|| d S )N      Acolumns)nprandomrandnlistranger   r   r   )selfZarridxdfr	   r
   r
   r   .test_setattr_columns_vs_construct_with_columns   s    zLTestDataFrameNonuniqueIndexes.test_setattr_columns_vs_construct_with_columnsc                 C   s~   t dddd}tddddgddddgddddggd	d	d	d	gd
}||_tddddgddddgddddgg|d
}t|| d S )NZ20130101   zQ-NOV)Zperiodsfreq      r   r   ar   )r   r   r   r   )r   r   r   r	   r
   r
   r   ;test_setattr_columns_vs_construct_with_columns_datetimeindx    s      
*zYTestDataFrameNonuniqueIndexes.test_setattr_columns_vs_construct_with_columns_datetimeindxc              	   C   sT  t ddddgddddgddddggddddgd}d	|d
< t ddddd	gddddd	gddddd	ggddddd
gd}t|| tjtdd" |ddtt|jd  W 5 Q R X d|d< t ddddd	dgddddd	dgddddd	dggddddd
dgd}t|| d|d< t ddddd	dgddddd	dgddddd	dggddddd
dgd}t|| d|d< |d= t dddd	dgdddd	dgdddd	dggdddd
dgd}t|| |d= t ddd	dgddd	dgddd	dggddd
dgd}t|| |	 }t ddd	dgddd	dgddd	dggddd
dgd}t|| |ddd t dddd	dgdddd	dgdddd	dggdddd
dgd}t|| tjtdd |ddd W 5 Q R X |jddddd t ddddd	dgddddd	dgddddd	dggddddd
dgd}t|| |d= t ddd	dgddd	dgddd	dggddd
dgd}t
|| d S )Nr   r   r   r   foobarhellor   ZbahstringzLength of valuematchr   ZAnotherColumnfoo2r   Znew_colg      @zcannot insertg      @T)Zallow_duplicates)r   r   pytestraises
ValueErrorinsertr   lenindexZ_consolidater   r   r   r   r	   r
   r
   r   "test_insert_with_duplicate_columns)   s     
&
&,
,
&
 

 

&

 
z@TestDataFrameNonuniqueIndexes.test_insert_with_duplicate_columnsc                 C   sD  t ddddgddddgddddggdddd	gd
}t| d|d< t dddddgdddddgdddddggdddd	dgd
}t|| |d }t ddgddgddggddgd
}t|| d|d< t dddddgdddddgdddddggdddd	dgd
}t|| |d= t dddgdddgdddggdd	dgd
}t|| d S )Nr         ?r          @r         @r"   r#   r$   r   g      @r(   r%   )r   r   )r   r   r	   r   r
   r
   r   test_dup_across_dtypes   s:     
&
"

 z4TestDataFrameNonuniqueIndexes.test_dup_across_dtypesc                 C   s   t tjdddddddgdd	dgd
}|jttdfD ]L}| }t	|j
|jd}t ||d	 |ddd	dgd}||d< t|| q<d S )Nr   r   r    bcder   Br.   r   Zedcbar.   )r   r9   r   r   )r   r   r   r   r.   pdIndexr   copyr   valuesr   )r   r   r.   Zthis_dfZexpected_serZexpected_dfr
   r
   r   test_column_dups_indexes   s    z6TestDataFrameNonuniqueIndexes.test_column_dups_indexesc                 C   s   t tjddddgd}t dtdddgd}d|d< t|| t tjddddgd}t dtdddgd}d|d< t|| d S )Nr   r   thatr   r1   r:   r   )r   r   r   r   r   r   Zrandr/   r
   r
   r   +test_changing_dtypes_with_duplicate_columns   s    
zITestDataFrameNonuniqueIndexes.test_changing_dtypes_with_duplicate_columnsc              	   C   s   t ddgdtjgddgddggddgd}t ddgddgdtjgdd	ggddgd}d
}tjt|d ||k W 5 Q R X ||}||k}t ddgddgddgddggddgd}t|| d S )Nr   r   r   r   r   r9   r   r   r   z6Can only compare identically-labeled DataFrame objectsr&   FT)	r   r   nanr)   r*   r+   Zreindex_liker   r   )r   Zdf1Zdf2msgZdf1rr   r	   r
   r
   r   test_dup_columns_comparisons   s    **
z:TestDataFrameNonuniqueIndexes.test_dup_columns_comparisonsc              	   C   s   t tdddgdddgdtddddgddddgdtddddgddddgdd}tj|d	 |d
 |d	 gdd}|d	d
d	g }t|| d S )NTFr    r5   r6   r;   r7   )onetwothreerF   rH   r   Zaxis)r   r   r<   concatr   )r   Zdfboolr	   r   r
   r
   r   test_mixed_column_selection   s     z9TestDataFrameNonuniqueIndexes.test_mixed_column_selectionc                 C   s   t tddddddddgdd	d
ddgd}|dd
dg  }|jdddg }t tddddddddgdd	d
ddgd}|dd
dg }|jdddg }t|| d S )Ng      9@r   r    r5   r6   r7   r8   r   r9   CDEr:   )r   r   arangereshaper>   locr   )r   r   zr	   r   r
   r
   r   test_multi_axis_dups   s    z2TestDataFrameNonuniqueIndexes.test_multi_axis_dupsc                 C   s   t ddggddgd}ddg|_t| t ddggddgd}t|| t dddggdddgd}dddg|_t| t dddggdddgd}t|| d S )Nr   r   r    r   a.1r   r5   r   r   r   r   r   r/   r
   r
   r   test_columns_with_dups   s    
z4TestDataFrameNonuniqueIndexes.test_columns_with_dupsc                 C   sN   t ddggddgd}ddg|_t| t ddggddgd}t|| d S )Nr   r   r    r   r5   rU   r/   r
   r
   r   test_columns_with_dup_index
  s
    
z9TestDataFrameNonuniqueIndexes.test_columns_with_dup_indexc              	   C   sl   t dddddddggddd	d	d
ddgd}td|_t| t dddddddggtdd}t|| d S )Nr   r   r1   r2   r3   r"   r#   r    r5   r7   r6   r   ZABCDEFG)r   r   r   r   r   r   r/   r
   r
   r   test_multi_dtype  s    
 z.TestDataFrameNonuniqueIndexes.test_multi_dtypec                 C   sb   t ddddggddddgd}dddd	g|_t| t ddddggdddd	gd}t|| d S )
Nr   r   r"   r#   r    r   rT   za.2za.3rU   r/   r
   r
   r   test_multi_dtype2  s
    z/TestDataFrameNonuniqueIndexes.test_multi_dtype2c           	      C   s   t tjdddd}t tjddd}t d|j|jd}t d|j|jd}t td	|j|jd}tj	|||||gd
d}|st
|jjt
|jkstt
|jjt
|jksttt
|jD ]}|jd d |f  qd S )N
   r   Zfloat64)ZdtypeZint64Tr:   r"   Z20010101r   rI   )r   r   r   r   Zastyper.   r   r<   	TimestamprJ   r-   Z_mgrZblknosAssertionErrorZblklocsr   iloc)	r   Zusing_array_managerZdf_floatZdf_intZdf_boolZ	df_objectZdf_dtr   ir
   r
   r   test_dups_across_blocks&  s      z5TestDataFrameNonuniqueIndexes.test_dups_across_blocksc                 C   sJ   dddgdddgg}t |dddgd	}t |}dddg|_t|| d S )
Nr   r2   r   r3   r   r9   r   )r   r   r   r   )r   valsrsZxpr
   r
   r   test_dup_columns_across_dtype9  s
    z;TestDataFrameNonuniqueIndexes.test_dup_columns_across_dtypec                 C   s   t tdddj}td|_|jd d df }d|jd d df< t	|jd d df | t tdddj}dt
dtdg|_|jd d df }d|jd d df< t	|jd d df | d S )N	   r   ZAAAr   r   r   )r   r   rO   rP   Tr   r   r]   r   Zassert_series_equalfloatr   r/   r
   r
   r   test_set_value_by_indexA  s    
z5TestDataFrameNonuniqueIndexes.test_set_value_by_indexN)__name__
__module____qualname__r   r!   r0   r4   r@   rB   rE   rK   rS   rV   rW   rX   rY   r_   rd   rh   r
   r
   r
   r   r      s    	W%r   )N)numpyr   r)   Zpandasr<   r   r   r   Zpandas._testingZ_testingr   r   r   r
   r
   r
   r   <module>   s   
