o
    �¨Êh  ã                   @   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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Ú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   úZ/var/www/html/env/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_columns5   s   r4   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.   r/   )r   r   ÚcÚdÚeÚf)r5   r6   r7   Ú4Ú5Ú6)r   r   r-   r.   r/   za.1.1.1.1.1za,b,c,d,e,f,g
1,2,3,4,5,6,7)r   r   r3   r   r+   r   r   )r   r   r8   r9   r:   r;   Úg)r5   r6   r7   r<   r=   r>   Ú7)r   r   r3   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_namesR   s   !"ÿrA   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_placeholdersy   s   örR   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,7r0   )r   r+   r   r2   r3   za.1.2r-   r   r   r   r   r   r   Ú$test_mangle_dupe_cols_already_exists�   ó   þrT   c                 C   rS   )Nz,Unnamed: 0,,Unnamed: 2
1,2,3,4)r   r   r	   r
   )zUnnamed: 0.1rC   zUnnamed: 2.1z
Unnamed: 2r   r   r   r   r   r   Ú0test_mangle_dupe_cols_already_exists_unnamed_colž   rU   rV   zusecol, engine)r   r   r   Úpythonr8   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)ÚArX   ÚBr    r!   )r$   ÚusecolsÚenginer%   )r   Úusecolr[   r   r   r$   r   r   r   Útest_mangle_cols_names¬   s   "ÿr]   )Ú__doc__Úior   r&   Úpandasr   Úpandas._testingÚ_testingr   ÚmarkÚusefixturesÚxfail_pyarrowÚfilterwarningsÚ
pytestmarkr   r   r)   Úparametrizer4   rA   rR   rT   rV   r]   r   r   r   r   Ú<module>   sˆ    ÿ


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