U
    sVÞcÁ  ã                   @   sN   d Z ddlZddlZddlmZ ddlmZmZ ddl	m
Z G dd„ dƒZdS )zž
test_insert is specifically for the DataFrame.insert method; not to be
confused with tests with "insert" in their names that are really testing
__setitem__.
é    N)ÚPerformanceWarning)Ú	DataFrameÚIndexc                   @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )ÚTestDataFrameInsertc              	   C   s:  t tj dd¡t d¡dddgd}| dd|d ¡ t |jt	ddddgƒ¡ tj
|d |d d	d
 | dd|d ¡ t |jt	dddddgƒ¡ tj|d |d d	d
 tjtdd | dd|d ¡ W 5 Q R X d}tjt|d | dd|d ¡ W 5 Q R X d|j_| dd|d ¡ |jjdks6t‚d S )Né   é   ÚcÚbÚa)ÚindexÚcolumnsr   ZfooF)Zcheck_namesé   Úbarzalready exists©Úmatché   zcannot insert c, already existsZ	some_nameZbaz)r   ÚnpÚrandomÚrandnZarangeÚinsertÚtmZassert_index_equalr   r   Zassert_series_equalZassert_almost_equalÚpytestÚraisesÚ
ValueErrorÚnameÚAssertionError©ÚselfÚdfÚmsg© r    úK/tmp/pip-unpacked-wheel-xj8nt62q/pandas/tests/frame/indexing/test_insert.pyÚtest_insert   s&      ÿzTestDataFrameInsert.test_insertc                 C   sÂ   t dddgiƒ}|ji d}| ddddg¡ |ji d}t|ƒ t ddgddggddgd}t ||¡ | dd	d
dg¡ |ji d}t|ƒ t d
ddgdddggd	ddgd}t ||¡ d S )Nr	   gš™™™™™ñ?gš™™™™™@©r   r   r
   r   r   r   gÍÌÌÌÌÌô?gffffff@)r   Úrenamer   Ústrr   Úassert_frame_equal)r   r   ÚresultÚexpectedr    r    r!   Útest_insert_column_bug_4032,   s    "z/TestDataFrameInsert.test_insert_column_bug_4032c                 C   sˆ   t ƒ }|jdddddgdd |jdddd	d
gdd |jdddddgdd t dddgdd	dgdd
dggdddgd}t ||¡ d S )Nr   ÚAÚgÚhÚiT)Zallow_duplicatesÚdÚeÚfr
   r	   r   r#   )r   r   r   r&   )r   r   Úexpr    r    r!   Útest_insert_with_columns_dups@   s     ÿz1TestDataFrameInsert.test_insert_with_columns_dupsc              	   C   sˆ   t tj dd¡ƒ}|d }|r$d }nt}t |¡( tdƒD ]}|d | ||d < q<W 5 Q R X d|jd< |j	d |d d ks„t
‚d S )Né   r   r   éd   r   éc   )r   r   )r   r   r   r   r   r   Úassert_produces_warningÚrangeÚvaluesZilocr   )r   Zusing_array_managerr   ZserZexpected_warningÚnr    r    r!   Útest_insert_item_cacheK   s     
z*TestDataFrameInsert.test_insert_item_cachec              	   C   sH   t tjjdddddd}t d ¡ t ddd	g¡|d
< W 5 Q R X d S )Nr   r4   )r   r4   )ÚsizeZInt64)Zdtyper   r   r   r
   )r   r   r   Úrandintr   r6   Úarray)r   r   r    r    r!   Útest_insert_EA_no_warning]   s    z-TestDataFrameInsert.test_insert_EA_no_warningc              	   C   sF   t ddgddgdœƒ}d}tjt|d | dd|¡ W 5 Q R X d S )	Nr   r   r   r3   )Zcol1Zcol2z5Expected a 1D array, got an array with shape \(2, 2\)r   Znewcol)r   r   r   r   r   r   r    r    r!   Útest_insert_framed   s    z%TestDataFrameInsert.test_insert_frameN)	Ú__name__Ú
__module__Ú__qualname__r"   r)   r2   r:   r>   r?   r    r    r    r!   r      s   r   )Ú__doc__Znumpyr   r   Zpandas.errorsr   Zpandasr   r   Zpandas._testingZ_testingr   r   r    r    r    r!   Ú<module>   s   