U
    sVc-                     @   s`   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	 d dl
mZ dddZG dd dZdS )	    N)is_platform_windows)	DataFrameSeries
date_rangec                 C   s&   |d k	rt | | | j t|  d S )N)tmassert_frame_equalZdtypesstr)resultexpected r   M/tmp/pip-unpacked-wheel-xj8nt62q/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 ]J}| }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   r:   r   )r   r   r   r   r/   pdZ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   r2   r;   r   )r   r   r   r   r   r   Zrandr0   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   r:   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!   r6   r7   r<   r8   )oneZtwothreerF   rG   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!   r6   r7   r8   r9   r   r:   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   r6   r   r   r   r   r   r0   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   r6   rT   r0   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   r2   r3   r4   r#   r$   r!   r6   r8   r7   r   ZABCDEFG)r   r   r   r   r   r   r0   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   rS   za.2za.3rT   r0   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   rH   )r   r   r   r   Zastyper/   r   r=   Z	TimestamprI   r.   Z_mgrZblknosAssertionErrorZblklocsr   iloc)	r   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   r3   r   r4   r   r:   r   )r   r   r   r   )r   valsrsZxpr   r   r   test_dup_columns_across_dtype;  s
    z;TestDataFrameNonuniqueIndexes.test_dup_columns_across_dtypec              	   C   s  |rt  stnd }d}ttdddj}td|_|j	d d df }t
j||d d|j	d d df< W 5 Q R X t
|j	d d df | ttdddj}dtdtdg|_|j	d d df }t
j||d d|j	d d df< W 5 Q R X t
|j	d d df | d S )	Nz&will attempt to set the values inplace	   r   ZAAAr   r'   r   r   )r   DeprecationWarningr   r   rN   rO   Tr   r   r[   r   Zassert_produces_warningZassert_series_equalfloatr   )r   r\   warnrD   r   r
   r   r   r   test_set_value_by_indexC  s&    
z5TestDataFrameNonuniqueIndexes.test_set_value_by_indexN)__name__
__module____qualname__r   r"   r1   r5   r@   rB   rE   rJ   rR   rU   rV   rW   rX   r^   rc   ri   r   r   r   r   r      s    	W%r   )N)Znumpyr   r*   Zpandas.compatr   Zpandasr=   r   r   r   Zpandas._testingZ_testingr   r   r   r   r   r   r   <module>   s   
