o
    5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g dgg ddfdeg dgg ddfdeg dgg ddfgdd Zeej	ddg deg dg d gg d!dfd"g d#eg d$g d%gg d&dfd'g d(eg d)g d*gg d+dfgd,d- Zed.d/ Zed0d1 Zed2d3 ZdS )4z
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)	DataFramepyarrow_skipkwargsmangle_dupe_colsTc                 C   s   | }d}d|v r.t jtddd |jt|fddi|}W d    n1 s(w   Y  n|jt|fddi|}tg dgg d	d
}t || d S )Nza,a,b,b,b
1,2,3,4,5r   z,the 'mangle_dupe_cols' keyword is deprecatedF)matchcheck_stacklevelsep,)               )aa.1bzb.1zb.2columns)tmassert_produces_warningFutureWarningread_csvr   r   assert_frame_equal)all_parsersr   parserdataresultexpected r   ^/var/www/html/gps/gps/lib/python3.10/site-packages/pandas/tests/io/parser/test_mangle_dupes.py
test_basic   s   r!   c                 C   sB   | }d}t g dg dgg dd}|t|}t|| d S )Nza,b,a
0,1,2
3,4,5r   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   sR   | }d}t jtdd |jt|g dd W d    d S 1 s"w   Y  d S )Nz0,1,2
3,4,5Duplicate namesr   )r   r   r   namespytestraises
ValueErrorr   r   )r   r   r   r   r   r    test_basic_names_raise2   s
   "r,   zdata,expectedza,a,a.1
1,2,3r   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,6)r   r   r   r   r      )r   r.   r   a.1.1a.1.1.1	a.1.1.1.1z!a,a,a.3,a.1,a.2,a,a
1,2,3,4,5,6,7r   r   r   r   r   r/      )r   a.4a.3r   r.   z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   r7   zdata,names,expectedza,b,b
1,2,3)r   r   r0   )r   r   r   )123)r   r0   r1   za,b,c,d,e,f
1,2,3,4,5,6)r   r   r   r0   r1   r2   )r   r   cdef)r8   r9   r:   456)r   r   r0   r1   r2   za.1.1.1.1.1za,b,c,d,e,f,g
1,2,3,4,5,6,7)r   r   r6   r   r.   r   r   )r   r   r;   r<   r=   r>   g)r8   r9   r:   r?   r@   rA   7)r   r   r6   r0   r.   za.2.1za.3.1c                 C   sJ   | }t jtdd |jt||d W d    d S 1 sw   Y  d S )Nr$   r%   r&   r(   )r   r   r'   r   r   r   r   r    test_thorough_mangle_namesX   s   ""rD   c           	      C   s   d}| }g d}t ||i}tdD ]9}t  }t|d D ]}ddd|  t|d  }|jd|g dd	 q|||< |t| }t|| qd S )
N0r-   r   r   
Unnamed: 0.r   r"   )loccolumnvalue)	r   rangemininsertr   r   to_csvr   r   )	r   orig_keyr   
orig_valuedfir   jcol_namer   r   r    !test_mangled_unnamed_placeholders   s   rU   c                 C   <   | }d}| t|}tg dgg dd}t|| d S )Nz%a,a,a.1,a,a.3,a.1,a.1.1
1,2,3,4,5,6,7r3   )r   r.   r   r5   r6   za.1.2r0   r   r   r   r   r   r   r   r   r   r   r   r   r   r    $test_mangle_dupe_cols_already_exists      rY   c                 C   rV   )Nz,Unnamed: 0,,Unnamed: 2
1,2,3,4)r   r   r   r   )zUnnamed: 0.1rF   zUnnamed: 2.1z
Unnamed: 2r   rW   rX   r   r   r    0test_mangle_dupe_cols_already_exists_unnamed_col   rZ   r[   )__doc__ior   r)   pandasr   pandas._testing_testingr   markusefixturesskip_pyarrowparametrizer!   r#   r,   r7   rD   rU   rY   r[   r   r   r   r    <module>   s    
		

