U
    c                     @   s  d Z ddlmZ ddlZddlmZ ddlmZ ej	
dZeej	di ddigd	d
 Zedd Zdd Zeej	ddedddggdddgdfdeddddddggddddddgdfdeddddddd ggdd!d"ddd#d$gdfgd%d& Zeej	d'd(dddgedd)d)gd*d+d,ggdddgdfd-ddddddgedd)d.d/d0d1gd*d+d,d2d3d4ggdddddd5gdfd6ddd"ddddgedd)d.d/d0d1d7gd*d+d,d2d3d4d8ggddd"ddd9d:gdfgd;d< Zed=d> Zed?d@ ZedAdB ZdS )Cz
Tests that duplicate columns are handled appropriately when parsed by the
CSV engine. In general, the expected result is that they are either thoroughly
de-duplicated (if mangling requested) or ignored otherwise.
    )StringION)	DataFrameZpyarrow_skipkwargsmangle_dupe_colsTc              	   C   s   | }d}d|krHt jtddd  |jt|fddi|}W 5 Q R X n|jt|fddi|}tdd	d
ddggdddddgd}t || d S )Nza,a,b,b,b
1,2,3,4,5r   z,the 'mangle_dupe_cols' keyword is deprecatedF)matchZcheck_stacklevelsep,               aa.1bzb.1zb.2columns)tmZassert_produces_warningFutureWarningread_csvr   r   assert_frame_equal)all_parsersr   parserdataresultexpected r   L/tmp/pip-unpacked-wheel-g7fro6k3/pandas/tests/io/parser/test_mangle_dupes.py
test_basic   s    &"r   c                 C   sH   | }d}t dddgdddggdd	d
gd}|t|}t|| d S )Nza,b,a
0,1,2
3,4,5r   r	   r
   r   r   r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   r   r   r   test_basic_names&   s
    "r   c              	   C   s>   | }d}t jtdd |jt|dddgd W 5 Q R X d S )Nz0,1,2
3,4,5Duplicate namesr   r   r   namespytestZraises
ValueErrorr   r   )r   r   r   r   r   r   test_basic_names_raise2   s    r'   zdata,expectedza,a,a.1
1,2,3r	   r
   r   r   a.2r   r   z+a,a,a.1,a.1.1,a.1.1.1,a.1.1.1.1
1,2,3,4,5,6r   r      a.1.1za.1.1.1z	a.1.1.1.1z!a,a,a.3,a.1,a.2,a,a
1,2,3,4,5,6,7   a.4a.3za.5za.6c                 C   s"   | }| t|}t|| d S )N)r   r   r   r   )r   r   r   r   r   r   r   r   test_thorough_mangle_columns;   s    r.   zdata,names,expectedza,b,b
1,2,3r   123za,b,c,d,e,f
1,2,3,4,5,6cdef456za.1.1.1.1.1za,b,c,d,e,f,g
1,2,3,4,5,6,7g7za.2.1za.3.1c              	   C   s4   | }t jtdd |jt||d W 5 Q R X d S )Nr    r!   r"   r$   )r   r   r#   r   r   r   r   r   test_thorough_mangle_namesX   s    "r;   c           	      C   s   d}| }dddg}t ||i}tdD ]t}t  }t|d D ]6}ddd|  t|d  }|jd|dddgd q<|||< |t| }t|| q&d S )	N0r	   r
   r   
Unnamed: 0.r   )loccolumnvalue)	r   rangemininsertr   r   Zto_csvr   r   )	r   Zorig_keyr   Z
orig_valueZdfir   jZcol_namer   r   r   !test_mangled_unnamed_placeholders   s    
rG   c              	   C   sP   | }d}| t|}tdddddddggd	d
dddddgd}t|| d S )Nz%a,a,a.1,a,a.3,a.1,a.1.1
1,2,3,4,5,6,7r	   r
   r   r   r   r)   r+   r   r(   r   r,   r-   za.1.2r*   r   r   r   r   r   r   r   r   r   r   r   r   r   r   $test_mangle_dupe_cols_already_exists   s    rJ   c                 C   sD   | }d}| t|}tddddggdddd	gd
}t|| d S )Nz,Unnamed: 0,,Unnamed: 2
1,2,3,4r	   r
   r   r   zUnnamed: 0.1r=   zUnnamed: 2.1z
Unnamed: 2r   rH   rI   r   r   r   0test_mangle_dupe_cols_already_exists_unnamed_col   s    
rK   )__doc__ior   r%   Zpandasr   Zpandas._testingZ_testingr   markZusefixturesZskip_pyarrowZparametrizer   r   r'   r.   r;   rG   rJ   rK   r   r   r   r   <module>   s   
	 	

