
     	i@                        d Z ddlmZ ddlZddlmZmZ ddlmZ	 ej
                            d          Zej
                            d          Zed             Zed             Zd	 Zee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
                            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
                            d*g d+d,fg d+d-fg          d.             ZdS )/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Indexpyarrow_xfailz=ignore:Passing a BlockManager to DataFrame:DeprecationWarningc                     | }d}|                     t          |          d          }t          g dgg d          }t          j        ||           d S )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        `/srv/django_bis/venv311/lib/python3.11/site-packages/pandas/tests/io/parser/test_mangle_dupes.py
test_basicr      s`    F!D__Xd^^_55F///*4S4S4STTTH&(+++++    c                     | }d}t          g dg dgg d          }|                    t          |                    }t          j        ||           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   s        r   test_basic_namesr#   #   sd     F D)))YYY/9J9J9JKKKH__Xd^^,,F&(+++++r    c                     | }d}t          j        t          d          5  |                    t	          |          g d           d d d            d S # 1 swxY w Y   d S )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.   /   s    FD	z):	;	;	; ? ?ooo>>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?s   'A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   r0   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   r1      )r   a.4a.3r   r0   za.5za.6c                 x    | }|                     t          |                    }t          j        ||           d S )N)r   r   r   r   )r   r   r   r   r   s        r   test_thorough_mangle_columnsr:   8   s9    . F__Xd^^,,F&(+++++r    zdata,names,expectedza,b,b
1,2,3)r   r   r2   )r   r   r   )123)r   r2   r3   za,b,c,d,e,f
1,2,3,4,5,6)r   r   r   r2   r3   r4   )r   r   cdef)r;   r<   r=   456)r   r   r2   r3   r4   za.1.1.1.1.1za,b,c,d,e,f,g
1,2,3,4,5,6,7)r   r   r8   r   r0   r   r   )r   r   r>   r?   r@   rA   g)r;   r<   r=   rB   rC   rD   7)r   r   r8   r2   r0   za.2.1za.3.1c                     | }t          j        t          d          5  |                    t	          |          |           d d d            d S # 1 swxY w Y   d S )Nr%   r&   r(   r*   )r   r   r)   r   r   s        r   test_thorough_mangle_namesrH   U   s    B F	z):	;	;	; 5 5e4445 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5s   %AAAc                    d}| }g d}t          ||i          }t          d          D ]}t          t          g d                    }t          |dz             D ]8}dd	d|z   t          |d          z  z   }|                    d
|g d           9|||<   |                    t          |                                                    }t          j	        ||           d S )N0r/   r   str)dtyper   r
   
Unnamed: 0.r   r"   )loccolumnvalue)
r   ranger   mininsertr   r   to_csvr   r   )	r   orig_keyr   
orig_valuedfir   jcol_names	            r   !test_mangled_unnamed_placeholdersr\   |   s    HFJ	Hj)	*	*B 1XX 
, 
,U2U%;%;%;<<<q1u 	E 	EA#i!A#ii#a))&;;HOO()))ODDDD'__Xbiikk2233
b(++++
, 
,r    c                     | }d}|                     t          |                    }t          g dgg d          }t          j        ||           d S )Nz%a,a,a.1,a,a.3,a.1,a.1.1
1,2,3,4,5,6,7r5   )r   r0   r   r7   r8   za.1.2r2   r   r   r   s        r   $test_mangle_dupe_cols_already_existsr^      si     F3D__Xd^^,,F			CCC  H &(+++++r    c                     | }d}|                     t          |                    }t          g dgg d          }t          j        ||           d S )Nz,Unnamed: 0,,Unnamed: 2
1,2,3,4)r
   r   r   r   )zUnnamed: 0.1rM   zUnnamed: 2.1z
Unnamed: 2r   r   r   s        r   0test_mangle_dupe_cols_already_exists_unnamed_colr`      sf     F-D__Xd^^,,F	LLL  H &(+++++r    zusecol, engine)r   r
   r
   pythonr>   c                     | }d}g d}t          j        t          d          5  |                    t	          |          |||           d d d            d S # 1 swxY w Y   d S )Nz1,2,3)Arc   Br%   r&   )r)   usecolsenginer*   )r   usecolrf   r   r   r)   s         r   test_mangle_cols_namesrh      s     FDOOE	z):	;	;	; T TeVFSSST T T T T T T T T T T T T T T T T Ts   'AAA)__doc__ior   r+   pandasr   r   pandas._testing_testingr   markusefixturesxfail_pyarrowfilterwarnings
pytestmarkr   r#   r.   parametrizer:   rH   r\   r^   r`   rh    r    r   <module>ru      sV   
                    ''88 [''C 

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