o
    ôT·j@  ã                   @   s¢  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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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d.d/„ ƒZed0d1„ ƒZej
 d2g d3¢d4fg d3¢d5fg¡d6d7„ ƒZdS )8zÖ
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                 C   s@   | }d}|j t|ƒdd�}tg d¢gg d¢d�}t ||¡ 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Úexpected© r   úk/home/dinkstrade/pdmp-scanner/venv/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©Úmatch)r   r   r   ©Únames©ÚpytestÚraisesÚ
ValueErrorr   r   )r   r   r   r   r   r   Útest_basic_names_raise/   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_columns8   s   r5   zdata,names,expectedza,b,b
1,2,3)r   r   r.   )r   r   r   )Ú1Ú2Ú3)r   r.   r/   za,b,c,d,e,f
1,2,3,4,5,6)r   r   r   r.   r/   r0   )r   r   ÚcÚdÚeÚf)r6   r7   r8   Ú4Ú5Ú6)r   r   r.   r/   r0   za.1.1.1.1.1za,b,c,d,e,f,g
1,2,3,4,5,6,7)r   r   r4   r   r,   r   r   )r   r   r9   r:   r;   r<   Úg)r6   r7   r8   r=   r>   r?   Ú7)r   r   r4   r.   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_namesU   s   !"ÿrB   c           	      C   s¨   d}| }g d¢}t ||iƒ}tdƒD ]?}t tg dd�d�}t|d ƒD ]}dd	d| › �t|dƒ  }|jd
|g d¢d� q#|||< | t| ¡ ƒ¡}t 	||¡ q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_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,7r1   )r   r,   r   r3   r4   za.1.2r.   r   r   r   r   r   r   Ú$test_mangle_dupe_cols_already_exists“   ó   þrW   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   r   r   r   r   r   Ú0test_mangle_dupe_cols_already_exists_unnamed_col¡   rX   rY   zusecol, engine)r   r   r   Úpythonr9   c                 C   sZ   | }d}g d¢}t jtdd�� |jt|ƒ|||d� W d   ƒ d S 1 s&w   Y  d S )Nz1,2,3)ÚAr[   ÚBr!   r"   )r%   ÚusecolsÚenginer&   )r   Úusecolr^   r   r   r%   r   r   r   Útest_mangle_cols_names¯   s   "ÿr`   )Ú__doc__Úior   r'   Úpandasr   r   Úpandas._testingÚ_testingr   ÚmarkÚusefixturesÚxfail_pyarrowÚfilterwarningsÚ
pytestmarkr   r    r*   Úparametrizer5   rB   rU   rW   rY   r`   r   r   r   r   Ú<module>   sˆ    ÿ


	þþþþ÷þÿýþý	þûýðþ



 