o
    de-                     @   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 ur
t | | | j t|  d S N)tmassert_frame_equalZdtypesstr)resultexpected r   ]/app/.heroku/python/lib/python3.10/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   sb   t dddd}tg dg dg dgg dd	}||_tg dg dg dg|d	}t|| d S )
NZ20130101   zQ-NOV)Zperiodsfreq   r    r       r    r    r   r!   r   r    r   r!   ar%   r%   r%   r   )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   s  t g dg dg dgg dd}d|d< t g dg d	g d
gg dd}t|| tjtdd |ddtt|jd  W d    n1 sKw   Y  d|d< t g dg dg dgg dd}t|| d|d< t g dg dg dgg dd}t|| d|d< |d= t g dg dg dgg dd}t|| |d = t g d!g d"g d#gg d$d}t|| |	 }t g d!g d"g d#gg d$d}t|| |d%d&d' t g d(g d)g d*gg d+d}t|| tjtd,d |d%d&d- W d    n	1 sw   Y  |jd%d&d-d.d/ t g d0g d1g d2gg d3d}t|| |d4= t g d5g d5g d5gg d6d}t
|| d S )7Nr   r"   r#   foobarr(   hellor   bahstring)r    r    r    r!   r+   )r    r    r   r!   r+   )r   r    r   r!   r+   )r(   r)   r(   r*   r,   zLength of valuematchr   ZAnotherColumnr    r   foo2)r    r    r    r!   r+   r   )r    r    r   r!   r+   r   )r   r    r   r!   r+   r   )r(   r)   r(   r*   r,   r/   r   )r    r    r    r!   r+   r   )r    r    r   r!   r+   r   )r   r    r   r!   r+   r   r)   )r    r    r!   r+   r   )r    r   r!   r+   r   )r   r   r!   r+   r   )r(   r(   r*   r,   r/   r*   )r    r    r+   r   )r    r   r+   r   )r   r   r+   r   )r(   r(   r,   r/   r   new_col      @)r    r    r1   r+   r   )r    r   r1   r+   r   )r   r   r1   r+   r   )r(   r(   r0   r,   r/   zcannot insert      @T)Zallow_duplicates)r    r    r2   r1   r+   r   )r    r   r2   r1   r+   r   )r   r   r2   r1   r+   r   )r(   r(   r0   r0   r,   r/   r(   )r2   r1   r+   r   )r0   r0   r,   r/   )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   s   t g dg dg dgg dd}t| d|d< t g dg d	g d
gg dd}t|| |d }t ddgddgddggddgd}t|| d|d< t g dg dg dgg dd}t|| |d= t g dg dg dgg dd}t|| d S )N)r    r          ?r!   )r    r           @r!   )r   r          @r!   r'   r         @r/   )r    r    r;   r!   r>   )r    r    r<   r!   r>   )r   r    r=   r!   r>   )r(   r)   r(   r*   r/   r(   r    r;   r<   r   r=   r,   )r,   r    r,   r!   r>   )r    r!   r>   )r)   r*   r/   )r   r   )r   r   r
   r	   r   r   r   test_dup_across_dtypes   s8   
"

z4TestDataFrameNonuniqueIndexes.test_dup_across_dtypesc                 C   s   t tjddg dg dd}|jttdfD ]$}| }t	|j
|jd}t ||d d	g dd
}||d< t|| qd S )Nr!   r   r%   bcde)r   Br   r8   r   Zedcbar8   rE   )r   rE   r   r   )r   r   r   r   r8   pdIndexr   copyr   valuesr   )r   r   r8   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   r;   rF   r    )r   r   r   r   r   r   Zrandr9   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 d    n1 sBw   Y  ||}||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   rE   r   r   r!   zQCan only compare identically-labeled \(both index and columns\) DataFrame objectsr-   FT)	r   r   nanr3   r4   r5   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   sz   t tg dg ddtg dg ddtg dg ddd}tj|d |d	 |d gd
d}|g d }t|| d S )N)TTF)r%   rA   rB   rG   )FFTF)r%   rA   rB   rC   )FTTT)onetwothreerR   rT   r    Zaxis)rR   rT   rR   )r   r   rH   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g dg dd}|g d  }|jg d }t tdddg dg dd}|g d }|jg d }t|| d S )Ng      9@r!   r@   )r   rE   CDErF   )r   rX   r   )r%   rB   r%   )r   r   arangereshaperJ   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 g dgg dd}g d|_t| t g dgg dd}t|| d S )	Nr    r   r%   r   a.1)r    r   r   )rA   r%   r%   )rA   r%   r`   r   r   r   r   r   r9   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   rA   ra   r9   r   r   r   test_columns_with_dup_index  s
   
z9TestDataFrameNonuniqueIndexes.test_columns_with_dup_indexc                 C   sN   t g dgg dd}td|_t| t g dgtdd}t|| d S )N)r    r   r;   r<   r=   r(   r)   )r%   r%   rA   rA   rC   rB   rB   r   ZABCDEFG)r   r   r   r   r   r   r9   r   r   r   test_multi_dtype  s   
z.TestDataFrameNonuniqueIndexes.test_multi_dtypec                 C   sN   t g dgg dd}g d|_t| t g dgg dd}t|| d S )N)r    r   r(   r)   r$   r   )r%   r`   za.2za.3ra   r9   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}|s]t
|jjt
|jksPJ t
|jjt
|jks]J tt
|jD ]}|jd d |f  qdd S )N
   r   Zfloat64)ZdtypeZint64TrF   r(   Z20010101r    rU   )r   r   r   r   Zastyper8   r   rH   	TimestamprV   r7   Z_mgrZblknosZ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   sB   g dg dg}t |g dd}t |}g d|_t|| d S )N)r    r<   )r   r=   )r   r   rE   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   s2  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 d    n1 s9w   Y  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 d    n1 sw   Y  t
|jd d df | d S )	Nz&will attempt to set the values inplace	   r   ZAAAr   r-   r   r    )r   r   r[   r\   Tr   r   rh   r   Zassert_produces_warningZassert_series_equalfloatr   )r   warnrP   r   r
   r   r   r   test_set_value_by_indexC  s    
z5TestDataFrameNonuniqueIndexes.test_set_value_by_indexN)__name__
__module____qualname__r   r&   r:   r?   rL   rN   rQ   rW   r_   rb   rc   rd   re   rj   ro   rt   r   r   r   r   r      s"    
	W%r   r   )numpyr   r3   ZpandasrH   r   r   r   Zpandas._testingZ_testingr   r   r   r   r   r   r   <module>   s    
