
    Owg                        d Z ddlmZ ddlZddlmZ ddlmZ ej                  j                  d      Zej                  j                  d      Zed        Zed        Zd	 Zeej                  j#                  d
d eg dgg d      fd eg dgg d      fd eg dgg d      fg      d               Zej                  j#                  ddg d eg dg dgg d      fdg d eg dg dgg d       fd!g d" eg d#g d$gg d%      fg      d&        Zed'        Zed(        Zed)        Zej                  j#                  d*g d+d,fg d+d-fg      d.        Zy)/z
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_xfailz=ignore:Passing a BlockManager to DataFrame:DeprecationWarningc                     | }d}|j                  t        |      d      }t        g dgg d      }t        j                  ||       y )Nza,a,b,b,b
1,2,3,4,5,)sep)               )aa.1bzb.1zb.2columnsread_csvr   r   tmassert_frame_equalall_parsersparserdataresultexpecteds        _/var/www/horilla/myenv/lib/python3.12/site-packages/pandas/tests/io/parser/test_mangle_dupes.py
test_basicr      sB    F!D__Xd^_5F/*4STH&(+    c                     | }d}t        g dg dgg d      }|j                  t        |            }t        j                  ||       y )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   s        r   test_basic_namesr"       sB     F D)Y/9JKH__Xd^,F&(+r   c                     | }d}t        j                  t        d      5  |j                  t	        |      g d       d d d        y # 1 sw Y   y xY w)Nz0,1,2
3,4,5Duplicate namesmatch)r   r   r   namespytestraises
ValueErrorr   r   )r   r   r   s      r   test_basic_names_raiser-   ,   sD    FD	z):	; ?o>? ? ?s   AA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   r0      )r   a.4a.3r   r/   za.5za.6c                 h    | }|j                  t        |            }t        j                  ||       y )N)r   r   r   r   )r   r   r   r   r   s        r   test_thorough_mangle_columnsr9   5   s+    . F__Xd^,F&(+r   zdata,names,expectedza,b,b
1,2,3)r   r   r1   )r   r   r   )123)r   r1   r2   za,b,c,d,e,f
1,2,3,4,5,6)r   r   r   r1   r2   r3   )r   r   cdef)r:   r;   r<   456)r   r   r1   r2   r3   za.1.1.1.1.1za,b,c,d,e,f,g
1,2,3,4,5,6,7)r   r   r7   r   r/   r   r   )r   r   r=   r>   r?   r@   g)r:   r;   r<   rA   rB   rC   7)r   r   r7   r1   r/   za.2.1za.3.1c                     | }t        j                  t        d      5  |j                  t	        |      |       d d d        y # 1 sw Y   y xY w)Nr$   r%   r'   r)   )r   r   r(   r   r   s        r   test_thorough_mangle_namesrG   R   sB    B F	z):	; 5e45 5 5s   AAc                 j   d}| }g d}t        ||i      }t        d      D ]  }t               }t        |dz         D ]0  }ddd|z   t        |d      z  z   }|j                  d|g d	       2 |||<   |j	                  t        |j                                     }t        j                  ||        y )
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_names	            r   !test_mangled_unnamed_placeholdersrY   y   s     HFJ	Hj)	*B 1X 
,;q1u 	EA#!A#i#a)&;;HOO()OD	E (__Xbiik23
b(+
,r   c                     | }d}|j                  t        |            }t        g dgg d      }t        j                  ||       y )Nz%a,a,a.1,a,a.3,a.1,a.1.1
1,2,3,4,5,6,7r4   )r   r/   r   r6   r7   za.1.2r1   r   r   r   s        r   $test_mangle_dupe_cols_already_existsr[      sE     F3D__Xd^,F	CH &(+r   c                     | }d}|j                  t        |            }t        g dgg d      }t        j                  ||       y )Nz,Unnamed: 0,,Unnamed: 2
1,2,3,4)r	   r
   r   r   )zUnnamed: 0.1rJ   zUnnamed: 2.1z
Unnamed: 2r   r   r   s        r   0test_mangle_dupe_cols_already_exists_unnamed_colr]      sD     F-D__Xd^,F	LH &(+r   zusecol, engine)r   r	   r	   pythonr=   c                     | }d}g d}t        j                  t        d      5  |j                  t	        |      |||       d d d        y # 1 sw Y   y xY w)Nz1,2,3)Ar`   Br$   r%   )r(   usecolsenginer)   )r   usecolrc   r   r   r(   s         r   test_mangle_cols_namesre      sS     FDE	z):	; TeVFST T Ts   AA)__doc__ior   r*   pandasr   pandas._testing_testingr   markusefixturesxfail_pyarrowfilterwarnings
pytestmarkr   r"   r-   parametrizer9   rG   rY   r[   r]   re    r   r   <module>rr      s  
    ''8 [[''C

 , , , ,? 	9i[:MNO:#$L	
 1&'G	
(,) *,  # /2<W	
 '>/1OPT	
 +577 N
	
!>5?>5 , ,, 
, 
, 
, 
, )Y,AIsCS+TUT VTr   